Evm
用非零字節碼發布合約的最短字節碼是多少?
是的,這是高爾夫。所以起訴我。
規則
的響應
getCode()
應該有一些不是 0 或 x 的字元。要對其進行測試,您可以將以下內容與本地 testrpc 一起使用:
web3.eth.sendTransaction({data:'BYTECODE', from:web3.eth.accounts[0]}); web3.eth.getCode('THE_ADDRESS');
或者你可以使用
evm
Geth 自帶的命令:
evm --debug --code BYTECODE run
.例子:
這是一個有效但冗長的範例:
0x600180600b6000396000f3
不要破壞它
>!
如果您在回答前使用前導它將被隱藏
自從 Noel 接近了,是時候釋放我的 6 字節了:
0x3859818153F3
字節碼:
CODESIZE MSIZE DUP2 DUP2 MSTORE8 返回
工作如下:
使用 CODESIZE 僅使用一個字節即可在堆棧上獲取非零值 (0x06)。MSIZE 將 0 放入堆棧。這將部署合約 0x060000000000。
6字節(程式碼:6字節,有效載荷:0字節);3 個不同的操作碼。同樣的想法只是比以前的 6 字節便宜 2 氣體。
字節碼:
0x3838533838f3
集會:
CODESIZE CODESIZE MSTORE8 CODESIZE CODESIZE 返回
工作如下:
使用最便宜的單字節操作將值放入堆棧 CODESIZE。將 CODESIZE 字節儲存在記憶體中的 CODESIZE 地址處,然後從記憶體中的 CODESIZE 位置返回 CODESIZE 字節。
範例交易:在etherscan上
用於部署的氣體:54622。