你有没有听说过以太坊区块链?你是否知道它是什么?
近来有很多新闻,包括一些主要杂志的封面,但是如果你没有一个以太坊的基础,那么阅读这些文章可能云里雾里。那以太坊(Ethereum)是什么?本质上,是一个公共数据库,保持数字交易的永久记录。重要的是,这个数据库不需要任何中央机构来维护和保护它。相反,它是作为一个“不可信任”的交易系统运作的 一个框架,个人可以进行点对点交易,而不需要相互信任的第三方。
说到这里,你可能仍然会又些迷惑,这就是本文的目的所在。
我们将解释以太坊如何在技术层面发挥作用,没有复杂的数学,或可怕的公式。即使你不是程序员,我希望你至少能更好地掌握技术。如果某些内容技术性太强,难以理解,那就太好了!真的不需要了解每一个细节。我建议只专注于广泛的层面上理解事物。
1.区块链定义
区块链是一个“具有共享状态、加密安全的交易性单机”。
【1】“加密安全”意味着数字货币的创建是通过复杂的数学算法来保证的,这些算法是难以打破的。想想各种各样的防火墙。他们几乎不可能欺骗系统(例如创建假交易,清除交易等);
【2】“交易性单机”意味着机器的一个规范实例负责在系统中创建的所有交易。
【3】“共享状态”意味着存储在本机上的状态是共享的,并向所有人开放;
2.以太坊模型说明
以太坊区块链本质上是一个基于交易的状态机。在计算机科学中,状态机指的是读取一系列输入的内容,并根据这些输入转换到新的状态。
在以太坊的状态机中,我们从“发生状态”开始。这类似于在网络上发生任何交易之前的空白状态。当交易执行时,这个起源状态转换到某种最终状态。在任何时候,这个最后的状态代表了以太坊的现状。
以太坊的状态有数以百万计的交易。这些交易被分组为“块”。块包含一系列交易,并且每个块与其先前的块链接在一起。
为了让一个状态转换成下一个状态,交易必须是有效的。为了让一个交易被认为是有效的,它必须要经过一个验证过程,此过程也就是挖矿。挖矿就是一组节点(即电脑)用它们的计算资源来创建一个包含有效交易的区块出来。
任何在网络上宣称自己是矿工的节点都可以尝试创建和验证区块。世界各地的很多矿工都在同一时间创建和验证区块。每个矿工在提交一个区块到区块链上的时候都会提供一个数学机制的“证明”,这个证明就像一个保证:如果这个证明存在,那么这个区块一定是有效的。
为了让一个区块添加到主链上,一个矿工必须要比其他矿工更快的提供出这个“证明”。通过矿工提供的一个数学机制的“证明”来证实每个区块的过程称之为工作量证明(proof of work)。
证实了一个新区块的矿工都会被奖励一定价值的奖赏。奖赏是什么?以太坊使用一种内在数字代币—以太币(Ether)作为奖赏。每次矿工证明了一个新区块,那么就会产生一个新的以太币并被奖励给矿工。
你也许会在想:什么能确保每个人都只在区块的同一条链上呢?我们怎么能确定不会存在一部分矿工创建一个他们自己的链呢?
前面,我们定义了区块链就是一个具有共享状态的交易单机。使用这个定义,我们可以知道正确的当前状态是一个全球真相,所有人都必须要接受它。拥有多个状态(或多个链)会摧毁这个系统,因为它在哪个是正确状态的问题上不可能得到统一结果。如果链分叉了,你有可能在一条链上拥有10个币,一条链上拥有20个币,另一条链上拥有40个币。在这种场景下,是没有办法确定哪个链才是最”有效的“。
不论什么时候只要多个路径产生了,一个”分叉“就会出现。我们通常都想避免分叉,因为它们会破坏系统,强制人们去选择哪条链是他们相信的链。
为了确定哪个路径才是最有效的以及防止多条链的产生,以太坊使用了一个叫做“GHOST协议(GHOST protocol.)”的数学机制。
GHOST = Greedy Heaviest Observed Subtree
简单来说,GHOST协议就是让我们必须选择一个在其上完成计算最多的路径。一个方法确定路径就是使用最近一个区块(叶子区块)的区块号,区块号代表着当前路径上总的区块数(不包含创世纪区块)。区块号越大,路径就会越长,就说明越多的挖矿算力被消耗在此路径上以达到叶子区块。使用这种推理就可以允许我们赞同当前状态的规范版本。
现在你大概对区块链是什么有个理性的认识,让我们在再深入了地解一下以太坊系统主要组成部分:
(1)账户(accounts)
(2)状态(state)
(3)损耗和费用(gas and fees)
(4)交易(transactions)
(5)区块(blocks)
(6)交易执行(transaction execution)
(7)挖矿(mining)
(8)工作量证明(proof of work)
在开始之前需要注意的一点是:每当我说到某“Hash”时,我指的是以太坊使用的KECCAK-256hash算法。
网友评论