Transactions

合約被殺兩次

  • March 24, 2017

由於延遲(不是幾分鐘,但可能是幾小時),首先探勘一個終止交易https://testnet.etherscan.io/tx/0xf087a137e7f4962260da26928d205cabd71eed68fd79f8f35fb1027073f03812,幾分鐘後第二次重試https://testnet.etherscan.io/tx/ 0x04658d7262ab966b6f83cce78529d02d66318e02aa59411ef1d18c1989f5f3fe(即同一個合約的 2 次終止交易)該合約被終止了兩次。我想知道這是否與乙太坊標準一致。如果合約https://testnet.etherscan.io/address/0xabc7a3a72af1f94ff6029ef01bc0f7c49e2ed637首先被殺死,那麼同一個合約怎麼可能接受對方法 kill() 的第二次呼叫?

等待交易被探勘時,您可以找到有關執行這些交易時測試網 Ropsten 上奇怪延遲的詳細資訊。

我想你能在一個區塊中執行兩次契約嗎?可以對這個問題有所了解,但這都是關於同一個塊上的交易,這裡不是這種情況,因為這兩個殺死屬於不同的塊。

如果您查看 Geth VM 跟踪:

https://testnet.etherscan.io/vmtrace?txhash=0xf087a137e7f4962260da26928d205cabd71eed68fd79f8f35fb1027073f03812

其次是

https://testnet.etherscan.io/vmtrace?txhash=0x04658d7262ab966b6f83cce78529d02d66318e02aa59411ef1d18c1989f5f3fe

……你看它只是第一次真的自殺了。

第二次它什麼也沒做,因為之前的操作已經刪除了程式碼suicide

不直覺的方面是第二個事務看起來“成功”,儘管它實際上並沒有做任何事情。

引用自:https://ethereum.stackexchange.com/questions/13474