Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add linea propagate fee calculation #10

Merged
merged 3 commits into from
Nov 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
"@arbitrum/sdk": "3.1.3",
"@connext/nxtp-adapters-subgraph": "2.0.0",
"@connext/nxtp-utils": "2.0.4",
"@consensys/linea-sdk": "0.1.6",
"@eth-optimism/sdk": "2.1.0",
"@flashbots/ethers-provider-bundle": "0.6.2",
"@keep3r-network/keeper-scripting-utils": "1.1.0",
Expand Down
8 changes: 0 additions & 8 deletions src/helpers/propagate/consensys.ts

This file was deleted.

2 changes: 1 addition & 1 deletion src/helpers/propagate/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ export {getPropagateParameters as getPropagateParametersArbitrum} from './arbitr
export {getPropagateParameters as getPropagateParametersBnb} from './bnb';
export {getPropagateParameters as getPropagateParametersGnosis} from './gnosis';
export {getPropagateParameters as getPropagateParametersZkSync} from './zksync';
export {getPropagateParameters as getPropagateParametersConsensys} from './consensys';
export {getPropagateParameters as getPropagateParametersLinea} from './linea';
25 changes: 25 additions & 0 deletions src/helpers/propagate/linea.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import {BigNumber} from 'ethers';
import {type InitialSetup, type ExtraPropagateParameters} from 'src/utils/types';
import {LineaSDK} from '@consensys/linea-sdk';

export const getPropagateParameters = async ({lineaProvider, provider, environment}: InitialSetup): Promise<ExtraPropagateParameters> => {
// Postman Fee = target layer gas price * (gas estimated + gas limit surplus) * margin.
// The target layer gas price is eth_gasPrice on the target layer, gas estimated = 100,000, gas limit surplus = 6000, and margin = 2.
const sdk = new LineaSDK({
l1RpcUrl: provider.connection.url, // L1 rpc url
l2RpcUrl: lineaProvider.connection.url, // L2 rpc url
network: environment === 'mainnet' ? 'linea-mainnet' : 'linea-goerli', // Network you want to interact with (either linea-mainnet or linea-goerli)
mode: 'read-only', // Contract wrapper class mode (read-only or read-write), read-only: only read contracts state, read-write: read contracts state and claim messages
});
const l2Messenger = sdk.getL2Contract();
const {maxFeePerGas: gasPrice} = await l2Messenger.get1559Fees();

// On linea-goerli claimMessage gasLimit was 83717
// Source: https://goerli.lineascan.build/tx/0x4c477dfcbc22cd99b461cfe714a6ad60796331d3c13e55a74a6de51c3cd9aab6
const gasLimit = BigNumber.from('120000');
const margin = BigNumber.from(1);

const fee = gasPrice.mul(gasLimit).mul(margin).toString();

return {connector: '', fee, encodedData: '0x'};
};
2 changes: 2 additions & 0 deletions src/init-propagate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,14 @@ const PRIORITY_FEE = 2e9;
const flashbotsProviderUrl = getEnvVariable('FLASHBOTS_PROVIDER_URL');
const provider = new providers.JsonRpcProvider(getEnvVariable('RPC_HTTPS_URI'));
const arbProvider = new providers.JsonRpcProvider(getEnvVariable('ARBITRUM_RPC_URI'));
const lineaProvider = new providers.JsonRpcProvider(getEnvVariable('LINEA_RPC_URI'));
const txSigner = new Wallet(getEnvVariable('TX_SIGNER_PRIVATE_KEY'), provider);
const bundleSigner = new Wallet(getEnvVariable('BUNDLE_SIGNER_PRIVATE_KEY'), provider);

const setup: InitialSetup = {
provider,
arbProvider,
lineaProvider,
txSigner,
bundleSigner,
environment: getEnvVariable('ENVIRONMENT') as Environment,
Expand Down
5 changes: 3 additions & 2 deletions src/utils/propagate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {BigNumber, constants} from 'ethers';
import {
getPropagateParametersArbitrum,
getPropagateParametersBnb,
getPropagateParametersConsensys,
getPropagateParametersLinea,
getPropagateParametersGnosis,
getPropagateParametersZkSync,
} from '../helpers/propagate';
Expand All @@ -14,11 +14,12 @@ export const getParametersForDomainFn: Record<string, (setup: InitialSetup) => P
'1634886255': getPropagateParametersArbitrum,
'6450786': getPropagateParametersBnb,
'6778479': getPropagateParametersGnosis,
'1818848877': getPropagateParametersLinea,

// Testnet
'1734439522': getPropagateParametersArbitrum,
'2053862260': getPropagateParametersZkSync,
'1668247156': getPropagateParametersConsensys,
'1668247156': getPropagateParametersLinea,
};

export async function populateParametersForDomains(
Expand Down
1 change: 1 addition & 0 deletions src/utils/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import type {providers, Wallet} from 'ethers';
export type InitialSetup = {
provider: providers.JsonRpcProvider | providers.WebSocketProvider;
arbProvider: providers.JsonRpcProvider | providers.WebSocketProvider;
lineaProvider: providers.JsonRpcProvider | providers.WebSocketProvider;
txSigner: Wallet;
bundleSigner: Wallet;
environment: 'staging' | 'testnet' | 'mainnet';
Expand Down
Loading