Blockchain

關於契約殺人和法醫調查

  • February 26, 2019

假設我創建了一份契約,並且使用它,我和其他人進行了許多交易,這意味著毫無疑問地證明了閱讀契約。

在某個時刻,有人殺死了合約,所有的程式碼都被取消了。

如果程式碼已被刪除,我如何證明過去進行的交易的含義?有沒有什麼實用的方法可以回到舊區塊以提取當時使用的智能合約?

提取程式碼 eth.getcode 的方法採用此處記錄的可選塊高度參數。函式簽名是:

web3.eth.getCode(addressHexString [, defaultBlock] [, callback]),

where defaultBlock(也許“塊”會是一個更好的名字?)可以是任何塊號或一些特殊值的字元串,例如"earliest","latest""pending". 您可以在此處查看文件。

這意味著您將能夠提取合約 N 個塊的程式碼。但是您應該注意,您需要執行一個儲存和索引所有歷史資訊的區塊鏈節點,以便允許您在任意塊高度進行呼叫。在 Parity 錢包中,此設置稱為--pruning archive,參見。https://wiki.parity.io/Getting-Synced#database-pruning

您還應該注意,此函式呼叫將返回合約的二進制程式碼,而不是原始碼。但是,如果您通過其他來源接收原始碼,則可以通過使用此答案中描述getcode的選項編譯原始碼來驗證返回的二進制程式碼是否與原始碼匹配:--bin-runtime

區塊鏈上發生的任何事情都不會被刪除:)

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