Skip to content

Commit

Permalink
deployment: partial fix for EVM deployment scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
scnale committed Sep 27, 2024
1 parent 321e5f2 commit c975755
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 29 deletions.
7 changes: 3 additions & 4 deletions deployment/evm/configure-fee-and-dropoff.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import {
contracts,
evm,
getChainConfig,
getContractAddress,
Expand All @@ -15,7 +14,7 @@ import { EvmTbrV3Config } from "../config/config.types.js";
*/
evm.runOnEvms("configure-fee-and-dropoff", async (chain, signer, log) => {
const tbrv3ProxyAddress = getContractAddress("TbrV3Proxies", chain.chainId);
const tbrv3 = new Tbrv3(signer.provider!, chain.network, tbrv3ProxyAddress);
const tbrv3 = Tbrv3.connect(signer.provider!, chain.network, "Sepolia", tbrv3ProxyAddress);
const peers = loadTbrPeers(chain);

const relayFeeUpdates: Map<SupportedChains, number> = new Map();
Expand All @@ -29,7 +28,7 @@ evm.runOnEvms("configure-fee-and-dropoff", async (chain, signer, log) => {
log(`Will updaterelay fee for ${otherTbrv3Chain}: ${peerChainCfg.maxGasDropoff}`);
relayFeeUpdates.set(otherTbrv3Chain, desiredRelayFee);
}
}
}

if (relayFeeUpdates.size !== 0) {
log("Updating relay fee");
Expand Down Expand Up @@ -71,5 +70,5 @@ evm.runOnEvms("configure-fee-and-dropoff", async (chain, signer, log) => {
} else {
log("No max gas dropoff to update");
}

});
7 changes: 3 additions & 4 deletions deployment/evm/read-configured-fee-and-dropoff.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import {
} from "../helpers/index.js";
import { chainIdToChain } from "@wormhole-foundation/sdk-base";
import { SupportedChains, Tbrv3 } from "@xlabs-xyz/evm-arbitrary-token-transfers";
import { ethers } from "ethers";

/**
* Reads the configured relay fee and max gas dropoff for Tbrv3 contracts
Expand All @@ -14,17 +13,17 @@ import {
console.log(`Operating chain: ${chain.name}`);

const tbrv3ProxyAddress = getContractAddress("TbrV3Proxies", chain.chainId);
const tbrv3 = new Tbrv3(signer.provider!, chain.network, tbrv3ProxyAddress);
const tbrv3 = Tbrv3.connect(signer.provider!, chain.network, chainIdToChain(chain.chainId), tbrv3ProxyAddress);
const deployedTbrv3s = contracts["TbrV3Proxies"];

for (const otherTbrv3 of deployedTbrv3s){
const otherTbrv3Chain = chainIdToChain(otherTbrv3.chainId) as SupportedChains;

const currentRelayFee = await tbrv3.relayFee(otherTbrv3Chain);

log(`Current relay fee for ${otherTbrv3Chain}: ${currentRelayFee.fee}`);
}

for (const otherTbrv3 of deployedTbrv3s) {
const otherTbrv3Chain = chainIdToChain(otherTbrv3.chainId) as SupportedChains;

Expand Down
6 changes: 3 additions & 3 deletions deployment/evm/register-peers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import { ethers } from "ethers";
*/
evm.runOnEvms("register-peers", async (chain, signer, log) => {
const tbrv3ProxyAddress = getContractAddress("TbrV3Proxies", chain.chainId);
const tbrv3 = new Tbrv3(signer.provider!, chain.network, tbrv3ProxyAddress);
const tbrv3 = Tbrv3.connect(signer.provider!, chain.network, chainIdToChain(chain.chainId), tbrv3ProxyAddress);
const deployedTbrv3s = loadTbrPeers(chain)

const addPeersCmd: { chain: SupportedChains, peer: UniversalAddress }[] = [];
Expand All @@ -44,7 +44,7 @@ evm.runOnEvms("register-peers", async (chain, signer, log) => {

if (updateCanonicalPeersCmd.size !== 0) {
log("updating canonical peers");
const partialTx = await tbrv3.updateCanonicalPeers(updateCanonicalPeersCmd);
const partialTx = tbrv3.updateCanonicalPeers(updateCanonicalPeersCmd);
const { error, receipt } = await evm.sendTx(signer, { ...partialTx, data: ethers.hexlify(partialTx.data) });
if (error) {
log("Error updating canonical peers: ", error);
Expand All @@ -58,7 +58,7 @@ evm.runOnEvms("register-peers", async (chain, signer, log) => {

if (addPeersCmd.length !== 0) {
log("adding peers");
const partialTx = await tbrv3.addPeers(addPeersCmd);
const partialTx = tbrv3.addPeers(addPeersCmd);
const { error, receipt } = await evm.sendTx(signer, { ...partialTx, data: ethers.hexlify(partialTx.data) });
if (error) {
log("Error adding peers: ", error);
Expand Down
24 changes: 15 additions & 9 deletions deployment/evm/test-transfer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { ethers } from 'ethers';
import { getProvider, runOnEvms, sendTx } from '../helpers/evm';
import { SupportedChains, Tbrv3, Transfer } from '@xlabs-xyz/evm-arbitrary-token-transfers';
import { toUniversal } from '@wormhole-foundation/sdk-definitions';
import { Chain, chainToPlatform } from '@wormhole-foundation/sdk-base';
import { Chain, chainIdToChain, chainToPlatform } from '@wormhole-foundation/sdk-base';
import { inspect } from 'util';
import { solanaOperatingChains } from '../helpers/solana';

Expand Down Expand Up @@ -68,8 +68,9 @@ async function sendTestTransaction(

const tbrv3ProxyAddress = getContractAddress('TbrV3Proxies', chain.chainId);
const provider = getProvider(chain);
const tbrv3 = new Tbrv3(provider, chain.network, tbrv3ProxyAddress);
const tbrv3 = Tbrv3.connect(provider!, chain.network, chainIdToChain(chain.chainId), tbrv3ProxyAddress);

let allAllowances = {};
const promises = await Promise.allSettled(
targetChains
.filter((targetChain) => chain.chainId !== targetChain.chainId)
Expand All @@ -96,30 +97,35 @@ async function sendTestTransaction(
gasDropoff,
});

const feeEstimation = (
const {feeEstimations, allowances} = (
await tbrv3.relayingFee({
targetChain: targetChain.name as SupportedChains,
gasDropoff,
tokens: [inputToken],
transferRequests: [{
targetChain: targetChain.name as SupportedChains,
gasDropoff,
}],
})
)[0];
);

const feeEstimation = feeEstimations[0];
log(`Fee estimation ${chain.name}->${targetChain.name}: ${inspect(feeEstimation)}`);

allAllowances = {...allAllowances, allowances};
return {
args: {
method: 'TransferTokenWithRelay',
acquireMode: { mode: 'Preapproved' },
inputAmountInAtomic,
gasDropoff,
recipient: {
chain: targetChain.name as Chain,
chain: targetChain.name as SupportedChains,
address: toUniversal(targetChain.name as Chain, address),
},
inputToken,
unwrapIntent,
},
feeEstimation,
} as Transfer;
} satisfies Transfer;
} catch (err) {
console.error(`Error creating transfer for ${chain.name}->${targetChain.name}: ${err}`);
throw err;
Expand All @@ -136,7 +142,7 @@ async function sendTestTransaction(
}

log(`Executing ${transfers.length} transfers`, transfers);
const { to, value, data } = tbrv3.transferWithRelay(...transfers);
const { to, value, data } = tbrv3.transferWithRelay(allAllowances, ...transfers);

const { receipt, error } = await sendTx(signer, {
to,
Expand Down
18 changes: 10 additions & 8 deletions deployment/evm/upgrade.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { ethers } from "ethers";
import { Tbr__factory } from "../ethers-contracts/index.js";
import { getSigner, getProvider, sendTx } from "../helpers/evm";
import { EvmAddress } from '@wormhole-foundation/sdk-evm';
import { chainIdToChain } from '@wormhole-foundation/sdk-base';


const processName = "tbr-v3";
Expand Down Expand Up @@ -78,10 +79,10 @@ async function deployRelayerImplementation(chain: EvmChainInfo, config: EvmTbrV3
signer,
);

const permit2 = await getDependencyAddress("permit2", chain);
const tokenBridge = await getDependencyAddress("tokenBridge", chain);
const oracle = await getDependencyAddress("oracle", chain);
const initGasToken = await getDependencyAddress("initGasToken", chain);
const permit2 = getDependencyAddress("permit2", chain);
const tokenBridge = getDependencyAddress("tokenBridge", chain);
const oracle = getDependencyAddress("oracle", chain);
const initGasToken = getDependencyAddress("initGasToken", chain);

const contract = await factory.deploy(permit2, tokenBridge, oracle, initGasToken, config.initGasErc20TokenizationIsExplicit);

Expand All @@ -106,16 +107,17 @@ async function upgradeProxyWithNewImplementation(
) {
console.log("Upgrade Proxy with new implementation " + chain.chainId);
const signer = await getSigner(chain);
const signerAddress = await signer.getAddress();
// const signerAddress = await signer.getAddress();
const { Tbrv3 } = await import("@xlabs-xyz/evm-arbitrary-token-transfers");

const tbr = new Tbrv3(
await getProvider(chain),
const tbr = Tbrv3.connect(
getProvider(chain),
chain.network,
chainIdToChain(chain.chainId),
getContractAddress("TbrV3Proxies", chain.chainId),
);

const tx = await tbr.upgradeContract(new EvmAddress(implementationAddress));
const tx = tbr.upgradeContract(new EvmAddress(implementationAddress));

const {receipt, error } = await sendTx(signer, {
...tx,
Expand Down
3 changes: 2 additions & 1 deletion deployment/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
"version": "0.0.1",
"scripts": {
"build:evm": "FOUNDRY_PROFILE=production forge build --root=../evm && typechain --target=ethers-v6 --out-dir=./ethers-contracts ../evm/build-forge/*.sol/!(*.dbg).json --show-stack-traces",
"clean": "rm -rf ./ethers-contracts",
"clean": "rm -rf ./ethers-contracts ./ts-build",
"deploy:evm:localnet": "ENV=localnet tsx evm/deploy.ts",
"deploy:evm:testnet": "ENV=testnet tsx evm/deploy.ts",
"deploy:evm:mainnet": "ENV=mainnet tsx evm/deploy.ts",
"parse:evm": "tsx evm/parse.ts",
"test:build": "tsc --project ./tsconfig.json",
"lint:fix": "prettier */*.js \"*/**/*{.js,.ts}\" -w",
"lint": "prettier */*.js \"*/**/*{.js,.ts}\" --check"
},
Expand Down

0 comments on commit c975755

Please sign in to comment.