Acala mainnet deploy

This commit is contained in:
Bruce Riley 2022-06-02 16:18:44 +00:00 committed by Evan Gray
parent 6a7fba9b04
commit dcce155f43
11 changed files with 57 additions and 25 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 acala
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

View File

@ -39,7 +39,7 @@ export async function execute_governance_evm(
// NOTE: some of these might have only been tested on mainnet. If it fails in
// testnet (or devnet), they might require additional guards
let overrides: ethers.Overrides = {}
if (chain === "karura") {
if (chain === "karura" || chain == "acala") {
overrides = await getKaruraGasParams(n.rpc)
} else if (chain === "polygon") {
let feeData = await provider.getFeeData();

View File

@ -67,7 +67,7 @@ const MAINNET = {
key: get_env_var("ETH_KEY"),
},
acala: {
rpc: undefined,
rpc: "https://eth-rpc-acala.aca-api.network/",
key: get_env_var("ETH_KEY"),
},
klaytn: {

View File

@ -0,0 +1,15 @@
# Acala mainnet env
# Rename to .env to use with truffle migrations
# Wormhole Core Migrations
INIT_SIGNERS=["0x58CC3AE5C097b213cE3c81979e1B9f9570746AA5"]
INIT_CHAIN_ID=0xc
INIT_GOV_CHAIN_ID=0x1
INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
# Bridge Migrations
BRIDGE_INIT_CHAIN_ID=0xc
BRIDGE_INIT_GOV_CHAIN_ID=0x1
BRIDGE_INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
# There is no WETH on Acala.
BRIDGE_INIT_WETH=0x0000000000000000000000000000000000000000

View File

@ -193,6 +193,19 @@ module.exports = {
gasLimit: 117096000,
gas: 117096000,
},
acala: {
provider: () => {
return new HDWalletProvider(
process.env.MNEMONIC,
// To use this local host, needed to run this: ENDPOINT_URL=wss://acala-rpc-0.aca-api.network npx @acala-network/eth-rpc-adapter@latest
//"http://localhost:8545"
"https://eth-rpc-acala.aca-api.network/"
);
},
network_id: 787,
gasPrice: "0x2f25eb03ea",
gas: "0x6fc3540",
},
acala_testnet: {
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},
{"Acala", vaa.ChainIDAcala},
{"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{"Moonbeam", vaa.ChainIDMoonbeam})
}

View File

@ -329,12 +329,12 @@ func runNode(cmd *cobra.Command, args []string) {
readiness.RegisterComponent(common.ReadinessAuroraSyncing)
readiness.RegisterComponent(common.ReadinessFantomSyncing)
readiness.RegisterComponent(common.ReadinessKaruraSyncing)
readiness.RegisterComponent(common.ReadinessAcalaSyncing)
readiness.RegisterComponent(common.ReadinessKlaytnSyncing)
readiness.RegisterComponent(common.ReadinessCeloSyncing)
if *testnetMode {
readiness.RegisterComponent(common.ReadinessEthRopstenSyncing)
readiness.RegisterComponent(common.ReadinessAcalaSyncing)
readiness.RegisterComponent(common.ReadinessMoonbeamSyncing)
}
@ -445,6 +445,12 @@ func runNode(cmd *cobra.Command, args []string) {
if *karuraContract == "" && !*unsafeDevMode {
logger.Fatal("Please specify --karuraContract")
}
if *acalaRPC == "" {
logger.Fatal("Please specify --acalaRPC")
}
if *acalaContract == "" && !*unsafeDevMode {
logger.Fatal("Please specify --acalaContract")
}
if *klaytnRPC == "" {
logger.Fatal("Please specify --klaytnRPC")
}
@ -464,12 +470,6 @@ func runNode(cmd *cobra.Command, args []string) {
if *ethRopstenContract == "" {
logger.Fatal("Please specify --ethRopstenContract")
}
if *acalaRPC == "" {
logger.Fatal("Please specify --acalaRPC")
}
if *acalaContract == "" {
logger.Fatal("Please specify --acalaContract")
}
if *moonbeamRPC == "" {
logger.Fatal("Please specify --moonbeamRPC")
}
@ -483,12 +483,6 @@ func runNode(cmd *cobra.Command, args []string) {
if *ethRopstenContract != "" {
logger.Fatal("Please do not specify --ethRopstenContract in non-testnet mode")
}
if *acalaRPC != "" && !*unsafeDevMode {
logger.Fatal("Please do not specify --acalaRPC")
}
if *acalaContract != "" && !*unsafeDevMode {
logger.Fatal("Please do not specify --acalaContract")
}
if *moonbeamRPC != "" && !*unsafeDevMode {
logger.Fatal("Please do not specify --moonbeamRPC")
}
@ -679,10 +673,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.ChainIDAcala] = 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.ChainIDMoonbeam] = make(chan *gossipv1.ObservationRequest)
chainObsvReqC[vaa.ChainIDEthereumRopsten] = make(chan *gossipv1.ObservationRequest)
}
@ -834,6 +828,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, "acalawatch",
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
@ -848,10 +846,6 @@ func runNode(cmd *cobra.Command, args []string) {
ethereum.NewEthWatcher(*ethRopstenRPC, ethRopstenContractAddr, "ethropsten", common.ReadinessEthRopstenSyncing, vaa.ChainIDEthereumRopsten, lockC, nil, 1, chainObsvReqC[vaa.ChainIDEthereumRopsten], *unsafeDevMode).Run); err != nil {
return err
}
if err := supervisor.Run(ctx, "acalawatch",
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, "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,6 +36,7 @@ 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.ChainIDAcala: "https://blockscout.acala.network/api",
// NOTE: Not sure what should be here for Klaytn, since they use: https://scope.klaytn.com/
vaa.ChainIDCelo: "https://celoscan.xyz/api",
}
@ -49,6 +50,7 @@ var coreContractMap = map[vaa.ChainID]string{
vaa.ChainIDAurora: "0xa321448d90d4e5b0a732867c18ea198e75cac48e",
vaa.ChainIDFantom: strings.ToLower("0x126783A6Cb203a3E35344528B26ca3a0489a1485"),
vaa.ChainIDKarura: strings.ToLower("0xa321448d90d4e5b0A732867c18eA198e75CAC48E"),
vaa.ChainIDAcala: strings.ToLower("0xa321448d90d4e5b0A732867c18eA198e75CAC48E"),
vaa.ChainIDKlaytn: strings.ToLower("0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7"),
vaa.ChainIDCelo: strings.ToLower("0xa321448d90d4e5b0A732867c18eA198e75CAC48E"),
}
@ -79,7 +81,7 @@ func addUserAgent(req *http.Request) *http.Request {
}
func usesBlockscout(chainId vaa.ChainID) bool {
return chainId == vaa.ChainIDOasis || chainId == vaa.ChainIDAurora || chainId == vaa.ChainIDKarura
return chainId == vaa.ChainIDOasis || chainId == vaa.ChainIDAurora || chainId == vaa.ChainIDKarura || chainId == vaa.ChainIDAcala
}
func getAdminClient(ctx context.Context, addr string) (*grpc.ClientConn, error, nodev1.NodePrivilegedServiceClient) {

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.ChainIDAcala, "000000000000000000000000ae9d7fe007b3327AA64A32824Aaac52C42a6E624"}, // 12 Acala Token Bridge
{vaa.ChainIDAcala, "000000000000000000000000b91e3638F82A1fACb28690b37e3aAE45d2c33808"}, // 12 Acala NFT Bridge
{vaa.ChainIDKlaytn, "0000000000000000000000005b08ac39EAED75c0439FC750d9FE7E1F9dD0193F"}, // 13 Klaytn Token Bridge
{vaa.ChainIDKlaytn, "0000000000000000000000003c3c561757BAa0b78c5C025CdEAa4ee24C1dFfEf"}, // 13 Klaytn NFT Bridge
{vaa.ChainIDCelo, "000000000000000000000000796Dff6D74F3E27060B71255Fe517BFb23C93eed"}, // 14 Celo Token Bridge

View File

@ -144,6 +144,11 @@ case "$chain_name" in
explorer="https://blockscout.karura.network/address/"
evm=true
;;
acala)
chain=11
explorer="https://blockscout.acala.network/address/"
evm=true
;;
klaytn)
chain=13
explorer="https://scope.klaytn.com/account/"

View File

@ -113,9 +113,9 @@ const MAINNET = {
nft_bridge: "0xb91e3638F82A1fACb28690b37e3aAE45d2c33808",
},
acala: {
core: undefined,
token_bridge: undefined,
nft_bridge: undefined,
core: "0xa321448d90d4e5b0A732867c18eA198e75CAC48E",
token_bridge: "0xae9d7fe007b3327AA64A32824Aaac52C42a6E624",
nft_bridge: "0xb91e3638F82A1fACb28690b37e3aAE45d2c33808",
},
klaytn: {
core: "0x0C21603c4f3a6387e241c0091A7EA39E43E90bb7",