aboutsummaryrefslogtreecommitdiffstats
path: root/params/config.go
diff options
context:
space:
mode:
authorWei-Ning Huang <w@dexon.org>2019-03-17 09:12:50 +0800
committerWei-Ning Huang <w@dexon.org>2019-04-09 21:32:58 +0800
commit2818ad97f5b302f76e3296195bf8daae1868c435 (patch)
tree0e055a8dc82f8a473f877400074dffe7b811090c /params/config.go
parent9c9073db149d89eb31dc7c68d440b359f42fe8e9 (diff)
downloaddexon-2818ad97f5b302f76e3296195bf8daae1868c435.tar
dexon-2818ad97f5b302f76e3296195bf8daae1868c435.tar.gz
dexon-2818ad97f5b302f76e3296195bf8daae1868c435.tar.bz2
dexon-2818ad97f5b302f76e3296195bf8daae1868c435.tar.lz
dexon-2818ad97f5b302f76e3296195bf8daae1868c435.tar.xz
dexon-2818ad97f5b302f76e3296195bf8daae1868c435.tar.zst
dexon-2818ad97f5b302f76e3296195bf8daae1868c435.zip
dex: implement recovery mechanism (#258)
* dex: implement recovery mechanism The DEXON recovery protocol allows us to use the Ethereum blockchain as a fallback consensus chain to coordinate recovery. * fix
Diffstat (limited to 'params/config.go')
-rw-r--r--params/config.go37
1 files changed, 33 insertions, 4 deletions
diff --git a/params/config.go b/params/config.go
index 648661bff..2ebbfd607 100644
--- a/params/config.go
+++ b/params/config.go
@@ -68,6 +68,11 @@ var (
new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1e5)),
},
},
+ Recovery: &RecoveryConfig{
+ Contract: common.HexToAddress("0xcb4bb8ae26b2ebe5a1e2e8d5236020f33ffb2294"),
+ Timeout: 120,
+ Confirmation: 5,
+ },
}
// MainnetTrustedCheckpoint contains the light client trusted checkpoint for the main network.
@@ -114,6 +119,11 @@ var (
new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1e5)),
},
},
+ Recovery: &RecoveryConfig{
+ Contract: common.HexToAddress("0x4ebe3d13ab18b30d815711b7a33ef1226777b66d"),
+ Timeout: 120,
+ Confirmation: 5,
+ },
}
// TaipeiChainConfig contains the chain parameters to run a node on the Taipei test network.
@@ -151,6 +161,11 @@ var (
new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1e5)),
},
},
+ Recovery: &RecoveryConfig{
+ Contract: common.HexToAddress("0xac86ab80ab27007801f36f6622fbe0a9432291a2"),
+ Timeout: 120,
+ Confirmation: 1,
+ },
}
// TestnetTrustedCheckpoint contains the light client trusted checkpoint for the Ropsten test network.
@@ -196,6 +211,11 @@ var (
new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1e5)),
},
},
+ Recovery: &RecoveryConfig{
+ Contract: common.HexToAddress("0x3828134ba7a0629fd52067b80fe696f400eb83dc"),
+ Timeout: 120,
+ Confirmation: 1,
+ },
}
// AllEthashProtocolChanges contains every protocol change (EIPs) introduced
@@ -203,18 +223,18 @@ var (
//
// This configuration is intentionally not using keyed fields to force anyone
// adding flags to the config to also have to set these fields.
- AllEthashProtocolChanges = &ChainConfig{big.NewInt(1337), 0, big.NewInt(0), nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), nil, new(EthashConfig), nil, nil}
+ AllEthashProtocolChanges = &ChainConfig{big.NewInt(1337), 0, big.NewInt(0), nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), nil, new(EthashConfig), nil, nil, nil}
// AllCliqueProtocolChanges contains every protocol change (EIPs) introduced
// and accepted by the Ethereum core developers into the Clique consensus.
//
// This configuration is intentionally not using keyed fields to force anyone
// adding flags to the config to also have to set these fields.
- AllCliqueProtocolChanges = &ChainConfig{big.NewInt(1337), 0, big.NewInt(0), nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), nil, nil, &CliqueConfig{Period: 0, Epoch: 30000}, nil}
+ AllCliqueProtocolChanges = &ChainConfig{big.NewInt(1337), 0, big.NewInt(0), nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), nil, nil, &CliqueConfig{Period: 0, Epoch: 30000}, nil, nil}
- AllDexconProtocolChanges = &ChainConfig{big.NewInt(1337), 0, big.NewInt(0), nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), nil, nil, nil, new(DexconConfig)}
+ AllDexconProtocolChanges = &ChainConfig{big.NewInt(1337), 0, big.NewInt(0), nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), nil, nil, nil, new(DexconConfig), new(RecoveryConfig)}
- TestChainConfig = &ChainConfig{big.NewInt(1), 0, big.NewInt(0), nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), nil, new(EthashConfig), nil, nil}
+ TestChainConfig = &ChainConfig{big.NewInt(1), 0, big.NewInt(0), nil, false, big.NewInt(0), common.Hash{}, big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), big.NewInt(0), nil, new(EthashConfig), nil, nil, nil}
TestRules = TestChainConfig.Rules(new(big.Int))
// Ethereum MainnetChainConfig is the chain parameters to run a node on the main network.
@@ -292,6 +312,9 @@ type ChainConfig struct {
Ethash *EthashConfig `json:"ethash,omitempty"`
Clique *CliqueConfig `json:"clique,omitempty"`
Dexcon *DexconConfig `json:"dexcon,omitempty"`
+
+ // Dexcon Recovery
+ Recovery *RecoveryConfig `json:"recovery,omitempty"`
}
// EthashConfig is the consensus engine configs for proof-of-work based sealing.
@@ -365,6 +388,12 @@ func (d *DexconConfig) String() string {
)
}
+type RecoveryConfig struct {
+ Contract common.Address `json:"contract"`
+ Timeout int `json:"timeout"`
+ Confirmation int `json:"confirmation"`
+}
+
// String implements the fmt.Stringer interface.
func (c *ChainConfig) String() string {
var engine interface{}