63 lines
2.2 KiB
JavaScript
63 lines
2.2 KiB
JavaScript
// This test is intended to be run on devnet without an active eth miner
|
|
// see https://github.com/trufflesuite/ganache-cli-archive#custom-methods
|
|
|
|
const {
|
|
NodeHttpTransport,
|
|
} = require("@improbable-eng/grpc-web-node-http-transport");
|
|
const { ethers } = require("ethers");
|
|
const { parseUnits } = require("ethers/lib/utils");
|
|
const {
|
|
approveEth,
|
|
transferFromEth,
|
|
CHAIN_ID_BSC,
|
|
CHAIN_ID_ETH,
|
|
hexToUint8Array,
|
|
nativeToHexString,
|
|
parseSequenceFromLogEth,
|
|
getEmitterAddressEth,
|
|
getSignedVAA,
|
|
BridgeImplementation__factory,
|
|
} = require("@certusone/wormhole-sdk");
|
|
|
|
const BSC_NODE_URL = "ws://localhost:8546";
|
|
const ETH_NODE_URL = "ws://localhost:8545";
|
|
const ETH_PRIVATE_KEY =
|
|
"0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d";
|
|
const ETH_TOKEN_BRIDGE_ADDRESS = "0x0290FB167208Af455bB137780163b7B7a9a10C16";
|
|
// see https://eips.ethereum.org/EIPS/eip-1967#logic-contract-address
|
|
const LOGIC_CONTRACT_STORAGE =
|
|
"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
|
|
const SIGNED_VAA =
|
|
"010000000001003fd2219eed5b1a433120cf3edc37ab6c28f86222aa552e294e175e7e42ff32301c5c936b16ae6470bdfedbe9d7cdb50e664aac1e19da8489a7369caa7e1b5439010000000100000001000100000000000000000000000000000000000000000000000000000000000000040000000002a0518100000000000000000000000000000000000000000000546f6b656e427269646765020002000000000000000000000000daa71fbba28c946258dd3d5fcc9001401f72270f";
|
|
|
|
(async () => {
|
|
// create a signer for Eth
|
|
const provider = new ethers.providers.WebSocketProvider(ETH_NODE_URL);
|
|
const signer = new ethers.Wallet(ETH_PRIVATE_KEY, provider);
|
|
const tokenBridge = BridgeImplementation__factory.connect(
|
|
ETH_TOKEN_BRIDGE_ADDRESS,
|
|
signer
|
|
);
|
|
console.log(
|
|
"OLD IMPL",
|
|
await provider.getStorageAt(
|
|
ETH_TOKEN_BRIDGE_ADDRESS,
|
|
LOGIC_CONTRACT_STORAGE
|
|
)
|
|
);
|
|
console.log("OLD WETH", await tokenBridge.WETH());
|
|
console.log("UPGRADING...");
|
|
await tokenBridge.upgrade("0x" + SIGNED_VAA);
|
|
console.log("SUCCESS!");
|
|
console.log(
|
|
"NEW IMPL",
|
|
await provider.getStorageAt(
|
|
ETH_TOKEN_BRIDGE_ADDRESS,
|
|
LOGIC_CONTRACT_STORAGE
|
|
)
|
|
);
|
|
console.log("NEW WETH", await tokenBridge.WETH());
|
|
|
|
provider.destroy();
|
|
})();
|