以太坊网络中转账ether是否只能通过smartcontract实现?
以太坊相关疑问解答
1. ETH转账是否必须通过合约?
不是。以太坊的账户分为两类:外部拥有账户(EOA,即用户通过私钥控制的普通账户)、合约账户。
- 普通EOA账户之间的ETH转账完全不需要合约参与:你只需要通过钱包工具填写收款地址、转账金额,支付对应的Gas费用并签名,就能完成转账,这是以太坊最基础的原生功能,早于智能合约的使用场景。
- 你所了解的
send/transfer方法,仅适用于合约账户主动转出ETH的场景:因为合约账户没有对应私钥,只能依靠预先编写的代码逻辑触发转账操作,才需要调用这两个方法。
另外智能合约也不是以太坊生态的必备组件:你完全可以仅使用以太坊的原生转账功能,全程不接触任何合约,正常完成ETH的收款、转账操作,不会受到任何限制。
2. 合约发起的交易是否都和部署交易在同一个区块?
你的理解不正确。
- 部署合约的交易确实会被矿工打包到某一个区块中,合约代码也会永久存储在链上对应地址的状态里,但后续和合约相关的交易不会和部署区块绑定。
- 首先要明确:合约本身无法主动发起交易,所有触发合约执行的操作,本质上都是由EOA账户发起的独立交易。每一笔触发合约的交易都会被矿工根据Gas价格、网络拥堵情况等因素,独立调度打包到不同的区块中,不可能全部归属于合约部署时的那个区块。比如你在高度为1700000的区块部署了合约,后续调用合约的交易可能被打包到1700100、1700250等任意后续区块中。
内容的提问来源于stack exchange,提问作者Joey Yi Zhao
相关产品推荐
相关产品推荐

