写点什么

(28DW-S8-Day20) 以太坊账户

用户头像
mtfelix
关注
发布于: 2021 年 03 月 12 日

比特币的记账模式基于交易的(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 是否超过自己本地记录的值,只有超过了才会更新。否则不会认可。

参考文献

  • 北京大学计算机系肖臻老师的区块链公开课《区块链技术与应用》


发布于: 2021 年 03 月 12 日阅读数: 20
用户头像

mtfelix

关注

内心平静是一生的追求 2018.01.17 加入

简单的技术人

评论

发布
暂无评论
(28DW-S8-Day20) 以太坊账户