参考链接:http://c.biancheng.net/blockchain/
参考链接:http://c.biancheng.net/view/1908.html
正确的阐述应当是 如 比特币 区块 链 的格式,其中 比特币 为应用层,区块 为协议层产物,链 为区块产物及数据层。
区块链是数字世界中进行“价值表示”和“价值转移”的技术。
区块链提供了在数字世界中处理价值所需的两个基础功能:价值表示与价值转移,让互联网跃迁到价值互联网。
区块链硬币一面是表示价值的 加密数字货币 或 通证,另一面是进行价值转移的 分布式账本 与 去中心网络。
中本聪解决了自己定义的难题“点对点的电子现金”,在这个过程中,他“发明”了区块链技术。比特币系统融合密码学、博弈论和软件工程等三个领域的技术与理论,区块链技术是已有技术巧妙地组合形成的创新。
.
.
.
以下除了第一类以外,其他几类都已经超越比特币最初的加密数字货币(电子现金)的想法,凭空发行的加密数字货币可能只是价值表示物的一种早期特殊形式。
比特币:一种加密数字货币;
区块链:一种基础技术。区块链是一种源自于“比特币”的底层技术。换句话说,比特币是区块链技术的第一个大获成功的应用。
区块链是数字世界中进行“价值表示”和“价值转移”的技术。
区块链硬币一面是表示价值的加密数字货币或通证,另一面是进行价值转移的分布式账本与去中心网络。
分布式账本与去中心网络也常被称为“链”,它可被视为一个软件平台;
币、通证 以及智能合约,表示价值的通证常被称为“币”,通证存储在链上,通过链上的代码(主要形式的智能合约)来管理,它是可编程的。
从比特币延展的各种替代币(altcoin),主要有 莱特币等。通常,它们只是对比特币代码库的参数进行小修改,然后用这组程序代码运行自己的系统。它们和比特币系统一样包括三个部分:加密数字货币、分布式账本、去中心网络。在中文中,替代币也常被称为“竞争币”“山寨币”。
借鉴比特币区块链的设计,开发所有人都可以接入的全新公有链,典型的有 Steem、以太坊、EOS 等。有意思的是,过去站在以比特币系统为世界中心的视角看,以太坊曾被视为替代链(alt chain)。
在基础公链这条路径上,以太坊已经做了开创性尝试且仍在持续发展。它是完全通用的,是通用类的基础公链。类似的项目还有不少,其中最热门的是 EOS,以及现在市值处于前 20 名的 小蚁(NEO) 、 新经币(XEM) 等。其中,按到现在为止的产品情况看,对 EOS 的设计思路最简单的描述或许是:一个更快、更好、更适合应用开发的以太坊,即企业操作系统。
基础公链的另一条是开发专用于某类功能的区块链。
比如市值处于前20名的有专用于物联网的 IOTA 等。
区块链的经典项目之一是 Steem 区块链和它的博客平台 Steemit,它是专用于数字内容的,在中国有类似的数字内容项目,如币乎。
又比如,中国区块链社区巴比特开发的比原链(Bytom)是专用于数字资产交换的,按白皮书披露的信息它要做到的是,连通比特世界与原子世界,实现“比特资产”(原生的数字货币、数字资产)和“原子资产”(有传统物理世界对应物)的交互与流转。
借鉴比特币区块链的设计思想,开发适合单个企业或多个企业使用的区块链开源软件,这常被称为联盟链。典型代表是由 IBM 开发、现在由 Linux 基金会管理的超级账本项目(HyperLeger)。
与比特币、以太坊等公有链完全开放,任何人都可以接入不同,联盟链需要经过许可才可以接入,亦称为许可链(permissioned blockchain),参与到区块链系统中的每个节点都需要经过许可,未经许可的节点无法接入。联盟链有其特定的用途,较为适合大型公司在自己的内部部署使用,或部署后在自己的产业链生态中邀请合作伙伴接入,也可以由产业联盟共同部署。
但以互联网的发展经验看,要让区块链真正成为应用的平台,主航道还是比特币与以太坊所开辟的道路,这条主航道常被为“基础公链”或“底层公链”。它们的目标是开发一条通用功能或专一功能的公有链,并同时做三件事:开发软件、运行系统、运营社区。
以比特币区块链为基础,开发基于它的协议(meta-protocol,又译为元协议、外设协议),提升性能,使之便于应用,比如钱包、侧链、跨链、支付、交易所等。
例如:
基于 Steem 区块链的 Steemit 博客应用是少有的普通用户可以使用的应用。在 Steem 区块链上,上述这样的应用架构就展现得较为明晰:
比特币系统完成了用 区块链进行价值表示和价值转移 的概念验证,
而 Steem 区块链和 Steemit 博客平台这个早期项目可能完成了 区块链应用 的概念验证。
现在,EOS 将其之前的很多设计发扬光大。
参考网址:http://c.biancheng.net/view/1912.html
把互联网看成硬件网络、万维网协议、网站与 App 应用三个层次,而区块链技术带来的变化是:在现有硬件网络之上、WWW 协议旁边,构建一组用于价值表示和价值转移的新协议:区块链信用层协议。
区块链仍然很新,相关的协议都在发展过程中,但现在,我们已经可以认为,它所发挥的角色类似于 WWW 协议。
.
.
.
现在区块链技术可能带来互联网的二次革命,把互联网从 “信息互联网” 带向 “价值互联网”。在区块链的对照之下,人们发现,最初被形象地称为“信息高速公路”的互联网处理的是 “信息”,而区块链能处理的是 “价值”。
币、通证 、以及智能合约,表示价值的通证常被称为“币”。通证存储在链上,通过链上的代码(主要形式的智能合约)来管理,它是可编程的。
通证,token,指 “可流通的加密数字权益证明”。
数字世界中,基于区块链的各种价值表示物都称为通证。
很多人把比特币、以太币等基础公链的原生货币,以及通过以太坊等基础公链的智能合约发行出来的通证都称为加密数字货币。但人们逐渐发现,不是通证是加密数字货币的一种特殊情况,而是反过来,原生加密数字货币是通证的一种特殊情况。
从比特币到以太坊,价值互联网的关键基础构件之一“通证”呈现在所有人的面前。
2017 年。这一年,除了竞争币和各类公有链发行的原生货币之外,以太坊的一个功能开始被广泛地使用。这个功能是,任何人都可以在以太坊上按其 ERC20 通证标准编写智能合约,发行通证。
这些通证可以在数字世界中表示某种价值,这些价值既可以是线上的,也可以是线下的;既可以是已经存在的,也可以是设想中的。有些人甚至在没想好用它代表什么价值之前,就已经在以太坊上将之发行出来,当然这造成了不少问题。
以太坊还创造了一种常被称为代币众筹或首次代币发行(initial coin offering)的机制:人们可以用以太币(ETH)去参与众筹,换得相应的通证。
分布式账本 与 去中心网络,常被称为 “链”,它可被视为一个软件平台;包括区块数据(散列函数hash)、链式结构(梅克尔树)、数字签名(非对称加密 / 公钥私钥)
.
.
.
.
.
.
在比特币的创世时刻,它的三个组成部分都出现了,即加密数字货币(cryptocurrency)、分布式账本(distributed ledger)、去中心网络(decentralized network)。
一个点对点的电子现金系统(加密数字货币、分布式账本、去中心网络)
2008 年 10 月 31 日,中本聪向一个密码学邮件列表的所有成员发送了一个电子邮件,标题为“比特币:点对点电子现金论文”。
他写道:“我一直在研究一个新的电子现金系统,它完全是点对点的,无须任何的可信第三方。”
BTC系统(整个系统)也可以理解是一个试验性的系统,是极客们为了解决技术难题(哈希计算)而开发的“技术玩具”(配套激励、数字货币等)。
.
.
.
从比特币系统中发现区块链,要创造一种去中介化、去中心化的“电子现金”,就同样要设计一套完整的系统。
比特币系统包括三层:
比特币系统 架构图又常被进一步细分为五层,它对应的是 比特币协议 和 比特币区块链 两个部分。
在这个五层架构中,比特币协议层被细分为:应用层、激励层和共识层;通用协议层被细分为:网络层、数据层。
UTXO 是 unspent transaction outputs(未使用的交易输出)的缩写,每一个比特币其实都是 UTXO,它是比特币的最核心概念之一。
被认为是区块链 2.0 的 以太坊 没有继续采用 UTXO 设计,而是考虑到其他因素,采用了 账户余额的设计,其代价正是中本聪可能已经考虑到的复杂性。
未确认的转账交易 按 梅克尔树 组装成候选区块,未被纳入的交易则往下顺延。
我有 8 个比特币,这其实意味着,之前有一个交易把这些比特币转入我的地址,这个交易的输出(即 8 个比特币)未被使用,所以我拥有了这 8 个比特币。
我要转账给你,我做的是,对让我拥有这些 8 个比特币的上一个交易进行签名,把这一新转账交易的输出地址设为你的钱包地址。
这样,我就发起了一个转账支付交易。等矿工将这一交易打包进新的区块,转账交易完成,这 8 个比特币就属于你了。你拥有的是你我这个交易的未使用的交易输出。
交易签名所涉及的比特币的公钥和私钥的非对称加密机制,为便于理解可类比看,钱包地址相当于房间号和锁,私钥则相当于钥匙,钥匙可以打开对应的锁。
的确不存在比特币,只有未使用的交易输出(UTXO)。每一笔比特币都源自上一个交易,可以一直向上追溯上去。而一直向上追溯,在每一笔比特币的源头,都有一种特殊的交易,比特币的挖矿节点获得新区块的挖矿奖励,比如 12.5 个比特币,这时,它的钱包地址得到的就是一个 UTXO,即这个新区块的币基交易(也称创币交易)的输出。币基交易是一个特殊的交易,它没有输入,只有输出。
.
比特币的挖矿是比特币的唯一发行机制。
从中本聪挖出第一个区块获得 50 枚比特币开始,比特币这个加密数字货币就以这样的去中心化方式不断地发行了出来。
比特币网络中的节点按照规则进行加密哈希计算,以竞争获得生成新区块的权利。节点在竞争获胜后就获得记账权,它生成区块成为最新区块后,就获得与新区块对应的挖矿奖励。
比特币的工作量证明共识机制是承上启下的一层,连接了上层应用与下层技术:在其上的层次为电子现金的发行、转账、防伪;在其下的层次,去中心网络的节点达成一致,更新分布式账本。
在设计比特币系统时,中本聪创造性地把 计算机算力竞争 和 经济激励 相结合,形成了 工作量证明(proof-of-work,POW)共识机制,让挖矿计算机节点在计算竞争中完成了 货币发行 和 记账功能,也完成了 区块链账本 和 去中心网络 的运维。
这就形成了一个完整的循环:矿机挖矿(算力竞争),完成去中心化记账(运转系统),获得比特币形式的经济激励(经济奖励)。
比特币的共识机制有两个与过去不同的特点:
在这样一个加密数字货币应用中引入了经济激励,维护网络的节点就可以得到有价值的比特币作为奖励。
比特币系统形成的共识不是完全可靠的,但是在等待了 6 个区块约 1 个小时之后,出问题的概率呈指数级下降。在 6 个区块之后,一个交易发生双花情况的概率可被认为是零。从纯理论上看,完美的共识不可能达成,但从实用的角度看,这个共识是可信的。
比特币的去中心网络的架构非常简洁,本身需要的基础设施很少。它可以在互联网网络上运行。计算机节点可以随时离开或加入这个去中心网络,在加入时它们只需遵守最长链原则即可。
比特币网络没有一个中心服务器,它是由众多全节点和轻节点组成的,这些节点形成一个去中心网络。其中:
比特币网络是完全开放的,任何服务器都可以接入、下载全部区块数据成为全节点。
钱包软件是所谓的轻量节点或轻客户端,也叫简单付款验证客户端(simple payment verification,SPV),里面只保存了向你的地址付款的交易与区块头部。
你也并非自己保存分布式账本和它所表示的比特币。你只是保存了比特币的私钥,你的数字资产还是存在链上的。
挖矿
比特币矿工节点的挖矿是它在运行分布式账本与去中心网络。同样重要的是,它也是比特币的发行机制和整个社区的激励机制。
参考网址:http://c.biancheng.net/view/1898.html
挖矿节点计算机在挖矿时要做两个任务:
第一个任务(普通交易 / 二叉树数据结构)是把比特币网络中未确认的交易按梅克尔树组装成候选区块,未被纳入的交易则往下顺延。
第二个任务(币基交易 / 链式结构 / 发型机制、激励机制)是在创建候选区块时,除了普通的交易之外,矿工在其中增加一个特殊的交易:币基交易(coinbase transaction)。如果挖矿成功,则币基交易会凭空转出新区块的奖励比特币到矿工的钱包地址中,从而发行这些比特币出来。这个特殊交易也被叫作“创币交易”,新的比特币是在这一交易中被创造出来的。
哈希指针
比特币区块链的数据结构中包括两种哈希指针,它们均是不可篡改特性的数据结构基础。
一个是形成 “区块+链”(block+chain)的链状数据结构 ,链状数据结构使得对某一区块内的数据的修改很容易被发现;
另一个是哈希指针形成的梅克尔树。梅克尔树的结构起类似作用,使得对其中的任何交易数据的修改很容易被发现。
最长链原则
在任何时刻,最长的链条是所有人都接受的最终记录。
一个区块中的数据 是 被打包进这个区块的一系列交易。
这些交易按照既定的规则被打包形成特定的二叉树数据结构——梅克尔树(Merkle trees)。
即:挖矿过程中第一个任务(普通交易 / 二叉树数据结构)是把比特币网络中未确认的交易按梅克尔树组装成候选区块,未被纳入的交易则往下顺延。
区块链之所以被称为 blockchain,是因为它的数据块以链状的形式存储着。从第一个区块即所谓的创世区块开始,新增的区块不断地被连到上一个区块的后面,形成一条链条。
每个区块由两个部分组成——区块头部 和 区块数据。
其中,区块头部中有一个哈希指针指向上一个区块,这个哈希指针包含前一个数据块的哈希值。 哈希值可以被看成是数据块的指纹,即在后一个区块的头部中均存储有上一个区块数据的指纹。如果上一个区块中的数据被篡改了,那么数据和指纹就对不上号,篡改行为就被发现了。要改变一个区块中的数据,对其后的每个区块都必须相应地进行修改。
即:挖矿节点计算机的第二个任务(发行机制、奖励机制),是真正的挖矿,即进行 加密哈希计算,解决一个计算难题,进行算力竞争。 在众多争夺记账权的节点中,谁最先完成这个计算,它打包的区块就被加到了区块链的最后,成为最新的区块。 **率先完成计算的矿工会赢得新区块的挖矿奖励。**最初,成功挖出一个区块,矿工可以获得 50 个比特币的奖励,按规则,这个挖矿奖励每四年减半一次,分别为 25 个、12.5 个,以此类推。
在候选区块的头部有一个 32 位的随机数区域,矿工需要反复调整随机数并计算,目标是让整个区块的哈希值小于一个“目标值”。如果试过所有的 32 位随机数可能性后,计算仍未能成功,那么就要改变币基(coinbase)的一个随机数,接着进行反复计算。
这个计算是加密哈希计算(对比特币来说是 SHA-256),除了反复计算别无他法。这个计算量非常大,比如在 2015 年年底,在大约 2 的 68 次方个随机数中,只有一个可以成功,这个数字比全球总人口的平方还要大。
这种挖矿计算是非对称的,你挖矿需要经过 2 的 68 次方个哈希计算,而我要验证你的确找到有效的随机数,只需要一次就可以。
第一个完成这个计算难题的节点所打包的区块就成为有效区块,它向全网广播告知自己已经完成,由其他节点确认后(即有别的挖矿节点在这个区块的基础上进行下一个区块的挖矿,生成新的区块)。在等待 6 个区块后,该挖矿节点就可以获得这次比特币奖励。
1. 动态平衡机制(动态平衡机制:区块挖出时间稳定在10分钟)
比特币系统有这样一个对应的机制设计:随着算力的增长,调整目标值的难度使得挖出一个区块的时间始终是 10 分钟左右。
这形成了一种动态的平衡,维持区块链网络经济激励的有效与稳定。这个决定难度的公式非常简单明了,每挖出 2016 个区块,也就是经过约两个星期,挖矿难度会进行一次调整,该公式是:
下一个难度 = 上一个难度 × 2016 × 10分钟 / 产生2016个区块所需的时间
如果算力突然大幅度上升,产生上一组 2016 个区块所需的时间变短,那么难度就会上升。在某些特殊情况下,如果产生上一组 2016 个区块所需的时间变长,那么难度也会下降,但这样的情况并不多见。
参考网址:http://c.biancheng.net/view/1895.html
区块链账本存储的是状态。
比特币的区块链是基于 工作量证明(协议层:共识层)形成的带 时间戳、存储数据 的 数据块 和 由 哈希指针 连接成的 链条。这个 链条或者说账本 以分布式的方式存储在比特币网络的各个节点上,因而也被称为分布式账本。
所有用户持有的比特币信息都存放在一个分布式账本之中。
这个账本是一个不断增长的由数据块组成的链条,这个数据块组成的链条是狭义的“区块链”。比特币账本可被认为同时存储在所有的全节点之中。
以太坊是对比特币区块链的改进,在白皮书中,以太坊创始人维塔利克分析了比特币,他认为,“比特币账本可以被认为是一个状态转换系统(state transition system)”。以太坊也是采用这种状态转换系统的设计,但对之进行了改进。
比特币系统使用的是一个分布式账本,用户在其中开设 “账户”,严格地说是地址(address)。
每个人都可以在比特币区块链上建立“账户”,获得一对公钥与私钥,地址是公钥的哈希值,我们通过私钥与地址进行交互。
我们每人有一个钱包,钱包中存储的是私钥。两个人在相互转账比特币时,可以通过各自的钱包软件直接进行。
在比特币系统上其实并不存在“账户”,而只有“地址”。只要你愿意,你就可以在比特币区块链上开设无限多个钱包地址,你拥有的比特币数量是你所有的钱包地址中比特币的总和。比特币系统并不会帮你把这些地址汇总起来形成你的账户。
.
.
.
.
.
.
以太坊:以太坊区块链是当下用区块链表示数字资产的基础设施。一方面,它为价值表示提供了通证;另一方面,它也为通证数量逻辑的实现提供了编程语言(solidity)、工具(智能合约)、标准(ERC20等)和运行环境(EVM)。
以太坊区块链和它的 智能合约 、 通证 为数字资产的发行与交易提供了一整套去中心化的基础设施。
之前,在以太坊的 ERC20 标准被广泛接纳之前,要发行一个原生数字资产需要自行开发一条链,而现在我们可以基于以太坊这条 公链 来创建一个 数字资产的价值表示物。随着在以太坊上发行的通证越来越多,它吸引了更多的人在其上发行通证。
总的来说,以太坊让我们能方便地创建代表数字资产的通证,这使得通证变成一个基础功能,涌现出大量的在区块链上的、通证表示的数字资产。随着使用门槛和成本的降低,很多原本无法进行的应用会涌现出来。
以太坊白皮书的题目即宣称,它试图成为智能合约和去中心化应用的平台。
以太坊的重心则是区块链。
以太坊也有类似于比特币的加密数字货币——以太币,但与中本聪没有为比特币设计用途不同,以太币被定位为以太坊区块链的燃料货币。以太坊白皮书说,以太币(ether,现在的代码为ETH)是以太坊的主要内部加密燃料(crypto-fuel),用于支付交易费。
在价值转移上,以太坊延续了比特币的区块链设计,依靠分布式账本来进行去中心化、点对点的价值转移。
以太坊还进一步带来了智能合约和通证。
通过对比我们可以看到,比特币系统只有一种加密数字货币,而在以太坊区块链上,在以太币之外出现了众多表示价值的通证。
比特币系统只能进行比特币这种数字现金的去中心化交易。而 以太坊作为数字资产系统,基于它的智能合约创建的各种通证都可以进行中心化或去中心化交易。
以太坊的账户包括四个字段:一个随机数、账户的余额、合约代码(如果有的话)、存储(通常为空)。
只有合约账户才有代码,其中存储的是 codeHash(这个账户的以太坊虚拟机代码的哈希值)。这个字段在生成后是不可修改的,这意味着智能合约代码是不可修改的。
外部账户可以触发交易,而合约账户不能主动发起交易,只能在被触发后按预先编写的智能合约代码执行。
合约账户(contract accounts),由智能合约的代码控制。
合约账户可以设置多重签名(multisign),比如一个简单示例是:现有一个合约账户,它要求一个转账由发起转账的人(Alice)和另一个人(Charles)签名均可。因此,当 Alice 通过这个合约向 Bob 转账 20 个 ETH 时,合约会通知 Charles 签名,在他签名后,Bob 才可以收到这 20 个 ETH。
外部账户(externally owned accounts),由密钥控制。
外部账户中没有代码,它可以创建和签署一个交易,也就是发出消息,而一个合约账户在收到消息后可以执行相应的代码和处理存储。
这里的“合约”代码相当于存在于以太坊执行环境中的“自治代理”,它拥有自己的以太坊账户,它在收到交易信息后就相当于被捅了一下,然后自动执行一段代码。
.
.
以太坊的系统架构类比比特币系统,在协议层方面多增加了一个合约层,包含智能合约和虚拟机。
通证是由智能合约编程发行而来,是可流通的加密数字权益证明。
通证的在区块链上表示价值。不同于 比特币、以太币 等是 凭空 在区块链上 发行 出来的。
有了智能合约和通证之后,以太坊就有了新的用途——进行数字资产的表示与交易。链上的数字资产也有了一种相对统一的价值表示形式。因而以太坊开始往前一步,超越作为数字现金系统的比特币,开始解决数字资产系统的三个问题:
通证是资产在区块链上的价值表示物,涉及的资产包括三类:比特币和以太币等链上的原生资产、映射到链上的线上资产、映射到链上的线下资产。当它们被在链上表示后,我们将之统称为 “数字资产”。特别地,用以太坊区块链和它的智能合约可以创建与发行代表价值的通证,然后用它去关联资产,形成现在较为通行的数字资产表示物。
这里涉及三种资产:链上资产、线上资产、线下资产。其中线上资产与线下资产均不在链上,可认为是链下资产。通常,我们需要辅以 预言机(oracle) 等工具来连接线上、线下的资产,然后通过智能合约在链上交易。
链上与链下的交互包括两大部分:一是将链下资产与通证关联,进行通证的发行与分配;二是在链上进行通证交易后,对链下资产进行相应的变动,并将变动在链上确认。
在 2018 年 7 月的一个分类中,奥黛丽·奈斯比(Audrey Nesbitt)将通证分为两大类、四小类,我认为,这可能是易于在实际项目的通证模型设计中使用的一种分类。
其中,两大类之间要进行相对严格的区分,但小类间不必进行明确的区分,她的分类如下:
第一大类:实用型通证(utility to ken)。
产品或服务通证(use of product),代表公司的产品或服务的使用权。
奖励通证(reward token),用户通过自己的行为获得奖励。
第二大类:证券型通证(security token)。
权益通证(equity token),类似公司的股权、债券等。
资产通证(asset token),对应实体世界中的资产,如不动产、黄金等。
第三大类:支付性通证(payment token)
在相关通证设计中,最为独特的案例是 EOS 币,它是由 Block.one 公司发行的,但它被定义为“商品售卖”,而非公司“权益”。并且特别地,公司又通过免责条款免除了 EOS 币任何和实用性相关的特性。比如,EOS 的相关条款说:EOS 币没有明示或暗示的权利、用途、目的、属性、功能或特征。
.
.
**比特币系统是一个最理想化的情形:它的通证发行是完全去中心化的,由计算机算力按规则竞争完成。**但当用通证表示数字资产时,我们不得不从最理想化的发行去中心化往回退了一点,这步回退是让区块链投入使用的必要妥协。
一个典型的 ERC20 通证发行过程:
一个项目通过智能合约创建通证,这个通证是实体资产或线上资产的价值表示物。
投资者(用户)发起交易,向智能合约转入以太币(ETH),智能合约自动运转,在满足一定规则后,它向投资者账户转入相应数量的通证。
以太坊的智能合约并非现实中常见的合同,而是存在区块链上,可以被触发执行的一段程序代码,这些代码实现了某种预定的规则,是存在于以太坊执行环境中的“自治代理”。
以太坊的智能合约设计很简明。
以太坊和比特币的一个重大不同是,前者提供了图灵完备的编程语言(Solidity)和相应的运行环境(EVM)。所谓图灵完备,指的是这个脚本编程语言可以运行所有可能的计算,而比特币的UTXO模型和脚本只能运行部分计算。
以太坊的智能合约被广泛应用的一个用途是创建通证,通证对应的多是以太坊区块链之外的资产。
要在以太坊上编写一个智能合约,所涉及的技术和组件有:
常见的以太坊通证标准有两种:
ERC 是 Ethereum Request for Comment 的缩写,20 是编号。
征求修正意见书(Request for Comment,RFC)是互联网工程任务组(IETF)发布的一系列工作备忘录,后来演变为用来记录互联网规范、协议、过程等的标准文件。比如,常见的互联网协议的RFC编号分别是:IP,791;TCP,793;SMTP,2821。
现在,以太坊已经沿用比特币的提法,对比特币系统的改进提案现在被称为 BIP(Bitcoin Improvement Proposals),然后加上编号。与通证相关的标准沿用 ERC 的形式,但均被纳入 EIP(Ethereum Improvement Proposals)序列之中,以太坊EIP 的标准序列包括 Core(核心改进)、Networking(网络层改进)、Interface(接口改进)、ERC(应用层意见征集)。
3.2.2.1.3.5.1ERC20:可互换的通证标准规范(可互换、同质、无限细分)
ERC20 通证标准(ERC20 Token Standard)是通过以太坊创建通证时的一种规范。按照 ERC20 的规范可以编写一个智能合约,创建 “可互换通证” 。它并非强制要求,但遵循这个标准,所创建的通证可以与众多交易所、钱包等进行交互,它现在已被行业普遍接受。
遵循ERC20通证标准可以编写智能合约。它需要实现的通证方法包括:
3.2.2.1.3.5.2ERC21:不可互换的通证标准规范(不可互换、非同质、单位1不可细分)
ERC721 与 ERC20 不同,ERC721 是一种不可互换的通证标准(Non-fungible Token Standard,NFT)。
ERC20 的通证是可互换的、同质的,而 ERC721 的通证是不可互换的、非同质的;
ERC20 通证是可无限分割细分的,而 ERC721 通证的最小单位是 1,无法再分割细分*。
2018 年 6 月,ERC721 最终被以太坊社区正式接受,成为最终标准。之前大热的加密猫(cryptokitties,谜恋猫,类比互联网初期的电子宠物)所遵循的就是 ERC721 标准。
和比特币一样,以太坊的区块中存储的也是交易(transaction),它包括的字段主要有:接受者(接受的账户)、发送者的签名、发送者发给接受者的以太币金额等。
与比特币的区块中存储的是交易不同,以太坊的区块中以梅克尔帕特里夏树(Merkle Patricia Tree,MPT)形式存储的是相应的以太坊账户的状态。
以太坊的交易是所谓的状态转换函数,一个交易触发它的执行,它将相应的账户从一个状态转变成新状态,然后新状态被存储在区块链的数据区块中。
.
.
.
.
.
.
EOS 这个基础公链可说是为应用而生的。
EOS 是由 Block.one 公司开发的一个新的区块链软件系统,它的目标是将一切去中心化(decentralize everything)。
从 2017 年年中开始,经过一年的代币众筹后,它于 2018 年 6 月 15 通过由数十个区块生产者(block producer,BP,又称超级节点)组成的社区上线了主网,EOS 主网这条主要的区块链开始正式运转。
EOS 的设计思路最简单的描述或许是:一个更快、更好、更适合应用开发的以太坊,也即企业操作系统。
从开发目标上来讲,比特币、以太坊、EOS 是渐进的,分别是区块链 1.0、区块链 2.0、区块链 3.0,重心分别是货币、合约、应用。以太坊在实际应用中是以通证为主的。以太坊、EOS 均是借鉴与延续之前的思路重新开发,以太坊是比特币的改进,EOS 是以太坊的改进。
对比图如下:
EOS 实际的情况是:Block.one 公司募集资金开发一个名为 EOSIO 的开源软件。EOS 社区用这个软件来运行 EOS 主网,且从逻辑上来讲,这个主网并非由 Block.one 公司运行,而是由社区运行的。另外,其他人也用 EOSIO 这个开源软件建立替代网(altnet)。
替代网(altnet)是一个模仿替代币(altcoin)而创造出来的新词。在社区运行的 EOS 主网(mainnet)之外,EOS 鼓励其他人用 EOSIO 开源软件架设新的区块链网络,这些区块链网络是类似于替代币的替代网。比特币的替代币是与比特币的价值无关的,类似地,替代网也与 EOS 主网无关。
EOS 是对以太坊的改进,各个用 EOSIO 开源软件运行起来的区块链网络,可以做几乎所有以太坊能做的事,如编写智能合约、发行通证。
EOS 的组成部分与多数基础公链项目一致,包括三个部分(一条链、一个通证、一个软件):EOS 主网、EOS 通证、EOSIO 开源软件。EOS 主网也是由分布式账本和去中心网络组成的。与其他基础公链的一个较大不同是,它鼓励更多的人在主网之外使用和运行 EOSIO 开源软件。
Block.one 公司支持各方使用这个开源软件来架设自己的区块链网络。不过也出现了一些有争议的替代网,比如有的替代网试图混淆自己与 EOS 主网。
开发者还可以用 EOSIO 软件建立单节点测试网、多节点测试网。
EOSIO 软件。这个开源软件是由 Block.one 公司开发的。当然严格来说,这是一个社区开发的开源软件,任何人都可以参与开发、提交代码。
EOSIO 开源软件包括一系列软件,其中主要有三个:nodeos、cleos、keosd。
EOS 币(EOS 通证)。EOS 币由 Block.one 公司在以太坊上按 ERC20 通证标准发售。按发售条款,发售获得的 ETH 资金归属 Block.one 公司。历时一年的发售于 2018 年 6 月 2 日结束,之后,EOS 币被映射到上线的 EOS 主网上,它现在是 EOS 主网的原生数字货币。
EOS 的主网包括三层:最核心层是由区块生产者(BP)组成的 EOSIO 核心网,中间层是 EOSIO 接入网,外层是 EOSIO 用户。
EOS 主网。通过竞选,一批区块生产者(BP,超级节点)被选出来,它们启动 EOS 主网。EOS 主网于 2018 年 6 月初由 EOS 社区上线。但可以合理地推测,在 EOS 社区中,Block.one 公司有着非常大的影响力。
EOS 主网的账户包括两种: 外部账户(由私钥控制的外部账户) 和 合约账户(智能合约)。和账户相关的概念是 钱包 与 权限,钱包是保存密钥的客户端,而权限包括两个基础权限类别(owner 与 active),应用可自定义各种权限。
外部账户(由私钥控制的外部账户)相关的概念是 ‘钱包‘,钱包是保存秘钥的客户端。
合约账户(智能合约)相关的概念是权限,权限包括两个基础权限类别(owner 与 active),应用可自定义各种权限。
EOS 的智能合约是关联在各个合约账户上的。
在 EOSIO 系统中,“合约”是沿用了区块链的专业术语,但其含义非常接近于 Linux 操作系统的后台应用,比如节点在启动时会包括四个缺省合约,如 eosio.bios、eosio.token 等。
EOS 的智能合约可以通过两种方式调用,一是用户通过命令调用,二是通过 EOSIO 软件的 send 方法调用。一个账户通过转账等动作触发另一个合约账户中的合约运行之后,这个合约可以通过软件代码调用其他的合约。
用户免费是 EOS 与比特币、以太坊相对而言的显著差别。
在比特币、以太坊系统中,普通用户如果进行转账交易等操作,需要支付相应的交易费。而 EOS 把承担这个费用的压力转移给了应用的提供者。
使用一个区块链的应用通常需要三种资源,这三种资源是由维护这个去中心网络的计算机提供的,对 EOS 来说,这三种资源是由区块生产者(BP)提供的。这三种资源分别是:
EOS 区块链的这三种资源的消耗机制是这样的:区块生产者(BP)公布可用的带宽(bandwidth)、计算(computation)和状态(state)的容量。
EOSIO 系统允许每个账户消耗一定比例的可用资源,这个比例是根据账户将自己持有的通证存入“三天抵押合约”的数量决定的。
假设有一个基于 EOS 的应用,如果一个账户持有总通证的 1%,那么这个账户可利用 1% 的状态存储容量。
EOS 与比特币、以太坊的一大不同点是,它允许用户创建一个不超过 12 位长的用户名,这个用户名代表的是我们的账户。
比特币区块链根本就没有账户的概念,比特币只有地址;
以太坊设计了账户,但远没有 EOS这么完备的账户权限相关功能,**以太坊每个账户包括四个信息:一个随机数、账户的余额、合约代码(如果有的话)、存储(通常为空)。
另外以太坊包括两类账户:外部账户由私钥控制的账户,合约账户是合约控制的账户。
以太坊外部账户中没有代码,它可以创建和签署一个交易,也就是发出消息,而一个合约账户在收到消息后可以执行相应的代码和处理存储。这里的“合约”代码相当于存在于以太坊执行环境中的“自治代理”,它拥有自己的以太坊账户,它在收到交易信息后就相当于被捅了一下,然后自动执行一段代码。
EOS 的账户系统则要复杂得多,它更像银行的账户系统或者我们在互联网应用(比如谷歌、微信等)中的账户系统。
合约账户(智能合约)相关的概念是权限,权限包括两个基础权限类别(owner 与 active),应用可自定义各种权限。
- 权限系统(owner、active)
EOS 系统提供了一个标准的基于角色的权限系统(role based permission management),这使得所有基于 EOS 开发的应用都可以采用这个账户体系与权限系统,而不必自己重新造轮子。
在 EOS 的账户权限系统中有两个缺省的权限组:最高级别的缺省权限组是 owner,第二个缺省权限组是 active,它可以做出除更改所有者之外的所有事。 其他的权限组都可以由 active 派生出来,这些权限组用户可以自行定义。比如,我开发一个博客应用,我就可以自己定义一个 publish 权限组出来
EOS举例说明什么应该存入状态,什么不应该存入状态。
例如,一个区块链应用程序的逻辑不需要读取博客文章的内容和评论,因此它们不应该存储在区块链的状态中。但是,博客文章或评论是否存在、投票数以及其他属性,需要存在区块链的状态之中(Steemit博客)。
绝大多数基础公链都没有解决对于去中心化的应用,其他的数据应该存储在何处的问题,而聚焦于存储区块链的核心任务——交易。
但为了让 EOS 可以更好地用于开发应用,EOS 在 2017 年 9 月就发布了 EOS 存储的独立白皮书,解释了它在存储方面的开发设想。
在讨论了星际文件系统(IPFS)、分布式存储项目(Filecoin、Maidsafe、Siacoin、Storj),以及现有的中心化存储(如DropBox、GoogleDriver、苹果的iCloud)等后,它提出了用自己的通证与 IPFS 结合,形成一个用于 EOS 应用开发的存储。
有了基于 IPFS 的文件存储系统之后,在 2017 年 12 月 12 日,EOS 团队发表文章给出了它建议的 EOS 应用开发架构(见下图)。从图中可以看到,在它建议的应用开发框架中,EOS 的应用是被建议存储在基于 IPFS 的 EOS 存储中的(即图中的 IPFS File Storage)。
到目前为止,EOS 在存储方面还仅仅提供了一个设想,离真正落实还有一定的距离。
对其他的区块链项目而言,密钥丢失,则一切都丢失了,无法恢复,而 EOS 基于它的用户权限机制提供了恢复功能。
EOS 提供的恢复功能只有在非常严格的情况下才可以做到:假设你的私钥被黑客盗走了,在这种情况下,你可以用过去 30 天中有效的 owner 权限对应的私钥,和你预先设定的账户恢复合作伙伴(account recovery partner)重置账户的私钥。这样你可能夺回了账户的所有权。
这样仅是对于账户的秘钥进行恢复,而要保证你的账户中的数字资产不被盗走,还需要其他机制的协同。
在 Steem 区块链中有这样的机制的示例。
比如,如果我们把 STEEM 币存入一个储蓄账户(也就是转化所谓的 STEEM Power),那么我们要从中把 STEEM 币取出来,首先要经过一个 7 天的等待期,然后在接下来的 13 周中,每周可以取出 1/13。如果有这样的机制,那么只要在一定的时间内进行了账户恢复,重新获得账户的控制权,我们的数字资产就还没有被全部盗走。
EOS 的主要开发者是区块链的传奇人物丹尼尔·拉瑞莫(Daniel Larimer),他的网名为 ByteMaster,在网上他也被称为 BM。BM 个人参与创建了三个主要的区块链公链项目,EOS 是第三个。
BM 开发的第一个主要区块链项目是比特股(Bitshares X,BTS),这个项目创建了一个去中心化的银行和交易所,使用区块链账本来创造可互换数字资产,这些资产可以市场化锚定美元、黄金、汽油等任何东西的价值。
BM 开发的第二个主要区块链项目是内容区块链 Steem 和基于它的博客平台 Steemit。在加密数字货币发展的初期,这个博客平台激励了很多关于数字货币、区块链的内容写作。Steem 区块链所采用的共识机制也是 DPOS。
.
.
.
EOS 的体系设计的创新在于工具层和生态层。
EOS 的一个特殊设计在于,它将自己的 EOS 主网和 EOSIO 软件分开,鼓励开发者采用 EOSIO 软件建立行业专用、领域专用的区块链网络(应采用新的网络名),并建立自己的一系列应用。
在体系架构的最上层出现一个生态层,这一层是采用 EOSIO 软件的区块链,比如专为游戏、物流、金融、社交、能源、医疗开发的公链。
EOS 的智能合约和以太坊略有差异,但基本上采取了相似的设计。EOS 的应用也与以太坊相似。因此,对于合约层和应用层,两者是相似的。
为了让 EOS 适用于应用开发,EOS 团队为它设计了账户、持续化数据库(Multi-Index DB)等工具与接口。因此,沿用唐煜的分类,认为在合约层和应用层之间存在一个工具层,这使得在 EOS 区块链上开发应用更为便利。
EOS 的智能合约和以太坊略有差异,但基本上采取了相似的设计。EOS 的应用也与以太坊相似。因此,对于合约层和应用层,两者是相似的。
EOS 的共识机制采用了与之前较为不同的 DPOS(委托权益证明)共识机制。即一些节点在获得足够多的投票支持后,成为见证人(witness)节点或 EOS 中所说的区块生产者(BP,也称超级节点),负责区块链的区块生成。
由于采用 DPOS 共识机制,EOS 网络的激励层就可以看成不再单独存在(图中也未表示出来)。EOS 网络每年新增发 5% 的 EOS 币,其中 1% 按一定的规则分配给区块生产者,另外 4% 进入社区的提案系统(worker proposal system)资金池待分配。
EOS 则用超级节点竞选的方式来刺激形成一个活跃的去中心网络,并且,超级节点竞选是与其共识机制 DPOS(委托权益证明)高度匹配的。按现在的设计,获得投票的 21 个活跃生产者和 179 个候补生产者一起生产 EOS 这条区块链的区块,即运行这个区块链网络。这些区块生产者是动态的,时刻根据投票动态调整。
EOS 的区块链生产者的收益分配机制是,区块生产者一共可获得每年新增出来的 1% 的 EOS 通证作为回报,其中 0.25% 按每个区块来进行奖励,0.75% 按所获投票来进行分配。可参见 2018 年 5 月 12 日项目发布的信息。
从 2018 年年初到 6 月 15 日 EOS 主网上线,围绕超级节点(BP)的竞争已经显示了,这个机制相对成功地调动了众多参与者竞争,促成了 EOS 去中心网络的形成。这是一条务实、有效的路径。
拜占庭容错算法(Byzantin eFault Tolerance)的用途是:
所有的出块者都要对所有区块签名,以确保在同一时间戳或者同一区块高度上,没有区块生产者能够同时在两个区块上签名。一旦一个区块有了 15 个区块生产者的签名,该区块就被认为是不可逆的。任一区块生产者如果想在同一时间戳或者同一区块高度的两个区块上签名,就会留下密码学证据。在这一模式下,一秒之内就可以达成不可逆的共识。
在最基础的层次——数据层和网络层上,EOS 和比特币、以太坊并没有多大的区别。
在最基础的层次——数据层和网络层上,EOS 和比特币、以太坊并没有多大的区别。
根据 **BFT-DPOS(拜占庭容错算法+权益委托共识机制)**这一算法,在使用 EOSIO 软件构建的区块链上持有通证的人,可以通过一个持续进行的投票系统来选择区块生产者。任何人都可以选择参加区块生产,只要能够说服通证持有人为其投票,就会有机会参与区块的生产。
EOSIO 软件可以让区块每 0.5 秒生成一个。在任何时刻,只有一个生产者被授权生产区块。如果在计划的某个时间内没有成功出块,则跳过该块。如果有一个或更多的区块被跳过,则在区块链上会有 0.5 秒或者更久的空白。
使用 EOSIO 软件,区块的产生以 126 个区块(每个出块者六个区块,乘以 21 个出块者)为一个周期。在每个出块周期开始时,软件会根据通证持有人所投票数选出 21 个区块生产者。被选中的区块生产者的出块顺序要获得 15 个及以上的区块生产者的同意(即获得15个区块生产者的签名,该区块就被认为是不可逆的)。
如果出块者错过了一个块,并且在最近 24 小时内没有产生任何块,则这个出块者将被剔除在考虑范围之外,直到他们通知区块链可以重新开始产生区块。这确保了网络的顺利运行,把被证明为不可靠的区块生产者排除在出块排序之外,这一方式使得错过区块的数量最小化。