10分钟智能合约:进阶实战-2.1 理解交易

19 阅读2分钟

欢迎订阅专栏10分钟智能合约:进阶实战

账户模型

与比特币的 UTXO 模型相比,以太坊等EVM链的最大特点之一就是其使用账户模型,类似“银行储户”概念, 使得以太坊账户可以拥有多种状态(如余额、代码),其作用是状态数据隔离和高效更新。

比特币的 UTXO(Unspent Transaction Output,未花费交易输出)  模型是其底层账本的核心记账方式。它与我们熟悉的银行账户模型完全不同,理解它就能从根本上明白比特币如何追踪所有权。 你的比特币“余额”并不是一个单一的数字,而是由你拥有的所有“钞票”(UTXO)面额相加的总和。 简单来说,UTXO模型更像现金交易,而账户模型更像银行转账。除了比特币,莱特币、比特币现金等也采用UTXO模型。

分类

  • 外部账户(Externally Owned Accounts):外部账户由私钥拥有者控制,外部账户下没有 code
  • 合约账户(Contract Accounts):由合约代码控制,合约账户下存有 code

状态

  • nonce: 由此账户地址发出的交易数量,防止双花
  • balance: 以太币余额,以wei 为单位
  • storageRoot: 账户存储的默克尔树根节点哈希值,用于存储和验证状态
  • codeHash: 在合约账户中表示其EVM code 的哈希

image.png

区块链与交易

在以太坊区块链上有一个一个去中心化节点,节点之间通过同步通过共识算法使区块链保持同步。

  • 每个节点会包含区块链
  • 区块链由区块构成
  • 区块中包含一系列交易 通过区块和交易执行,不断改变状态。

交易原理

作用

以太坊是基于交易的状态机,通过交易使以太坊World State状态转移

核心结构

构造一笔交易需要以下信息:

  • Nonce:帐户发送的交易数量的计数
  • GasPrice: 为支付该交易计算成本而设置的每单位Gas价值
  • GasLimit:用户愿意在此交易中花费的最大Gas量
  • to: 接收者地址,可以为EOA账户或者合约账户
  • value:本次交易中发送给接收者的以太币金额
  • data:消息调用的输入数据
  • signature:签名数据

执行

交易执行过程

  • 构建交易
  • transaction转换为message
  • 通过to目标地址判断交易类型
    • 简单转账不使用EVM,直接进行状态改变
    • 合约相关交易使用EVM,通过执行代码进行状态改变