ETH-账户-15

111 阅读2分钟
  • BTC和ETH的账户模型:

    • BTC系统是基于交易transaction-based的账本,系统中未显式记录账户有多少钱,只能通过UTXO进⾏推算:
      • A转给B钱,需要说明币的来源
      • 账户中的钱在花的时候,必须⼀次性全部花出去
      • 为了避免交易时将过多交易费交给矿工,往往需要将交易的余额转移另⼀账户(即打一枪换一地,这有利于安全性,但和直觉不合)
    • ETH系统采⽤了基于账户的模型,与现实中银⾏账户相似:
      • 系统中显式记录每个账户以太币的剩余数量,不需要每次全部转账
      • 转账是否合法只需要查看转账者账户中以太币是否⾜够即可,天然防范双花攻击double spending
      • 方便智能合约的实行(因为合约的参与者需要一个稳定的身份)
      • 为避免重放攻击replay attack,需要添加一个计数器nonce
  • 以太坊系统中存在两类账户:

    • 外部账户external owned account
      • 类似于BTC系统中公私钥对
      • 包含域:
        • 账户余额balance
        • 计数器nonce
    • 合约账户smart contract account
      • 不通过公私钥对控制
      • 不能主动发起交易
      • 只能接收外部账户调⽤,之后才能发起交易或调⽤其它合约账户
      • 包含code(代码)、storage(相关状态的存储)
      • 创建合约会返回⼀个地址,通过地址就可以对其调⽤
      • 调⽤过程中,代码不变但状态会发⽣变化
  • 为什么ETH设计了基于账户的模型⽽不是沿袭BTC系统?

    • 以太坊⽀持智能合约,对于合约来说,要求参与者有⽐较稳定的身份
    • 有⼈提出使⽤合约实现⼀些⾦融衍⽣品 (financial derivative),例如往合约⾥投钱,预测期货未来价格⾛势,如果预测准确则返钱,如果投完钱账户地址变了,就没法返利了