三大编程模型
——UTXO模型
首先,从比特币开始。
比特币又被称为点对点电子支付系统,其使用名为UTXO的编程模型。
最简单的方法是将UTXO看作一个盒子。该盒子包含一个表示货币价值的数字和一个锁。只有拿着相应钥匙的人才能打开盒子。当进行转账时,持有钥匙的所有者或个人使用钥匙解锁,找到另一个空盒子,将新面值放入新盒子中,并附加一个新所有者的锁。
整个交易可以概括为打开盒子,拿出里面的钱,摧毁原来的盒子,然后把它放在另一个盒子里。
总而言之,盒子表示存储数据的UTXO模型,锁表示所有权。
——Account模型
除了UTXO模型,还有Account模型。这个模型最著名的例子是以太坊。
除了数据,以太坊Account模型中还有计算逻辑。你可以将ERC20合约想象成一个盒子,盒子里没有钱而是一组复杂的逻辑和数字。
与UTXO不同,Account模型的盒子始终可以重复使用,并且在其生命周期内无法打开。
当Account模型的盒子被制作出来时,一套规则会被写进盒子里,而一些按钮也会被放置在盒子中,这样人们就可以和盒子互动了。例如,规则可能这样表示:如果一方想转账,那么她或他或它需要出示身份证明的一种形式,并输入密码。一旦完成前面的步骤,就需要以下信息:转账金额、收件人和其他信息。一旦进入,她或他或者它需要按下转移按钮才能完成转移。在收到信息后,它会从您的金额中扣除并更改到另一方的帐户,然后更新所有内部数据。
美联储威廉姆斯:加息的时机和速度将取决于通货膨胀和经济如何发展:美联储威廉姆斯:加息的时机和速度将取决于通货膨胀和经济如何发展。美联储在看到劳动力市场大幅改善和高通胀后,采取加息和取消宽松政策是有道理的。 (金十)[2022/1/15 8:50:19]
熟悉编程的人会很快发现Account模型类似于现实世界中的OOP,按钮的概念类似于API。
如果我们扩展盒子隐喻,以太坊的功能更像ATM机。
在Account模型中,该盒子保存逻辑和数据。在将逻辑写入工厂设置的盒子后,永远不能更改它。您只能在需要修改数据时使用外部按钮。每个人的钱都记录在盒子里。要进行事务时,只需要输入事务信息,该盒子便会根据规则处理的请求进行数据更新。
——Cell模型
在Cell模型中,我们也可以将Cell看作一个盒子,因为它与UTXO模型非常相似,可以包含任意锁定的任意对象。
你可以对该框执行并编写一组规则来指定该盒子可以存储什么。通过这种方式,单元内的数据可以表示货或加密猫之类的资产。此外,UTXO中的锁也是相同的。但是在单元格模型中,用户可以自由地更改和使用定制的锁。(你可以将普通挂锁与指纹锁或数字锁做对比)
总的来说,Cell模型是一个广义的UTXO模型,具有以下两个意义:第一、锁是可定制的;第二、盒子可以存储用户定义的数据。
有些人可能会对Cell模型如何使用其编程模型感到好奇。
首先理解区块链系统的演变是很重要的。比特币是p2p支付系统的衍生,后来又诞生了更广义的分散式应用平台——以太坊。区块链的进一步发展带来了各种各样的新项目,而且越来越多样化。
Jules Urbach :RNDR 如何成为引领NFT加密艺术浪潮的GPU计算平台:JulesUrbach:RNDR如何成为引领NFT加密艺术浪潮的GPU计算平台3月29日,在以《RNDR渲染网络:引领NFT加密艺术浪潮的GPU计算平台》为主题的AMA中,HuobiGlobalNFT板块项目RNDRNetwork发起人JulesUrbach表示,NFT是实现开放去中心化的虚拟世界的重要基石,而开放去中心化的虚拟世界是RNDR网络自2017年推出以来的愿景。JulesUrbach介绍RNDR将会面向艺术家推出一些新的工具,包括在RNDR网络上铸造带有深度场景图验证的NFT,将ORBX格式的文件变成NFT、生成式艺术(GenerativeArt)等。JulesUrbach还表示,NFT拥有在今天的数字艺术之外的巨大潜力。增强现实、全息显示和实时的沉浸式流媒体将让我们能够在几年后创作出如今只有在科幻小说中才会出现的NFT内容。NFT将可以与物理空间绑定,记录在区块链上的虚拟物体将日益成为人们的日常生活的一部分。[2021/3/29 19:26:18]
由于需要全网共识的交易和存储成本高昂,因此区块链不可避免地采用一种架构。该架构允许在一致同意的范围内实现灵活性,从而允许它们大规模地交付低成本交易。
两大主要障碍
——可扩展性问题
继续阻碍区块链发展的一个障碍是可扩展性问题。如果我们无法缓解这一问题,区块链能力将受到限制,我们将无法看到强大的高级应用程序的开发,继而释放分散经济的真正潜力将面临挑战。
声音 | 陈纯:除了研究区块链技术本身外 还需要研究如何监管:1月12日,中国工程院院士陈纯在CCF通讯刊文《联盟区块链关键技术与区块链的监管挑战》,文中提到,区块链作为重要的底层基础设施,在其快速发展的过程中,我们要高度重视安全问题。因此,我们除了研究区块链技术本身外,还需要研究区块链如何监管。公有链已经成为新媒体的传播媒介,因为公有链本身具有去中心化、不可篡改、不可删除、低成本的特点。利用区块链去传播有害信息、网络谣言、煽动性与攻击性信息,会给区块链技术的产业布局和发展带来不利影响,同时给监管部门带来很大的挑战。[2020/1/13]
可扩展性是“区块链三难”的一部分,其中还包括安全性和分散性。而一个区块链系统最多可以具有三难困境中的2个。
——交易成本问题
第二个障碍是交易成本问题。一个社会整体交易成本的降低是衡量一项技术在规模上可行性的最有力指标之一。由于需要全网共识的交易和存储成本高昂,因此区块链不可避免地采用一种架构。该架构允许在一致同意的范围内实现灵活性,从而允许它们大规模地交付低成本交易。
解决方案:分层架构
计算机爱好者知道他们的设备包含一个复杂的分层架构。该分层架构中包括内存、硬盘、多级缓存和各种寄存器。这种架构允许普通大众低成本使用,同时利用其可伸缩的能力以满足不断增长的计算挑战。
我们可以将相同的设计原则应用于区块链。通过分层的架构,可以创建经济实惠且通用基础设施。在我看来,这是区块链驱动的世界唯一可行的未来。随着Lightning、、Plasma和支付通道的兴起,我们已经可以看到这种类型的架构正在兴起以及它所促进的用例。在接近这种分层的区块链架构时,重要的是要检查构成区块链系统的三种不同数据模型之间的关系:UTXO模型,Account模型和Cell模型。
声音 | 埃森哲报告:银行目前正评估如何使用区块链支付:据bitcoinexchangeguide消息,埃森哲(Accenture)最近进行的一项调查发现,近90%受访银行高管表示,他们各自的银行目前正在评估使用区块链技术执行支付的想法。大多数高管认为区块链必须提供的长处包括:降低加工成本、错误数量减少、业务处理速度更快。报告还指出,中国26家上市银行中有12家已经在治理框架内实施了区块链技术,其中包括中国银行和招商银行等大银行。[2018/11/3]
——验证与计算模型
Cell模型源自UTXO模型,因此是验证模型。相反,Account模型是计算模型。
在资产从第2层返回到第1层时,第2层解决方案会利用证明提交和验证机制。而由于第1层扮演的是验证角色,而不是计算角色,因此我们可以看到UTXO或Cell模型是这种结构的合适方法。
——解决规模扩增性问题
目前,以太坊和“下一代”区块链面临着规模不断增长的严峻挑战。虽然大规模采用已实现突破,但全节点的数据存储成本日渐增高,包括各种僵尸帐户的扩增,也让情况变得更糟。
使用Account模型时,所有用户的资产都存储在一个合约中。如果没有直接的方法来为每个用户分割状态,则很难根据每个用户占用状态的容量和持续时间向他们收费。
同时,这对支付通道收费的实施也提出了挑战。目前在以太坊,交易费用是一次性支付,授予永久性存储。但鉴于区块链是公共基础设施,这种模式是不可持续的。我们可以看到,持续支付仓储空间租金是一种更加合理的方式。
在美国众议院听证会乔治城大学法学教授表示:监管的重点应该在于数字代币如何被对待:在美国众议院金融服务委员会《检查加密货币和ICO市场》的听证会上,乔治城大学法学教授Chris Brummer博士表示,ICO将会成为区块链行业的主要融资方式,但监管的重点应该在于数字代币如何被对待,以及系统如何被监管。他还表示,许多ICO欺诈非常明显,需要监管机构介入,更新法律法规,并且提供ICO白皮书指导。[2018/3/14]
在Cell模型中,每个用户的数字资产分别存储在各自的单元中。如果用户不想继续持有资产,则可以释放单元中的数据,并且可以将存储容量出售或借给其他用户。这种设计确保了第1层不会无限期地存储废弃的资产,并为状态存储开辟了新的可能性。
结论
总的来说,当考虑存储和验证要求时,Cell模型最适合分层区块链架构的需求。
附:UTXO与ACCOUNT优缺点对比
UTXO模型
UTXO模型中,交易只是代表了UTXO集合的变更。而账户和余额的概念是在UTXO集合上更高的抽象,账号和余额的概念只存在于钱包中。
优点:
计算是在链外的,交易本身既是结果也是证明。节点只做验证即可,不需要对交易进行额外的计算,也没有额外的状态存储。交易本身的输出UTXO的计算是在钱包完成的,这样交易的计算负担完全由钱包来承担,一定程度上减少了链的负担。
除Coinbase交易外,交易的Input始终是链接在某个UTXO后面。交易无法被重放,并且交易的先后顺序和依赖关系容易被验证,交易是否被消费也容易被举证。
UTXO模型是无状态的,更容易并发处理。
对于P2SH类型的交易,具有更好的隐私性。交易中的Input是互不相关联的,可以使用CoinJoin这样的技术,来增加一定的隐私性。
缺点:
无法实现一些比较复杂的逻辑,可编程性差。对于复杂逻辑,或者需要状态保存的合约,实现难度大,且状态空间利用率比较低。
当Input较多时,见证脚本也会增多。而签名本身是比较消耗CPU和存储空间的。
ACCOUNT模型
对于Account模型,Account模型保存了世界状态,链的状态一般在区块中以StateRoot和ReceiptRoot等形式进行共识。交易只是事件本身,不包含结果,交易的共识和状态的共识本质上可以隔离的。
优点:
合约以代码形式保存在Account中,并且Account拥有自身状态。这种模型具有更好的可编程性,容易开发人员理解,场景更广泛。
批量交易的成本较低。设想矿池向矿工支付手续费,UTXO中因为每个Input和Out都需要单独Witnessscript或者Lockingscript,交易本身会非常大,签名验证和交易存储都需要消耗链上宝贵的资源。而Account模型可以通过合约的方式极大的降低成本。
缺点:
Account模型交易之间没有依赖性,需要解决重放问题。
对于实现闪电网络/雷电网络,Plasma等,用户举证需要更复杂的Proof证明机制,子链向主链进行状态迁移需要更复杂的协议。
UTXOVSACCOUNT
对于以上几个优点和缺点,我们再做一些分析和对比。
第一,关于计算的问题。
UTXO交易本身对于区块链并没有复杂的计算,这样简单的讲其实并不完全准确。主要原因是Bitcoin本身的交易多为P2SH,且Witnessscript是非图灵完备的,不存在循环语句。而对于Account模型,例如Ethereum,由于计算多在链上,且为图灵完备,一般计算较为复杂,同时合约安全性就容易成为一个比较大的问题。当然是否图灵完备对于是否是账户模型并没有直接关联。但是账户模型引入之后,合约可以作为一个不受任何人控制的独立实体存在,这一点意义重大。
第二,关于UTXO更易并发的问题。
在UTXO模型中,世界状态即为UTXO的集合,节点为了更快的验证交易,需要在内存中存储所有的UTXO的索引,因此UTXO是非常昂贵的。对于长期不消费的UTXO,会一直占用节点的内存。所以对于此种模型,理论上应该鼓励用户减少生产UTXO,多消耗UTXO。但是如果要使用UTXO进行并行交易则需要更多的UTXO作为输入,同时要产生更多的UTXO来保证并发性,这本质上是对网络进行了粉尘攻击。并且由于交易是在钱包内构造,所以需要钱包更复杂的设计。反观Account模型,每个账户可以看成是单独的互不影响的状态机,账户之间通过消息进行通信。所以理论上用户发起多笔交易时,当这些交易之间不会互相调用同一Account时,交易是完全可以并发执行的。
第三,关于Account模型的交易重放问题。
Ethereum使用了在Account中增加nonce的方式,每笔交易对应一个nonce,nonce每次递增。这种方式虽然意在解决重放的问题,但是同时引入了顺序性问题,同时使得交易无法并行。例如在Ethereum中,用户发送多笔交易,如果第一笔交易打包失败,将引起后续多笔交易都打包不成功。在CITA中我们使用了随机nonce的方案,这样用户的交易之间没有顺序性依赖,不会引起串联性失败,同时使得交易有并行处理的可能。
第四,存储问题。
因为UTXO模型中,只能在交易中保存状态。而Account模型的状态是在节点保存,在Ethereum中使用MPT的方式存储,Block中只需要共识StateRoot等即可。这样对于链上数据,Account模型实际更小,网络传输的量更小,同时状态在节点本地使用MPT方式保存,在空间使用上也更有效率。例如A向B转账,如果在UTXO中假设存在2个Input和2个Output,则需要2个Witnessscript和2个Lockingscript;在Account模型中则只需要一个签名,交易内容只包含金额即可。在最新的隔离见证实现后,Bitcoin的交易数据量也大大减少,但是实际上对于验证节点和全节点仍然需要针对Witnessscript进行传输和验证。
第五,对于轻节点获取某一地址状态,UTXO更复杂。
例如钱包中,需要向全节点请求所有关于某个地址的所有UTXO,全节点可以发送部分UTXO,钱包要验证该笔UTXO是否已经被消费,有一定的难度,而且钱包很难去证明UTXO是全集而不是部分集合。而对于Account模型则简单很多,根据地址找到State中对应状态,当前状态的StateProof则可以证明合约数据的真伪。当然对于UTXO也可以在每个区块中对UTXO的root进行验证,这一点与当前Bitcoin的实现有关,并非UTXO的特点。
来源:hackernoon.com
编译:共享财经马明
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。