加密币
以太坊与比特币账户的区别
以太坊与比特币的账户模型,从根本设计出发点来讲是不同的。 根据以太坊黄皮书的描述,以太坊账户的概念与“银行储蓄账户”的概念相似。 每个人都能开设账户,且账户初始余额为0。 当以太坊区块链运行时,不断产生的交易会往账户中增加或者减少相应的款项,账户余额随着交易的执行而变更。 这个账户的状态是日积月累地随着时间和交易而变化的。 任意确定的时刻的任意账户的余额是可以唯一确定的。 检索和查询账户余额的操作是便利的,仅需要找到该账户,并读取最后的账户状态即可知晓。 比特币的”Unspent Transaction Output”未花费结余模型(以下简称 UTXO)则刚好相反。 比特币的概念与纸币的概念相似。 例如一个用户收到100元、20元、10元的纸币,比特币没有真正的“账户”的概念。 该用户持有的余额并不是一个单纯的总和数字,而是在此钱包中所有未花费的纸币(输出)的总和。 这就是”Unspent Transaction Output”名称的由来。 而任何支付行为也不是简单的对账户余额的加减。 支付行为是两个顺序操作的过程: 这个操作胜在不需要时刻保持追踪每个用户的余额,减轻了系统负担。 但是,当想查询一个用户究竟有多少余额的时候,需要遍历区块链交易历史,并集齐该用户所有未花费的输出,才能计算出余额。 所幸比特币钱包软件帮助我们自动收集数据,代劳了这个枯燥的过程。 隐私与安全性的比较 以太坊和比特币都是公链,所有的交易的地址在都是在网络中公开并永久记录。 用户在每次收入、消费时,都不可避免地会和现实世界的人打交道。比特币用户和钱包采用如下的两条准则保护用户的隐私: 这三条指导思想在比特币桌面客户端,以及轻量级手机比特币钱包中都得到了贯彻。最大程度保障了用户的隐匿性。而以太坊则恰恰相反,它鼓励的是: 那么,孰优孰劣呢?请思考如下的生活场景。 张三日常使用虚拟货币作为工资结算的方式。 若张三使用 以太坊 ,张三的公开地址是唯一的,他的日常交易行为如下图所示。 张三使用单一账户收工资、支付生活花费的示意图在这种情形下, 使用以太坊账户比使用日常银行账户的隐私性还要低。 若张三使用 比特币 ,张三的钱包 App将替他为每次接收比特币而自动产生新地址,如下图所示。 比特币收款形式:多地址收款。灰色为张三控制的地址集合这种情形下,隐私性得到了一定提升: 数据体积与并发能力 单一以太坊的账户状态其实是世界状态的一个子状态,在全网络的节点中都会留下一份相同的状态拷贝。 每次相关的交易将变更这个账户的状态。 而在对比之下,比特币仅有地址与交易两种数据记录在区块链上,它与持有人不挂钩,并没有保留一份与持有人相关的总和状态。 在系统设计中,以太坊与比特币选择了“空间换时间”和“时间换空间”的不同道路。这在编程领域中是非常经典的做法。 以太坊的账户仅维持一个账户的单一状态,任何状态的改写都是通过交易完成的,对于某账户的结算行为是串行执行的。 账户状态修改后同步到每个网络节点中备份。账户的状态占用硬盘空间体积小,易于查询。 但同时交易过程是不可并发的,只能一笔交易对状态修改完后,再进行下一笔交易。以太坊的交易输入也较为简单,为单一输入。 比特币的 UTXO 则不然。持有人拥有数个,甚至大量的未消费输出UTXO(类比持有多张纸币)。 查询到该持有人的总未消费余额需要花费时间在区块链上进行搜索。 当持有人想同时购买两样不同的东西,并分别为其支付的时候,他可以用不同的未消费输出UTXO来分开支付,发送交易请求到网络上。 交易的确认结算将有很大概率是并行的。这将大大提高对于单一持有人结算的速度。 发送交易时对双花的处理 在数字货币交易中,将一笔交易发送两次,企图让两次转账都获得网络确认的行为,称为双花(double spend)。在数字货币的世界中,经常会发生因为程序错误或者黑客故意反复发送交易请求的行为。这些情况在现实世界中的现金付款场景里是不存在的,纸币在购买前存在于买家手中,在购买后存在于卖家手中。一张纸币不可能同时出现在两处,也不可能被买家支付两次给不同的人。 比特币针对双花问题的处理较为简单直接。它通过共识机制的一部分:仅承认积累难度最高的链为公认链以及用对UTXO Read more…