diff --git a/packages/bridge-ui-v2/scripts/vite-plugins/generateBridgeConfig.ts b/packages/bridge-ui-v2/scripts/vite-plugins/generateBridgeConfig.ts
index 20aa3d56eaf..e730268fef9 100644
--- a/packages/bridge-ui-v2/scripts/vite-plugins/generateBridgeConfig.ts
+++ b/packages/bridge-ui-v2/scripts/vite-plugins/generateBridgeConfig.ts
@@ -62,8 +62,6 @@ export function generateBridgeConfig() {
await sourceFile.saveSync();
logger.info(`Generated config file`);
- await sourceFile.saveSync();
-
const formatted = await formatSourceFile(tsFilePath);
// Write the formatted code back to the file
diff --git a/packages/bridge-ui-v2/src/components/Bridge/Amount.svelte b/packages/bridge-ui-v2/src/components/Bridge/Amount.svelte
index aedfe96c918..a916991301d 100644
--- a/packages/bridge-ui-v2/src/components/Bridge/Amount.svelte
+++ b/packages/bridge-ui-v2/src/components/Bridge/Amount.svelte
@@ -59,6 +59,7 @@
}
export async function validateAmount(token = $selectedToken, fee = $processingFee) {
+ if (!$network?.id) return;
$validatingAmount = true; // During validation, we disable all the actions
$insufficientBalance = false;
$insufficientAllowance = false;
diff --git a/packages/bridge-ui-v2/src/components/Bridge/NFTBridge.svelte b/packages/bridge-ui-v2/src/components/Bridge/NFTBridge.svelte
index 69cdf11d565..318de2b7018 100644
--- a/packages/bridge-ui-v2/src/components/Bridge/NFTBridge.svelte
+++ b/packages/bridge-ui-v2/src/components/Bridge/NFTBridge.svelte
@@ -24,7 +24,13 @@
import RecipientStep from './NFTBridgeSteps/RecipientStep.svelte';
import ReviewStep from './NFTBridgeSteps/ReviewStep.svelte';
import type { ProcessingFee } from './ProcessingFee';
- import { activeBridge, destNetwork as destinationChain, selectedNFTs, selectedToken } from './state';
+ import {
+ activeBridge,
+ destNetwork as destinationChain,
+ recipientAddress,
+ selectedNFTs,
+ selectedToken,
+ } from './state';
import { NFTSteps } from './types';
let amountComponent: Amount;
@@ -35,6 +41,8 @@
let contractAddress: Address | string = '';
let bridgingStatus: 'pending' | 'done' = 'pending';
+ let hasEnoughEth: boolean = false;
+
function onNetworkChange(newNetwork: Network, oldNetwork: Network) {
updateForm();
activeStep = NFTSteps.IMPORT;
@@ -89,12 +97,13 @@
if (amountComponent) amountComponent.clearAmount();
if (processingFeeComponent) processingFeeComponent.resetProcessingFee();
if (addressInputComponent) addressInputComponent.clearAddress();
- if (recipientStepComponent) recipientStepComponent.reset();
// Update balance after bridging
if (amountComponent) amountComponent.updateBalance();
if (nftIdInputComponent) nftIdInputComponent.clearIds();
+ $recipientAddress = $account?.address || null;
+ // $processingFee = 0n;
$selectedToken = ETHToken;
importMethod === null;
scanned = false;
@@ -202,6 +211,8 @@
onDestroy(() => {
resetForm();
});
+
+ $: activeStep === NFTSteps.IMPORT && resetForm();
@@ -228,10 +239,10 @@
bind:validating={validatingImport} />
{:else if activeStep === NFTSteps.REVIEW}
-
+
{:else if activeStep === NFTSteps.RECIPIENT}
-
+
{:else if activeStep === NFTSteps.CONFIRM}
diff --git a/packages/bridge-ui-v2/src/components/Bridge/NFTBridgeSteps/RecipientStep.svelte b/packages/bridge-ui-v2/src/components/Bridge/NFTBridgeSteps/RecipientStep.svelte
index 5c5f36b2206..c1bdd11be78 100644
--- a/packages/bridge-ui-v2/src/components/Bridge/NFTBridgeSteps/RecipientStep.svelte
+++ b/packages/bridge-ui-v2/src/components/Bridge/NFTBridgeSteps/RecipientStep.svelte
@@ -7,8 +7,8 @@
export let hasEnoughEth: boolean = false;
export const reset = () => {
- recipientComponent.clearRecipient();
- processingFeeComponent.resetProcessingFee();
+ recipientComponent?.clearRecipient();
+ processingFeeComponent?.resetProcessingFee();
};
diff --git a/packages/bridge-ui-v2/src/components/Bridge/NFTBridgeSteps/ReviewStep.svelte b/packages/bridge-ui-v2/src/components/Bridge/NFTBridgeSteps/ReviewStep.svelte
index 0360ed51a7a..9cf7b17b9cf 100644
--- a/packages/bridge-ui-v2/src/components/Bridge/NFTBridgeSteps/ReviewStep.svelte
+++ b/packages/bridge-ui-v2/src/components/Bridge/NFTBridgeSteps/ReviewStep.svelte
@@ -14,7 +14,7 @@
let recipientComponent: Recipient;
let processingFeeComponent: ProcessingFee;
- let hasEnoughEth: boolean;
+ export let hasEnoughEth: boolean;
const dispatch = createEventDispatcher();
diff --git a/packages/bridge-ui-v2/src/components/Icon/Icon.svelte b/packages/bridge-ui-v2/src/components/Icon/Icon.svelte
index ae20a854b8f..8276772077c 100644
--- a/packages/bridge-ui-v2/src/components/Icon/Icon.svelte
+++ b/packages/bridge-ui-v2/src/components/Icon/Icon.svelte
@@ -153,7 +153,7 @@
class={fillClass}
fill-rule="evenodd"
clip-rule="evenodd"
- d="M14.0003 0.916748C6.7746 0.916748 0.916992 6.77436 0.916992 14.0001C0.916992 21.2258 6.7746 27.0834 14.0003 27.0834C21.2261 27.0834 27.0837 21.2258 27.0837 14.0001C27.0837 6.77436 21.2261 0.916748 14.0003 0.916748ZM15.0067 9.97444C15.0067 9.41862 14.5562 8.96803 14.0003 8.96803C13.4445 8.96803 12.9939 9.41862 12.9939 9.97444V12.9937H9.97468C9.41886 12.9937 8.96828 13.4443 8.96828 14.0001C8.96828 14.5559 9.41886 15.0065 9.97468 15.0065H12.9939V18.0257C12.9939 18.5815 13.4445 19.0321 14.0003 19.0321C14.5562 19.0321 15.0067 18.5815 15.0067 18.0257V15.0065H18.026C18.5818 15.0065 19.0324 14.5559 19.0324 14.0001C19.0324 13.4443 18.5818 12.9937 18.026 12.9937H15.0067V9.97444Z" />
+ d="m10,1.98C5.57,1.98,1.98,5.57,1.98,10s3.59,8.02,8.02,8.02,8.02-3.59,8.02-8.02S14.43,1.98,10,1.98Zm.62,5.55c0-.34-.28-.62-.62-.62s-.62.28-.62.62v1.85h-1.85c-.34,0-.62.28-.62.62s.28.62.62.62h1.85v1.85c0,.34.28.62.62.62s.62-.28.62-.62v-1.85h1.85c.34,0,.62-.28.62-.62s-.28-.62-.62-.62h-1.85v-1.85Z" />
{:else if type === 'circle'}
{:else if type === 'arrow-right'}
diff --git a/packages/bridge-ui-v2/src/components/NFTs/NFTCards/NFTCardGrid.svelte b/packages/bridge-ui-v2/src/components/NFTs/NFTCards/NFTCardGrid.svelte
index f868b56e7de..ff5ce8885f1 100644
--- a/packages/bridge-ui-v2/src/components/NFTs/NFTCards/NFTCardGrid.svelte
+++ b/packages/bridge-ui-v2/src/components/NFTs/NFTCards/NFTCardGrid.svelte
@@ -40,7 +40,7 @@
{nftsGroup[0].type}
-
+
{#each nftsGroup as nft}
{@const collectionAddress = nft.addresses[chainId]}
{#if collectionAddress === undefined}
diff --git a/packages/bridge-ui-v2/src/libs/bridge/checkBalanceToBridge.ts b/packages/bridge-ui-v2/src/libs/bridge/checkBalanceToBridge.ts
index 0356106b31d..f5efd98ef73 100644
--- a/packages/bridge-ui-v2/src/libs/bridge/checkBalanceToBridge.ts
+++ b/packages/bridge-ui-v2/src/libs/bridge/checkBalanceToBridge.ts
@@ -10,200 +10,169 @@ import { getConnectedWallet } from '$libs/util/getConnectedWallet';
import { bridges } from './bridges';
import { ERC20Bridge } from './ERC20Bridge';
import { estimateCostOfBridging } from './estimateCostOfBridging';
-import type { BridgeArgs, ERC20BridgeArgs, ERC1155BridgeArgs, ETHBridgeArgs } from './types';
+import type { ERC20BridgeArgs, ERC1155BridgeArgs, ETHBridgeArgs } from './types';
-type HasEnoughBalanceToBridgeArgs = {
+type CheckBalanceToBridgeCommonArgs = {
to: Address;
- token: Token;
amount: bigint | bigint[];
- balance: bigint;
srcChainId: number;
destChainId: number;
fee?: bigint;
+};
+
+type CheckBalanceToBridgeTokenArgs = CheckBalanceToBridgeCommonArgs & {
+ token: Token;
+ balance: bigint;
tokenIds?: bigint[];
};
-export async function checkBalanceToBridge({
- to,
- token,
- amount,
- balance,
- srcChainId,
- destChainId,
- fee,
- tokenIds,
-}: HasEnoughBalanceToBridgeArgs) {
- const wallet = await getConnectedWallet();
- let estimatedCost = BigInt(0);
+export async function checkBalanceToBridge(args: CheckBalanceToBridgeTokenArgs) {
+ switch (args.token.type) {
+ case TokenType.ETH:
+ return handleEthBridge({ ...args });
+ case TokenType.ERC1155:
+ return handleErc1155Bridge({ ...args });
+ case TokenType.ERC20:
+ return handleErc20Bridge({ ...args });
+ default:
+ throw new Error('Unsupported token type');
+ }
+}
- if (token.type === TokenType.ETH) {
- const { bridgeAddress } = routingContractsMap[srcChainId][destChainId];
- const bridgeArgs = {
- to,
- amount,
- wallet,
- srcChainId,
- destChainId,
- fee,
- } as BridgeArgs;
-
- const _amount = amount as bigint;
-
- try {
- estimatedCost = await estimateCostOfBridging(bridges.ETH, {
- ...bridgeArgs,
- bridgeAddress,
- } as ETHBridgeArgs);
- } catch (err) {
- console.error(err);
-
- // TODO: rely on error code, or instance, instead of string matching
- if (`${err}`.includes('transaction exceeds the balance')) {
- throw new InsufficientBalanceError('you do not have enough balance to bridge ETH', { cause: err });
- }
-
- if (`${err}`.includes('reverted with the following reason: Failed')) {
- throw new RevertedWithFailedError('BLL token doing its thing', { cause: err });
- }
- }
- if (estimatedCost > balance - _amount) {
- throw new InsufficientBalanceError('you do not have enough balance to bridge');
- }
- } else if (token.type === TokenType.ERC1155) {
- const bridgeArgs = {
- to,
- amounts: [amount],
+async function handleEthBridge(args: CheckBalanceToBridgeCommonArgs): Promise {
+ const { bridgeAddress } = routingContractsMap[args.srcChainId][args.destChainId];
+ const _amount = args.amount as bigint;
+
+ const wallet = await getConnectedWallet();
+ let estimatedCost;
+ try {
+ estimatedCost = await estimateCostOfBridging(bridges.ETH, {
+ ...args,
wallet,
- srcChainId,
- destChainId,
- fee,
- tokenIds,
- } as ERC1155BridgeArgs;
-
- const { erc1155VaultAddress } = routingContractsMap[srcChainId][destChainId];
- const tokenAddress = await getAddress({ token, srcChainId, destChainId });
-
- // since we are briding a token, we need the ETH balance of the wallet
- balance = await getPublicClient().getBalance(wallet.account);
- const tokenBalance = token.balance;
- const _amount = [amount] as bigint[];
-
- if (
- !tokenAddress ||
- !tokenBalance ||
- tokenAddress === zeroAddress ||
- balance === BigInt(0) ||
- tokenBalance < _amount[0] //TODO: only single token for now
- )
- throw new InsufficientBalanceError('you do not have enough balance to bridge');
-
- // const bridge = bridges[token.type];
-
- // if (bridge instanceof ERC1155Bridge) {
- // // Let's check if the vault is approved for all ERC1155
- // const isApprovedForAll = await bridge.isApprovedForAll({
- // tokenAddress,
- // owner: wallet.account.address,
- // spenderAddress: erc1155VaultAddress,
- // tokenId: 0n,
- // chainId: srcChainId,
- // });
-
- // if (!isApprovedForAll) {
- // throw new NotApprovedError(`Not approved for all for token`);
- // }
- // }
-
- const isTokenAlreadyDeployed = await isDeployedCrossChain({
- token,
- srcChainId,
- destChainId,
- });
+ bridgeAddress,
+ } as ETHBridgeArgs);
+ } catch (err) {
+ console.error(err);
- try {
- estimatedCost = await estimateCostOfBridging(bridges.ERC1155, {
- ...bridgeArgs,
- token: tokenAddress,
- tokenVaultAddress: erc1155VaultAddress,
- isTokenAlreadyDeployed,
- } as BridgeArgs);
- } catch (err) {
- console.error(err);
- // if (err instanceof ContractFunctionExecutionError) {
- // throw err;
- // }
- // TODO: catch/rethrow other errors
+ if (`${err}`.includes('transaction exceeds the balance')) {
+ throw new InsufficientBalanceError('you do not have enough balance to bridge ETH', { cause: err });
}
- // no need to deduct the amount we want to bridge from the balance as we pay in ETH
- if (estimatedCost > balance) {
- throw new InsufficientBalanceError('you do not have enough balance to bridge');
+
+ if (`${err}`.includes('reverted with the following reason: Failed')) {
+ throw new RevertedWithFailedError('BLL token doing its thing', { cause: err });
}
- } else {
- const { erc20VaultAddress } = routingContractsMap[srcChainId][destChainId];
- const tokenAddress = await getAddress({ token, srcChainId, destChainId });
- const _amount = amount as bigint;
+ }
+ if (!estimatedCost) throw new Error('estimated cost is undefined');
+ const balance = await fetchBalance({ address: wallet.account.address, chainId: args.srcChainId });
- // since we are briding a token, we need the ETH balance of the wallet
- balance = await getPublicClient().getBalance(wallet.account);
+ if (estimatedCost > balance.value - _amount) {
+ throw new InsufficientBalanceError('you do not have enough balance to bridge');
+ }
+}
- const tokenBalance = await fetchBalance({
- address: wallet.account.address,
- token: tokenAddress,
- chainId: srcChainId,
- });
+async function handleErc1155Bridge(args: CheckBalanceToBridgeTokenArgs) {
+ const { token, srcChainId, destChainId, amount } = args;
- if (!tokenAddress || tokenAddress === zeroAddress || balance === BigInt(0) || tokenBalance.value < _amount)
- throw new InsufficientBalanceError('you do not have enough balance to bridge');
+ const { erc1155VaultAddress } = routingContractsMap[srcChainId][destChainId];
+ const tokenAddress = await getAddress({ token, srcChainId, destChainId });
+ const wallet = await getConnectedWallet();
+ const balance = await getPublicClient().getBalance(wallet.account);
+ const tokenBalance = token.balance;
+ const _amount = [amount] as bigint[];
+
+ if (
+ !tokenAddress ||
+ !tokenBalance ||
+ tokenAddress === zeroAddress ||
+ balance === BigInt(0) ||
+ tokenBalance < _amount[0] //TODO: only single token for now
+ )
+ throw new InsufficientBalanceError('you do not have enough balance to bridge');
+
+ const isTokenAlreadyDeployed = await isDeployedCrossChain({
+ token,
+ srcChainId,
+ destChainId,
+ });
+
+ let estimatedCost;
+ try {
+ estimatedCost = await estimateCostOfBridging(bridges.ERC1155, {
+ ...args,
+ wallet,
+ amounts: _amount,
+ token: tokenAddress,
+ tokenVaultAddress: erc1155VaultAddress,
+ isTokenAlreadyDeployed,
+ } as ERC1155BridgeArgs);
+ } catch (err) {
+ console.error(err);
+ // TODO: catch/rethrow other errors
+ }
- const bridge = bridges[token.type];
+ if (!estimatedCost) throw new Error('estimated cost is undefined');
+ if (estimatedCost && estimatedCost > balance) {
+ throw new InsufficientBalanceError('you do not have enough balance to bridge');
+ }
+}
- if (bridge instanceof ERC20Bridge) {
- // Let's check the allowance to actually bridge the ERC20 token
- const allowance = await bridge.requireAllowance({
- amount: _amount,
- tokenAddress,
- ownerAddress: wallet.account.address,
- spenderAddress: erc20VaultAddress,
- });
+async function handleErc20Bridge(args: CheckBalanceToBridgeTokenArgs): Promise {
+ const { token, srcChainId, destChainId, amount, balance } = args;
+ const wallet = await getConnectedWallet();
+ const { erc20VaultAddress } = routingContractsMap[srcChainId][destChainId];
+ const tokenAddress = await getAddress({ token, srcChainId, destChainId });
+ const _amount = amount as bigint;
+
+ const tokenBalance = await fetchBalance({
+ address: wallet.account.address,
+ token: tokenAddress,
+ chainId: args.srcChainId,
+ });
+
+ if (!tokenAddress || tokenAddress === zeroAddress || args.balance === BigInt(0) || tokenBalance.value < _amount)
+ throw new InsufficientBalanceError('you do not have enough balance to bridge');
+
+ const bridge = bridges[args.token.type];
+
+ if (bridge instanceof ERC20Bridge) {
+ // Let's check the allowance to actually bridge the ERC20 token
+ const allowance = await bridge.requireAllowance({
+ amount: _amount,
+ tokenAddress,
+ ownerAddress: wallet.account.address,
+ spenderAddress: erc20VaultAddress,
+ });
- if (allowance) {
- throw new InsufficientAllowanceError(`insufficient allowance for the amount ${_amount}`);
- }
+ if (allowance) {
+ throw new InsufficientAllowanceError(`insufficient allowance for the amount ${_amount}`);
}
+ }
- const isTokenAlreadyDeployed = await isDeployedCrossChain({
- token,
- srcChainId,
- destChainId,
- });
+ const isTokenAlreadyDeployed = await isDeployedCrossChain({
+ token,
+ srcChainId,
+ destChainId,
+ });
- try {
- const bridgeArgs = {
- to,
- amount,
- wallet,
- srcChainId,
- destChainId,
- fee,
- } as BridgeArgs;
-
- estimatedCost = await estimateCostOfBridging(bridges.ERC20, {
- ...bridgeArgs,
- token: tokenAddress,
- tokenVaultAddress: erc20VaultAddress,
- isTokenAlreadyDeployed,
- } as ERC20BridgeArgs);
- } catch (err) {
- console.error(err);
-
- // TODO: same here. Error code or instance would be better
- if (`${err}`.includes('insufficient allowance')) {
- throw new InsufficientAllowanceError(`insufficient allowance for the amount ${amount}`, { cause: err });
- }
- }
- // no need to deduct the amount we want to bridge from the balance as we pay in ETH
- if (estimatedCost > balance) {
- throw new InsufficientBalanceError('you do not have enough balance to bridge');
+ let estimatedCost;
+ try {
+ estimatedCost = await estimateCostOfBridging(bridges.ERC20, {
+ ...args,
+ wallet,
+ token: tokenAddress,
+ tokenVaultAddress: erc20VaultAddress,
+ isTokenAlreadyDeployed,
+ } as ERC20BridgeArgs);
+ } catch (err) {
+ console.error(err);
+
+ // TODO: same here. Error code or instance would be better
+ if (`${err}`.includes('insufficient allowance')) {
+ throw new InsufficientAllowanceError(`insufficient allowance for the amount ${_amount}`, { cause: err });
}
}
+ if (!estimatedCost) throw new Error('estimated cost is undefined');
+ if (estimatedCost > balance) {
+ throw new InsufficientBalanceError('you do not have enough balance to bridge');
+ }
}
diff --git a/packages/protocol/contracts/L1/IProver.sol b/packages/protocol/contracts/L1/IProver.sol
index 436f8665463..81ae6ed576c 100644
--- a/packages/protocol/contracts/L1/IProver.sol
+++ b/packages/protocol/contracts/L1/IProver.sol
@@ -9,7 +9,7 @@ pragma solidity ^0.8.20;
import { TaikoData } from "./TaikoData.sol";
/// @title IProver Interface
-/// @notice Defines the function that handle prover assignment.
+/// @notice Defines the function that handles prover assignment.
interface IProver {
/// @notice Assigns a prover to a specific block or reverts if this prover
/// is not available.
diff --git a/packages/protocol/contracts/actors_privileges_deployments.md b/packages/protocol/contracts/actors_privileges_deployments.md
index 18f954d3199..32c71d78d16 100644
--- a/packages/protocol/contracts/actors_privileges_deployments.md
+++ b/packages/protocol/contracts/actors_privileges_deployments.md
@@ -3,7 +3,7 @@
## Introduction
This document provides a comprehensive overview of the actors involved in the smart contract system and outlines their respective privileges and roles.
-Different `roles` (we call them `domain`) are granted via `AddressManager` contract's `setAddress()` function. Idea is very similar Optimism's `AddressManager` except that we use the `chainId + domainName` as the key for a given address. We need so, because for bridging purposes, the destination chain's bridge address needs to be inculded signaling the messgae hash is tamper-proof.
+Different `roles` (we call them `domain`) are granted via `AddressManager` contract's `setAddress()` function. Idea is very similar Optimism's `AddressManager` except that we use the `chainId + domainName` as the key for a given address. We need so, because for bridging purposes, the destination chain's bridge address needs to be included signaling the message hash is tamper-proof.
Every contract which needs some role-based authentication, needs to inherit from `AddressResolver` contract, which will serve as a 'middleman/lookup' by querying the `AddressManager` per given address is allowed to act on behalf of that domain or not.
## 1. Domains (≈role per chainId)
@@ -26,9 +26,9 @@ In the context of the smart contract system, various actors play distinct roles.
### 1.3 ERCXXX_Vault
-- **Role**: This role is givne to respective token vault contracts (ERC20, ERC721, ERC1155)
+- **Role**: This role is given to respective token vault contracts (ERC20, ERC721, ERC1155)
- **Privileges**:
- - Part of token briding, the possibility to burn and mint the respective standard tokens (no autotelic minting/burning)
+ - Part of token bridging, the possibility to burn and mint the respective standard tokens (no autotelic minting/burning)
## 2. Different access modifiers
diff --git a/packages/protocol/contracts/bridge/README.md b/packages/protocol/contracts/bridge/README.md
index f13f4c0836e..faee8fbc5b3 100644
--- a/packages/protocol/contracts/bridge/README.md
+++ b/packages/protocol/contracts/bridge/README.md
@@ -40,7 +40,7 @@ If user wants to bridge ether, he/she will initiate a bridge transaction with `s
address refundAddress;
// value to invoke on the destination chain, for ERC20 transfers.
uint256 value;
- // Processing fee for the relayer. Zero if user will process themself.
+ // Processing fee for the relayer. Zero if user will process themselves.
uint256 fee;
// gasLimit to invoke on the destination chain, for ERC20 transfers.
uint256 gasLimit;
diff --git a/packages/protocol/contracts/common/ICrossChainSync.sol b/packages/protocol/contracts/common/ICrossChainSync.sol
index e0a4150a5d4..b075e7531e2 100644
--- a/packages/protocol/contracts/common/ICrossChainSync.sol
+++ b/packages/protocol/contracts/common/ICrossChainSync.sol
@@ -14,7 +14,7 @@ pragma solidity ^0.8.20;
/// both chains remain consistent and can be cross-referenced with integrity.
interface ICrossChainSync {
/// @dev Emitted when a block has been synced across chains.
- /// @param srcHeight The height (block id_ that was synced.
+ /// @param srcHeight The height (block id) that was synced.
/// @param blockHash The hash of the synced block.
/// @param signalRoot The root hash representing cross-chain signals.
event CrossChainSynced(
diff --git a/packages/protocol/docs/iprover.md b/packages/protocol/docs/iprover.md
index 8168dba3377..a78067dea2d 100644
--- a/packages/protocol/docs/iprover.md
+++ b/packages/protocol/docs/iprover.md
@@ -57,4 +57,4 @@ The proposer and prover interact off-chain to agree on the price and perform the
3. Proposer creates the `ProverAssignment` struct data (obviously together with the `input` and `txList`) and submits the `proposeBlock()` with the necessary parameters.
-During `proposeBlock()` transaction, the `onBlockAssigned()` hook which will evaluate the validity of the prover signature, and if that one is correct then executest he transfer of `10 DAI`.
+During `proposeBlock()` transaction, the `onBlockAssigned()` hook which will evaluate the validity of the prover signature, and if that one is correct then execute he transfer of `10 DAI`.
diff --git a/packages/website/pages/docs/concepts/proposing.mdx b/packages/website/pages/docs/concepts/proposing.mdx
index c798df602a7..8f6f28033f5 100644
--- a/packages/website/pages/docs/concepts/proposing.mdx
+++ b/packages/website/pages/docs/concepts/proposing.mdx
@@ -18,7 +18,7 @@ The Ethereum yellow paper has well-defined rules to compute the state transition
2.1 Asserts that the length of the transaction list does not exceed a predefined maximum (MAX_TX_LIST_BYTES), ensuring that the list is within the limits.
- 2.2 The transaction list is (RLP) decoded into a list of transactions (txList). If the bytes are not decodeable it will result in an empty block.
+ 2.2 The transaction list is (RLP) decoded into a list of transactions (txList). If the bytes are not decodable it will result in an empty block.
2.3 The amount of gas required to include transactions is available. (If a transaction cannot fit into a block, it is simply excluded from it, but the block is still valid with other transactions.)
diff --git a/packages/website/pages/docs/concepts/taiko-nodes.mdx b/packages/website/pages/docs/concepts/taiko-nodes.mdx
index a965eefdfdb..a3b44d8d935 100644
--- a/packages/website/pages/docs/concepts/taiko-nodes.mdx
+++ b/packages/website/pages/docs/concepts/taiko-nodes.mdx
@@ -83,7 +83,7 @@ To propose a block, the `proposer`:
1. Fetches the pending transactions from the L2 execution engine through the `txpool_content` RPC method.
2. If there are too many pending transactions in the L2 execution engine, splits them into several smaller `txLists`. This is because the Taiko protocol restricts the max size of each proposed `txList`.
-3. Proposes all splitted `txLists` by sending `TaikoL1.proposeBlock` transactions.
+3. Proposes all split `txLists` by sending `TaikoL1.proposeBlock` transactions.
## Process of proving a block
diff --git a/packages/website/pages/docs/guides/receive-tokens.mdx b/packages/website/pages/docs/guides/receive-tokens.mdx
index 3b3b81d9ee7..26f37231ac1 100644
--- a/packages/website/pages/docs/guides/receive-tokens.mdx
+++ b/packages/website/pages/docs/guides/receive-tokens.mdx
@@ -27,6 +27,6 @@ This guide will help you receive testnet tokens. You can see all the deployed to
TTKOj has been distributed to all proposers and provers from the alpha-1 and alpha-2 testnets and you can see those transactions [here](https://sepolia.etherscan.io/address/0x7532Cd98ED13c0C164dBC7a92D872955c8C99bD3). You can see the script used [here](https://github.com/taikoxyz/operations). TTKOj will be distributed to alpha-3/alpha-4 participants very soon :)
- Otherwise, you can obtain TTKOj by successfully [proposing blocks](/docs/guides/enable-a-proposer) (the protocol rewards you in TTKOj) or from [Swap](https://swap.jolnir.taiko.xyz).
+ Otherwise, you can obtain TTKOj by successfully [proposing blocks](/docs/guides/enable-a-proposer) (the protocol rewards you in TTKOj) or from [Swap](https://swap-v3.jolnir.taiko.xyz).
diff --git a/packages/website/pages/docs/guides/run-a-sepolia-node.mdx b/packages/website/pages/docs/guides/run-a-sepolia-node.mdx
index a48d25376ed..3729a887fa2 100644
--- a/packages/website/pages/docs/guides/run-a-sepolia-node.mdx
+++ b/packages/website/pages/docs/guides/run-a-sepolia-node.mdx
@@ -9,7 +9,7 @@ This guide will help you get a Sepolia archive node up and running.
- [Docker](https://docs.docker.com/engine/install/) is installed and **running**.
- [Git](https://github.com/git-guides/install-git/) is installed.
- If using Windows, you should install [Git BASH](https://gitforwindows.org/) or [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) to use as your terminal.
-- As of `2023-06-21` a full archive node sync takes **326 GB** with geth + lighthouse. Consult the hardware requirements of the execution + consensus clients you are using.
+- As of `2023-11-09` a full archive node sync takes **870 GB** with geth + lighthouse. Consult the hardware requirements of the execution + consensus clients you are using.
## Steps
diff --git a/packages/website/pages/docs/guides/setup-your-wallet.mdx b/packages/website/pages/docs/guides/setup-your-wallet.mdx
index 1043125b671..761624106d3 100644
--- a/packages/website/pages/docs/guides/setup-your-wallet.mdx
+++ b/packages/website/pages/docs/guides/setup-your-wallet.mdx
@@ -33,7 +33,7 @@ This guide helps you connect your wallet to Taiko.
### The add chain buttons did not work
-Try to manually add the network to your wallet using the [RPC configuration](/docs/reference/rpc-configuration), or by using [chainlist.org](https://chainlist.org) (make sure to check the box for "Include testnets").
+Try to manually add the network to your wallet using the [RPC configuration](/docs/reference/rpc-configuration), or by using [chainlist.org](https://chainlist.org/?search=taiko&testnets=true) (make sure to check the box for "Include testnets").
### Transactions are stuck in "pending"
diff --git a/packages/website/pages/docs/manuals/integration-manual.mdx b/packages/website/pages/docs/manuals/integration-manual.mdx
index 244dc01112b..d49f6712ae0 100644
--- a/packages/website/pages/docs/manuals/integration-manual.mdx
+++ b/packages/website/pages/docs/manuals/integration-manual.mdx
@@ -1,6 +1,6 @@
# Integration manual
-This manual will help you successfully integration into Taiko.
+This manual will help you successfully integrate into Taiko.
Taiko is an Ethereum-equivalent network, meaning integrating with Taiko should be as simple as using our RPC instead of an Ethereum L1 RPC.
diff --git a/packages/website/pages/docs/reference/contract-documentation/L1/IProver.md b/packages/website/pages/docs/reference/contract-documentation/L1/IProver.md
index bd28f077bd1..b257dcad68c 100644
--- a/packages/website/pages/docs/reference/contract-documentation/L1/IProver.md
+++ b/packages/website/pages/docs/reference/contract-documentation/L1/IProver.md
@@ -4,7 +4,7 @@ title: IProver
## IProver
-Defines the function that handle prover assignment.
+Defines the function that handles prover assignment.
### onBlockAssigned
diff --git a/packages/website/pages/docs/reference/contract-documentation/L1/ProofVerifier.md b/packages/website/pages/docs/reference/contract-documentation/L1/ProofVerifier.md
index cf4d064d71d..6efeb63c676 100644
--- a/packages/website/pages/docs/reference/contract-documentation/L1/ProofVerifier.md
+++ b/packages/website/pages/docs/reference/contract-documentation/L1/ProofVerifier.md
@@ -4,7 +4,7 @@ title: ProofVerifier
## ProofVerifier
-See the documentation in {IProofVerifier}.
+See the documentation in [IProofVerifier](https://taiko.xyz/docs/reference/contract-documentation/L1/IProofVerifier).
### L1_INVALID_PROOF
@@ -45,8 +45,6 @@ should revert if the verification fails.
---
-## title: ProxiedProofVerifier
-
## ProxiedProofVerifier
Proxied version of the parent contract.
diff --git a/packages/website/pages/docs/reference/contract-documentation/L1/TaikoL1.md b/packages/website/pages/docs/reference/contract-documentation/L1/TaikoL1.md
index d5d94b68358..be1a3bad55e 100644
--- a/packages/website/pages/docs/reference/contract-documentation/L1/TaikoL1.md
+++ b/packages/website/pages/docs/reference/contract-documentation/L1/TaikoL1.md
@@ -20,8 +20,6 @@ Gets the configuration of the TaikoL1 contract.
---
-## title: ProxiedTaikoL1
-
## ProxiedTaikoL1
Proxied version of the parent contract.
diff --git a/packages/website/pages/docs/reference/contract-documentation/L1/TaikoToken.md b/packages/website/pages/docs/reference/contract-documentation/L1/TaikoToken.md
index 188f04bed15..2eac162ffcc 100644
--- a/packages/website/pages/docs/reference/contract-documentation/L1/TaikoToken.md
+++ b/packages/website/pages/docs/reference/contract-documentation/L1/TaikoToken.md
@@ -162,8 +162,6 @@ function _burn(address from, uint256 amount) internal
---
-## title: ProxiedTaikoToken
-
## ProxiedTaikoToken
Proxied version of the TaikoToken contract.
diff --git a/packages/website/pages/docs/reference/contract-documentation/L2/TaikoL2.md b/packages/website/pages/docs/reference/contract-documentation/L2/TaikoL2.md
index 45904f8c188..e1099ebc9a5 100644
--- a/packages/website/pages/docs/reference/contract-documentation/L2/TaikoL2.md
+++ b/packages/website/pages/docs/reference/contract-documentation/L2/TaikoL2.md
@@ -265,8 +265,6 @@ Retrieves the current EIP-1559 configuration details.
---
-## title: ProxiedTaikoL2
-
## ProxiedTaikoL2
Proxied version of the TaikoL2 contract.
diff --git a/packages/website/pages/docs/reference/contract-documentation/bridge/Bridge.md b/packages/website/pages/docs/reference/contract-documentation/bridge/Bridge.md
index f11de0489a6..b12ff185ed8 100644
--- a/packages/website/pages/docs/reference/contract-documentation/bridge/Bridge.md
+++ b/packages/website/pages/docs/reference/contract-documentation/bridge/Bridge.md
@@ -4,7 +4,7 @@ title: Bridge
## Bridge
-See the documentation for {IBridge}.
+See the documentation for [IBridge](https://taiko.xyz/docs/reference/contract-documentation/bridge/IBridge#ibridge).
_The code hash for the same address on L1 and L2 may be different._
@@ -299,14 +299,12 @@ Tells if we need to check real proof or it is a test.
#### Return Values
-| Name | Type | Description |
-| ---- | ---- | ------------------------------------------------------------ |
-| [0] | bool | Returns true if this contract, or can be false if mock/test. |
+| Name | Type | Description |
+| ---- | ---- | -------------------------------------------------------------------------------------------------- |
+| [0] | bool | Returns true if real proof checking is required, otherwise false if it is a mock/test environment. |
---
-## title: ProxiedBridge
-
## ProxiedBridge
Proxied version of the parent contract.
diff --git a/packages/website/pages/docs/reference/contract-documentation/bridge/EtherVault.md b/packages/website/pages/docs/reference/contract-documentation/bridge/EtherVault.md
index b9656c2b248..2f3fc3d2cbe 100644
--- a/packages/website/pages/docs/reference/contract-documentation/bridge/EtherVault.md
+++ b/packages/website/pages/docs/reference/contract-documentation/bridge/EtherVault.md
@@ -114,8 +114,6 @@ Gets the authorized status of an address.
---
-## title: ProxiedEtherVault
-
## ProxiedEtherVault
Proxied version of the parent contract.
diff --git a/packages/website/pages/docs/reference/contract-documentation/bridge/IBridge.md b/packages/website/pages/docs/reference/contract-documentation/bridge/IBridge.md
index 38c9675639f..fb9ef9f8977 100644
--- a/packages/website/pages/docs/reference/contract-documentation/bridge/IBridge.md
+++ b/packages/website/pages/docs/reference/contract-documentation/bridge/IBridge.md
@@ -14,11 +14,9 @@ function onMessageRecalled(struct IBridge.Message message) external payable
---
-## title: IBridge
-
## IBridge
-The bridge used in conjunction with the {ISignalService}.
+The bridge used in conjunction with the [ISignalService](https://taiko.xyz/docs/reference/contract-documentation/signal/ISignalService#isignalservice).
_Ether is held by Bridges on L1 and by the EtherVault on L2,
not by token vaults._
diff --git a/packages/website/pages/docs/reference/contract-documentation/common/AddressManager.md b/packages/website/pages/docs/reference/contract-documentation/common/AddressManager.md
index 7e660fe124a..08ee0cd1da1 100644
--- a/packages/website/pages/docs/reference/contract-documentation/common/AddressManager.md
+++ b/packages/website/pages/docs/reference/contract-documentation/common/AddressManager.md
@@ -46,8 +46,6 @@ Gets the address mapped to a specific domain-name pair.
---
-## title: AddressManager
-
## AddressManager
Manages a mapping of domain-name pairs to Ethereum addresses.
@@ -111,8 +109,6 @@ Gets the address mapped to a specific domain-name pair.
---
-## title: ProxiedAddressManager
-
## ProxiedAddressManager
Proxied version of the parent contract.
diff --git a/packages/website/pages/docs/reference/contract-documentation/common/ICrossChainSync.md b/packages/website/pages/docs/reference/contract-documentation/common/ICrossChainSync.md
index 70da0e6618d..3c51650b8a3 100644
--- a/packages/website/pages/docs/reference/contract-documentation/common/ICrossChainSync.md
+++ b/packages/website/pages/docs/reference/contract-documentation/common/ICrossChainSync.md
@@ -22,7 +22,7 @@ _Emitted when a block has been synced across chains._
| Name | Type | Description |
| ---------- | ------- | ----------------------------------------------- |
-| srcHeight | uint64 | The height (block id\_ that was synced. |
+| srcHeight | uint64 | The height (block id) that was synced. |
| blockHash | bytes32 | The hash of the synced block. |
| signalRoot | bytes32 | The root hash representing cross-chain signals. |
diff --git a/packages/website/pages/docs/reference/contract-documentation/signal/SignalService.md b/packages/website/pages/docs/reference/contract-documentation/signal/SignalService.md
index 97b3a0b285c..597cc84a817 100644
--- a/packages/website/pages/docs/reference/contract-documentation/signal/SignalService.md
+++ b/packages/website/pages/docs/reference/contract-documentation/signal/SignalService.md
@@ -4,7 +4,7 @@ title: SignalService
## SignalService
-See the documentation in {ISignalService} for more details.
+See the documentation in [ISignalService](https://taiko.xyz/docs/reference/contract-documentation/signal/ISignalService#isignalservice) for more details.
### SignalProof
@@ -147,8 +147,6 @@ Get the storage slot of the signal.
---
-## title: ProxiedSignalService
-
## ProxiedSignalService
Proxied version of the parent contract.
diff --git a/packages/website/pages/docs/reference/contract-documentation/tokenvault/BridgedERC1155.md b/packages/website/pages/docs/reference/contract-documentation/tokenvault/BridgedERC1155.md
index df8c7cd80fc..b5b85879a16 100644
--- a/packages/website/pages/docs/reference/contract-documentation/tokenvault/BridgedERC1155.md
+++ b/packages/website/pages/docs/reference/contract-documentation/tokenvault/BridgedERC1155.md
@@ -126,8 +126,6 @@ Gets the concatenated name of the bridged token.
---
-## title: ProxiedBridgedERC1155
-
## ProxiedBridgedERC1155
Proxied version of the parent contract.
diff --git a/packages/website/pages/docs/reference/contract-documentation/tokenvault/BridgedERC20.md b/packages/website/pages/docs/reference/contract-documentation/tokenvault/BridgedERC20.md
index 7d29261e3e1..424a7939bac 100644
--- a/packages/website/pages/docs/reference/contract-documentation/tokenvault/BridgedERC20.md
+++ b/packages/website/pages/docs/reference/contract-documentation/tokenvault/BridgedERC20.md
@@ -169,8 +169,6 @@ Gets the canonical token's address and chain ID.
---
-## title: ProxiedBridgedERC20
-
## ProxiedBridgedERC20
Proxied version of the parent contract.
diff --git a/packages/website/pages/docs/reference/contract-documentation/tokenvault/BridgedERC721.md b/packages/website/pages/docs/reference/contract-documentation/tokenvault/BridgedERC721.md
index 887e430ba62..f9898592108 100644
--- a/packages/website/pages/docs/reference/contract-documentation/tokenvault/BridgedERC721.md
+++ b/packages/website/pages/docs/reference/contract-documentation/tokenvault/BridgedERC721.md
@@ -151,8 +151,6 @@ Returns an empty token URI.
---
-## title: ProxiedBridgedERC721
-
## ProxiedBridgedERC721
Proxied version of the parent contract.
diff --git a/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC1155Vault.md b/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC1155Vault.md
index bbdd54f106c..6dc68e9204c 100644
--- a/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC1155Vault.md
+++ b/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC1155Vault.md
@@ -23,8 +23,6 @@ function symbol() external view returns (string)
---
-## title: ERC1155Vault
-
## ERC1155Vault
This vault holds all ERC1155 tokens that users have deposited.
@@ -105,8 +103,6 @@ _See {IERC165-supportsInterface}._
---
-## title: ProxiedERC1155Vault
-
## ProxiedERC1155Vault
Proxied version of the parent contract.
diff --git a/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC20Vault.md b/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC20Vault.md
index f89e3127045..c555f532b96 100644
--- a/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC20Vault.md
+++ b/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC20Vault.md
@@ -216,8 +216,6 @@ Checks if the contract supports the given interface.
---
-## title: ProxiedERC20Vault
-
## ProxiedERC20Vault
Proxied version of the parent contract.
diff --git a/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC721Vault.md b/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC721Vault.md
index 3cdf9c1fcd3..ffba08b0e1e 100644
--- a/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC721Vault.md
+++ b/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC721Vault.md
@@ -86,8 +86,6 @@ This function call must use less than 30 000 gas.\_
---
-## title: ProxiedERC721Vault
-
## ProxiedERC721Vault
Proxied version of the parent contract.
diff --git a/packages/website/pages/docs/reference/prover-market-page.mdx b/packages/website/pages/docs/reference/prover-market-page.mdx
index d6b48e899c5..9e9582cb100 100644
--- a/packages/website/pages/docs/reference/prover-market-page.mdx
+++ b/packages/website/pages/docs/reference/prover-market-page.mdx
@@ -27,7 +27,7 @@ You can edit the page by clicking [here](https://github.com/taikoxyz/taiko-mono/
| Cryptic Node | http://taiko.crypticnode.xyz:9876 | 10 wei |
| dannyletra | http://158.220.89.198:9876 | 10 wei |
| AlexIT | http://62.183.54.219:9876 | 10 wei |
-| ZK Nodes | http://45.144.28.60:9876 | 10 wei |
+| ZK Nodes | http://45.144.28.60:9876 | 10 wei |
| RexCloud | http://185.173.38.221:9876 | 10 wei |
| RZF Node | http://45.142.214.132:9876 | 10 wei |
| Vitek73 | http://65.21.14.11:9876 | 10 wei |
@@ -41,4 +41,36 @@ You can edit the page by clicking [here](https://github.com/taikoxyz/taiko-mono/
| Jayjay | http://65.108.2.41:9876 | 10 wei |
| Mahamb Nodes | http://taiko-a5-prover.mahamb.xyz:9876 | 10 wei |
| Baka Node | http://38.242.226.172:9876 | 10 wei |
-| Arthas Node | http://65.108.215.87:9876 | 10 wei |
\ No newline at end of file
+| Arthas Node | http://65.108.215.87:9876 | 10 wei |
+| Karandash33 | http://88.198.47.154:9876 | 10 wei |
+| Eustace | http://158.220.98.12:9876 | 10 wei |
+| Solodan | http://65.108.89.50:9876 | 10 wei |
+| Oats | http://164.92.65.55:9876 | 10 wei |
+| Gojo Node | http://167.86.127.224:9876 | 13 wei |
+| SandNode | http://161.97.79.184:9876 | 10 wei |
+| Ohmar Node | http://109.123.244.224:9876 | 10 wei |
+| StarNode | http://158.220.97.162:9876 | 10 wei |
+| AlphaNode | http://75.119.135.63:9876 | 10 wei |
+| itrocket | http://taiko-prover.itrocket.net:9876 | 10 wei |
+| 79anvi | http://213.133.100.172:9876 | 100 wei |
+| cyberG | http://65.108.108.157:9876 | 10 wei |
+| web34ever | http://135.181.138.161:9876 | 10 wei |
+| DON KAMOTE | http://mikedg-taiko.donkamote.xyz:9876 | 10 wei |
+| Arthas Node | http://65.108.215.87:9876 | 10 wei |
+| RV Node | http://195.201.195.153:9876 | 10 wei |
+| Gavryushev | http://94.41.17.212:9876 | 10 wei |
+| Nokogirisrv | http://51.81.208.203:9876 | 10 wei |
+| Mantis Node | http://116.203.82.243:9876 | 10 wei |
+| Blanker | http://88.198.62.61:9876 | 8 wei |
+| 0xAN | http://51.91.70.90:9876 | 1 wei |
+| bigfish (cn) | http://122.96.253.43:9876 | 10 wei |
+| rudolfhe55 | http://148.251.185.41:9876 | 10 wei |
+| Koro Node | http://167.86.120.246:9876 | 10 wei |
+| vansanten | http://188.40.76.110:9876 | 10 wei |
+| parallacs | http://136.243.69.100:9876/ | 10 wei |
+| i-korob | http://23.88.1.40:9876 | 10 wei |
+| Pompon Node | http://207.180.236.151:9876 | 10 wei |
+| Alphaz Node | http://62.72.16.50:9876 | 10 wei |
+| Skalabs Node | http://91.121.7.193:9876 | 10 wei |
+| reromanov | http://188.40.94.92:9876 | 10 wei |
+| 0xsuresh | http://66.94.105.38:9876 | 10 wei |
\ No newline at end of file
diff --git a/packages/website/pages/docs/resources/learning-resources.mdx b/packages/website/pages/docs/resources/learning-resources.mdx
index 43656d128b0..feff1a642d0 100644
--- a/packages/website/pages/docs/resources/learning-resources.mdx
+++ b/packages/website/pages/docs/resources/learning-resources.mdx
@@ -5,3 +5,5 @@ This page contains some useful learning resources.
## Dapp building
- Build a dapp in one click: [dapp-slaps starter template](https://github.com/d1onys1us/dapp-slaps)
+
+- Leveraging Particle Network for MPC-TSS EOA & ERC-4337 AA interaction: [Taiko Jolnir Particle WaaS boilerplate](https://gist.github.com/TABASCOatw/9fe60ec2a68f712a807d5c0dff71638e)