Klaytn mainnet deploy (#1185)

* Klaytn mainnet deploy
This commit is contained in:
bruce-riley 2022-05-16 09:06:17 -05:00 committed by GitHub
parent ec6428ed2d
commit 018908a420
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 13061 additions and 6006 deletions

View File

@ -108,6 +108,7 @@ For example, to submit a guardian set upgrade on all chains, simply run:
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain aurora
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain fantom
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain karura
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain klaytn
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain avalanche
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain polygon
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain bsc

View File

@ -71,7 +71,7 @@ const MAINNET = {
key: get_env_var("ETH_KEY"),
},
klaytn: {
rpc: undefined,
rpc: "https://public-node-api.klaytnapi.com/v1/cypress",
key: get_env_var("ETH_KEY"),
},
celo: {

View File

@ -0,0 +1,15 @@
# Klaytn mainnet env
# Rename to .env to use with truffle migrations
# Wormhole Core Migrations
INIT_SIGNERS=["0x58CC3AE5C097b213cE3c81979e1B9f9570746AA5"]
INIT_CHAIN_ID=0xd
INIT_GOV_CHAIN_ID=0x1
INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
# Bridge Migrations
BRIDGE_INIT_CHAIN_ID=0xd
BRIDGE_INIT_GOV_CHAIN_ID=0x1
BRIDGE_INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
# WKLAY
BRIDGE_INIT_WETH=0xe4f05a66ec68b54a58b17c22107b02e0232cc817

18968
ethereum/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -30,10 +30,12 @@
"author": "",
"license": "ISC",
"dependencies": {
"caver-js": "^1.8.1",
"dotenv": "^10.0.0",
"elliptic": "^6.5.2",
"ganache-cli": "^6.12.1",
"jsonfile": "^4.0.0",
"solc": "^0.8.4"
"solc": "^0.8.4",
"truffle-hdwallet-provider-klaytn": "^1.4.2"
}
}

View File

@ -1,5 +1,7 @@
require("dotenv").config({ path: ".env" });
const HDWalletProvider = require("@truffle/hdwallet-provider");
const KLAYHDWalletProvider = require("truffle-hdwallet-provider-klaytn");
const Caver = require("caver-js");
module.exports = {
networks: {
@ -186,7 +188,7 @@ module.exports = {
"http://103.253.145.222:8545"
);
},
network_id: 686,
network_id: 596,
gasPrice: 202184721385,
gasLimit: 117096000,
gas: 117096000,
@ -198,11 +200,36 @@ module.exports = {
"http://157.245.252.103:8545"
);
},
network_id: 787,
network_id: 597,
gasPrice: 202184721385,
gasLimit: 213192000,
gas: 213192000,
},
klaytn: { // Note that Klaytn works with version 5.3.14 of truffle, but not some of the newer versions.
provider: () => {
const option = {
headers: [
{
name: 'Authorization',
value:
'Basic ' +
Buffer.from(process.env.KLAY_ACCESS_ID + ':' + process.env.KLAY_SECURITY_KEY).toString('base64'),
},
{ name: 'x-chain-id', value: '8217' },
],
keepAlive: false,
}
return new KLAYHDWalletProvider(
process.env.MNEMONIC,
new Caver.providers.HttpProvider('https://node-api.klaytnapi.com/v1/klaytn', option)
)
},
network_id: 8217, //Klaytn mainnet's network id
gas: '8000000',
gasPrice: '750000000000',
disableConfirmationListener: true,
pollingInterval: 1800000,
},
klaytn_testnet: { // Note that Klaytn works with version 5.3.14 of truffle, but not some of the newer versions.
provider: () => {
return new HDWalletProvider(

View File

@ -106,13 +106,13 @@ func runListNodes(cmd *cobra.Command, args []string) {
{"Aurora", vaa.ChainIDAurora},
{"Fantom", vaa.ChainIDFantom},
{"Karura", vaa.ChainIDKarura},
{"Klaytn", vaa.ChainIDKlaytn},
{"Celo", vaa.ChainIDCelo},
}
if isTestnet {
networks = append(networks, network{"Ropsten", vaa.ChainIDEthereumRopsten})
networks = append(networks, network{"Acala", vaa.ChainIDAcala})
networks = append(networks, network{"Klaytn", vaa.ChainIDKlaytn})
networks = append(networks, network{"Moonbeam", vaa.ChainIDMoonbeam})
}

View File

@ -328,12 +328,12 @@ func runNode(cmd *cobra.Command, args []string) {
readiness.RegisterComponent(common.ReadinessAuroraSyncing)
readiness.RegisterComponent(common.ReadinessFantomSyncing)
readiness.RegisterComponent(common.ReadinessKaruraSyncing)
readiness.RegisterComponent(common.ReadinessKlaytnSyncing)
readiness.RegisterComponent(common.ReadinessCeloSyncing)
if *testnetMode {
readiness.RegisterComponent(common.ReadinessEthRopstenSyncing)
readiness.RegisterComponent(common.ReadinessAcalaSyncing)
readiness.RegisterComponent(common.ReadinessKlaytnSyncing)
readiness.RegisterComponent(common.ReadinessMoonbeamSyncing)
}
@ -443,6 +443,12 @@ func runNode(cmd *cobra.Command, args []string) {
if *karuraContract == "" && !*unsafeDevMode {
logger.Fatal("Please specify --karuraContract")
}
if *klaytnRPC == "" {
logger.Fatal("Please specify --klaytnRPC")
}
if *klaytnContract == "" && !*unsafeDevMode {
logger.Fatal("Please specify --klaytnContract")
}
if *celoRPC == "" {
logger.Fatal("Please specify --celoRPC")
}
@ -462,12 +468,6 @@ func runNode(cmd *cobra.Command, args []string) {
if *acalaContract == "" {
logger.Fatal("Please specify --acalaContract")
}
if *klaytnRPC == "" {
logger.Fatal("Please specify --klaytnRPC")
}
if *klaytnContract == "" {
logger.Fatal("Please specify --klaytnContract")
}
if *moonbeamRPC == "" {
logger.Fatal("Please specify --moonbeamRPC")
}
@ -487,12 +487,6 @@ func runNode(cmd *cobra.Command, args []string) {
if *acalaContract != "" && !*unsafeDevMode {
logger.Fatal("Please do not specify --acalaContract")
}
if *klaytnRPC != "" && !*unsafeDevMode {
logger.Fatal("Please do not specify --klaytnRPC")
}
if *klaytnContract != "" && !*unsafeDevMode {
logger.Fatal("Please do not specify --klaytnContract")
}
if *moonbeamRPC != "" && !*unsafeDevMode {
logger.Fatal("Please do not specify --moonbeamRPC")
}
@ -683,10 +677,10 @@ func runNode(cmd *cobra.Command, args []string) {
chainObsvReqC[vaa.ChainIDAurora] = make(chan *gossipv1.ObservationRequest)
chainObsvReqC[vaa.ChainIDFantom] = make(chan *gossipv1.ObservationRequest)
chainObsvReqC[vaa.ChainIDKarura] = make(chan *gossipv1.ObservationRequest)
chainObsvReqC[vaa.ChainIDKlaytn] = make(chan *gossipv1.ObservationRequest)
chainObsvReqC[vaa.ChainIDCelo] = make(chan *gossipv1.ObservationRequest)
if *testnetMode {
chainObsvReqC[vaa.ChainIDAcala] = make(chan *gossipv1.ObservationRequest)
chainObsvReqC[vaa.ChainIDKlaytn] = make(chan *gossipv1.ObservationRequest)
chainObsvReqC[vaa.ChainIDMoonbeam] = make(chan *gossipv1.ObservationRequest)
chainObsvReqC[vaa.ChainIDEthereumRopsten] = make(chan *gossipv1.ObservationRequest)
}
@ -838,6 +832,10 @@ func runNode(cmd *cobra.Command, args []string) {
ethereum.NewEthWatcher(*karuraRPC, karuraContractAddr, "karura", common.ReadinessKaruraSyncing, vaa.ChainIDKarura, lockC, nil, 1, chainObsvReqC[vaa.ChainIDKarura], *unsafeDevMode).Run); err != nil {
return err
}
if err := supervisor.Run(ctx, "klaytnwatch",
ethereum.NewEthWatcher(*klaytnRPC, klaytnContractAddr, "klaytn", common.ReadinessKlaytnSyncing, vaa.ChainIDKlaytn, lockC, nil, 1, chainObsvReqC[vaa.ChainIDKlaytn], *unsafeDevMode).Run); err != nil {
return err
}
if err := supervisor.Run(ctx, "celowatch",
ethereum.NewEthWatcher(*celoRPC, celoContractAddr, "celo", common.ReadinessCeloSyncing, vaa.ChainIDCelo, lockC, nil, 1, chainObsvReqC[vaa.ChainIDCelo], *unsafeDevMode).Run); err != nil {
return err
@ -852,10 +850,6 @@ func runNode(cmd *cobra.Command, args []string) {
ethereum.NewEthWatcher(*acalaRPC, acalaContractAddr, "acala", common.ReadinessAcalaSyncing, vaa.ChainIDAcala, lockC, nil, 1, chainObsvReqC[vaa.ChainIDAcala], *unsafeDevMode).Run); err != nil {
return err
}
if err := supervisor.Run(ctx, "klaytnwatch",
ethereum.NewEthWatcher(*klaytnRPC, klaytnContractAddr, "klaytn", common.ReadinessKlaytnSyncing, vaa.ChainIDKlaytn, lockC, nil, 1, chainObsvReqC[vaa.ChainIDKlaytn], *unsafeDevMode).Run); err != nil {
return err
}
if err := supervisor.Run(ctx, "moonbeamwatch",
ethereum.NewEthWatcher(*moonbeamRPC, moonbeamContractAddr, "moonbeam", common.ReadinessMoonbeamSyncing, vaa.ChainIDMoonbeam, lockC, nil, 1, chainObsvReqC[vaa.ChainIDMoonbeam], *unsafeDevMode).Run); err != nil {
return err

View File

@ -36,7 +36,8 @@ var etherscanAPIMap = map[vaa.ChainID]string{
vaa.ChainIDAurora: "https://explorer.mainnet.aurora.dev/api",
vaa.ChainIDFantom: "https://api.ftmscan.com/api",
vaa.ChainIDKarura: "https://blockscout.karura.network/api",
vaa.ChainIDCelo: "https://celoscan.xyz/api",
// NOTE: Not sure what should be here for Klaytn, since they use: https://scope.klaytn.com/
vaa.ChainIDCelo: "https://celoscan.xyz/api",
}
var coreContractMap = map[vaa.ChainID]string{
@ -48,6 +49,7 @@ var coreContractMap = map[vaa.ChainID]string{
vaa.ChainIDAurora: "0xa321448d90d4e5b0a732867c18ea198e75cac48e",
vaa.ChainIDFantom: strings.ToLower("0x126783A6Cb203a3E35344528B26ca3a0489a1485"),
vaa.ChainIDKarura: strings.ToLower("0xa321448d90d4e5b0A732867c18eA198e75CAC48E"),
vaa.ChainIDKlaytn: strings.ToLower("0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7"),
vaa.ChainIDCelo: strings.ToLower("0xa321448d90d4e5b0A732867c18eA198e75CAC48E"),
}

View File

@ -45,6 +45,8 @@ var KnownEmitters = []struct {
{vaa.ChainIDFantom, "000000000000000000000000A9c7119aBDa80d4a4E0C06C8F4d8cF5893234535"}, // 10 Fantom NFT Bridge
{vaa.ChainIDKarura, "000000000000000000000000ae9d7fe007b3327AA64A32824Aaac52C42a6E624"}, // 11 Karura Token Bridge
{vaa.ChainIDKarura, "000000000000000000000000b91e3638F82A1fACb28690b37e3aAE45d2c33808"}, // 11 Karura NFT Bridge
{vaa.ChainIDKlaytn, "0000000000000000000000005b08ac39EAED75c0439FC750d9FE7E1F9dD0193F"}, // 13 Klaytn Token Bridge
{vaa.ChainIDKlaytn, "0000000000000000000000003c3c561757BAa0b78c5C025CdEAa4ee24C1dFfEf"}, // 13 Klaytn NFT Bridge
{vaa.ChainIDCelo, "000000000000000000000000796Dff6D74F3E27060B71255Fe517BFb23C93eed"}, // 14 Celo Token Bridge
{vaa.ChainIDCelo, "000000000000000000000000A6A377d75ca5c9052c9a77ED1e865Cc25Bd97bf3"}, // 14 Celo NFT Bridge
}

View File

@ -4,7 +4,7 @@
### Added
Celo Mainnet support
Klaytn and Celo mainnet support
## 0.3.1

View File

@ -118,9 +118,9 @@ const MAINNET = {
nft_bridge: undefined,
},
klaytn: {
core: undefined,
token_bridge: undefined,
nft_bridge: undefined,
core: "0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7",
token_bridge: "0x5b08ac39EAED75c0439FC750d9FE7E1F9dD0193F",
nft_bridge: "0x3c3c561757BAa0b78c5C025CdEAa4ee24C1dFfEf",
},
celo: {
core: "0xa321448d90d4e5b0A732867c18eA198e75CAC48E",