From 2a7514268860e364298ab1efd8f9d878a217922f Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Thu, 27 Sep 2018 01:35:42 +0100 Subject: Improve the create2 description in assembly.rst --- docs/assembly.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/assembly.rst b/docs/assembly.rst index 02a802a8..c609fa9d 100644 --- a/docs/assembly.rst +++ b/docs/assembly.rst @@ -277,8 +277,10 @@ In the grammar, opcodes are represented as pre-defined identifiers. | | | | and return the new address | +-------------------------+-----+---+-----------------------------------------------------------------+ | create2(v, n, p, s) | | C | create new contract with code mem[p...(p+s)) at address | -| | | | keccak256(0xff .
. n . keccak256(mem[p...(p+s))) | -| | | | and send v wei and return the new address | +| | | | keccak256(0xff . self . n . keccak256(mem[p...(p+s))) | +| | | | and send v wei and return the new address, where ``0xff`` is a | +| | | | 8 byte value, ``self`` is the current contract's address | +| | | | as a 20 byte value and ``n`` is a big-endian 256-bit value | +-------------------------+-----+---+-----------------------------------------------------------------+ | call(g, a, v, in, | | F | call contract at address a with input mem[in...(in+insize)) | | insize, out, outsize) | | | providing g gas and v wei and output area | -- cgit From e109d1a6cfaa47dfc0919e028cccebb3219b1a68 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Fri, 28 Sep 2018 00:08:19 +0100 Subject: Include create2/extcodehash in yul.rst --- docs/yul.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/yul.rst b/docs/yul.rst index e010a708..09aa6b65 100644 --- a/docs/yul.rst +++ b/docs/yul.rst @@ -417,6 +417,12 @@ The following functions must be available: | create(v:u256, p:u256, s:u256) | create new contract with code mem[p..(p+s)) and send v wei | | | and return the new address | +---------------------------------------------+-----------------------------------------------------------------+ +| create2(v:u256, n:u256, p:u256, s:u256) | create new contract with code mem[p...(p+s)) at address | +| | keccak256(0xff . self . n . keccak256(mem[p...(p+s))) | +| | and send v wei and return the new address, where ``0xff`` is a | +| | 8 byte value, ``self`` is the current contract's address | +| | as a 20 byte value and ``n`` is a big-endian 256-bit value | ++---------------------------------------------+-----------------------------------------------------------------+ | call(g:u256, a:u256, v:u256, in:u256, | call contract at address a with input mem[in..(in+insize)) | | insize:u256, out:u256, | providing g gas and v wei and output area | | outsize:u256) | mem[out..(out+outsize)) returning 0 on error (eg. out of gas) | @@ -492,6 +498,8 @@ The following functions must be available: +---------------------------------------------+-----------------------------------------------------------------+ | extcodecopy(a:u256, t:u256, f:u256, s:u256) | like codecopy(t, f, s) but take code at address a | +---------------------------------------------+-----------------------------------------------------------------+ +| extcodehash(a:u256) | code hash of address a | ++---------------------------------------------+-----------------------------------------------------------------+ | *Others* | +---------------------------------------------+-----------------------------------------------------------------+ | discard(unused:bool) | discard value | -- cgit