以太坊部署智能合约是否会生成新区块?相关交易规则疑问
以太坊智能合约部署与调用相关问题解答
问题1:将智能合约部署到Ethereum网络时,是否会在区块链上生成一个新区块?
部署智能合约的操作本质是发起一笔收款地址为空、携带合约编译后字节码的特殊交易,这笔交易不会单独触发生成一个新区块。它会和网络中同时期的其他待打包交易一起,被矿工纳入新挖出的区块中完成上链。
问题2:合约运行过程中可能会向不同账户发送transaction,这类transaction是否属于智能合约对应的区块内的内容?
首先要明确:以太坊上的智能合约没有主动发起交易的权限,你所说的合约向其他账户发送的交易,属于外部账户触发合约执行时产生的内部操作。
这类内部操作的所有记录,会跟随触发合约执行的那笔外部交易,被打包进矿工当前生成的区块中,和合约部署时所在的区块没有从属关系,除非部署合约和触发转账操作是同一笔交易。
问题3:合约部署完成后会在网络中持续运行,每次调用合约的方法时,是否都会在区块中生成一笔transaction?
这个要分两种调用场景判断:
- 如果是写入型调用:调用的方法会修改链上状态(比如转账、修改合约存储的变量、mint NFT等),这类调用必须以交易的形式发起,需要支付Gas,最终会被矿工打包进区块上链。
- 如果是只读型调用:调用的方法仅读取合约的链上数据、不会修改任何状态,这类调用不需要发起交易,也不会被打包进区块,仅在你连接的以太坊节点本地执行即可返回结果。
内容的提问来源于stack exchange,提问作者Joey Yi Zhao
相关产品推荐
相关产品推荐

