Evm
evm 負載問題
在這個例子中,我試圖弄清楚 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: {}
我認為您被“推動合約儲存中的價值”這句話誤導了 - 這是非常懶惰的措辭。說“從合約儲存中獲取價值並將其推送到堆棧”會更清楚。