作者:Xuejie https://xuejie.space/2020_03_20_what_do_we_mean_when_we_say_account_model/ 在区块链世界中,人们普遍认为,在可用性方面,帐户模型比 UTXO 模型更有优势,我一直在努力弥合区块链中的 UTXO 模型和帐户模型之间的差异。 关于这个问题,我们有一些初步尝试: https://talk.nervos.org/t/animagus/4387 但是最近,我开始觉得 UTXO 模型和账户模型本质上是一样的,或者如果我们用术语来重新表述的话,UTXO 模型只是一个软件定义的版本的账户模型。如果你对此感到疑惑,我将在下面详细解释。 为了使事情更容易理解,在这篇文章中,我将只使用 UTXO 模型的说法。了解我们的人都知道,我们将 UTXO 模型推广到了 cell 模型。cell 模型的附加优势在这里并不重要。下面我将讨论任何能够存储数据的 UTXO 模型(比如 CKB 的 cell 模型,或者在使用 OP_PUSHDATA 的老式普通的比特币的 UTXO 模型),在编程模型方面都可以与帐户模型等价。 什么是账户模型? 在基于账户模型的区块链中,交易只说明操作或带有参数的函数调用。实际的状态,是从区块链中计算和推导出来的,如下图所示: 而在基于 UTXO 的区块链中,状态都包含在交易中。你直接在交易中放入你想要的数据。通常,多个 UTXO 可以一起工作来提供整个状态的一部分。当你希望更改一部分数据时,你可以将该部分的 UTXO 作为交易中的输入包括进来,并提供一个包含更新数据的新 UTXO。
关于这两种模型的争论已经有一段时间了。
一个小转换 我们将在这看到一个类似于 ERC20 的 Token 的转账操作。在帐户模型中,通常有一个 Token 帐户存储所有用户的 Token 余额。当有人想要转账时,只需要提交说明from,to和balance的交易以进行转帐: 然后,区块链执行链上的交易,并更新包含更改的内部状态。 为每个帐户创建预定好的一定数量的 cell(注:可理解为格子)。实际上,你只需要定义这里的数字,缺少的 cell 可以解释为虚拟的 cell; 每个单元格都将整个空间的一部分存储在键-值中; 如果交易需要更新某个值,它首先查找包含该值的键的 cell,并将相应的 cell 作为交易输入,然后提供一个包含更新数据的新的 cell;
这里整个帐户状态包含 4 个 cell,但是由于只需要更新 2 个 cell,所以交易只包含这 2 个 cell。
如果我们考虑这里的方案,它实际上并没有利用任何特定于应用程序的知识,唯一的假设是帐户模型使用键-值存储,现在已经是这种情况了。这意味着我们可以在 UTXO 模型的基础上构建一个账户模型 generator: generator 响应来自 dapp 开发者的读取请求,查询该账户当前活动的 cell,提取所提供的键的值; generator 还接受帐户模型风格的函数调用,它使用当前的活动的 cell 运行该函数,并生成包含更新 cell 的交易,将交易传递给区块链以供接受。为了提高灵活性,我们可以在这里引入 账户模型风格的虚拟机,如 EVM、Move 等; 然后,链上智能合约 可以运行由 generator 运行的相同代码,以验证生成的数据是否正确。如果使用了 EVM 或 Move 这样的 VM,我们可以将相同的 VM 移植到链上智能合约,并在这里执行相同的操作。 当然,需要构建这个新的 generator,使基于 UTXO 的区块链的行为类似于基于帐户的区块链。我在这里的观点是,这是一条完全可行的路线,这意味着基于 UTXO 的设计,永远不会妨碍基于帐户模型构建的 dApp。 在 Generator 中复制逻辑 对这条路线的不断批评,也是我之前所担心的,是我们在链外 generator 部分和链上智能合约中都复制了逻辑。但最近,我一直在质疑这一点:这真的是一个问题吗?在区块链的世界里,一个被广泛遵循的原则是「Don't trust, verify」。
交易具有有效的签名; 正常交易不能发出大于当前发行量的 Token。 一旦满足了这两个规则,ERC20 相关代码的其余部分就可以在链下安全地运行了。这意味着你不必再次在链上重新运行相同的代码。但这只是针对特定 dApp 的优化,我甚至会质疑是否有必要进行优化。对我来说,前面的更通用的解决方案已经工作得很好了。 软件定义世界 当然以上描述的 generator 部件需要进一步开发。但是,如果我们将目光投向区块链世界之外,再看看一般的软件行业,我们会注意到一种不可阻挡的趋势: CPU 从CISC设计转移到RISC设计,使用基于软件的编译器来填补 RISC 中缺失的部分 高度专业化的基于硬件的交换机正在被利用复杂软件的普通计算机吃掉 附加存储或存储区域网络的传统网络已被采用软件定义的存储的商品云所取代 即使在通讯塔中,也已经部署了更多软件提供更好的性能 你注意到一个模式了吗?我们看到的是一个复杂的硬件被简单的硬件迅速取代的世界。越来越多地使用高度专业化的软件来补充过去硬件中的功能。
基于帐户的区块链在区块链(硬件)部分增加了更多逻辑; 基于 UTXO 的区块链在区块链(硬件)部分中加入了更少的逻辑,并利用软件来补充更多的特性。 如果我们只看到一种或两种情况,这可能只是一个异常,但我们看到的是:从行业角度来看,看到了更多从硬件向更多软件的转变。我不确定你的看法,但我个人认为,我们这个行业的所有聪明人都做出了正确的选择 :P 更多精彩内容,欢迎前往 Xuejie 个人博客查看: https://xuejie.space/ 或前往 CKB Docs 查看: https://docs.ckb.dev/blog 本文来源:NervosNetwork —- 编译者/作者:NervosNetwork 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
当我们在说账户模型时,是在说什么?
2020-05-21 NervosNetwork 来源:火星财经
LOADING...
相关阅读:
- Dapp数据存储提供商Bluzelle将于8月开始主网启动2020-07-30
- Shelley确认将于7月29日发布,到2021年将有数千个dApp2020-07-27
- Dapp.com与Opera浏览器合作2020-07-25
- 人人可以发币的时代,从邓麒麟的红包币看项目设计完整性?2020-07-23
- 央行下发《区块链技术金融应用评估规则》 首次从顶层设计角度给出整2020-07-22