cover_image

不得不聊区块链模型的爱恨情仇

阿凯 Metaverse前端
2020年04月26日 10:00

故事发生在新技术区块链那,有两家门第相当的模型,累世的宿怨激起了新争,鲜血把码农的白手污渎。交代过这几句挈领提纲,请诸位耐着心细听端详。

图片

UTXO:直译为未被花费的交易输出,它出身显赫,是区块链开山鼻祖BTC的模型。

Account:作为区块链小王ETH的模型,掀起了区块链技术一轮又一轮的高潮,在技术上突破创新。

它们之间各有千秋,在区块链这片全新的天地杀的难舍难分。

UTXO的优点:

  • 在版本控制方面的考虑,svn是中心化的数据库保持一份账本,这和区块链的设计自然是相违背的,git是去中心化的数据库,但会保存太多冗余数据,对于分布式性能肯定是要大打折扣。UTXO数据库是抛弃了历史包袱的git, 只存储了最后一个版本。简易实用。

  • UTXO 具有天然的匿名效果,一个账户所对应的未花费交易是难以发现的,如门罗币就是采用混币的方式实现隐私的。

  • 在性能方面,由于UTXO是独立的数据记录, 那么就存在极大的并行性可以提升区块链交易验证速度。

图片

Gavin Wood何许人也,作为以太坊黄皮书的设计者对UTXO的理解,十分深刻!既然UTXO有这么多的优点,他为什么弃用UTXO了?这时你应该提出个问题,以太坊的最大亮点是什么?你肯定会回答:智能合约。正是因为智能合约的考虑,Gavin Wood要基于UTXO去实现图灵完备的智能合约(功能多样性的超级电脑)是困难的。而账户模型是天然的面向对象的,对每一笔交易,都会在相对应账户上进行记录(nonce++)。为了易于管理账户,而引入了世界状态,每一笔交易都会改变这个世界状态。这和现实世界是相对应的,每一个微小的改变,都会改变这个世界。

正是如此,选择Account模型有以下几个原因:

  • UTXO 的复杂性是没有必要的,而其复杂性在实际运行中会比在理论上还要大。

  • UTXO 是无状态的(stateless),因此并不能很好的适用于比资产的发行和保存更加复杂的应用,复杂应用一般来说是有状态的,比如不同类型的智能合约。

UTXO与Account孰优孰劣结论不着急做出判断,Account模型作为后来者有着后见之明,似乎在占了上风。但是,我们作为后见之明之后见,发现Account并没有为区块链提供一个完美的模型。

  • UTXO只需要看最后一次交易,而账户系统要看历史全数据后把所有的增减操作全部加起来才能获得正确的余额,两者效率差异随着时间推移会越来越大;

  • UTXO未来可以裁剪历史老数据,而账户系统则不能丢弃老数据,前者区块链可以控制住整体大小,而后者只能持续膨胀。

图片

联盟联的龙头Hyperldger初期同样使用的Account模型,开始切换至UTXO模型。他们为此做出的解释:我们同样正在将我们的账户、余额这样简单化的概念切换到应用比特币 UTXO 模型在事实上的标准,只是稍微作了改进。虽然 Hyperledger 完全不使用比特币,比特币系统仍然是非常强大而富有创造性的,人们已在其中投入上亿美元。通过将比特币的交易模型应用为标准,Hyperledger 的用户将从比特币的创造性中受益;反之亦然,与让 Hyperledger 变得更富互操作性有同样的效果。

除了"比特币的网络效应",我们可以为 UTXO 模型提出一些技术上的主张;一个特别的主张是:它允许交易的并行化处理,正如一个交易发送者发送两笔独立的交易是,他们可以小心地花费独立的 UTXO ,因此这些交易也可以用任意次序来处理。这种顺序不变性与可并行化属性也许可以带来可扩展性的好处。使一个人的币可以分离开来,同样有一些隐私保护上的好处,尤其是,当一个用户接到的每一笔 UTXO 都使用了一个不同的地址的时候,因为这些地址的私钥可以确切地被所有者通过一个 master seed 生成出来;虽然这种隐私所得很容易被打破,如果该用户并没有仔细地保证他的资金相互分离的话。在本文作者看来,如果隐私是被强烈偏好的,那么由 UTXO 提供的资金分离对于这个任务来说是远远不够的;这将需要更复杂的建构如环签名(Ring Signatures),额外的同态加密(Homomorphic Value Encryption)以及 ZK-SNARKs。

在最近的以太坊实现中,我们发现有了一个显式的协议层概念,关于账户和交易中的连续数字;因此,以太坊已经为用户做出了抉择,这是用来保护账户的模式。在下一次重要发行,Serenity ,正在计划一个抽象模式,将这一选择从协议层下沉到 EVM;本质上,每一个用户都将可以为自己选择用于保护账户的机制。这打开了朝向创造性的大门,比如,可并行化nonce(本质上,这个方案结合了一个带有千位二进制过滤器的nonce,保证nonce是一次性使用的,但允许用户提前使用未来的nonce,允许高达K笔交易以任意顺序处理),甚至允许用户建立基于 UTXO 的方案,如果他们希望的话。

在后续的以太坊版本中,通过分片实现可扩展性,会有一个跨分片异步调用方案,如果一个合约(以太坊术语,及一个由一段代码控制的账户)希望调用另一个分片中的合约,该合约会在它所在的分片中创建一个“收据”,收据可以被另一个分片上的合约通过默克尔树分支来验证。这种收据的概念在本质上融合了一个异步函数调用过程的概念与一个 UTXO 的概念:如果该函数调用问题是价值转移,则函数调用过程在表面上 就是 一个 UTXO ——虽然是一个远远更可一般化的版本。因此,一旦所有这些协议变更实现了,以太坊将在多种形式上支持账户模型和一个 UTXO 模型,允许用户从不管哪一个他们认为对给定应用来说最好的模式中获益。

最后的最后

所以不管你姓A姓U,只要对区块链发展有好处的,都是好模型。看准了就大胆的试,迈开步子大胆的闯。甚至可以像IOTA摒弃了两大经典模型,创新的采用了DAG模型在区块链上。对于DAG模型可以,咱可以再开一篇逼叨逼叨。欲知IOTA如何,且听下回分解!

图片

继续滑动看下一个
Metaverse前端
向上滑动看下一个