以太坊账户机制VS比特币UTXO

以太坊账户机制VS比特币UTXO_第1张图片

作为区块链中两大巨量数字货币比特币与以太币,它们在整个数字货币市场的份额占有量超过一半。无论是比特币还是以太坊,其设计理念都有着独到一面。


如果不太理解比特币以及以太坊底层运作机制,可以先参考下笔者之前的文章,《解读区块链底层优美设计理念》和《以太坊:区块链中的“Windows”操作系统》。


比特币的UTXO是什么?

UTXO代表着Unspent  Transaction Output。


在比特币社区中,Transaction称为TX,所以才有了UTXO称号,实际我们所拥有的比特币,其本质就是UTXO(未被花费的交易输出)。


银行转账、证券交易所、网络支付平台等是基于账户作为基础设计模型,传统意义上的账户系统是中心化的,导致一个中心服务器维护一个数据库,一旦服务器出现问题,所有的数据以及服务都无法运作,而去中心化比特币中没有所谓的账户概念。


先说说比特币中UTXO机制是如何运作?比如小A在比特币网络中发起一笔交易,小A钱包地址中拥有8个比特币,给小B发送5个比特币,这笔交易分为两部分,一部分,小A的5个比特币发送至小B比特币地址中,另一部分,剩余3个比特币发送至小A自己比特币地址中。


每一笔UTXO都是不可分割的,只有通过交易将其分割到不同地址当中,支付是交易的输出,收款是未花费的输入。UTXO 的核心设计思路是无状态,它记录的是交易事件,而不记录最终状态,也就是说只记录变更事件,用户需要根据历史记录自行计算余额。


以太坊账户机制

以太坊中并没有使用比特币的这种 UTXO 设计,这与以太坊的宗旨有关,以太坊的目标是构建通用计算,而比特币是数字货币,需求不同导致设计的不同。V 神指出了 UTXO 的缺陷,一共有三类:


·可表达的状态少 :

UTXO

只能是已花费或者未花费状态,这就没有给需要任何其它内部状态的多阶段合约或者脚本留出生存空间,这也意味着 UTXO 只能用于建立简单的、一次性的合约,UTXO 更像是一种二进制控制位。


·区块链盲点(Blockchain-blindness)

UTXO

的脚本只能看不到自己这条历史轨迹,无法看到区块链的数据的全貌,这导致了 功能性扩展受到了限制,我们在花费比特币的过程中需要小心翼翼的组合 UTXO,这也导致了系统状态逻辑复杂,不适合设计成智能合约的基础结构(Fabric和Ethereum都是普通账户模型)。


·价值盲点(Value-blindness)

UTXO

脚本不能提供非常精细的金额控制,基于账户模型的余额在花费过程中,可以任意的按值存取,它仅取决于程序能表示的最小精度。


以太坊采用账户机制,相互之间通过消息进行交互,每个账户有一个状态与之对应以及160位地址标识符。


比如小A拥有8个以太币,给小B发送5个,小A的账户由5个变为3个以太币,小B账户上增加4个以太币,它们账户地址仍为原来地址。


以太坊中的账户分为两种类型,外部拥有账户与合约账户。


外部账户:

·有一个以太币余额。

·可以发送交易(以太坊转账或激活合约代码执行智能合约)。

·通过私钥控制。

·没有相关联的代码。


合约账户:

·有一个以太坊余额。

·有相关联的代码。

·代码执行是通过交易或者其它合约发送的call激活。


账户构成了以太坊用户与智能合约之间联系,可操作性放大,一个外部账户可以发送请求通过合约账户与外界进行消息应答。


以太坊账户机制中需要维护的数据,包含:


·nonce:外部账户为交易次数,合约账户为创建的合约序号。

·balance:此地址的以太币余额。

·storageRoot:账户存储内容组成的默克尔树根的哈希值。

·codeHash:账户EVM代码的hash值。合约账户即为合约代码的哈希值,外部账户为空字符串的哈希值。


两种解决方案优势

无论是比特币与以太坊,在设计理念上,提供了与传统意义上的交易模型不一样的解决思路,模型设定上各有春秋。


UTXO的优势:

·私密性比较强,理论上可以为每一笔输出设置一个地址。

·无需维护余额等状态值,余额通过过往记录计算。

·UTXO是独立数据记录,可以通过并行极大的提升区块链交易验证速度。

·无需关心事务问题,只需要关心输出脚本即可。

·UTXO无法分割,每次交易都需要多个输出,分别为支出与找零。


账户的优势:

·可以快速获取账户的余额,而比特币需要将指定地址所拥有的所有UTXO中的未花费交易总值整合。

·节省空间,因为每笔交易只有一个输入一个输出。

·可以较容易的实现图灵完备的智能合约。

·轻客户端,可以通过沿指定方向扫描状态数来访问与账户相关数据。


UTXO是比特币上的原生设计,在区块链以前是没有这种逻辑数据结构,UTXO 的出现给了人们看待数据转移的不同视角,但 UTXO 不是所有区块链所必需的,对于不同的场景,可以选择不同的交易模型。无论是账户机制还是UTXO,带给数字货币的发展都是质的飞跃,当然,可能未来有更好的解决方案重新定义数字货币交易体系。

你可能感兴趣的:(以太坊账户机制VS比特币UTXO)