Solidity

我在哪裡可以學習閱讀操作碼流並學習如何調試事務?

  • September 4, 2021

有許多工具視覺化工具可用於閱讀交易,但我在哪裡可以學習如何理解這一點?

例如,第一個連結有一系列操作碼(及其相關的氣體和深度)。如果我可以訪問契約,我能否將操作碼與契約的不同部分進行比較?Solidity 函式是否與操作碼匹配?為了閱讀這篇文章,我必須看到一組說 5 個操作碼並知道“哦,這是兩個數字相加”嗎?

乙太坊中的程式碼在乙太坊虛擬機上執行,該虛擬機是一個執行指令的堆棧機器。對任何合約的呼叫都以指令指針 0 開始,這意味著放置在地址上的程式碼中的第一條指令總是首先執行。

可以在以下答案中找到有關如何在乙太坊中在操作碼級別上處理函式呼叫的簡短介紹:乙太坊方法執行開始時的程序計數器是什麼?

絕對有可能了解不同操作碼的含義。如果您對機器程式碼或彙編程式碼有一些先驗知識,那肯定會更容易,但這絕不是要求(您必須從某個地方開始,對嗎?而且 EVM 並不比大多數 RISC 架構複雜)。

據我所知,最好的資料來源是乙太坊黃皮書附錄 H,它列出了乙太坊虛擬機的所有可用操作碼。

例如,操作碼ADD(0x01)(黃皮書第 28 頁)從堆棧中刪除兩個值並向堆棧添加一個新值,其中堆棧頂部的新值將是從堆棧中刪除的兩個值的總和(模數 2^256)。

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