以太坊的状态全局里住着两类账户,它们共享同一个存储空间,却遵循完全不同的控制逻辑。理解这个区别,是搞懂智能合约的第一步。
第一类叫外部账户(EOA),就是我们日常说的钱包。MetaMask、Ledger这些工具背后,本质上是一对公私钥。私钥在谁手里,账户就归谁控制。Alice用MetaMask转账时,她不是在"登录某个系统",而是在用私钥对交易进行密码学签名,然后把这笔签名广播到全网。
打开网易新闻 查看精彩图片
EOA在状态全局里存的东西很简单:余额、一个交易计数器(nonce),以及——关键点——没有代码。它就像一张签了名的支票,能发起动作,但本身不会自动执行任何规则。你可以用它给别人转ETH,也可以调用智能合约,但每一步都需要你手动授权。
第二类是智能合约账户。它也有余额,也能收发代币,但控制方式完全不同:没有私钥,只有代码。部署合约时,你把规则写进区块链;之后任何人满足条件,都可以触发这些规则自动运行。状态全局里存着它的余额、内部变量,以及那套不可篡改的代码。
这里的控制反转很有意思。EOA是人控制机器:私钥签名 → 交易执行。智能合约是机器控制机器:条件满足 → 代码执行 → 状态变更。Uniswap的流动性池、ERC-20代币的转账逻辑,都是后者在运作。
但两者在底层是平等的——都是状态全局里的账户对象,都有地址,都能持有资产。区别只在于触发机制:一个靠私钥签名,一个靠代码逻辑。当你说"我的NFT存在哪个钱包里",技术上并不准确。它存在状态全局中,只是你的EOA拥有调用权限,而合约账户拥有执行规则。
这种设计让以太坊能同时支持两种行为模式:人类的主观决策,和协议的自动执行。DeFi的整套乐高积木,正是建立在这两种账户的交互之上。
热门跟贴