以太坊最大亮点是区块链智能合约,其实智能合约思想是中本聪首先在比特币系统中引入的。本文对比特币脚本和以太坊智能合约做了一个简单梳理。
比特币采用UTXO来表达,并非账户余额模型。比特币并没有采用账户余额模型,而是采用了UTXO(Unspent Transaction Output,未经花费输出)来表达比特币的交易流转。所以,在Bob转给Alice 1.5个比特币的交易中,我们熟悉的账户余额模型会这样做:首先检查Bob的账户余额是否足够,然后进行转账,Bob的余额数值减1.5,Alice的余额数值加1.5。有意思的是,账户余额模型中,1.5个币和另外1.5个币是没有区别的,因为账户余额只余额的数值,因此这并不适合并行交易。比特币系统并没有账户,比特币的交易流转通过UTXO来表达。一笔交易中,Alice收到的一笔比特币转入以一个完整的UTXO记录在区块里,因为Alice还没有花费这笔比特币,所以就形成了一个未经花费的输出;而并非是像账户余额模型一样在Alice的账户(公钥)更新余额状态。
比特币交易的核心是创建脚本。在比特币区块链中,每一个区块都通过SHA256计算的区块哈希链指向上一个区块,因此比特币账本实现防篡改。除了第一笔交易是矿工的挖矿所得外(Coinbase 交易),每一笔交易都拥有一个或多个输入(形成接收者的UTXO),以及一个或多个输出。由于比特币没有账户,比特币的交易创建的输出其实并非一个简单的公钥地址,而是一个脚本。在Bob给Alice支付1.5个btc的这个交易中,Bob创建的输出脚本中会包含Alice的公钥Hash。整个脚本的意思是,谁能够提供一个签名让这个包含Alice的公钥的脚本运行,谁就能花费这笔交易的1.5个BTC。显然,创建签名只能使用Alice的私钥,其他私钥创建的签名将无法通过这个脚本的验证,从而确保其他人无法假冒Alice来花费这笔输出。一旦Alice提供了一个签名和自己的公钥,她实际上已经创建了另一笔交易来花费这个输出。当然,在Bob提供签名和公钥支配这个UTXO(包含1.5BTC),他就是创建了转给Alice 1BTC交易,实际上所有节点都可以验证Bob创建的交易是否有效,并把经验证的交易打包写入区块中,形成不可篡改的交易记录。
UTXO和比特币的交易模型类似共享单车的使用。比特币的存在状态是UTXO而非账户余额,交易是通过脚本的运行来创建,这个流程初次看起来相当反直觉。我们用共享单车的是使用来比喻这一过程。在Bob给Alice转账1.5 BTC交易中,也可能是更大额找零,或者几个小额UTXO合成1.5 BTC。为简单起见,假设Bob拥有一个价值为1.5BTC的UTXO,这就好比是一辆共享单车,脚本就相当于单车的电子锁。此时,单车的锁电子屏显示提示:只有对公钥1ABC…789(这是Bob的公钥)进行签名才能解锁,当然,这必须是对应的私钥。在Bob创建交易时,Bob利用自己的私钥提供了一个签名,经过全网验证通过,打开了这把锁(相当于运行脚本)。接下来,网络根据Bob的要求,对车加了一把新锁,新锁显示提示内容是:只有对公钥1XYZ…123(这是Alice的公钥)进行签名,才能开启这把锁(相当于运行脚本)。此后,只有Alice能够支配这辆单车。整个过程,单车的所有权并不记录在某个人的名下,也就是说,UTXO中的BTC并不是以余额的方式记录在某人的账户里。这样做的好处之一是,所有的交易都是站在BTC流转的角度,不同的UTXO(单车)之间可以进行并行交易,因为UTXO之间的严格区别的。
图:UTXO模型类比于共享单车的使用
数据来源:国盛证券研究
如上所述,正如我们不必关心单车停在谁家门口,也不必关心某一辆单车登记在谁的名下(事实上共享单车的使用权没有账户登记的概念),只要按规则获取密钥就可以支配共享单车一样,比特币并不是记账在某人的账户下(其实根本没有账户的概念),而是具体的一些比特币(数值是多少不重要,重要的是这些比特币是唯一的)以某些UTXO的形式锁定,只有能够对此UTXO进行签名的公钥持有人才能够支配这些比特币——当然,一旦你签名了,那么事实上你就创建了一笔转账交易。
比特币的脚本奠定了智能合约的思想。比特币脚本的引入,实际上利用所有权转移(对脚本签名)实现区块链数字资产的支付。对于任何登记在区块链上实物或者金融资产,都可以通过脚本就安全实现各种条件下的所有权转移,这正是智能合约的思想。中本聪曾经在论坛中的讨论里表示:在过去几年设计比特币的过程中,我发现只有使用脚本系统才能完成我希望支持的各种复杂交易类型——担保交易、连带合同、第三方仲裁、多方签名等等。为了保持比特币的向前兼容和简单稳定,比特币的开发者们对其脚本做了诸多限制。比如脚本中没有循环语句。比特币网络中的每一个节点都要执行每一笔交易中的脚本,这就使得比特币脚本系统的设计需要足够精简。而作为一个点对点的电子现金系统,比特币也确实无需更为复杂的脚本系统。UTXO加上简洁的脚本系统,确实保障了比特币运行近10年而无任何错账、假账以及防入侵,这是伟大的实践。
以太坊(Ethereum)作为市值第二的区块链项目,广为人知的是它的智能合约。甚至很多人认为以太坊之所以能够开启区块链2.0时代,靠的就是智能合约,智能合约几乎成了以太坊的代名词。智能合约(Smart Contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易。这些交易可追踪且不可逆转。在以太坊上面运行最多的合约就是ERC20标准合约,很多区块链项目的token是用ERC20合约来发行、登记的,换句话说,很多所谓的代币其实运行在以太坊上面的,包括ETH代币;这些Token账本的并不需要建立独立的区块链。这相当于以太坊账本上挤出一块地方登记其他代币,其发行成本几乎为零。
以太坊(Ethereum)的智能合约带来了区块链大爆发时代。以太坊的区块链账本采取了人们最熟悉的账户余额模型(还有一个被私钥控制的账户,现实很少用到),而账户是被合约代码控制的。目前 Ethereum 网络上运行最多的合约账户是 ERC20 的合约,很多区块链项目的Token(代币) 就是 Ethereum 上的合约,这些合约其实也是 Ethereum 账户。这就好比以太坊的区块链系统和区块账本留有很多空白空间,其他项目只要在上面申请一个代币标识就算发行代币了。2015年以太坊上线后,区块链行业迎来了大爆发,代币发行极其活跃。目前,以太坊区块链浏览器Etherscan显示,公有109554个Token Contracts部署在以太坊区块链网络中。也就是说,近11万个项目的代币是登记、运行在以太坊区块链上面的。智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易。这些交易可追踪且不可逆转。智能合约不仅使得区块链可以运行条件履约、担保交易、连带合同、第三方仲裁、多方签名等复杂交易,进一步,区块链由此进入更多丰富的互联网场景,诸多互联网的账户动态都可以基于区块链运转,而不像比特币,仅仅是一个加密货币(电子现金)项目。区块链由此进入全面颠覆互联网的时代。
图:目前基于ERC20标准Token超过16万
数据来源:https://etherscan.io/tokens
图:ERC20合约可以用于发行资产的功能备受青睐
数据来源:国盛证券研究
版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。