From a722387fe10757f6e6eb9439b740c0e9aa7d4a46 Mon Sep 17 00:00:00 2001 From: Korbinian Date: Wed, 22 Nov 2023 14:28:53 +0100 Subject: [PATCH] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 99aa5a0526fdc969ba6b61504fcc395129314abc Author: 0xhwk <85083631+0xhwk@users.noreply.github.com> Date: Wed Nov 22 16:12:44 2023 +0300 docs(website): changed chainlist link to list taiko chains and testnets (#15212) Co-authored-by: dave <13951458+d1onys1us@users.noreply.github.com> commit d634f16731cce47e3b2027fbfcf2ebfd1ebf8d48 Author: TABASCO <84655644+TABASCOatw@users.noreply.github.com> Date: Wed Nov 22 06:12:05 2023 -0700 chore(website): Adds Particle Taiko Onboarding to learning-resources (#15032) commit 989cd2aca32c48ac0b7ab5268deb705ac9e60152 Author: Szymon Wolny <32844693+szymcio32@users.noreply.github.com> Date: Wed Nov 22 10:19:06 2023 +0100 docs(website): update reference docs (#15018) Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> commit a088b3ea461be6758907159ed70cc8f5c88dd1f7 Author: Suresh <39760546+hausuresh@users.noreply.github.com> Date: Wed Nov 22 11:15:09 2023 +0700 Update prover-market-page.mdx (#15239) commit e07ed4d3ad7ece9aeec8e37b7741c1623d29689b Author: Bennett Yong <36499389+bennettyong@users.noreply.github.com> Date: Tue Nov 21 22:36:43 2023 +0800 refactor: prover market page (#15237) commit 462149c19182964f59e3ebcc25c75161fc2ab811 Author: ptchela <80599907+ptchela@users.noreply.github.com> Date: Thu Nov 16 18:14:29 2023 +0100 refactor(bridge-ui-v2): Optimize bridge config generation logic (#15194) commit ddc84478ec96903a94e6d4163aafe091725ee5d9 Author: CodeDragonVN <150457827+CodeDragonVN@users.noreply.github.com> Date: Mon Nov 13 07:55:01 2023 +0000 docs(website,protocol): Correct Documentation Descriptions in ICrossChainSync and IProver (#15189) Co-authored-by: dave <13951458+d1onys1us@users.noreply.github.com> commit 4a7c925adf4681fb83b87aa89d488919ecd233e5 Author: Kenk Date: Mon Nov 13 08:14:18 2023 +0300 feat(website): update prover endpoints (#15195) commit f9ab9f07677c3022b11344ab68d5593c3db04776 Author: Olga Skraglenko <112018952+l2genius@users.noreply.github.com> Date: Sun Nov 12 21:07:34 2023 +0100 docs(website): Update prover-market-page.mdx (#15175) Co-authored-by: dave <13951458+d1onys1us@users.noreply.github.com> commit f5304b2f9cc36bd7c6db6922a544c7213d76cfc6 Author: zEustace <115109332+zEustace@users.noreply.github.com> Date: Sun Nov 12 16:55:56 2023 -0300 docs(website): Update run-a-sepolia-node.mdx (#15160) Co-authored-by: dave <13951458+d1onys1us@users.noreply.github.com> commit 05a9f46eea2b461caf55b33ffc8ce88ae6eadc97 Author: 0xoats <106729827+0xoats@users.noreply.github.com> Date: Mon Nov 13 03:06:03 2023 +0800 docs(website): update prover-market-page (#15163) Co-authored-by: dave <13951458+d1onys1us@users.noreply.github.com> commit 96abcf1fcac1264be3ec5607de5d66f9ce492e9a Author: acebryant08 <141197986+acebryant08@users.noreply.github.com> Date: Mon Nov 13 03:04:48 2023 +0800 docs(website): Update prover-market-page.mdx (#15193) commit a104926af5d59ae67031ff7a7670db795bcd4f24 Author: MariesAmbrosio <94685088+MariesAmbrosio@users.noreply.github.com> Date: Sun Nov 12 14:08:17 2023 +0800 docs(website): Update prover-market-page.mdx (#15178) commit e9b82eaef0b578581dcf4566dd0582cf113ffc8b Author: Korbinian Date: Sun Nov 12 04:01:40 2023 +0300 fix(bridge-ui-v2): processing fee and recipient not sticking (#15125) Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> commit a0b3cbe40603927ce2df946a5c2913ee11825696 Author: Ohmarkely <37029890+Ohmarkely@users.noreply.github.com> Date: Sat Nov 11 01:18:23 2023 +0800 docs(website): Update prover-market-page.mdx (#15150) Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> commit f561a8c88be6dd700c55dad2fe31485f0e2bd423 Author: Canarias96 <139697676+Canarias96@users.noreply.github.com> Date: Fri Nov 10 12:37:51 2023 +0000 chore(website): Update prover-market-page.mdx (#15171) Co-authored-by: dave <13951458+d1onys1us@users.noreply.github.com> Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> commit b05279ceb2738bb2f1a0914ae930314aee32ccdb Author: VadimSMG <106158663+VadimSMG@users.noreply.github.com> Date: Fri Nov 10 14:09:27 2023 +0200 docs(website): Update prover-market-page.mdx (#15168) Co-authored-by: dave <13951458+d1onys1us@users.noreply.github.com> Co-authored-by: David commit 7b994dd61e34a8861d35040aa338601151da21cb Author: Shao Ming Xing Date: Fri Nov 10 20:08:58 2023 +0800 docs(protocol): fix some typos (#15174) Co-authored-by: shaomingxing commit f6b6f5f13794efe4faac0a38e5b4bc21a6adce76 Author: Mickaël Schoentgen Date: Fri Nov 10 08:51:26 2023 +0100 fix(website): Link to the Taiko Swap v3 (#15138) commit 926ac5c4278eed729a8e4881077de4e026365f98 Author: zEustace <115109332+zEustace@users.noreply.github.com> Date: Thu Nov 9 12:47:30 2023 -0300 Update prover-market-page.mdx (#15156) commit 4c5c1b95793cca965c71f6fc842ec3fcc1218c5b Author: SamiAlHassan <150172180+SamiAlHassan@users.noreply.github.com> Date: Thu Nov 9 15:44:10 2023 +0000 fix(docs): Documentation Corrections for Bridge Contract and Integration Manual (#15144) commit 361e98b83f95c8d91a02069fea1629d1f4af7475 Author: shak58 <150069539+shak58@users.noreply.github.com> Date: Thu Nov 9 03:55:42 2023 +0000 Fix typos in RLP decoding and transaction splitting documentation (#15141) Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> commit a062249afd1deae4461fd6d9f3f8c1dc29acb2b5 Author: Dedok1 <87876618+Dedok1@users.noreply.github.com> Date: Thu Nov 9 06:51:46 2023 +0300 Update prover-market-page.mdx (#15149) commit b91cc1a53ea6874bdf9ed5cf86460e691b21f799 Author: iwantanode <87604944+tudorpintea999@users.noreply.github.com> Date: Tue Nov 7 18:53:04 2023 +0200 fix(README.md): minor typos (#15139) Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> commit 201384f0a6f669124765590629b629c642f26410 Author: Crytobike <123457728+cryptobike07@users.noreply.github.com> Date: Wed Nov 8 00:37:11 2023 +0800 Update prover-market-page.mdx (#15118) Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> commit 071ba209f951c81ab86c79d69c7fbfcf216bb81c Author: Ivan Pospelov <107742812+jwelrynewone@users.noreply.github.com> Date: Tue Nov 7 19:31:39 2023 +0300 Update prover-market-page.mdx (#15142) Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> commit f1a47011f0b96d6f392e0e97cde2366254ddb857 Author: oktay Aslan <43525005+flechemano@users.noreply.github.com> Date: Tue Nov 7 19:29:10 2023 +0300 Update prover-market-page.mdx (#15121) Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> commit 0e1d2231396db530134fbaf42a5cd22a17deacc0 Author: mahamb <32960011+mahamb@users.noreply.github.com> Date: Wed Nov 8 00:24:23 2023 +0800 Update prover-market-page.mdx (#15137) Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> commit b4f112185d622891ae71f5da163f9171b07e8030 Author: 0xBaka <107140614+0xBaka@users.noreply.github.com> Date: Tue Nov 7 17:20:04 2023 +0100 docs(website): Update prover-market-page.mdx (#15135) Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> commit 9da9e39b6d56f3ad9fb8d097ec056e4d0d4bb9c8 Author: Arthas <101375007+Azkalatihan@users.noreply.github.com> Date: Tue Nov 7 16:16:20 2023 +0000 docs(website): Update prover-market-page.mdx (#15140) commit e144b75f8af5a719a6e5187ad5e8bb83690c076b Author: MartinKong1990 <104483650+MartinKong1990@users.noreply.github.com> Date: Mon Nov 6 23:19:21 2023 +0800 feat(website): Fix Broken Link for Meta Merge in EcosystemSection.tsx (#15126) --- .../vite-plugins/generateBridgeConfig.ts | 2 - .../src/components/Bridge/Amount.svelte | 1 + .../src/components/Bridge/NFTBridge.svelte | 19 +- .../NFTBridgeSteps/RecipientStep.svelte | 4 +- .../Bridge/NFTBridgeSteps/ReviewStep.svelte | 2 +- .../src/components/Icon/Icon.svelte | 2 +- .../NFTs/NFTCards/NFTCardGrid.svelte | 2 +- .../src/libs/bridge/checkBalanceToBridge.ts | 311 ++++++++---------- packages/protocol/contracts/L1/IProver.sol | 2 +- .../actors_privileges_deployments.md | 6 +- packages/protocol/contracts/bridge/README.md | 2 +- .../contracts/common/ICrossChainSync.sol | 2 +- packages/protocol/docs/iprover.md | 2 +- .../website/pages/docs/concepts/proposing.mdx | 2 +- .../pages/docs/concepts/taiko-nodes.mdx | 2 +- .../pages/docs/guides/receive-tokens.mdx | 2 +- .../pages/docs/guides/run-a-sepolia-node.mdx | 2 +- .../pages/docs/guides/setup-your-wallet.mdx | 2 +- .../pages/docs/manuals/integration-manual.mdx | 2 +- .../contract-documentation/L1/IProver.md | 2 +- .../L1/ProofVerifier.md | 4 +- .../contract-documentation/L1/TaikoL1.md | 2 - .../contract-documentation/L1/TaikoToken.md | 2 - .../contract-documentation/L2/TaikoL2.md | 2 - .../contract-documentation/bridge/Bridge.md | 10 +- .../bridge/EtherVault.md | 2 - .../contract-documentation/bridge/IBridge.md | 4 +- .../common/AddressManager.md | 4 - .../common/ICrossChainSync.md | 2 +- .../signal/SignalService.md | 4 +- .../tokenvault/BridgedERC1155.md | 2 - .../tokenvault/BridgedERC20.md | 2 - .../tokenvault/BridgedERC721.md | 2 - .../tokenvault/ERC1155Vault.md | 4 - .../tokenvault/ERC20Vault.md | 2 - .../tokenvault/ERC721Vault.md | 2 - .../docs/reference/prover-market-page.mdx | 36 +- .../docs/resources/learning-resources.mdx | 2 + 38 files changed, 219 insertions(+), 240 deletions(-) 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)