(28DW-S8-Day20) 以太坊账户
比特币的记账模式基于交易的(transaction-based ledger)。
什么意思?
就是没有账户,没有余额。只有一条条的收支记录,记录在主链里面。
比如一笔交易:
T1: A->B(10BTC)
那么当 B 想要把 3 个 BTC 给 C 时
需要说明白, 这个 3 个 BTC 的来源,也就是需要明确 link to T1。T2: B->C(3BTC) link to T1
但是剩下的 10-3=7 个 BTC 全部给矿工吗?显然太亏了,那就需要再增加一个额外的 B->B(7BTC) ,且表明来自 T1T3: B->B(7BTC) link to T1。
这个和我们生活中的体验完全不一样。
好处是隐私保护比较好,问题是对于目前账户中的余额不是很明确,有时候连自己也不是很清楚。
以太坊的记账模式基于账户的(account-based ledger)。
就和我们生活中的体验差不多,每个以太坊都有个账户(account),里面有余额,这时你转账时,别人不需要像 BTC 一样采用追溯的方法看你到底有没有这么多钱可转,直接看余额够不够就行。
每个账户的余额在全部网络中共同记录的,所以自己没法凭空增加余额。
double spending attack & replay attack
比特币有个双重支付的问题,但是以太坊基于账户的记账模式,天然对这个问题有抵抗力。
但是,另外有个与之对称的问题:replay attack。
double spending attack 是花钱的人不诚实,多次支付。
replay attack 是收钱的人不诚实,他把别人给他的转账记录,重复在网络中发布。这样自己会多次收钱。
怎么防守 replay attack?
以太坊的设计是,在发布的交易记录中,增加一个账户交易次数计数器(nonce),然后整体用转账者的私钥加密签名。 网络中的节点在收到这个交易广播时,都是判断对应 account 的 nonce 是否超过自己本地记录的值,只有超过了才会更新。否则不会认可。
参考文献
北京大学计算机系肖臻老师的区块链公开课《区块链技术与应用》
版权声明: 本文为 InfoQ 作者【mtfelix】的原创文章。
原文链接:【http://xie.infoq.cn/article/45ff182a23cf8475b533bba77】。文章转载请联系作者。
评论