【51CTO.com原创稿件】
区块链从小圈子走向大众视野,虽早已人人皆知,但其实相当一部分人对涉及到区块链的一些名词是不了解的;下面带大家认识一些常见的名字,比如钱包,哈希等等。
区块链相关(About BlockChain):
区块链其实就是一种链表结构,链表中的元素就是一个区块,每一个区块结构如下:
· timestamp: 每个区块产的生时间戳
· nonce: 与区块头的hash值共同证明计算量(工作量)
· data: 区块链上存储的数据皆
· prevHash: 上一个区块的hash
· hash: 该个区块链的hash,由上述几个属性进行哈希计算而得
区块链本质上来说一种分布式的交易账本,所有用户都在本地存有完整账本信息。当有用户想改变某一个区块信息,由于区块 hash 的计算过程使用了 prevHash 作为参数,那么该区块后的所有区块,都会变得不合法,需要重新计算 hash ,想让系统承认这个更改,必须同步更改 51% 的用户的账本信息,所以篡改区块链上的账本信息十分困难,这就保证了它的安全性。
工作量证明(PoW)
上面提到,挖矿的过程中,矿工必须更快的计算出一个 nonce,那这个 nonce 是如何计算呢?nonce 是一个整数值,一般先把区块头信息后面加上nonce得到的字符串,进行 SHA256 哈希运算,得到的结果如果开头0的个数小于设定的难度值,则验证不通过,把 nonce 值加1重复上述操作,直到计算出来的 nonce 满足得到的哈希值开头0的个数不小于设定的难度值。而nonce的值,就是挖矿过程中工作量的证明。在工作量证明中,一个成员要想成为领导者并选择下一个要添加到区块链的区块,他们必须要找到解决一个特定数学问题的方法;而能首先解决上述问题的成员是拥有最大计算能力的成员。这些成员也被称为矿工。每当一个数学问题被解决的时候,矿工就会获得一些货币奖励,而整个系统机制为了鼓励更多矿工参与进来,会给参与挖矿的每个矿工一定代币的奖励。回到工作证明中,其他节点会通过检查区块的散列是否小于预设数字来验证区块的有效性。
股权证明(PoS)
在继续之前,让我把领导者选举(选择下一个区块的成员)比喻为抽奖:
在抽奖中,如果Bob比Alice有更多的票,他就更有可能获胜。
与此类似:在工作量证明中,如果Bob比Alice拥有更多的计算能力和能量,从而可以输出更多的工作 — — 他就更有可能获胜(开采下一个区块)。
再一次,类似的:在股权证明中,如果Bob比Alice拥有更多股权,他就更有可能获胜(“开采”下一个区块)。
股权证明去掉了工作量证明对于能源和计算能力的要求,并用股权替代。股权就是在一段时间内成员愿意锁定的货币数量。作为回报,他们有和他们的股权成比例的机会成为下一个领导者,并选择下一个区块。现在有一些币种只用股权证明如Nxt和Blackcoin。
矿工(minner)与挖矿(mining)
挖矿本质上是一组节点(矿机)使用他们的计算资源去创建一个包含有效交易的区块的过程,参与这个过程的节点(矿机)被称为矿工。一个矿工想要提交一个区块到区块链上,就必须更快的计算出一个nonce,nonce 和 区块头信息能共同证明,一个区块是有效的。
钱包(Wallet)
钱包本质是一个包含私钥的文件。通常会包含一个软件客户端,钱包的地址,是由私钥计算出来的,也就是公钥。每一次交易,发送方必须要提供私钥,才能把该公钥地址下所拥有的代币转帐到其他公钥地址,所以私钥决定了比特币的所有权。这里要注意一点,一个钱包地址拥有多少代币,不是存储在私钥里,而是存在区块链上,区块链上有着所有历史交易账目,可以根据账目计算出每个地址所拥有的代币。
区块链目前最火的两个应用就是比特币系统和以太坊系统,这两个系统都是公共区块链平台,都有自己自己的虚拟货币(比特币 和 以太坊)。但是他们是有很多区别的,
比特币(Bitcoin)
最原始的加密货币,它使用未使用的事务输出(UTXO)模型作为分类帐。它使用简单的 POW 算法猜测随机字符串,这个字符串与最后一个事务区块组合的 SHA-256 哈希值在数值上应该小于一个小的阈值。
成功猜到答案的参与者等于是“挖到了一个区块”,并且该区块中包含的交易被添加到分类帐中。这样可以形成一种非常简单的确定共识的方法——参与者只需同意最长链应被视为挖掘下一个交易区块的基础。比特币不是为了智能合约而设计的。因此,可用的功能非常有限,由此产生的功能绝对不是图灵完备的,而是比特币的大多数分析都会忽略它。因此,最终的系统纯粹是安全加密的分类帐。除了使用加密签名来验证交易的来源之外,它没有身份语义,并且是完全无信任的。
以太坊(Etherum)
以太坊的分类记帐也是参考了一些比特币的设计模型,但模拟了单个全局虚拟机的状态,而不是使用 UTXO 模型。以太坊相比比特币的关键创新是增加了图灵完备的智能合约能力。以太坊虚拟机(EVM)——一种专门用于在具有智能合约的分布式账本环境中使用的虚拟机。在以太坊中,程序状态是私有的,属于单个合约地址,并且通过一系列 EVM 字节码指令进行修改,这些指令就是智能合约的内容。然后,通过聚合每个合约地址的程序状态来得到整体的全局状态。以太坊网络中所有完整的节点都遵循这个模型规则。它们可以在自己的机器上为任意合约地址状态计算系统状态,只要它们使用了相同的交易(构成以太坊模型中的输入数据),就会得到相同的结果。
但是由于以太坊使用了全局一致性算法,并且具有全局最新区块的概念,因此以太坊虚拟机的总体交易处理速率受区块生成速率的限制。为以太坊网络添加更多硬件和计算能力并不能使其更快或更强大,只是增强了防篡改性。
使用图灵完备的智能合约可以在网络上添加额外的功能,而不需要所有参与者都知道它们。例如,以太坊网络因此可以发布在以太坊虚拟机中作为附加状态的软件代币。这构成了所谓的初始数字货币发行(Initial Coin Offering,ICO)的基础。
从表面上看,EVM 类似于 JVM 和其他类似的环境,但在一些重要方面进行了不同的设计。特别是 EVM 字节码的设计使得对编译代码的静态分析变得更加困难。对于需要高度透明性和可验证性的执行环境而言,这并不是一个卖点。底层 EVM 环境也不是特别人性化的编程环境,所以出现了一些可以编译为 EVM 字节码的高级语言。其中,最著名的是 Solidity。受更多主流编程语言(如 JavaScript 和 Java)的启发,Solidity 语言还融入了可以与以太坊区块链发生交互的新特性。
从某种程度上说,以太坊是其自身成功的牺牲品。它作为 ICO 的首选平台导致了 2018 年初 ETH(以太坊代币)的价格走高。因为以太坊团队本身拥有大量的这种加密货币,导致了很多主要参与者对既得利益的极大兴趣,并希望能够将其变现。
【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】