From 3420c2bac08353f4269b9589decf8a9351275e64 Mon Sep 17 00:00:00 2001
From: phahulin
Date: Thu, 29 Aug 2019 10:33:33 +0300
Subject: [PATCH] xDai chain support and nodes list update (#10989)
* Update bootnodes list for known networks
* Add XDai chain
* Rename xdai chain in config
* Fix missing comma
---
ethcore/res/ethereum/kovan.json | 2 +
ethcore/res/ethereum/poacore.json | 1 -
ethcore/res/ethereum/poasokol.json | 2 +-
ethcore/res/ethereum/xdai.json | 152 +++++++++++++++++++++++++++++
ethcore/spec/src/chain.rs | 1 +
parity/cli/mod.rs | 2 +-
parity/params.rs | 6 ++
7 files changed, 163 insertions(+), 3 deletions(-)
create mode 100644 ethcore/res/ethereum/xdai.json
diff --git a/ethcore/res/ethereum/kovan.json b/ethcore/res/ethereum/kovan.json
index 67da802a9..2afd6e433 100644
--- a/ethcore/res/ethereum/kovan.json
+++ b/ethcore/res/ethereum/kovan.json
@@ -5382,6 +5382,8 @@
},
"nodes": [
"enode://f6e37b943bad3a78cb8589b1798d30d210ffd39cfcd2c8f2de4f098467fd49c667980100d919da7ca46cd50505d30989abda87f0b9339377de13d6592c22caf8@34.198.49.72:30303",
+ "enode://16898006ba2cd4fa8bf9a3dfe32684c178fa861df144bfc21fe800dc4838a03e342056951fa9fd533dcb0be1219e306106442ff2cf1f7e9f8faa5f2fc1a3aa45@116.203.116.241:30303",
+ "enode://2909846f78c37510cc0e306f185323b83bb2209e5ff4fdd279d93c60e3f365e3c6e62ad1d2133ff11f9fd6d23ad9c3dad73bb974d53a22f7d1ac5b7dea79d0b0@3.217.96.11:30303",
"enode://56abaf065581a5985b8c5f4f88bd202526482761ba10be9bfdcd14846dd01f652ec33fde0f8c0fd1db19b59a4c04465681fcef50e11380ca88d25996191c52de@40.71.221.215:30303",
"enode://d07827483dc47b368eaf88454fb04b41b7452cf454e194e2bd4c14f98a3278fed5d819dbecd0d010407fc7688d941ee1e58d4f9c6354d3da3be92f55c17d7ce3@52.166.117.77:30303",
"enode://38e6e7fd416293ed120d567a2675fe078c0205ab0671abf16982ce969823bd1f3443d590c18b321dfae7dcbe1f6ba98ef8702f255c3c9822a188abb82c53adca@51.77.66.187:30303",
diff --git a/ethcore/res/ethereum/poacore.json b/ethcore/res/ethereum/poacore.json
index a4fdbcbf1..d1e0581ae 100644
--- a/ethcore/res/ethereum/poacore.json
+++ b/ethcore/res/ethereum/poacore.json
@@ -51,7 +51,6 @@
},
"nodes": [
"enode://6e3d1b39cbd2a9c4f053a27e68fd90d0bac83691dfdc4a13c59f2555078a71e63c5daaee5a82aa6db500512760a5456f86076bf8bbe8011c27c82ed7d6f5fb26@45.77.140.210:30303",
- "enode://f4698ad485a027497e1cc992bb5f7cecee2b32a44c47202738d8d0eecfab719541988d0cbcbc5ea94c6c959e5cddeb85fc6ae75fb63dc3bf87cdbe9e6f615e9d@206.156.242.64:30303",
"enode://31dffed97f8fed1f34fe66453280a89cbeeda60cf28f6fbb212ebbefd7c7566a02c1c7d5c00bbbb49b9fa8a49f157e0f786f379ca9bcbf2fea24de70d70a22b6@206.156.242.61:30303",
"enode://6bdc7553ab2e4914cb47774c1e6d8c8f47ac7c3981891f85f65d06f208ea1bc4d3bf982b330950e0a0cd127efd7145c4df7113159a1d4a06ed722e6c16d0ac6c@45.32.215.190:30303",
"enode://872d82a24144bc007658fb6fac0dcdfb9b63aeb05ef563a06d0186f2d1e5ffbfc5c4f1244891a8a86ef70682b9d24382e654b305224883698862e2df647a4d23@45.76.236.247:30303",
diff --git a/ethcore/res/ethereum/poasokol.json b/ethcore/res/ethereum/poasokol.json
index 8ee91c90c..c20b6a081 100644
--- a/ethcore/res/ethereum/poasokol.json
+++ b/ethcore/res/ethereum/poasokol.json
@@ -58,7 +58,7 @@
"enode://8e0af07c86ec36590bb6368e7ad0c45b6dc658f5fb66ec68889a614affddda5e021bd513bcf4fb2fae4a3bbe08cf0de84f037cd58478a89665dfce1ded2595c7@34.236.37.74:30303",
"enode://f1a5100a81cb73163ae450c584d06b1f644aa4fad4486c6aeb4c384b343c54bb66c744aa5f133af66ea1b25f0f4a454f04878f3e96ee4cd2390c047396d6357b@209.97.158.4:30303",
"enode://0d1e0372f63a3f0b82d66635ea101ecc0f6797788a078805cc933dd93e6a22f7c9fa51ab4e2d21da02d04480ef19f3bbb9a2b41dd1c262085d295a354bb8b0f9@18.217.47.209:30303",
- "enode://ab083db73da15b3995ac9c68035cdb32901835a823cb848fccb672e43dd21f14428706118d6fe5b921d8e741f122f35aad0255bc86807b1d17bcfa1e86e40a14@165.227.37.104:30303",
+ "enode://875e1bd1b98019a5d6d588c23f68534b75462dd6ecbb3dd058221dbf7aa923f0ab782ab93bb82d42edc9996f7f0816a318bdc761e55c02b95e1169cef66f7edc@159.203.24.35:30303",
"enode://8e0af07c86ec36590bb6368e7ad0c45b6dc658f5fb66ec68889a614affddda5e021bd513bcf4fb2fae4a3bbe08cf0de84f037cd58478a89665dfce1ded2595c7@34.236.37.74:30303",
"enode://182ee200ca134dc4d6390f3d5aadbcd80df0f7f24335830335d142573eacce4eeb919d30e82c5df588034e167e6ba6dd11187502ac9264a71005127f6b146a99@159.203.95.241:30303",
"enode://b022ff70b5fcaf9596ae5efed99a8198b4ae0578ee9d17b733609d803a75cef95d3a2a18e50dca9a7c3b26139f158c59eaf8b5fb8d1d331c9a46934a78acabe8@206.189.76.128:30303"
diff --git a/ethcore/res/ethereum/xdai.json b/ethcore/res/ethereum/xdai.json
new file mode 100644
index 000000000..ad2aa395e
--- /dev/null
+++ b/ethcore/res/ethereum/xdai.json
@@ -0,0 +1,152 @@
+{
+ "name": "xDai Chain",
+ "dataDir": "xdai",
+ "engine": {
+ "authorityRound": {
+ "params": {
+ "stepDuration": 5,
+ "blockReward": "0x0",
+ "maximumUncleCountTransition": 0,
+ "maximumUncleCount": 0,
+ "validators": {
+ "multi": {
+ "0": {
+ "list": ["0xcace5b3c29211740e595850e80478416ee77ca21"]
+ },
+ "1300": {
+ "safeContract": "0x22e1229a2c5b95a60983b5577f745a603284f535"
+ }
+ }
+ },
+ "blockRewardContractAddress": "0x867305d19606aadba405ce534e303d0e225f9556",
+ "blockRewardContractTransition": 1310
+ }
+ }
+ },
+ "params": {
+ "gasLimitBoundDivisor": "0x400",
+ "maximumExtraDataSize": "0x20",
+ "minGasLimit": "0x1388",
+ "networkID": "100",
+ "eip140Transition": "0x0",
+ "eip211Transition": "0x0",
+ "eip214Transition": "0x0",
+ "eip658Transition": "0x0",
+ "eip145Transition": 1604400,
+ "eip1014Transition": 1604400,
+ "eip1052Transition": 1604400,
+ "eip1283Transition": 1604400,
+ "eip1283DisableTransition": 2508800,
+ "registrar": "0x1ec97dc137f5168af053c24460a1200502e1a9d2"
+ },
+ "genesis": {
+ "seal": {
+ "authorityRound": {
+ "step": "0x0",
+ "signature": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
+ }
+ },
+ "difficulty": "0x20000",
+ "gasLimit": "0x989680"
+ },
+ "accounts": {
+ "0000000000000000000000000000000000000005": {
+ "builtin": {
+ "name": "modexp",
+ "activate_at": "0x0",
+ "pricing": {
+ "modexp": {
+ "divisor": 20
+ }
+ }
+ }
+ },
+ "0000000000000000000000000000000000000006": {
+ "builtin": {
+ "name": "alt_bn128_add",
+ "activate_at": "0x0",
+ "pricing": {
+ "linear": {
+ "base": 500,
+ "word": 0
+ }
+ }
+ }
+ },
+ "0000000000000000000000000000000000000007": {
+ "builtin": {
+ "name": "alt_bn128_mul",
+ "activate_at": "0x0",
+ "pricing": {
+ "linear": {
+ "base": 40000,
+ "word": 0
+ }
+ }
+ }
+ },
+ "0000000000000000000000000000000000000008": {
+ "builtin": {
+ "name": "alt_bn128_pairing",
+ "activate_at": "0x0",
+ "pricing": {
+ "alt_bn128_pairing": {
+ "base": 100000,
+ "pair": 80000
+ }
+ }
+ }
+ },
+ "0x0000000000000000000000000000000000000001": {
+ "balance": "1",
+ "builtin": {
+ "name": "ecrecover",
+ "pricing": {
+ "linear": {
+ "base": 3000,
+ "word": 0
+ }
+ }
+ }
+ },
+ "0x0000000000000000000000000000000000000002": {
+ "balance": "1",
+ "builtin": {
+ "name": "sha256",
+ "pricing": {
+ "linear": {
+ "base": 60,
+ "word": 12
+ }
+ }
+ }
+ },
+ "0x0000000000000000000000000000000000000003": {
+ "balance": "1",
+ "builtin": {
+ "name": "ripemd160",
+ "pricing": {
+ "linear": {
+ "base": 600,
+ "word": 120
+ }
+ }
+ }
+ },
+ "0x0000000000000000000000000000000000000004": {
+ "balance": "1",
+ "builtin": {
+ "name": "identity",
+ "pricing": {
+ "linear": {
+ "base": 15,
+ "word": 3
+ }
+ }
+ }
+ }
+ },
+ "nodes": [
+ "enode://66786c15390cb4fef3743571e12ec54ca343e7f119018136d68b670edd93604eedf74e5013dc5c2439f89e0e05593e29c409a97e155ea4165c6b832de131ef1e@3.214.113.185:30303"
+ ]
+}
diff --git a/ethcore/spec/src/chain.rs b/ethcore/spec/src/chain.rs
index db4e20540..4fd9b4d30 100644
--- a/ethcore/spec/src/chain.rs
+++ b/ethcore/spec/src/chain.rs
@@ -71,6 +71,7 @@ bundle_release_spec! {
"ethereum/morden" => new_morden,
"ethereum/musicoin" => new_musicoin,
"ethereum/poacore" => new_poanet,
+ "ethereum/xdai" => new_xdai,
"ethereum/poasokol" => new_sokol,
"ethereum/rinkeby" => new_rinkeby,
"ethereum/ropsten" => new_ropsten,
diff --git a/parity/cli/mod.rs b/parity/cli/mod.rs
index a38f2b944..efa1429cf 100644
--- a/parity/cli/mod.rs
+++ b/parity/cli/mod.rs
@@ -300,7 +300,7 @@ usage! {
ARG arg_chain: (String) = "foundation", or |c: &Config| c.parity.as_ref()?.chain.clone(),
"--chain=[CHAIN]",
- "Specify the blockchain type. CHAIN may be either a JSON chain specification file or ethereum, classic, poacore, volta, ewc, musicoin, ellaism, mix, callisto, morden, ropsten, kovan, rinkeby, goerli, kotti, poasokol, testnet, or dev.",
+ "Specify the blockchain type. CHAIN may be either a JSON chain specification file or ethereum, classic, poacore, xdai, volta, ewc, musicoin, ellaism, mix, callisto, morden, ropsten, kovan, rinkeby, goerli, kotti, poasokol, testnet, or dev.",
ARG arg_keys_path: (String) = "$BASE/keys", or |c: &Config| c.parity.as_ref()?.keys_path.clone(),
"--keys-path=[PATH]",
diff --git a/parity/params.rs b/parity/params.rs
index f82aa0749..fafc94d80 100644
--- a/parity/params.rs
+++ b/parity/params.rs
@@ -34,6 +34,7 @@ pub enum SpecType {
Foundation,
Classic,
Poanet,
+ Xdai,
Volta,
Ewc,
Musicoin,
@@ -65,6 +66,7 @@ impl str::FromStr for SpecType {
"ethereum" | "frontier" | "homestead" | "byzantium" | "foundation" | "mainnet" => SpecType::Foundation,
"classic" | "frontier-dogmatic" | "homestead-dogmatic" => SpecType::Classic,
"poanet" | "poacore" => SpecType::Poanet,
+ "xdai" => SpecType::Xdai,
"volta" => SpecType::Volta,
"ewc" | "energyweb" => SpecType::Ewc,
"musicoin" => SpecType::Musicoin,
@@ -91,6 +93,7 @@ impl fmt::Display for SpecType {
SpecType::Foundation => "foundation",
SpecType::Classic => "classic",
SpecType::Poanet => "poanet",
+ SpecType::Xdai => "xdai",
SpecType::Volta => "volta",
SpecType::Ewc => "energyweb",
SpecType::Musicoin => "musicoin",
@@ -117,6 +120,7 @@ impl SpecType {
SpecType::Foundation => Ok(spec::new_foundation(params)),
SpecType::Classic => Ok(spec::new_classic(params)),
SpecType::Poanet => Ok(spec::new_poanet(params)),
+ SpecType::Xdai => Ok(spec::new_xdai(params)),
SpecType::Volta => Ok(spec::new_volta(params)),
SpecType::Ewc => Ok(spec::new_ewc(params)),
SpecType::Musicoin => Ok(spec::new_musicoin(params)),
@@ -371,6 +375,7 @@ mod tests {
assert_eq!(SpecType::Classic, "homestead-dogmatic".parse().unwrap());
assert_eq!(SpecType::Poanet, "poanet".parse().unwrap());
assert_eq!(SpecType::Poanet, "poacore".parse().unwrap());
+ assert_eq!(SpecType::Xdai, "xdai".parse().unwrap());
assert_eq!(SpecType::Volta, "volta".parse().unwrap());
assert_eq!(SpecType::Ewc, "ewc".parse().unwrap());
assert_eq!(SpecType::Ewc, "energyweb".parse().unwrap());
@@ -401,6 +406,7 @@ mod tests {
assert_eq!(format!("{}", SpecType::Foundation), "foundation");
assert_eq!(format!("{}", SpecType::Classic), "classic");
assert_eq!(format!("{}", SpecType::Poanet), "poanet");
+ assert_eq!(format!("{}", SpecType::Xdai), "xdai");
assert_eq!(format!("{}", SpecType::Volta), "volta");
assert_eq!(format!("{}", SpecType::Ewc), "energyweb");
assert_eq!(format!("{}", SpecType::Musicoin), "musicoin");