当前位置: 首页 > news >正文

以太坊账⼾模型的理解,合约账⼾、EOA账⼾认识

以太坊账⼾模型的理解,合约账⼾、EOA账⼾认识

以太坊使用账户模型(Account Model)而非比特币的UTXO模型。以太坊有两种类型的账户:

1. 外部账户(EOA - Externally Owned Account)

  • 特点:
    • 由私钥控制
    • 可以发送交易
    • 没有相关代码
    • 存储以太币余额
type EOAccount struct {Nonce    uint64         // 交易计数器Balance  *big.Int       // 账户余额Address  common.Address // 账户地址
}

2. 合约账户(Contract Account)

  • 特点:
    • 由代码控制
    • 能执行智能合约代码
    • 有自己的存储空间
    • 只能被外部账户触发
type ContractAccount struct {Nonce        uint64         // 合约创建计数器Balance      *big.Int       // 合约余额Address      common.Address // 合约地址Code         []byte         // 合约代码Storage      StateDB       // 合约存储CodeHash     common.Hash    // 代码哈希
}

两种账户的主要区别

特性 EOA账户 合约账户
私钥控制
可发起交易
包含代码
gas费用 支付 执行消耗
触发方式 主动发起 被动调用

账户状态

两种账户都包含以下4个基本字段:

type AccountState struct {Nonce     uint64     // 交易序号/合约创建数Balance   *big.Int   // 以太币余额StorageRoot Hash     // 存储树根哈希CodeHash  Hash      // 代码哈希(EOA为空哈希)
}

实际应用示例

以您的代码为例,监听代币转账事件时会涉及两种账户:

// 处理账户间转账
func handleTransfer(from common.Address, to common.Address, value *big.Int) {// from可能是EOA或合约账户if from.IsContract() {// 合约账户转账逻辑} else {// EOA账户转账逻辑 }// to可能是EOA或合约账户if to.IsContract() {// 触发接收方合约的回调to.Call(transferData)} else {// 直接转账到EOAto.Transfer(value)}
}

通过理解这两种账户模型,可以更好地开发以太坊应用并处理不同类型账户之间的交互。

http://www.hskmm.com/?act=detail&tid=35387

相关文章:

  • Luogu P12376「LAOI-12」Calculate 题解 [ 蓝 ] [ 贪心 ] [ 线性 DP ] [ 前缀和优化 ] [ 范德蒙德卷积 ]
  • 方格图路径计数 dp 的反射路径优化
  • 每日反思(2025_10_20)
  • java基础9-面向对象进阶
  • 企业信息化建设的钱都花在哪儿了?
  • 身份运算符
  • 位运算符
  • 关系运算符
  • 赋值运算符
  • 算术运算符
  • Inno Setup 打包脚本模板
  • LCR 155. 将二叉搜索树转化为排序的双向链表
  • 解释这些区块链核⼼概念:区块、交易、Merkle Tree、共识机制(PoW、PoS)、Gas Fee 原理1
  • Claude code cli 的think mode到底是啥?
  • 【VM虚拟机共享主机代理】2025年10月20日可以pass的一些配置
  • 玄机——Linux后门应急
  • 2025/10/20
  • UI弹窗遮罩屏蔽触发事件的处理
  • newDay13
  • 小整数的地址
  • 概率论
  • 一次XFS死锁问题分析
  • P11150 [THUWC 2018] 字胡串
  • 推荐系统与机器学习在会员服务中的应用
  • ManySpeech.MoonshineAsr 使用指南
  • 日志|JAVAWEB|maven
  • QT_基础
  • 2022 ICPC Hangzhou G and 2022 ICPC Jinan
  • C++在类定义内的函数包含static代表什么含义呢?
  • 2025/10/20~2025/?/? 做题笔记 - sb