From ad989c9a1bdc0c6e5c890e1697a575757391d41b Mon Sep 17 00:00:00 2001 From: Wei Tang Date: Thu, 20 Jun 2019 12:02:58 +0200 Subject: [PATCH] Propose to move EIP-695 to last call status (#1566) * Propose to move EIP-695 to last call status * Add a discussion link * Formatting fix * Fix @sorpaas handle in author field * Use EIP155 formatting for `CHAIN_ID` * Formatting fix for "chain ID" The document had places where we use lowercase "id" and uppercase "ID". This unify them to use uppercase "ID". * Update eip-695.md --- EIPS/eip-695.md | 47 +++++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/EIPS/eip-695.md b/EIPS/eip-695.md index ddca7839fc7d99..7f57092335ca09 100644 --- a/EIPS/eip-695.md +++ b/EIPS/eip-695.md @@ -1,7 +1,8 @@ --- eip: 695 title: Create `eth_chainId` method for JSON-RPC -author: Isaac Ardis , Wei Tang , Fan Torchz (@tcz001) +author: Isaac Ardis , Wei Tang (@sorpaas), Fan Torchz (@tcz001) +discussions-to: https://ethereum-magicians.org/t/eip-695-create-eth-chainid-method-for-json-rpc/1845 type: Standards Track category: Interface status: Draft @@ -10,37 +11,40 @@ requires: 1474 --- ## Simple Summary + Include `eth_chainId` method in `eth_`-namespaced JSON-RPC methods. ## Abstract + The `eth_chainId` method should return a single STRING result for an integer value in hexadecimal format, describing the -currently configured "Chain Id" value used for signing replay-protected transactions, +currently configured `CHAIN_ID` value used for signing replay-protected transactions, introduced via [EIP-155](./eip-155.md). ## Motivation -Currently although we can use net_version RPC call to get the + +Currently although we can use `net_version` RPC call to get the current network ID, there's no RPC for querying the chain ID. This makes it impossible to determine the current actual blockchain using the RPC. ## Specification ----- +### `eth_chainId` -### eth_chainId - -Returns the currently configured chain id, a value used in replay-protected transaction +Returns the currently configured chain ID, a value used in replay-protected transaction signing as introduced by [EIP-155](./eip-155.md). -##### Parameters -none +#### Parameters + +None. -##### Returns +#### Returns -`QUANTITY` - integer of the current chain id. Defaults are mainnet=61, morden=62. +`QUANTITY` - integer of the current chain ID. + +#### Example -##### Example ```js curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}' @@ -52,33 +56,28 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1} } ``` ----- - ## Rationale + An ETH/ETC client can accidentally connect to an ETC/ETH RPC endpoint without knowing it unless it tries to sign a transaction or it fetch a transaction that is known to have signed with a chain ID. This has since caused trouble for application developers, such as MetaMask, to add multi-chain support. -Please note related links: - -- [Parity PR](https://github.com/paritytech/parity/pull/6329) -- [Geth Classic PR (merged)](https://github.com/ethereumproject/go-ethereum/pull/336) - - ## Backwards Compatibility -Not relevant. -## Test Cases -Not currently implemented. +Not relevant. ## Implementation -Would be good to have a test to confirm that expected==got. + +- [Parity PR](https://github.com/paritytech/parity/pull/6329) +- [Geth PR](https://github.com/ethereum/go-ethereum/pull/17617) +- [Geth Classic PR](https://github.com/ethereumproject/go-ethereum/pull/336) ## Reference Return value `QUANTITY` adheres to standard JSON RPC hex value encoding, as documented here: https://github.com/ethereum/wiki/wiki/JSON-RPC#hex-value-encoding. ## Copyright + Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).