Near mainnet deploy (#1467)

* Initial commit

* Updated mainnet_tokens with Near token

* Near CLI changes

* More CLI tweaks

* Revert ethers in cli

* Fix lint error

* Testnet emitter is wrong

Co-authored-by: Christine Eun <ceun@jumptrading.com>
This commit is contained in:
bruce-riley 2022-08-26 11:46:37 -05:00 committed by GitHub
parent 0fc3e8badc
commit 4a42c29c0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 39 additions and 31 deletions

View File

@ -13,14 +13,15 @@ export async function execute_near(
let n = NETWORKS[network]["near"];
let contracts = CONTRACTS[network]["near"];
let account: string;
let target_contract = "";
let numSubmits = 1
switch (payload.module) {
case "Core":
if (contracts.core === undefined) {
throw new Error("Core bridge not supported yet for near");
}
account = "wormhole." + n.baseAccount;
target_contract = contracts.core;
switch (payload.type) {
case "GuardianSetUpgrade":
console.log("Submitting new guardian set");
@ -36,7 +37,8 @@ export async function execute_near(
if (contracts.nft_bridge === undefined) {
throw new Error("NFT bridge not supported yet for near");
}
account = "nft." + n.baseAccount;
numSubmits = 2
target_contract = contracts.nft_bridge;
switch (payload.type) {
case "ContractUpgrade":
console.log("Upgrading contract");
@ -52,7 +54,11 @@ export async function execute_near(
}
break;
case "TokenBridge":
account = "token." + n.baseAccount;
if (contracts.token_bridge === undefined) {
throw new Error("Token bridge not supported yet for near");
}
numSubmits = 2
target_contract = contracts.token_bridge;
switch (payload.type) {
case "ContractUpgrade":
console.log("Upgrading contract");
@ -77,12 +83,10 @@ export async function execute_near(
impossible(payload);
}
let target_contract = account;
let key = nearAPI.utils.KeyPair.fromString(n.key);
let keyStore = new nearAPI.keyStores.InMemoryKeyStore();
keyStore.setKey(n.networkId, account, key);
keyStore.setKey(n.networkId, n.deployerAccount, key);
let near = await nearAPI.connect({
deps: {
@ -92,7 +96,7 @@ export async function execute_near(
nodeUrl: n.rpc,
});
let nearAccount = new nearAPI.Account(near.connection, account);
let nearAccount = new nearAPI.Account(near.connection, n.deployerAccount);
console.log("submitting vaa the first time");
let result1 = await nearAccount.functionCall({
@ -105,6 +109,11 @@ export async function execute_near(
gas: new BN("300000000000000"),
});
if (numSubmits <= 1) {
console.log("Hash: " + result1.transaction.hash);
return
}
// You have to feed a vaa twice into the contract (two submits),
// The first time, it checks if it has been seen at all.
// The second time, it executes.

View File

@ -79,10 +79,10 @@ const MAINNET = {
key: get_env_var("ETH_KEY"),
},
near: {
rpc: undefined,
key: undefined,
networkId: "",
baseAccount: "",
rpc: "https://rpc.mainnet.near.org",
key: get_env_var("NEAR_KEY"),
networkId: "mainnet",
deployerAccount: "85957f38de1768d6db9eab29bee9dd2a01462aff9c8d83daefb9bcd2506c32d2",
},
injective: {
rpc: undefined,
@ -205,7 +205,7 @@ const TESTNET = {
rpc: "https://rpc.testnet.near.org",
key: get_env_var("NEAR_KEY_TESTNET"),
networkId: "testnet",
baseAccount: "wormhole.testnet",
deployerAccount: undefined,
},
injective: {
rpc: undefined,
@ -328,7 +328,7 @@ const DEVNET = {
rpc: undefined,
key: undefined,
networkId: "sandbox",
baseAccount: "test.near",
deployerAccount: "test.near",
},
injective: {
rpc: undefined,

View File

@ -110,6 +110,7 @@ func runListNodes(cmd *cobra.Command, args []string) {
{"Acala", vaa.ChainIDAcala},
{"Klaytn", vaa.ChainIDKlaytn},
{"Celo", vaa.ChainIDCelo},
{"Near", vaa.ChainIDNear},
{"Terra2", vaa.ChainIDTerra2},
}

View File

@ -532,14 +532,12 @@ func runNode(cmd *cobra.Command, args []string) {
if *celoContract == "" && !*unsafeDevMode {
logger.Fatal("Please specify --celoContract")
}
if *testnetMode || *unsafeDevMode {
if *nearRPC != "" {
if *nearContract == "" {
logger.Fatal("If --nearRPC is specified, then --nearContract must be specified")
}
} else if *nearContract != "" {
logger.Fatal("If --nearContract is specified, then --nearRPC must be specified")
if *nearRPC != "" {
if *nearContract == "" {
logger.Fatal("If --nearRPC is specified, then --nearContract must be specified")
}
} else if *nearContract != "" {
logger.Fatal("If --nearContract is specified, then --nearRPC must be specified")
}
if *testnetMode {
if *ethRopstenRPC == "" {
@ -597,12 +595,6 @@ func runNode(cmd *cobra.Command, args []string) {
if *injectiveContract != "" && !*unsafeDevMode {
logger.Fatal("Please do not specify --injectiveContract")
}
if *nearRPC != "" && !*unsafeDevMode {
logger.Fatal("Please do not specify --nearRPC")
}
if *nearContract != "" && !*unsafeDevMode {
logger.Fatal("Please do not specify --nearContract")
}
}
if *nodeName == "" {
logger.Fatal("Please specify --nodeName")

View File

@ -113,6 +113,7 @@ var knownTokenbridgeEmitters = map[vaa.ChainID]string{
vaa.ChainIDAcala: "000000000000000000000000ae9d7fe007b3327AA64A32824Aaac52C42a6E624",
vaa.ChainIDKlaytn: "0000000000000000000000005b08ac39EAED75c0439FC750d9FE7E1F9dD0193F",
vaa.ChainIDCelo: "000000000000000000000000796Dff6D74F3E27060B71255Fe517BFb23C93eed",
vaa.ChainIDNear: "148410499d3fcda4dcfd68a1ebfcdddda16ab28326448d4aae4d2f0465cdfcb7",
}
// KnownNFTBridgeEmitters is a list of well-known mainnet emitters for the NFT bridge.

View File

@ -23,6 +23,7 @@ var knownTestnetTokenbridgeEmitters = map[vaa.ChainID]string{
vaa.ChainIDAcala: "000000000000000000000000eba00cbe08992edd08ed7793e07ad6063c807004",
vaa.ChainIDKlaytn: "000000000000000000000000c7a13be098720840dea132d860fdfa030884b09a",
vaa.ChainIDCelo: "00000000000000000000000005ca6037ec51f8b712ed2e6fa72219feae74e153",
vaa.ChainIDNear: "c2c0b6ecbbe9ecf91b2b7999f0264018ba68126c2e83bf413f59f712f3a1df55",
vaa.ChainIDMoonbeam: "000000000000000000000000bc976d4b9d57e57c3ca52e1fd136c45ff7955a96",
vaa.ChainIDNeon: "000000000000000000000000d11de1f930ea1f7dd0290fe3a2e35b9c91aefb37",
vaa.ChainIDEthereumRopsten: "000000000000000000000000F174F9A837536C449321df1Ca093Bb96948D5386",

View File

@ -24,6 +24,7 @@ func chainList() []chainConfigEntry {
chainConfigEntry{emitterChainID: vaa.ChainIDAcala, dailyLimit: 500000},
chainConfigEntry{emitterChainID: vaa.ChainIDKlaytn, dailyLimit: 500000},
chainConfigEntry{emitterChainID: vaa.ChainIDCelo, dailyLimit: 500000},
chainConfigEntry{emitterChainID: vaa.ChainIDNear, dailyLimit: 200000},
chainConfigEntry{emitterChainID: vaa.ChainIDTerra2, dailyLimit: 500000},
}
}

View File

@ -72,6 +72,7 @@ func tokenList() []tokenConfigEntry {
tokenConfigEntry{chain: 2, addr: "000000000000000000000000f1f955016ecbcd7321c7266bccfb96c68ea5e49b", symbol: "RLY", coinGeckoId: "rally-2", decimals: 8, price: 0.0417475}, // Addr: 0xf1f955016ecbcd7321c7266bccfb96c68ea5e49b, Notional: 4774851
tokenConfigEntry{chain: 2, addr: "000000000000000000000000f8c3527cc04340b208c854e985240c02f7b7793f", symbol: "FRONT", coinGeckoId: "frontier-token", decimals: 8, price: 0.275458}, // Addr: 0xf8c3527cc04340b208c854e985240c02f7b7793f, Notional: 446100
tokenConfigEntry{chain: 2, addr: "000000000000000000000000fd09911130e6930bf87f2b0554c44f400bd80d3e", symbol: "ETHIX", coinGeckoId: "ethichub", decimals: 8, price: 0.255996}, // Addr: 0xfd09911130e6930bf87f2b0554c44f400bd80d3e, Notional: 1633516
tokenConfigEntry{chain: 2, addr: "00000000000000000000000085f17cf997934a597031b2e18a9ab6ebd4b9f6a4", symbol: "NEAR", coinGeckoId: "near", decimals: 8, price: 4.330}, // *** manually added. Near on ethereum
tokenConfigEntry{chain: 3, addr: "0000000000000000000000008f5cd460d57ac54e111646fc569179144c7f0c28", symbol: "PLY", coinGeckoId: "playnity", decimals: 6, price: 0.00955359}, // Addr: terra13awdgcx40tz5uygkgm79dytez3x87rpg4uhnvu, Notional: 1073506
tokenConfigEntry{chain: 3, addr: "0000000000000000000000002c71557d2edfedd8330e52be500058a014d329e7", symbol: "BTL", coinGeckoId: "bitlocus", decimals: 6, price: 0.00214964}, // Addr: terra193c42lfwmlkasvcw22l9qqzc5q2dx208tkd7wl, Notional: 1058903
tokenConfigEntry{chain: 3, addr: "000000000000000000000000b8ae5604d7858eaa46197b19494b595b586e466c", symbol: "aUST", coinGeckoId: "anchorust", decimals: 6, price: 0.04135693}, // Addr: terra1hzh9vpxhsk8253se0vv5jj6etdvxu3nv8z07zu, Notional: 156051
@ -107,6 +108,7 @@ func tokenList() []tokenConfigEntry {
tokenConfigEntry{chain: 9, addr: "000000000000000000000000c9bdeed33cd01541e1eed10f90519d2c06fe3feb", symbol: "WETH", coinGeckoId: "weth", decimals: 8, price: 1881.9}, // Addr: 0xc9bdeed33cd01541e1eed10f90519d2c06fe3feb, Notional: 4978
tokenConfigEntry{chain: 9, addr: "0000000000000000000000008bec47865ade3b172a928df8f990bc7f2a3b9f79", symbol: "AURORA", coinGeckoId: "aurora", decimals: 8, price: 1.82}, // *** manually added
tokenConfigEntry{chain: 9, addr: "000000000000000000000000e4b9e004389d91e4134a28f19bd833cba1d994b6", symbol: "FRAX", coinGeckoId: "frax", decimals: 8, price: 0.999322}, // *** manually added
tokenConfigEntry{chain: 9, addr: "000000000000000000000000c42c30ac6cc15fac9bd938618bcaa1a1fae8501d", symbol: "NEAR", coinGeckoId: "near", decimals: 8, price: 4.330}, // *** manually added. Near on aurora. 24 decimals
tokenConfigEntry{chain: 10, addr: "00000000000000000000000004068da6c83afcfa0e13ba15a6696662335d5b75", symbol: "USDC", coinGeckoId: "usd-coin", decimals: 6, price: 0.999041}, // Addr: 0x04068da6c83afcfa0e13ba15a6696662335d5b75, Notional: 778356
tokenConfigEntry{chain: 10, addr: "00000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c83", symbol: "WFTM", coinGeckoId: "wrapped-fantom", decimals: 8, price: 0.370202}, // Addr: 0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83, Notional: 126455
tokenConfigEntry{chain: 10, addr: "000000000000000000000000260b3e40c714ce8196465ec824cd8bb915081812", symbol: "IronICE", coinGeckoId: "iron-bsc", decimals: 8, price: 0.571011}, // Addr: 0x260b3e40c714ce8196465ec824cd8bb915081812, Notional: 1303
@ -128,6 +130,7 @@ func tokenList() []tokenConfigEntry {
tokenConfigEntry{chain: 14, addr: "000000000000000000000000471ece3750da237f93b8e339c536989b8978a438", symbol: "CELO", coinGeckoId: "celo", decimals: 8, price: 1.059}, // Addr: 0x471ece3750da237f93b8e339c536989b8978a438, Notional: 2006
tokenConfigEntry{chain: 14, addr: "000000000000000000000000765de816845861e75a25fca122bb6898b8b1282a", symbol: "cUSD", coinGeckoId: "celo-dollar", decimals: 8, price: 0.993661}, // Addr: 0x765de816845861e75a25fca122bb6898b8b1282a, Notional: 1
tokenConfigEntry{chain: 14, addr: "000000000000000000000000d8763cba276a3738e6de85b4b3bf5fded6d6ca73", symbol: "cEUR", coinGeckoId: "celo-euro", decimals: 8, price: 1.009}, // Addr: 0xd8763cba276a3738e6de85b4b3bf5fded6d6ca73, Notional: 101465
tokenConfigEntry{chain: 15, addr: "0000000000000000000000000000000000000000000000000000000000000000", symbol: "NEAR", coinGeckoId: "near", decimals: 8, price: 4.330}, // *** manually added
tokenConfigEntry{chain: 18, addr: "01fa6c6fbc36d8c245b0a852a43eb5d644e8b4c477b27bfab9537c10945939da", symbol: "LUNA", coinGeckoId: "terra-luna-2", decimals: 6, price: 1.99}, // Addr: uluna, Notional: 1182
}
}

View File

@ -152,8 +152,8 @@ const MAINNET = {
nft_bridge: "0xA6A377d75ca5c9052c9a77ED1e865Cc25Bd97bf3",
},
near: {
core: undefined,
token_bridge: undefined,
core: "contract.wormhole_crypto.near",
token_bridge: "contract.portalbridge.near",
nft_bridge: undefined,
},
injective: {
@ -301,8 +301,8 @@ const TESTNET = {
nft_bridge: "0xaCD8190F647a31E56A656748bC30F69259f245Db",
},
near: {
core: undefined,
token_bridge: undefined,
core: "wormhole.wormhole.testnet",
token_bridge: "token.wormhole.testnet",
nft_bridge: undefined,
},
injective: {