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

chore!: enable multiple L1 nodes to be used #11945

Merged
merged 43 commits into from
Feb 26, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
1140b31
fix: support multiple L1 node URLs
spypsy Feb 12, 2025
b2faca5
leftovers
spypsy Feb 12, 2025
16146ca
more fixes
spypsy Feb 12, 2025
4f79daf
Merge branch 'master' into spy/multi-rpc-urls
spypsy Feb 12, 2025
286954a
fix --rpc-url usage
spypsy Feb 12, 2025
f0e23a1
Merge branch 'master' into spy/multi-rpc-urls
spypsy Feb 12, 2025
0fad63b
fix imports + tests
spypsy Feb 12, 2025
09ea2b1
undo test change
spypsy Feb 12, 2025
d6334bb
update --l1-rpc-urls
spypsy Feb 12, 2025
dd1e0ef
fix imports
spypsy Feb 13, 2025
6d45015
another import
spypsy Feb 13, 2025
4fb917e
externalHosts
spypsy Feb 13, 2025
d129c99
Merge branch 'master' into spy/multi-rpc-urls
spypsy Feb 20, 2025
4836dd9
post-merge fixes
spypsy Feb 20, 2025
bbacaaf
more post-merge fixes
spypsy Feb 20, 2025
4a91b45
fix e2e test
spypsy Feb 20, 2025
8714406
Merge branch 'master' into spy/multi-rpc-urls
spypsy Feb 21, 2025
29a1311
Merge branch 'master' into spy/multi-rpc-urls
spypsy Feb 24, 2025
24ccc68
Merge branch 'master' into spy/multi-rpc-urls
spypsy Feb 24, 2025
da0e3cb
PR Fixes
spypsy Feb 24, 2025
842ae5d
update docs
spypsy Feb 24, 2025
685d0c5
update docs
spypsy Feb 24, 2025
12cc436
Merge branch 'master' into spy/multi-rpc-urls
spypsy Feb 24, 2025
688014a
fix typings
spypsy Feb 25, 2025
aa5fa6c
Merge branch 'master' into spy/multi-rpc-urls
spypsy Feb 25, 2025
8e79c39
fix wallet client types
spypsy Feb 25, 2025
e438592
Merge branch 'master' into spy/multi-rpc-urls
spypsy Feb 25, 2025
eca0f24
use multi-urls in cheatcode
spypsy Feb 25, 2025
889caad
Merge branch 'master' into spy/multi-rpc-urls
spypsy Feb 25, 2025
fe3d7d3
fix helper spartan script
spypsy Feb 25, 2025
c489937
fix e2e cheat_codes
spypsy Feb 25, 2025
85c007f
Merge branch 'master' into spy/multi-rpc-urls
spypsy Feb 25, 2025
1547a62
rm unused import
spypsy Feb 25, 2025
67c81a9
PR Fixes
spypsy Feb 26, 2025
d58918e
Merge branch 'master' into spy/multi-rpc-urls
spypsy Feb 26, 2025
fc382de
deploy l1 contracts fixes
spypsy Feb 26, 2025
bb6975c
fix type imports
spypsy Feb 26, 2025
9405407
update gh secret names
spypsy Feb 26, 2025
36c9e22
break, don't return
spypsy Feb 26, 2025
b111170
no need to retry get-chain-id
spypsy Feb 26, 2025
da839b8
Merge branch 'master' into spy/multi-rpc-urls
spypsy Feb 26, 2025
4be11a4
Merge branch 'master' into spy/multi-rpc-urls
spypsy Feb 26, 2025
3bd421e
merge fix
spypsy Feb 26, 2025
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
8 changes: 4 additions & 4 deletions yarn-project/aztec.js/src/api/cheat_codes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ export class CheatCodes {
public rollup: RollupCheatCodes,
) {}

static async create(rpcUrl: string, pxe: PXE): Promise<CheatCodes> {
const ethCheatCodes = new EthCheatCodes(rpcUrl);
static async create(rpcUrls: string[], pxe: PXE): Promise<CheatCodes> {
const ethCheatCodes = new EthCheatCodes(rpcUrls);
const aztecCheatCodes = new AztecCheatCodes(pxe);
const rollupCheatCodes = new RollupCheatCodes(
ethCheatCodes,
Expand All @@ -28,8 +28,8 @@ export class CheatCodes {
return new CheatCodes(ethCheatCodes, aztecCheatCodes, rollupCheatCodes);
}

static createRollup(rpcUrl: string, addresses: Pick<L1ContractAddresses, 'rollupAddress'>): RollupCheatCodes {
const ethCheatCodes = new EthCheatCodes(rpcUrl);
static createRollup(rpcUrls: string[], addresses: Pick<L1ContractAddresses, 'rollupAddress'>): RollupCheatCodes {
const ethCheatCodes = new EthCheatCodes(rpcUrls);
return new RollupCheatCodes(ethCheatCodes, addresses);
}
}
23 changes: 9 additions & 14 deletions yarn-project/aztec.js/src/api/ethereum/cheat_codes.ts
Original file line number Diff line number Diff line change
@@ -1,32 +1,27 @@
import type { ViemPublicClient } from '@aztec/ethereum';
import { EthCheatCodes } from '@aztec/ethereum/eth-cheatcodes';
import { type L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
import { EthAddress } from '@aztec/foundation/eth-address';
import { createLogger } from '@aztec/foundation/log';
import { RollupAbi, RollupStorage } from '@aztec/l1-artifacts';

import {
type GetContractReturnType,
type Hex,
type PublicClient,
type WalletClient,
createWalletClient,
getContract,
http,
publicActions,
} from 'viem';
import { type GetContractReturnType, type Hex, createPublicClient, fallback, getContract, http } from 'viem';
import { foundry } from 'viem/chains';

export { EthCheatCodes };

/** Cheat codes for the L1 rollup contract. */
export class RollupCheatCodes {
private client: WalletClient & PublicClient;
private rollup: GetContractReturnType<typeof RollupAbi, WalletClient>;
private client: ViemPublicClient;
private rollup: GetContractReturnType<typeof RollupAbi, ViemPublicClient>;

private logger = createLogger('aztecjs:cheat_codes');

constructor(private ethCheatCodes: EthCheatCodes, addresses: Pick<L1ContractAddresses, 'rollupAddress'>) {
this.client = createWalletClient({ chain: foundry, transport: http(ethCheatCodes.rpcUrl) }).extend(publicActions);
this.client = createPublicClient({
chain: foundry,
transport: fallback(ethCheatCodes.rpcUrls.map(url => http(url))),
});
this.rollup = getContract({
abi: RollupAbi,
address: addresses.rollupAddress.toString(),
Expand Down Expand Up @@ -152,7 +147,7 @@ export class RollupCheatCodes {
* @param action - The action to execute
*/
public async asOwner(
action: (owner: Hex, rollup: GetContractReturnType<typeof RollupAbi, WalletClient>) => Promise<void>,
action: (owner: Hex, rollup: GetContractReturnType<typeof RollupAbi, ViemPublicClient>) => Promise<void>,
) {
const owner = await this.rollup.read.owner();
await this.ethCheatCodes.startImpersonating(owner);
Expand Down
2 changes: 1 addition & 1 deletion yarn-project/aztec/src/sandbox.ts
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ export async function createSandbox(config: Partial<SandboxConfig> = {}, userLog
transport: fallback([httpViemTransport(l1RpcUrl)]) as any,
});

watcher = new AnvilTestWatcher(new EthCheatCodes(l1RpcUrl), l1ContractAddresses.rollupAddress, publicClient);
watcher = new AnvilTestWatcher(new EthCheatCodes([l1RpcUrl]), l1ContractAddresses.rollupAddress, publicClient);
watcher.setIsSandbox(true);
await watcher.start();
}
Expand Down
2 changes: 1 addition & 1 deletion yarn-project/cli/src/cmds/l1/advance_epoch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export async function advanceEpoch(l1RpcUrls: string[], rpcUrl: string, log: Log
const pxe = createPXEClient(rpcUrl, {}, makeFetch([], true));
const rollupAddress = await pxe.getNodeInfo().then(i => i.l1ContractAddresses.rollupAddress);

const cheat = CheatCodes.createRollup(l1RpcUrls[0], { rollupAddress });
const cheat = CheatCodes.createRollup(l1RpcUrls, { rollupAddress });

await cheat.advanceToNextEpoch();
log(`Warped time to advance to next epoch`);
Expand Down
2 changes: 1 addition & 1 deletion yarn-project/cli/src/cmds/l1/assume_proven_through.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export async function assumeProvenThrough(
const rollupAddress = await pxe.getNodeInfo().then(i => i.l1ContractAddresses.rollupAddress);
const blockNumber = blockNumberOrLatest ?? (await pxe.getBlockNumber());

const ethCheatCode = new EthCheatCodes(l1RpcUrls[0]);
const ethCheatCode = new EthCheatCodes(l1RpcUrls);
const rollupCheatCodes = new RollupCheatCodes(ethCheatCode, { rollupAddress });

await rollupCheatCodes.markAsProven(blockNumber);
Expand Down
4 changes: 2 additions & 2 deletions yarn-project/cli/src/cmds/l1/update_l1_validators.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ export async function addL1Validator({
await publicClient.waitForTransactionReceipt({ hash: txHash });
if (isAnvilTestChain(chainId)) {
dualLog(`Funding validator on L1`);
const cheatCodes = new EthCheatCodes(rpcUrls[0], debugLogger);
const cheatCodes = new EthCheatCodes(rpcUrls, debugLogger);
await cheatCodes.setBalance(validatorAddress, 10n ** 20n);
} else {
const balance = await publicClient.getBalance({ address: validatorAddress.toString() });
Expand Down Expand Up @@ -160,7 +160,7 @@ export async function fastForwardEpochs({
client: publicClient,
});

const cheatCodes = new EthCheatCodes(rpcUrls[0], debugLogger);
const cheatCodes = new EthCheatCodes(rpcUrls, debugLogger);
const currentSlot = await rollup.read.getCurrentSlot();
const l2SlotsInEpoch = await rollup.read.getEpochDuration();
const timestamp = await rollup.read.getTimestampForSlot([currentSlot + l2SlotsInEpoch * numEpochs]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ describe('L1Publisher integration', () => {
{},
));

ethCheatCodes = new EthCheatCodesWithState(config.l1RpcUrls[0]);
ethCheatCodes = new EthCheatCodesWithState(config.l1RpcUrls);

rollupAddress = getAddress(l1ContractAddresses.rollupAddress.toString());
outboxAddress = getAddress(l1ContractAddresses.outboxAddress.toString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ export class CrossChainMessagingTest {
this.aztecNode = aztecNode;
this.pxe = pxe;
this.aztecNodeConfig = aztecNodeConfig;
this.cheatcodes = await CheatCodes.create(this.aztecNodeConfig.l1RpcUrl, this.pxe);
this.cheatcodes = await CheatCodes.create(this.aztecNodeConfig.l1RpcUrls, this.pxe);
}

snapshot = <T>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ describe('e2e_cross_chain_messaging token_bridge_private', () => {
client: crossChainTestHarness.walletClient,
});

cheatCodes = await CheatCodes.create(t.aztecNodeConfig.l1RpcUrl, t.pxe);
cheatCodes = await CheatCodes.create(t.aztecNodeConfig.l1RpcUrls, t.pxe);
}, 300_000);

afterEach(async () => {
Expand Down
6 changes: 3 additions & 3 deletions yarn-project/end-to-end/src/e2e_fees/fees_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ export class FeesTest {
this.pxe = pxe;
this.aztecNode = aztecNode;
this.gasSettings = GasSettings.default({ maxFeesPerGas: (await this.aztecNode.getCurrentBaseFees()).mul(2) });
this.cheatCodes = await CheatCodes.create(aztecNodeConfig.l1RpcUrls[0], pxe);
this.cheatCodes = await CheatCodes.create(aztecNodeConfig.l1RpcUrls, pxe);
this.wallets = await Promise.all(deployedAccounts.map(a => getSchnorrWallet(pxe, a.address, a.signingKey)));
this.wallets.forEach((w, i) => this.logger.verbose(`Wallet ${i} address: ${w.getAddress()}`));
[this.aliceWallet, this.bobWallet] = this.wallets.slice(0, 2);
Expand Down Expand Up @@ -283,7 +283,7 @@ export class FeesTest {
};

this.getCoinbaseSequencerRewards = async () => {
const { walletClient } = createL1Clients(context.aztecNodeConfig.l1RpcUrl, MNEMONIC);
const { walletClient } = createL1Clients(context.aztecNodeConfig.l1RpcUrls, MNEMONIC);
const rollup = getContract({
address: data.rollupAddress.toString(),
abi: RollupAbi,
Expand All @@ -294,7 +294,7 @@ export class FeesTest {
};

this.getProverFee = async (blockNumber: number) => {
const { walletClient } = createL1Clients(context.aztecNodeConfig.l1RpcUrl, MNEMONIC);
const { walletClient } = createL1Clients(context.aztecNodeConfig.l1RpcUrls, MNEMONIC);
const rollup = getContract({
address: data.rollupAddress.toString(),
abi: RollupAbi,
Expand Down
2 changes: 1 addition & 1 deletion yarn-project/end-to-end/src/e2e_p2p/p2p_network.ts
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ export class P2PNetworkTest {

const slotsInEpoch = await rollup.read.getEpochDuration();
const timestamp = await rollup.read.getTimestampForSlot([slotsInEpoch]);
const cheatCodes = new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls[0]);
const cheatCodes = new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls);
try {
await cheatCodes.warp(Number(timestamp));
} catch (err) {
Expand Down
14 changes: 7 additions & 7 deletions yarn-project/end-to-end/src/fixtures/snapshot_manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ class SnapshotManager implements ISnapshotManager {
await restore(snapshotData, context);

// Save the snapshot data.
const ethCheatCodes = new EthCheatCodesWithState(context.aztecNodeConfig.l1RpcUrls[0]);
const ethCheatCodes = new EthCheatCodesWithState(context.aztecNodeConfig.l1RpcUrls);
const anvilStateFile = `${this.livePath}/anvil.dat`;
await ethCheatCodes.dumpChainState(anvilStateFile);
writeFileSync(`${this.livePath}/${name}.json`, JSON.stringify(snapshotData || {}, resolver));
Expand Down Expand Up @@ -330,7 +330,7 @@ async function setupFromFresh(
aztecNodeConfig.publisherPrivateKey = `0x${publisherPrivKey!.toString('hex')}`;
aztecNodeConfig.validatorPrivateKey = `0x${validatorPrivKey!.toString('hex')}`;

const ethCheatCodes = new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls[0]);
const ethCheatCodes = new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls);

if (opts.l1StartTime) {
await ethCheatCodes.warp(opts.l1StartTime);
Expand Down Expand Up @@ -377,7 +377,7 @@ async function setupFromFresh(
}

const watcher = new AnvilTestWatcher(
new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls[0]),
new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls),
deployL1ContractsValues.l1ContractAddresses.rollupAddress,
deployL1ContractsValues.publicClient,
);
Expand Down Expand Up @@ -422,7 +422,7 @@ async function setupFromFresh(
pxeConfig.dataDirectory = statePath ?? path.join(directoryToCleanup, randomBytes(8).toString('hex'));
const pxe = await createPXEService(aztecNode, pxeConfig);

const cheatCodes = await CheatCodes.create(aztecNodeConfig.l1RpcUrls[0], pxe);
const cheatCodes = await CheatCodes.create(aztecNodeConfig.l1RpcUrls, pxe);

if (statePath) {
writeFileSync(`${statePath}/aztec_node_config.json`, JSON.stringify(aztecNodeConfig, resolver));
Expand Down Expand Up @@ -485,7 +485,7 @@ async function setupFromState(statePath: string, logger: Logger): Promise<Subsys
aztecNodeConfig.l1RpcUrls = [rpcUrl];
// Load anvil state.
const anvilStateFile = `${statePath}/anvil.dat`;
const ethCheatCodes = new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls[0]);
const ethCheatCodes = new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls);
await ethCheatCodes.loadChainState(anvilStateFile);

// TODO: Encapsulate this in a NativeAcvm impl.
Expand All @@ -505,7 +505,7 @@ async function setupFromState(statePath: string, logger: Logger): Promise<Subsys
const { publicClient, walletClient } = createL1Clients(aztecNodeConfig.l1RpcUrls, mnemonicToAccount(MNEMONIC));

const watcher = new AnvilTestWatcher(
new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls[0]),
new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls),
aztecNodeConfig.l1Contracts.rollupAddress,
publicClient,
);
Expand Down Expand Up @@ -539,7 +539,7 @@ async function setupFromState(statePath: string, logger: Logger): Promise<Subsys
pxeConfig.dataDirectory = statePath;
const pxe = await createPXEService(aztecNode, pxeConfig);

const cheatCodes = await CheatCodes.create(aztecNodeConfig.l1RpcUrls[0], pxe);
const cheatCodes = await CheatCodes.create(aztecNodeConfig.l1RpcUrls, pxe);

return {
aztecNodeConfig,
Expand Down
8 changes: 4 additions & 4 deletions yarn-project/end-to-end/src/fixtures/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ async function setupWithRemoteEnvironment(
walletClient,
publicClient,
};
const cheatCodes = await CheatCodes.create(config.l1RpcUrls[0], pxeClient!);
const cheatCodes = await CheatCodes.create(config.l1RpcUrls, pxeClient!);
const teardown = () => Promise.resolve();

await setupCanonicalFeeJuice(pxeClient);
Expand Down Expand Up @@ -390,7 +390,7 @@ export async function setup(
setupMetricsLogger(filename);
}

const ethCheatCodes = new EthCheatCodesWithState(config.l1RpcUrls[0]);
const ethCheatCodes = new EthCheatCodesWithState(config.l1RpcUrls);

if (opts.stateLoad) {
await ethCheatCodes.loadChainState(opts.stateLoad);
Expand Down Expand Up @@ -481,7 +481,7 @@ export async function setup(
const dateProvider = new TestDateProvider();

const watcher = new AnvilTestWatcher(
new EthCheatCodesWithState(config.l1RpcUrls[0]),
new EthCheatCodesWithState(config.l1RpcUrls),
deployL1ContractsValues.l1ContractAddresses.rollupAddress,
deployL1ContractsValues.publicClient,
dateProvider,
Expand Down Expand Up @@ -552,7 +552,7 @@ export async function setup(
);
}

const cheatCodes = await CheatCodes.create(config.l1RpcUrls[0], pxe!);
const cheatCodes = await CheatCodes.create(config.l1RpcUrls, pxe!);

const teardown = async () => {
await pxeTeardown();
Expand Down
2 changes: 1 addition & 1 deletion yarn-project/end-to-end/src/guides/dapp_testing.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ describe('guides/dapp/testing', () => {
await mintTokensToPrivate(token, owner, ownerAddress, mintAmount);

// docs:start:calc-slot
cheats = await CheatCodes.create(ETHEREUM_HOSTS, pxe);
cheats = await CheatCodes.create(ETHEREUM_HOSTS.split(','), pxe);
// The balances mapping is indexed by user address
ownerSlot = await cheats.aztec.computeSlotInMap(TokenContract.storage.balances.slot, ownerAddress);
// docs:end:calc-slot
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,7 @@ import {
deployL1Contract,
retryUntil,
} from '@aztec/aztec.js';
import type {
ExtendedViemWalletClient,
L1ContractAddresses,
ViemPublicClient,
ViemWalletClient,
} from '@aztec/ethereum';
import type { L1ContractAddresses, ViemPublicClient, ViemWalletClient } from '@aztec/ethereum';
import { TestERC20Abi, TestERC20Bytecode, TokenPortalAbi, TokenPortalBytecode } from '@aztec/l1-artifacts';
import { TokenContract } from '@aztec/noir-contracts.js/Token';
import { TokenBridgeContract } from '@aztec/noir-contracts.js/TokenBridge';
Expand Down
2 changes: 1 addition & 1 deletion yarn-project/end-to-end/src/spartan/4epochs.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ describe('token transfer test', () => {
});

it('transfer tokens for 4 epochs', async () => {
const ethCheatCodes = new EthCheatCodesWithState(ETHEREUM_HOSTS);
const ethCheatCodes = new EthCheatCodesWithState([ETHEREUM_HOSTS]);
const l1ContractAddresses = await testWallets.pxe.getNodeInfo().then(n => n.l1ContractAddresses);
// Get 4 epochs
const rollupCheatCodes = new RollupCheatCodes(ethCheatCodes, l1ContractAddresses);
Expand Down
4 changes: 2 additions & 2 deletions yarn-project/end-to-end/src/spartan/gating-passive.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ const debugLogger = createLogger('e2e:spartan-test:gating-passive');
describe('a test that passively observes the network in the presence of network chaos', () => {
jest.setTimeout(60 * 60 * 1000); // 60 minutes

const ETHEREUM_HOSTS = `http://127.0.0.1:${HOST_ETHEREUM_PORT}`;
const ETHEREUM_HOST = `http://127.0.0.1:${HOST_ETHEREUM_PORT}`;
const PXE_URL = `http://127.0.0.1:${HOST_PXE_PORT}`;

afterAll(async () => {
Expand Down Expand Up @@ -83,7 +83,7 @@ describe('a test that passively observes the network in the presence of network
});

const client = await createCompatibleClient(PXE_URL, debugLogger);
const ethCheatCodes = new EthCheatCodesWithState(ETHEREUM_HOSTS);
const ethCheatCodes = new EthCheatCodesWithState([ETHEREUM_HOST]);
const rollupCheatCodes = new RollupCheatCodes(
ethCheatCodes,
await client.getNodeInfo().then(n => n.l1ContractAddresses),
Expand Down
2 changes: 1 addition & 1 deletion yarn-project/end-to-end/src/spartan/reorg.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ describe('reorg test', () => {
});
testWallets = await setupTestWalletsWithTokens(PXE_URL, MINT_AMOUNT, debugLogger);
const rollupCheatCodes = new RollupCheatCodes(
new EthCheatCodesWithState(ETHEREUM_HOSTS),
new EthCheatCodesWithState([ETHEREUM_HOSTS]),
await testWallets.pxe.getNodeInfo().then(n => n.l1ContractAddresses),
);
const { epochDuration, slotDuration } = await rollupCheatCodes.getConfig();
Expand Down
1 change: 1 addition & 0 deletions yarn-project/ethereum/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
},
"scripts": {
"build": "yarn clean && tsc -b",
"b": "tsc -b ./src/try.ts",
"build:dev": "tsc -b --watch",
"clean": "rm -rf ./dest .tsbuildinfo",
"formatting": "run -T prettier --check ./src && run -T eslint ./src",
Expand Down
Loading