Evm

evm 負載問題

  • December 7, 2017

在這個例子中,我試圖弄清楚 EVM 中的計算是如何工作的。

PC: 3 STACK: [54] MEM: [], STORAGE: {}

SLOAD 從堆棧中彈出一個,並將合約儲存中該索引處的值推送到堆棧上。由於合約是第一次使用,那裡什麼都沒有,所以為零。

PC: 4 STACK: [0] MEM: [], STORAGE: {}

有人可以解釋 SLOAD 做了什麼嗎?它說“從堆棧中彈出一個”,好的,那將是 54。“並將值推送到合約儲存中” 哪個值?彈出的(即鍵?)還是消息值?然後什麼都沒有添加到儲存中..不知道發生了什麼:S

這是之前的狀態SLOAD

PC: 3 STACK: [54] MEM: [], STORAGE: {}

片語“SLOAD 從堆棧中彈出一個”表示它從堆棧中取出頂部項目,在本例中為 54。這是 SLOAD 的操作數。

SLOAD然後在合約儲存中查找密鑰 54 的值,並將找到的值推送到堆棧中。在這種情況下,鍵 54 處的儲存值為零(因為合約是第一次執行),所以壓入堆棧的值是0

因此最終狀態(堆棧上為零)。

PC: 4 STACK: [0] MEM: [], STORAGE: {}

我認為您被“推動合約儲存中的價值”這句話誤導了 - 這是非常懶惰的措辭。說“從合約儲存中獲取價值並將其推送到堆棧”會更清楚。

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