区块链原理与技术
  • 区块链原理与技术
  • 比特币密码学基础
    • 密码学简介
    • 哈希函数
    • 数字签名
  • 比特币数据结构
    • 哈希指针
    • 默克尔树
    • 数据结构
  • 比特币交易模型
    • 身份确认
    • 交易服务
  • 比特币共识机制
    • 共识机制
    • 区块链的共识机制
  • 挖矿&脚本
    • 挖矿
    • 比特币脚本
    • 多重签名
  • 区块链分叉
    • 硬分叉与软分叉
  • 问题
  • 比特币匿名性
    • Page 1
  • 以太坊数据结构
    • 以太坊概述
    • 以太坊账户
    • 以太坊状态树
  • 交易树&收据树
    • 以太坊交易树&收据树
    • 布隆过滤器
    • GHOST协议
  • 以太坊:从PoW到PoS
    • 工作量证明PoW(节能)
    • 权益证明PoS
Powered by GitBook
On this page
  • 比特币账户
  • 以太坊账户
  1. 以太坊数据结构

以太坊账户

Previous以太坊概述Next以太坊状态树

Last updated 4 months ago

比特币账户

比特币系统不能直接查询某个比特币地址下的余额。因为BTC系统是基于交易的账本,系统中并未显示记录账户有多少钱,只能通过UTXO进行推算。

实际中BTC使用起来较为别扭,A转给B钱的时候需要说明币的来源,实际中则不用说明来源。而且UTXO中的钱在花的时候,必须一次性全部花出去。

以太坊账户

以太坊采用了基于账户的模型,与银行账户类似。系统中显示记录每个账户以太币的数量。

转账合法性:转账者账户中以太币是否足够

同时也不需要每次全部转账,天然地防范了双花攻击。

缺点:存在重放攻击,A向B转账,过一段时间,B将A的交易重新发布,从而导致A账户被扣钱两次。

为了防范重放攻击,给账户交易添加计数器记录该账户交易过多少次,转账时候将转账次数计入交易的内容中。系统中全节点维护账户余额和该计数器的交易数。

以太坊系统中存在两类账户:

  • 外部账户:账户余额balance,计数器nonce

  • 合约账户:balance、nonce,code(代码)、storage(相关状态-存储),不能主动发起交易,只能接收到外部账户调用后才能发起交易或调用其他合约账户。

为什么以太坊更换为基于账户的模型而不是沿用BTC系统?

比特币中支持每次交易更换账户,但是以太坊是为了支持智能合约,而合约签订双方是需要明确且较少变化的。尤其对于合约账户来说,需要保持稳定状态。