clients: allow passing solana private key
Currently the typescript clients generate a fresh wallet and request airdrop into them. This obviously only works on tiltnet and testnet. Here we add an option to allow specifying a private key, which makes the command work in mainnet.
This commit is contained in:
parent
fc1c8d28a3
commit
918a968703
|
@ -1,18 +1,18 @@
|
|||
import yargs from "yargs";
|
||||
|
||||
const {hideBin} = require('yargs/helpers')
|
||||
const { hideBin } = require('yargs/helpers')
|
||||
|
||||
import * as elliptic from "elliptic";
|
||||
import * as ethers from "ethers";
|
||||
import * as web3s from '@solana/web3.js';
|
||||
|
||||
import {PublicKey, TransactionInstruction, AccountMeta, Keypair, Connection} from "@solana/web3.js";
|
||||
import {solidityKeccak256} from "ethers/lib/utils";
|
||||
import { PublicKey, TransactionInstruction, AccountMeta, Keypair, Connection } from "@solana/web3.js";
|
||||
import { base58, solidityKeccak256 } from "ethers/lib/utils";
|
||||
|
||||
import {setDefaultWasm, importCoreWasm, importNftWasm, ixFromRust, BridgeImplementation__factory} from '@certusone/wormhole-sdk'
|
||||
import { setDefaultWasm, importCoreWasm, importNftWasm, ixFromRust, BridgeImplementation__factory } from '@certusone/wormhole-sdk'
|
||||
setDefaultWasm("node")
|
||||
|
||||
const signAndEncodeVM = function (
|
||||
const signAndEncodeVM = function(
|
||||
timestamp,
|
||||
nonce,
|
||||
emitterChainId,
|
||||
|
@ -40,7 +40,7 @@ const signAndEncodeVM = function (
|
|||
for (let i in signers) {
|
||||
const ec = new elliptic.ec("secp256k1");
|
||||
const key = ec.keyFromPrivate(signers[i]);
|
||||
const signature = key.sign(Buffer.from(hash.substr(2), "hex"), {canonical: true});
|
||||
const signature = key.sign(Buffer.from(hash.substr(2), "hex"), { canonical: true });
|
||||
|
||||
const packSig = [
|
||||
ethers.utils.defaultAbiCoder.encode(["uint8"], [i]).substring(2 + (64 - 2)),
|
||||
|
@ -135,6 +135,12 @@ yargs(hideBin(process.argv))
|
|||
description: 'NFT Bridge address',
|
||||
default: "NFTWqJR8YnRVqPDvTJrYuLrQDitTG5AScqbeghi4zSA"
|
||||
})
|
||||
.option('key', {
|
||||
alias: 'k',
|
||||
type: 'string',
|
||||
description: 'Private key of the wallet',
|
||||
required: false
|
||||
})
|
||||
}, async (argv: any) => {
|
||||
const bridge = await importCoreWasm()
|
||||
const nft_bridge = await importNftWasm()
|
||||
|
@ -143,13 +149,17 @@ yargs(hideBin(process.argv))
|
|||
let bridge_id = new PublicKey(argv.bridge);
|
||||
let nft_bridge_id = new PublicKey(argv.nft_bridge);
|
||||
|
||||
// Generate a new random public key
|
||||
let from = web3s.Keypair.generate();
|
||||
let airdropSignature = await connection.requestAirdrop(
|
||||
from.publicKey,
|
||||
web3s.LAMPORTS_PER_SOL,
|
||||
);
|
||||
await connection.confirmTransaction(airdropSignature);
|
||||
var from: web3s.Keypair;
|
||||
if (argv.key) {
|
||||
from = web3s.Keypair.fromSecretKey(base58.decode(argv.key));
|
||||
} else {
|
||||
from = web3s.Keypair.generate();
|
||||
let airdropSignature = await connection.requestAirdrop(
|
||||
from.publicKey,
|
||||
web3s.LAMPORTS_PER_SOL,
|
||||
);
|
||||
await connection.confirmTransaction(airdropSignature);
|
||||
}
|
||||
|
||||
let vaa = Buffer.from(argv.vaa, "hex");
|
||||
await post_vaa(connection, bridge_id, from, vaa);
|
||||
|
|
|
@ -10,7 +10,7 @@ import {fromUint8Array} from "js-base64";
|
|||
import {LCDClient, MnemonicKey} from '@terra-money/terra.js';
|
||||
import {MsgExecuteContract} from "@terra-money/terra.js";
|
||||
import {PublicKey, TransactionInstruction, AccountMeta, Keypair, Connection} from "@solana/web3.js";
|
||||
import {solidityKeccak256} from "ethers/lib/utils";
|
||||
import {base58, solidityKeccak256} from "ethers/lib/utils";
|
||||
|
||||
import {setDefaultWasm, importCoreWasm, importTokenWasm, ixFromRust, BridgeImplementation__factory} from '@certusone/wormhole-sdk'
|
||||
setDefaultWasm("node")
|
||||
|
@ -255,6 +255,12 @@ yargs(hideBin(process.argv))
|
|||
description: 'Token Bridge address',
|
||||
default: "B6RHG3mfcckmrYN1UhmJzyS1XX3fZKbkeUcpJe9Sy3FE"
|
||||
})
|
||||
.option('key', {
|
||||
alias: 'k',
|
||||
type: 'string',
|
||||
description: 'Private key of the wallet',
|
||||
required: false
|
||||
})
|
||||
}, async (argv: any) => {
|
||||
const bridge = await importCoreWasm()
|
||||
const token_bridge = await importTokenWasm()
|
||||
|
@ -263,13 +269,17 @@ yargs(hideBin(process.argv))
|
|||
let bridge_id = new PublicKey(argv.bridge);
|
||||
let token_bridge_id = new PublicKey(argv.token_bridge);
|
||||
|
||||
// Generate a new random public key
|
||||
let from = web3s.Keypair.generate();
|
||||
let airdropSignature = await connection.requestAirdrop(
|
||||
from.publicKey,
|
||||
web3s.LAMPORTS_PER_SOL,
|
||||
);
|
||||
await connection.confirmTransaction(airdropSignature);
|
||||
var from: web3s.Keypair;
|
||||
if (argv.key) {
|
||||
from = web3s.Keypair.fromSecretKey(base58.decode(argv.key));
|
||||
} else {
|
||||
from = web3s.Keypair.generate();
|
||||
let airdropSignature = await connection.requestAirdrop(
|
||||
from.publicKey,
|
||||
web3s.LAMPORTS_PER_SOL,
|
||||
);
|
||||
await connection.confirmTransaction(airdropSignature);
|
||||
}
|
||||
|
||||
let vaa = Buffer.from(argv.vaa, "hex");
|
||||
await post_vaa(connection, bridge_id, from, vaa);
|
||||
|
|
Loading…
Reference in New Issue