如何解决比特币和以太坊编程模型中的问题

Bitget下载

注册下载Bitget下载,邀请好友,即有机会赢取 3,000 USDT

APP下载   官网注册

";通过分层架构,可以创建经济且通用的基础设施。在我看来,这是区块链主导的世界唯一可行的未来。"三种编程模型——UTXO模型首先,从比特币开始,比特币也叫点对点电子支付系统。,它使用名为UTXO的编程模型(与比特币地址相关联的比特币金额集合,是包含数据和可执行代码的数据结构)。最简单的方法就是把UTXO想象成一个盒子。盒子里有一个代表钱的价值的数字和一把锁。。只有有相应钥匙的人才能打开箱子。转账时,持有钥匙的主人或个人用钥匙开锁,找到另一个空箱子,将新面值放入新箱子,附上新主人';s锁。整个交易可以概括为打开箱子,取出里面的钱。把原来的盒子毁掉,放到另一个盒子里。总之,盒子代表存储数据的UTXO模型,锁代表所有权。——帐户模型除了UTXO模型,还有帐户模型。这种模式最著名的例子就是以太坊。除了数据以外以太坊账户模型中也有计算逻辑。你可以把ERC20合约想象成一个盒子。盒子里没有钱,而是一套复杂的逻辑和数字。与UTXO不同,帐户模型的盒子总是可以重用的。,并且在其生命周期内无法打开。在制作账户模型盒子时,会在盒子里写入一套规则,并在盒子里放置一些按钮,以便人们与盒子进行交互。例如,规则可能会说:如果一方想要转移资金,然后她或他或它需要出示某种形式的身份证明并输入密码。一旦完成前面的步骤,就需要下面的信息:转账金额、收款人等信息。一旦进入,她或他或它需要按转移按钮来完成转移。收到信息后,,会从你的金额中扣除,改给对方';的帐户,然后所有内部数据将被更新。熟悉编程的人很快就会发现,账户模型类似于现实世界中的OOP(面向对象编程,一种计算机编程架构)。按钮的概念类似于API(应用程序编程接口)。如果把盒子比喻延伸一下,以太坊的功能更像是ATM机。在帐户模型中,盒子保存逻辑和数据。逻辑被写入工厂设置的盒子后,就永远无法更改。。当您需要修改数据时,只能使用外部按钮。每个人';他的钱被记录在盒子里。要做一个交易,只需要输入交易信息,盒子会根据规则处理的请求更新数据。——细胞模型中的细胞模型我们也可以把单元格想象成一个盒子,因为它非常类似于UTXO模型,可以包含任何锁定的对象。您可以为该框执行并编写一组规则来指定该框可以存储的内容。这样单元格中的数据可以表示商品或加密猫等资产。另外,UTXO中的锁也是一样的。但是在单元模型中,用户可以自由地改变和使用定制的锁。(可以把普通挂锁和指纹锁或者数字锁对比一下。)总的来说。Cell模型是一个广义的UTXO模型,有以下两层含义:第一,锁是可定制的;第二,盒子可以存储用户自定义的数据。在CKB,Nervos(具有层次结构的分布式应用网络)的核心项目有一种编程模型结合了比特币编程模型和以太坊编程模型的优点。有些人可能对细胞模型如何使用其编程模型感到好奇。首先了解区块链体系的演变是很重要的。比特币是p2p(点对点)支付系统的衍生品。后来,一个更广义的分布式应用平台——以太坊诞生了。区块链的进一步发展带来了各种新的项目,而且越来越多样化。由于高昂的交易和存储成本需要全网的共识,区块链不可避免地采用了一种架构。。这种架构允许在商定的范围内具有灵活性,从而允许他们大规模地交付低成本交易。两大障碍——可扩展性是一个继续阻碍区块链发展的障碍。如果我们不能缓解这一问题,区块链的能力将受到限制。我们将无法看到强大的高级应用程序的开发,然后释放去中心化经济的真正潜力将是一个挑战。可伸缩性是"区块链的三大难题",这也包括安全和权力下放。一个区块链体系最多会有三种困境中的两种。。交易成本问题的第二个障碍是交易成本问题。社会整体交易成本的降低是衡量一项技术规模化可行性的最有力指标之一。由于高昂的交易和存储成本需要全网的共识,区块链不可避免地采用了一种架构。。这种架构允许在商定的范围内具有灵活性,从而允许他们大规模地交付低成本交易。解决方案:层次结构计算机爱好者知道他们的设备包含复杂的层次结构。分层架构包括内存、硬盘、多级缓存和各种寄存器。。这种架构允许公众以低成本使用它,同时利用其可扩展性来应对不断增长的计算挑战。我们可以将同样的设计原则应用于区块链。通过分层架构,您可以创建一个经济实惠的通用基础架构。在我看来这是区块链主导的世界唯一可行的未来。随着闪电、(闪电网)、等离子(以太坊扩容四大方案之一)、支付通道的兴起,我们已经可以看到这种类型的架构正在兴起,以及它所推动的用例。。在处理这种分层的区块链体系结构时,检查构成区块链系统的三种不同数据模型之间的关系非常重要:UTXO模型、帐户模型和单元模型。——验证计算模型Cell模型是UTXO模型派生出来的,所以是验证模型。。相反,帐户模型是一个计算模型。当资产从第2层返回到第1层时,第2层解决方案利用证据提交和验证机制(如闪电网络)。因为第1层起的是验证的作用,而不是计算。因此,我们可以看到,UTXO或细胞模型是适合这种结构的方法。——解决规模扩张问题目前,以太坊和"下一代"区块链正面临着规模不断扩大的严峻挑战。虽然大规模采用取得了突破,但是整个节点的数据存储成本与日俱增。,包括各种僵尸账号的扩张,也让情况变得更糟。使用帐户模式时,所有用户';资产存储在合同中。如果没有直接的方法为每个用户划分状态,就很难按照状态的容量和时长对每个用户进行计费。。同时,也对支付通道收费的实施提出了挑战。目前在以太坊,交易费用一次性支付,授予永久存储。然而,鉴于区块链是一个公共基础设施,这种模式是不可持续的。我们可以看到,连续支付存储空间租金是一种更合理的方式。。在细胞模型中,每个用户';的数字资产存储在它们自己的单元中。如果用户没有';如果不想保留资产,他可以释放单元中的数据,并将存储容量出售或借给其他用户。这种设计确保第1层不会无限期地存储过时的资产。并为状态存储开辟了新的可能性。结论一般来说,在考虑存储和验证需求时,细胞模型最适合层次化区块链体系结构的需要。附:UTXO和ACCOUNTUTXO模型优缺点对比在UTXO模型中,该事务仅代表UTXO集合中的一个变化。账户和余额的概念是UTXO集合上更高的抽象,账户和余额的概念只存在于钱包中。

优点:计算出链,交易本身既是结果,也是证明。节点只需要做验证,不需要额外计算事务,也不需要额外的状态存储。交易本身输出UTXO的计算是在钱包里完成的。这样交易的计算负担完全由钱包承担,一定程度上减轻了链条的负担。除了比特币基地事务,事务的输入总是在UTXO之后链接。无法重播该事务。而且交易的顺序和依赖很容易验证,交易是否被消费也很容易证明。UTXO模型是无状态的,更容易并发处理。对于P2SH类型的交易,具有更好的私密性。交易中的输入互不相关。你可以使用像CoinJoin这样的技术来增加一些隐私。缺点:无法实现一些复杂的逻辑,可编程性差。对于复杂的逻辑,或者需要状态保存的契约,实现难度大,状态空间利用率低。。当输入更多时,见证脚本也会增加。签名本身会消耗CPU和存储空间。帐户模型对于帐户模型,帐户模型保留了世界的状态。链的状态通常在块中以StateRoot和ReceiptRoot的形式达成一致。事务只是事件本身,并不包含结果。交易的共识和国家的共识在本质上是可以隔离的。

优点:合同以代码的形式保存在账户中,账户有自己的状态。这种模式可编程性更强,开发者容易理解,场景范围更广。大宗交易成本低。想象一下,矿池付给矿工一笔手续费。在UTXO中,因为每个输入和输出都需要单独的见证脚本或锁定脚本,所以事务本身会非常大,签名验证和事务存储都需要消耗链中的宝贵资源。。账户模式可以通过合同大大降低成本。缺点:账户模型中事务之间没有依赖,需要解决重放问题。用于实现闪电网络/闪电网络、等离子体等。用户证明需要更复杂的证明机制,子链到主链的状态转换需要更复杂的协议。UTXOVS占以上优缺点,我们来做一些分析比较。第一,计算的问题。。UTXO事务本身没有复杂的区块链计算,所以简单来说,它并不完全准确。主要原因是比特币本身的交易多为P2SH,见证脚本是非图灵,没有循环语句。。而对于账户模型,比如以太坊,由于计算多在链中且图灵完整,一般计算比较复杂,契约安全容易成为大问题。当然,图灵是否完整与是否是账号模型没有直接关系。。但引入账户模式后,合同可以作为不受任何人控制的独立实体存在,意义重大。第二,UTXO更容易并发的问题。在UTXO模型中,世界状态是UTXO的集合,节点验证事务的速度更快。,需要将UTXO的所有索引都存储在内存中,所以UTXO非常昂贵。对于长时间不消耗的UTXO,它会一直占用节点的内存。所以对于这种模式,理论上应该鼓励用户少生产UTXO,多消费UTXO。。但是如果要使用UTXO进行并行事务,就需要更多的UTXO作为输入,生成更多的UTXO来保证并发,本质上是对网络的灰尘攻击。并且由于交易是在钱包中进行的,所以需要更复杂的钱包设计。。与帐户模型相反,每个帐户都可以被视为一个独立的状态机,互不影响,帐户之间通过消息进行通信。所以理论上,当用户发起多项交易时,这些交易不会互相调用同一个账户。,事务可以并发执行。第三,账户模型的交易回放问题。以太坊采用给账户添加nonce的方式,每笔交易对应一个nonce,nonce每次递增。。这种方法虽然意在解决重放问题,但也引入了排序问题,使事务无法并行。比如以太坊,用户发送多笔交易,如果第一笔交易打包失败,会导致后续交易打包不成功。。在CITA,我们使用随机随机数方案,所以用户之间没有顺序依赖。事务,它不会导致串行故障,同时使并行处理事务成为可能。第四,存储问题。因为在UTXO模型中,事务中只能保存状态。。帐户模型的状态保存在节点中,由MPT存储在以太坊中,在块中只需要共识StateRoot。这样,对于链上的数据,帐户模型实际上更小。网络传输量更小,状态以MPT模式保存在本地,空间利用更高效。比如A转账给B,如果UTXO有两个输入两个输出。,你需要2个见证脚本和2个锁定脚本;在账户模型中,只需要一个签名,交易内容只包含金额。在最新的独立见证实现之后比特币的交易数据量也大大减少,但实际上验证节点和整个节点仍然需要传输和验证见证脚本。第五,UTXO对于轻节点获取地址状态更复杂。例如在钱包中需要向整个节点请求关于一个地址的所有utxo,并且整个节点可以发送一些utxo。钱包很难验证UTXO是否被消费过,钱包也很难证明UTXO是成套而不是部分成套。。对于账户模型,就简单多了。根据地址可以找到状态中对应的状态,当前状态的状态证明可以证明合同数据的真实性。。当然,对于UTXO来说,UTXO的根也可以在每个块中进行验证,这与目前比特币的实现方式有关,而不是UTXO的特性。

如何解决比特币和以太坊编程模型中的问题文档下载: PDF DOC TXT
文章来源: 理财天下网
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至2384272385@qq.com举报,一经查实,本站将立刻删除。