| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- // npx pretty-quick
- const nearAPI = require("near-api-js");
- const BN = require("bn.js");
- const fs = require("fs");
- const fetch = require("node-fetch");
- import { NodeHttpTransport } from "@improbable-eng/grpc-web-node-http-transport";
- const { parseSeedPhrase, generateSeedPhrase } = require("near-seed-phrase");
- function getConfig(env: any) {
- switch (env) {
- case "mainnet":
- return {
- networkId: "mainnet",
- nodeUrl: "https://rpc.mainnet.near.org",
- wormholeMasterAccount: "wormhole_crypto.near",
- wormholeAccount: "contract.wormhole_crypto.near",
- portalMasterAccount: "portalbridge.near",
- portalAccount: "contract.portalbridge.near",
- };
- }
- return {};
- }
- async function initNear() {
- let config = getConfig("mainnet");
- let wormholeKeys = parseSeedPhrase(process.env.WORMHOLE_KEYS);
- let portalKeys = parseSeedPhrase(process.env.PORTAL_KEYS);
- let wormholeMasterKey = nearAPI.utils.KeyPair.fromString(
- wormholeKeys["secretKey"]
- );
- let portalMasterKey = nearAPI.utils.KeyPair.fromString(
- portalKeys["secretKey"]
- );
- let keyStore = new nearAPI.keyStores.InMemoryKeyStore();
- keyStore.setKey(
- config.networkId,
- config.wormholeMasterAccount,
- wormholeMasterKey
- );
- keyStore.setKey(config.networkId, config.wormholeAccount, wormholeMasterKey);
- keyStore.setKey(
- config.networkId,
- config.portalMasterAccount,
- portalMasterKey
- );
- keyStore.setKey(config.networkId, config.portalAccount, portalMasterKey);
- let near = await nearAPI.connect({
- keyStore,
- networkId: config.networkId,
- nodeUrl: config.nodeUrl,
- });
- let wormholeMasterAccount = new nearAPI.Account(
- near.connection,
- config.wormholeMasterAccount
- );
- let portalMasterAccount = new nearAPI.Account(
- near.connection,
- config.portalMasterAccount
- );
- console.log(
- "wormhole account: " +
- JSON.stringify(await wormholeMasterAccount.getAccountBalance())
- );
- console.log(
- "portal account: " +
- JSON.stringify(await portalMasterAccount.getAccountBalance())
- );
- const wormholeContract = await fs.readFileSync(
- "contracts/wormhole/target/wasm32-unknown-unknown/release/near_wormhole.wasm"
- );
- const portalContract = await fs.readFileSync(
- "contracts/token-bridge/target/wasm32-unknown-unknown/release/near_token_bridge.wasm"
- );
- console.log("setting key for new wormhole contract");
- keyStore.setKey(config.networkId, config.wormholeAccount, wormholeMasterKey);
- keyStore.setKey(config.networkId, config.portalAccount, portalMasterKey);
- console.log("Deploying core/wormhole contract: " + config.wormholeAccount);
- let wormholeAccount = await wormholeMasterAccount.createAndDeployContract(
- config.wormholeAccount,
- wormholeMasterKey.getPublicKey(),
- wormholeContract,
- new BN("5000000000000000000000000")
- );
- console.log("Deploying core/portal contract: " + config.portalAccount);
- let portalAccount = await portalMasterAccount.createAndDeployContract(
- config.portalAccount,
- portalMasterKey.getPublicKey(),
- portalContract,
- new BN("12000000000000000000000000")
- );
- let result = await wormholeMasterAccount.functionCall({
- contractId: config.wormholeAccount,
- methodName: "boot_wormhole",
- args: {
- gset: 0,
- addresses: ["58CC3AE5C097b213cE3c81979e1B9f9570746AA5"],
- },
- gas: 100000000000000,
- });
- result = await portalMasterAccount.functionCall({
- contractId: config.portalAccount,
- methodName: "boot_portal",
- args: {
- core: config.wormholeAccount,
- },
- gas: 100000000000000,
- });
- await wormholeMasterAccount.functionCall({
- contractId: config.wormholeAccount,
- methodName: "register_emitter",
- args: { emitter: config.portalAccount },
- attachedDeposit: new BN("30000000000000000000000"),
- gas: new BN("100000000000000"),
- });
- console.log("deleting the master key from the token contract");
- await portalAccount.deleteKey(portalMasterKey.getPublicKey());
- console.log("deleting the master key from the wormhole contract");
- await wormholeAccount.deleteKey(wormholeMasterKey.getPublicKey());
- }
- initNear();
|