🔑 关键词:
EOA、合约账户、签名机制、EIP-191、EIP-712、交易生命周期、合约钱包、EIP-1271
在 Web2 中,“账户”通常代表用户名 + 密码 + Session,但在 Web3 中,“账户”即地址,而身份认证、操作权限全部基于签名验证。必须理解:
| 类型 | 描述 | 是否能发起交易 | 是否含代码 | 关键区别 |
|---|---|---|---|---|
| EOA | 外部拥有账户,用户通过私钥控制 | ✅ | ❌ | 由用户私钥签名 |
| 合约账户 | 部署在链上的合约,自动执行代码 | ❌(默认) | ✅ | 无私钥,不能直接签名交易 |

用于纯文本或简单结构的签名验证
const sig = await walletClient.signMessage({
account,
message: 'Welcome to DApp!',
})
前端多用于“登录签名”,生成签名后发送到后端验证地址