因此,根据我的理解,在创建合同时,用于确定合同地址的两个变量是msg.sender和nonce值。因此,如果我在同一事务中创建两个合同,例如我使用此代码https://ropsten.etherscan.io/address/0xcb7d7e99e56406a675173f0ddbde7d8cc3392e5e#code
为什么它会在两个不同的地址生成两个合约,我会发生的事情是它们会在同一个地址生成,而一个人只会覆盖另一个或类似的地址。
答案 0 :(得分:2)
您了解由邮件创建者的地址确定的合同地址,并且nonce是正确的。但是,在您发布的示例中,msg.sender
是Test
合同的地址。
以下是发生的步骤:
Test
部署0x98081ce968e5643c15de9c024de96b18be8e5ace
的交易。根据交易信息,当时账户的现时为639。Test
合同的地址为0xcb7d7e99e56406a675173f0ddbde7d8cc3392e5e
。Test
期间,构造函数然后通过“内部事务”创建两个新合同。从Divert
的合同地址0xcb7d7e99e56406a675173f0ddbde7d8cc3392e5e
部署了nonce=1
。 OverRide
部署在nonce=2
的同一地址。您可以查看内部交易的详细信息here。