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