区块链学习笔记14——ETH账户

区块链学习笔记14——ETH账户

学习视频:北京大学肖臻老师《区块链技术与应用》
笔记参考:北京大学肖臻老师《区块链技术与应用》公开课系列笔记——目录导航页

基于交易的账本

BTC系统是基于交易的账本,系统中并没有显式的记录账户有多少钱,要根据UTXO的信息推算,这种模式的好处是隐私保护比较好,但使用上是比较别扭的,跟日常体验不太一样。
如A要转给B十个比特币,A要说明这十个币的来源是哪个交易。通过银行的交易是存钱的时候说明钱是哪来的,花钱的时候不需要说明。
另外,在前面交易中收到的币在花的时候必须一次性全花出去,不能只花一部分。

如下图这样的话,七个比特币会以手续费的形式交给矿工。在这里插入图片描述
所以必须要把剩下的七个比特币转给自己的另一个账户。
在这里插入图片描述

基于账户的账本

以太坊系统采用的是基于账户的模型,系统会显式的记录每个账户上有几个以太币
A要转给B十个以太币,只需要查看A是否有足够的余额就可以了,不需要说明币的来源。同时也不需要一次性全部转账。
在这里插入图片描述
这种模式对double spending attack有天然的防范,因为它不用管币的来源,每花一次钱就扣一次。
这种模式也存在缺点,就是重放攻击,A向B转账,过一段时间,B将A的交易重新发布,从而导致A账户被扣钱两次。在比特币中这是显然的double spending。以太坊中通过为交易添加计数器来解决,记录这个账户一共发布过多少交易,转账的时候这个计数器作为交易内容的一部分一起包含进去,都受到发布交易者签名的保护。系统中的结点维护A的状态,不光维护A的余额,还要维护计数器的值(初始为0,每次收到一个交易就加1),如果有人重放这个交易,发现交易的计数器的值和当前维护的值相等(正常应该是维护的值加一)就不会再执行这个交易了。

以太坊的账户类型

以太坊中存在两类账户,一类是外部账户,一类是合约账户
外部账户:类似于比特币的账户,本地产生公私钥对,谁有私钥谁就有账户的控制权。外部账户的状态:balance(账户余额),nonce(交易计数器)
合约账户:一个合约可以调用另外一个合约,同样需要nonce记录调用的次数,但是,合约账户不能主动发起交易,所有的交易只能通过外部账户发起,外部账户可以发起交易调用一个合约账户,这个合约账户可以调用另外一个合约账户。合约账户状态:除了balance和nonce之外还有code(代码)、storage(存储)

合约账户的调用:创建合约的时候会返回一个地址,知道这个地址就可以调用这个合约

为什么要设计以太坊这种新的模型,而不是沿袭BTC系统?
比特币基于交易的模型隐私保护比较好,但是以太坊要支持智能合约,要求参与者有比较稳定的身份,

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值