-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Description
EDITOR UPDATE (2017-08-15): This EIP is now located at https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md. Please go there for the correct specification. The text below may be incorrect or outdated, and is not maintained.
Parameters
FORK_BLKNUM
: TBACHAIN_ID
: 1
Specification
If block.number >= FORK_BLKNUM
and v = CHAIN_ID * 2 + 35
or v = CHAIN_ID * 2 + 36
, then when computing the hash of a transaction for purposes of signing or recovering, instead of hashing only the first six elements (ie. nonce, gasprice, startgas, to, value, data), hash nine elements, with v
replaced by CHAIN_ID
, r = 0
and s = 0
. The currently existing signature scheme using v = 27
and v = 28
remains valid and continues to operate under the same rules as it does now.
Example
Consider a transaction with nonce = 9
, gasprice = 20 * 10**9
, startgas = 21000
, to = 0x3535353535353535353535353535353535353535
, value = 10**18
, data=''
(empty).
The "signing data" becomes:
0xec098504a817c800825208943535353535353535353535353535353535353535880de0b6b3a764000080018080
The "signing hash" becomes:
0x2691916f9e6e5b304f135496c08f632040f02d78e36ae5bbbb38f919730c8fa0
If the transaction is signed with the private key 0x4646464646464646464646464646464646464646464646464646464646464646
, then the v,r,s values become:
(37, 11298168949998536842419725113857172427648002808790045841403298480749678639159, 26113561835810707062310182368620287328545641189938585203131842552044123671646)
Notice the use of 37 instead of 27. The signed tx would become:
0xf86c098504a817c800825208943535353535353535353535353535353535353535880de0b6b3a76400008025a028ef61340bd939bc2195fe537567866003e1a15d3c71ff63e1590620aa636276a067cbe9d8997f761aecb703304b3800ccf555c9f3dc64214b297fb1966a3b6d83
Rationale
This would provide a way to send transactions that work on ethereum without working on ETC or the Morden testnet. ETC is encouraged to adopt this EIP but replacing CHAIN_ID
with a different value, and all future testnets, consortium chains and alt-etherea are encouraged to adopt this EIP replacing CHAIN_ID
with a unique value.