clients/js: fixes hardcoded Near deployer implicit account id. (#3248)

* clients/js: fixes hardcoded Near deployer implicit account id.

* clients/js: remove near deployerAccount

---------

Co-authored-by: Evan Gray <battledingo@gmail.com>
This commit is contained in:
scnale 2024-03-21 18:08:12 -03:00 committed by GitHub
parent b175dd43c8
commit 9634d59035
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 6387 additions and 390 deletions

View File

@ -25,6 +25,7 @@ test: build
# This first invocation will set up the initial config, so that the warning
# doesn't show up in the tests
npm run check
npm test
node build/main.js --version > /dev/null
./run_parse_tests

View File

@ -0,0 +1,12 @@
{
"moduleNameMapper": {
"^@certusone/(.*)/lib/esm/(.*)$": "@certusone/$1/lib/cjs/$2"
},
"transform": {
"^.+\\.(t|j)sx?$": "ts-jest"
},
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$",
"testPathIgnorePatterns": ["__tests__/utils"],
"moduleFileExtensions": ["ts", "tsx", "js", "jsx", "json", "node"],
"testTimeout": 60000
}

File diff suppressed because it is too large Load Diff

View File

@ -19,7 +19,7 @@
"check": "tsc --noEmit",
"docs": "npx tsx src/doc.ts",
"prepublishOnly": "npm run check",
"test": "echo \"Error: no test specified\" && exit 1"
"test": "jest"
},
"author": "Wormhole Contributors",
"license": "Apache-2.0",
@ -64,9 +64,12 @@
"@truffle/hdwallet-provider": "^2.0.15",
"@types/bn.js": "^5.1.0",
"@types/bs58": "^4.0.1",
"@types/jest": "^29.5.12",
"@types/node-fetch": "^2.6.3",
"@types/yargs": "^17.0.24",
"copy-dir": "^1.3.0",
"jest": "^29.7.0",
"ts-jest": "^29.1.2",
"typescript": "^4.6"
}
}

View File

@ -92,8 +92,6 @@ const MAINNET = {
rpc: "https://rpc.mainnet.near.org",
key: getEnvVar("NEAR_KEY"),
networkId: "mainnet",
deployerAccount:
"85957f38de1768d6db9eab29bee9dd2a01462aff9c8d83daefb9bcd2506c32d2",
},
injective: {
rpc: "http://sentry0.injective.network:26657",
@ -332,7 +330,6 @@ const TESTNET = {
rpc: "https://rpc.testnet.near.org",
key: getEnvVar("NEAR_KEY_TESTNET"),
networkId: "testnet",
deployerAccount: "wormhole.testnet",
},
injective: {
rpc: "https://k8s.testnet.tm.injective.network:443",
@ -561,7 +558,6 @@ const DEVNET = {
rpc: undefined,
key: undefined,
networkId: "sandbox",
deployerAccount: "test.near",
},
injective: {
rpc: undefined,

View File

@ -0,0 +1,20 @@
import { parseSeedPhrase } from "near-seed-phrase";
import { test } from "@jest/globals";
import { KeyPair } from "near-api-js";
import { keyPairToImplicitAccount } from "./near";
import base58 from "bs58";
test("keyPairToImplicitAccount", () => {
// seed phrase from /near/devnet_deploy.ts
const parsed = parseSeedPhrase(
"weather opinion slam purpose access artefact word orbit matter rice poem badge"
);
const expectedImplicitAccount = base58
.decode(parsed.publicKey.split(":")[1])
.toString("hex");
const keyPair = KeyPair.fromString(parsed.secretKey);
const implicitAccount = keyPairToImplicitAccount(keyPair);
expect(implicitAccount.length).toEqual(64);
expect(implicitAccount).toEqual(expectedImplicitAccount);
});

View File

@ -14,12 +14,16 @@ import {
} from "@certusone/wormhole-sdk/lib/esm/token_bridge/transfer";
import { tryNativeToUint8Array } from "@certusone/wormhole-sdk/lib/esm/utils";
export function keyPairToImplicitAccount(keyPair: KeyPair): string {
return Buffer.from(keyPair.getPublicKey().data).toString("hex");
}
export const execute_near = async (
payload: Payload,
vaa: string,
network: Network
): Promise<void> => {
const { rpc, key, networkId, deployerAccount } = NETWORKS[network].near;
const { rpc, key, networkId } = NETWORKS[network].near;
if (!key) {
throw Error(`No ${network} key defined for NEAR`);
}
@ -113,8 +117,10 @@ export const execute_near = async (
impossible(payload);
}
const keyPair = KeyPair.fromString(key);
const deployerAccount = keyPairToImplicitAccount(keyPair);
const keyStore = new InMemoryKeyStore();
keyStore.setKey(networkId, deployerAccount, KeyPair.fromString(key));
keyStore.setKey(networkId, deployerAccount, keyPair);
const near = await connect({
keyStore,
networkId,
@ -159,7 +165,7 @@ export async function transferNear(
network: Network,
rpc: string
) {
const { key, networkId, deployerAccount } = NETWORKS[network].near;
const { key, networkId } = NETWORKS[network].near;
if (!key) {
throw Error(`No ${network} key defined for NEAR`);
}
@ -170,8 +176,10 @@ export async function transferNear(
if (token_bridge === undefined) {
throw Error(`Unknown token bridge contract on ${network} for NEAR`);
}
const keyPair = KeyPair.fromString(key);
const deployerAccount = keyPairToImplicitAccount(keyPair);
const keyStore = new InMemoryKeyStore();
keyStore.setKey(networkId, deployerAccount, KeyPair.fromString(key));
keyStore.setKey(networkId, deployerAccount, keyPair);
const near = await connect({
keyStore,
networkId,