🔑 关键词:EOA合约账户签名机制EIP-191EIP-712交易生命周期合约钱包EIP-1271


背景:账户与签名机制,是 Web3 的根基

在 Web2 中,“账户”通常代表用户名 + 密码 + Session,但在 Web3 中,“账户”即地址,而身份认证、操作权限全部基于签名验证。必须理解:


原理:账户类型与签名机制全景图

✅ Ethereum 中的两种账户

类型 描述 是否能发起交易 是否含代码 关键区别
EOA 外部拥有账户,用户通过私钥控制 由用户私钥签名
合约账户 部署在链上的合约,自动执行代码 ❌(默认) 无私钥,不能直接签名交易

签名机制详解(EIP-191 与 EIP-712)

ChatGPT Image 2025年6月27日 12_58_21.png

🔐 EIP-191:最基础的签名格式

用于纯文本或简单结构的签名验证

const sig = await walletClient.signMessage({
  account,
  message: 'Welcome to DApp!',
})

前端多用于“登录签名”,生成签名后发送到后端验证地址


🔐 EIP-712:结构化数据签名(推荐)