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

feat: remove all references to L1Network #453

Merged
merged 54 commits into from
Apr 18, 2024
Merged
Show file tree
Hide file tree
Changes from 47 commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
4ce32a7
add parent chain property
spsjvc Apr 15, 2024
90bdd4a
replace partner with parent chain id
spsjvc Apr 15, 2024
19696c7
fix
spsjvc Apr 15, 2024
7324182
format
spsjvc Apr 15, 2024
98f3dac
make retryableLifetimeSeconds optional
spsjvc Apr 15, 2024
4d20f80
remove explorerUrl
spsjvc Apr 15, 2024
41627d3
rm import
spsjvc Apr 15, 2024
4515489
remove nitro genesis l1 block
spsjvc Apr 15, 2024
b385dc3
remove deposit timeout
spsjvc Apr 15, 2024
416ba67
revert stuff
spsjvc Apr 16, 2024
100d7bf
revert more stuff
spsjvc Apr 16, 2024
54308bc
oops
spsjvc Apr 16, 2024
8ec5b12
use constants
spsjvc Apr 16, 2024
710eb39
all the things
spsjvc Apr 16, 2024
5d819d5
rm nitroGenesisBlock
spsjvc Apr 16, 2024
a5f7b1e
more stuff
spsjvc Apr 16, 2024
a40c701
reduce diff
spsjvc Apr 16, 2024
fe6989b
unused import
spsjvc Apr 17, 2024
c92086f
clean up
spsjvc Apr 17, 2024
f37e6c7
clean up
spsjvc Apr 17, 2024
820a2b6
Merge branch 'v4' into feat-networks-change
spsjvc Apr 17, 2024
07607c2
remove partnerChainIDs
spsjvc Apr 17, 2024
7f87db2
add tests for getChildrenForNetwork and export
spsjvc Apr 17, 2024
8bb58a5
fix
spsjvc Apr 17, 2024
fc76db8
add tests for isParentChain
spsjvc Apr 17, 2024
142aa26
rename
spsjvc Apr 17, 2024
408eeae
fix
spsjvc Apr 17, 2024
dd6489f
blah
spsjvc Apr 17, 2024
5c768ee
Merge branch 'v4' into feat-networks-change-2
spsjvc Apr 17, 2024
7fd7085
kill getL1Network
spsjvc Apr 17, 2024
0201908
remove parent chain references
spsjvc Apr 17, 2024
2a7c913
try
spsjvc Apr 17, 2024
2b77f09
rm blockTime
spsjvc Apr 17, 2024
c356de7
rm addNetwork
spsjvc Apr 17, 2024
4c4f3fa
sigh
spsjvc Apr 17, 2024
75348df
add getMulticall
spsjvc Apr 17, 2024
3e08de6
remove more l1Network stuff
spsjvc Apr 17, 2024
ed308fb
remove more stuff
spsjvc Apr 17, 2024
48ec04c
rm more
spsjvc Apr 17, 2024
88da0a4
more
spsjvc Apr 17, 2024
5817677
better docs
spsjvc Apr 17, 2024
42b910d
clean up tests
spsjvc Apr 17, 2024
73924be
comment
spsjvc Apr 17, 2024
410e55e
refactor: add function to get multicall address
spsjvc Apr 17, 2024
f8891e6
Merge branch 'feat-networks-change-2.1' into feat-networks-change-3
spsjvc Apr 17, 2024
e723915
will this work
spsjvc Apr 17, 2024
88569d4
Merge branch 'v4' into feat-networks-change-3
spsjvc Apr 17, 2024
2a64f99
fix
spsjvc Apr 18, 2024
be1f4f2
cleanups
spsjvc Apr 18, 2024
bd5bce7
lol
spsjvc Apr 18, 2024
cfe11da
type safe backwards compat
spsjvc Apr 18, 2024
c8b9a44
fix lint
spsjvc Apr 18, 2024
e5bc74c
fix
spsjvc Apr 18, 2024
2f080da
move type
spsjvc Apr 18, 2024
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
3 changes: 0 additions & 3 deletions scripts/genNetwork.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ dotenv.config()
import { execSync } from 'child_process'
import * as fs from 'fs'
import { L2Network } from '../src'
import { ARB_MINIMUM_BLOCK_TIME_IN_SECONDS } from '../src/lib/dataEntities/constants'
import { IERC20Bridge__factory } from '../src/lib/abi/factories/IERC20Bridge__factory'
import { ethers } from 'ethers'

Expand Down Expand Up @@ -41,12 +40,10 @@ async function patchNetworks(
l2Provider: ethers.providers.Provider | undefined
) {
l2Network.parentChainId = (l2Network as any).partnerChainID
l2Network.blockTime = ARB_MINIMUM_BLOCK_TIME_IN_SECONDS

// native token for l3
if (l3Network && l2Provider) {
l3Network.parentChainId = (l3Network as any).partnerChainID
l3Network.blockTime = ARB_MINIMUM_BLOCK_TIME_IN_SECONDS

try {
l3Network.nativeToken = await IERC20Bridge__factory.connect(
Expand Down
30 changes: 5 additions & 25 deletions scripts/instantiate_bridge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,7 @@ import { Wallet } from '@ethersproject/wallet'
import dotenv from 'dotenv'
import args from './getCLargs'
import { EthBridger, InboxTools, Erc20Bridger } from '../src'
import {
l1Networks,
l2Networks,
L1Network,
L2Network,
} from '../src/lib/dataEntities/networks'
import { L2Network, getL2Network } from '../src/lib/dataEntities/networks'
import { Signer } from 'ethers'
import { AdminErc20Bridger } from '../src/lib/assetBridger/erc20Bridger'
import { isDefined } from '../src/lib/utils/lib'
Expand All @@ -39,19 +34,18 @@ const ethKey = process.env['ETH_KEY'] as string

const defaultNetworkId = 421614

export const instantiateBridge = (
export const instantiateBridge = async (
l1PkParam?: string,
l2PkParam?: string
): {
l1Network: L1Network
): Promise<{
l2Network: L2Network
l1Signer: Signer
l2Signer: Signer
erc20Bridger: Erc20Bridger
ethBridger: EthBridger
adminErc20Bridger: AdminErc20Bridger
inboxTools: InboxTools
} => {
}> => {
if (!l1PkParam && !ethKey) {
throw new Error('need ARB_KEY var')
}
Expand All @@ -68,21 +62,8 @@ export const instantiateBridge = (

l2NetworkID = defaultNetworkId
}
const isL1 = isDefined(l1Networks[l2NetworkID])
const isL2 = isDefined(l2Networks[l2NetworkID])
if (!isL1 && !isL2) {
throw new Error(`Unrecognized network ID: ${l2NetworkID}`)
}
if (!isL2) {
throw new Error(`Tests must specify an L2 network ID: ${l2NetworkID}`)
}

const l2Network = l2Networks[l2NetworkID]
const l1Network = l1Networks[l2Network.parentChainId]

if (!l1Network) {
throw new Error(`Unrecognised parent chain id: ${l2Network.parentChainId}`)
}
const l2Network = await getL2Network(l2NetworkID)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got rid of l1Network, and validate the l2Network by calling getL2Network


const l1Rpc = (() => {
if (l2NetworkID === 42161) return process.env['MAINNET_RPC'] as string
Expand Down Expand Up @@ -138,7 +119,6 @@ export const instantiateBridge = (
const inboxTools = new InboxTools(l1Signer, l2Network)

return {
l1Network,
l2Network,
l1Signer,
l2Signer,
Expand Down
49 changes: 6 additions & 43 deletions scripts/testSetup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,7 @@ import dotenv from 'dotenv'

import { EthBridger, InboxTools, Erc20Bridger } from '../src'
import {
L1Network,
ArbitrumNetwork,
getL1Network,
getArbitrumNetwork,
addCustomNetwork,
} from '../src/lib/dataEntities/networks'
Expand Down Expand Up @@ -72,7 +70,6 @@ export const getSigner = (provider: JsonRpcProvider, key?: string) => {
}

export const testSetup = async (): Promise<{
parentChain: L1Network | ArbitrumNetwork
childChain: ArbitrumNetwork
parentSigner: Signer
childSigner: Signer
Expand All @@ -95,53 +92,21 @@ export const testSetup = async (): Promise<{
const parentSigner = seed.connect(ethProvider)
const childSigner = seed.connect(arbProvider)

let setParentChain: L1Network | ArbitrumNetwork,
setChildChain: ArbitrumNetwork
let setChildChain: ArbitrumNetwork

try {
const l1Network = isTestingOrbitChains
? await getArbitrumNetwork(parentDeployer)
: await getL1Network(parentDeployer)
const l2Network = await getArbitrumNetwork(childDeployer)
setParentChain = l1Network
setChildChain = l2Network
} catch (err) {
// the networks havent been added yet

// check if theres an existing network available
const localNetworkFile = getLocalNetworksFromFile()

const { l1Network: parentChain, l2Network: childChain } = localNetworkFile

if (isTestingOrbitChains) {
const _parentChain = parentChain as ArbitrumNetwork
const ethLocal: L1Network = {
blockTime: 10,
chainID: _parentChain.parentChainId,
isCustom: true,
name: 'EthLocal',
isArbitrum: false,
}

addCustomNetwork({
customL1Network: ethLocal,
customArbitrumNetwork: _parentChain,
})

addCustomNetwork({
customArbitrumNetwork: childChain,
})

setParentChain = parentChain
setChildChain = childChain
} else {
addCustomNetwork({
customL1Network: parentChain as L1Network,
customArbitrumNetwork: childChain,
})

setParentChain = parentChain
setChildChain = childChain
}
const { l2Network: childChain } = localNetworkFile

addCustomNetwork(childChain)
setChildChain = childChain
}

const erc20Bridger = new Erc20Bridger(setChildChain)
Expand All @@ -160,7 +125,6 @@ export const testSetup = async (): Promise<{
childSigner,
parentProvider: ethProvider,
childProvider: arbProvider,
parentChain: setParentChain,
childChain: setChildChain,
erc20Bridger,
adminErc20Bridger,
Expand All @@ -172,7 +136,6 @@ export const testSetup = async (): Promise<{
}

export function getLocalNetworksFromFile(): {
l1Network: L1Network | ArbitrumNetwork
l2Network: ArbitrumNetwork
} {
const pathToLocalNetworkFile = path.join(__dirname, '..', 'localNetwork.json')
Expand Down
4 changes: 0 additions & 4 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,7 @@ export { ParentToChildMessageGasEstimator } from './lib/message/ParentToChildMes
export { argSerializerConstructor } from './lib/utils/byte_serialize_params'
export { CallInput, MultiCaller } from './lib/utils/multicall'
export {
L1Networks,
L2Networks,
L1Network,
L2Network,
getL1Network,
getL2Network,
addCustomNetwork,
addDefaultLocalNetwork,
Expand Down
17 changes: 5 additions & 12 deletions src/lib/assetBridger/assetBridger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,7 @@ import { constants } from 'ethers'
import { ParentContractTransaction } from '../message/ParentTransaction'
import { ChildContractTransaction } from '../message/ChildTransaction'

import {
L1Network,
ArbitrumNetwork,
getParentForNetwork,
} from '../dataEntities/networks'
import { ArbitrumNetwork } from '../dataEntities/networks'
import {
SignerOrProvider,
SignerProviderUtils,
Expand All @@ -35,11 +31,6 @@ import {
* Base for bridging assets from parent-to-child and back
*/
export abstract class AssetBridger<DepositParams, WithdrawParams> {
/**
* Parent chain for the given Arbitrum chain, can be an L1 or an L2
*/
public readonly parentChain: L1Network | ArbitrumNetwork

/**
* In case of a chain that uses ETH as its native/gas token, this is either `undefined` or the zero address
*
Expand All @@ -48,7 +39,6 @@ export abstract class AssetBridger<DepositParams, WithdrawParams> {
public readonly nativeToken?: string

public constructor(public readonly childChain: ArbitrumNetwork) {
this.parentChain = getParentForNetwork(childChain)
this.nativeToken = childChain.nativeToken
}

Expand All @@ -57,7 +47,10 @@ export abstract class AssetBridger<DepositParams, WithdrawParams> {
* @param sop
*/
protected async checkParentChain(sop: SignerOrProvider): Promise<void> {
await SignerProviderUtils.checkNetworkMatches(sop, this.parentChain.chainID)
await SignerProviderUtils.checkNetworkMatches(
sop,
this.childChain.parentChainId
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed the parent chain reference, but we only need the chain id anyway

)
}

/**
Expand Down
Loading
Loading