diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index bc414284eb..ab22c7606a 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,7 +1,7 @@
{
"packages/branding": "0.4.0",
"packages/bridge-ui": "2.11.0",
- "packages/docs-site": "1.11.2",
+ "packages/docs-site": "1.11.3",
"packages/eventindexer": "0.13.0",
"packages/fork-diff": "0.6.0",
"packages/guardian-prover-health-check": "0.1.0",
diff --git a/packages/bridge-ui/src/components/Bridge/FungibleBridgeComponents/ImportStep/ImportStep.svelte b/packages/bridge-ui/src/components/Bridge/FungibleBridgeComponents/ImportStep/ImportStep.svelte
index 7a86cff725..b928cf206c 100644
--- a/packages/bridge-ui/src/components/Bridge/FungibleBridgeComponents/ImportStep/ImportStep.svelte
+++ b/packages/bridge-ui/src/components/Bridge/FungibleBridgeComponents/ImportStep/ImportStep.svelte
@@ -1,7 +1,7 @@
+
+
+ {#if small}
+
+ {$t('destOwner.title')}
+ {#if displayedDestOwner}
+ {shortenAddress(displayedDestOwner, 8, 10)}
+ {#if displayedDestOwner !== $account?.address}
+ | {$t('common.customized')}
+ {/if}
+ {:else}
+ {$t('destOwner.placeholder')}
+ {/if}
+
+ {:else}
+
+
+ {$t('destOwner.title')}
+
+ {$t('destOwner.tooltip_title')}
+ {$t('destOwner.tooltip')}
+
+
+ {#if !disabled}
+
{$t('common.edit')}
+ {/if}
+
+
+
+ {#if displayedDestOwner}
+ {shortenAddress(displayedDestOwner, 15, 13)}
+ {#if displayedDestOwner !== $account?.address}
+ | {$t('common.customized')}
+ {/if}
+ {:else}
+ {$t('recipient.placeholder')}
+ {/if}
+
+
+
+
+
+
+
+
{$t('destOwner.title')}
+
+
{$t('destOwner.description')}
+
+
+
+ {#if destOwnerIsSmartContract}
+
+ You cannot set a smart contract as destination owner.
+
+ {/if}
+
+
+
+ {$t('common.cancel')}
+
+
+ {$t('common.confirm')}
+
+
+
+
+
+ {/if}
+
diff --git a/packages/bridge-ui/src/components/Bridge/SharedBridgeComponents/RecipientStep/Recipient.svelte b/packages/bridge-ui/src/components/Bridge/SharedBridgeComponents/RecipientStep/Recipient.svelte
index 75756392c9..86786da693 100644
--- a/packages/bridge-ui/src/components/Bridge/SharedBridgeComponents/RecipientStep/Recipient.svelte
+++ b/packages/bridge-ui/src/components/Bridge/SharedBridgeComponents/RecipientStep/Recipient.svelte
@@ -2,14 +2,15 @@
import { t } from 'svelte-i18n';
import type { Address } from 'viem';
- import { recipientAddress } from '$components/Bridge/state';
+ import { destNetwork, destOwnerAddress, recipientAddress } from '$components/Bridge/state';
import { ActionButton, CloseButton } from '$components/Button';
import { Tooltip } from '$components/Tooltip';
+ import { isSmartContract } from '$libs/util/isSmartContract';
import { shortenAddress } from '$libs/util/shortenAddress';
- import { uid } from '$libs/util/uid';
import { account } from '$stores/account';
import AddressInput from '../AddressInput/AddressInput.svelte';
+ // import Alert from '$components/Alert/Alert.svelte';
// Public API
export const clearRecipient = () => {
@@ -20,13 +21,18 @@
export let small = false;
export let disabled = false;
- let dialogId = `dialog-${uid()}`;
+ let dialogId = `dialog-${crypto.randomUUID()}`;
let addressInput: AddressInput;
+ let destOwnerAddressInput: AddressInput;
let modalOpen = false;
- let invalidAddress = false;
+ let invalidRecipient = false;
+ let invalidDestOwner = false;
let prevRecipientAddress: Maybe = null;
+ let recipientIsSmartContract = false;
+ // let destOwnerIsSmartContract = false;
+
function closeModal() {
modalOpen = false;
}
@@ -40,6 +46,7 @@
function cancelModal() {
// Revert change of recipient address
$recipientAddress = prevRecipientAddress;
+ $destOwnerAddress = recipientIsSmartContract ? $account?.address : null;
removeEscKeyListener();
closeModal();
}
@@ -51,16 +58,46 @@
}
}
- function onAddressValidation(event: CustomEvent<{ isValidEthereumAddress: boolean; addr: Address }>) {
+ async function onRecipientValidation(event: CustomEvent<{ isValidEthereumAddress: boolean; addr: Address }>) {
const { isValidEthereumAddress, addr } = event.detail;
+
if (isValidEthereumAddress) {
- $recipientAddress = addr;
- invalidAddress = false;
+ validateRecipient(addr);
} else {
- invalidAddress = true;
+ invalidRecipient = true;
}
}
+ const validateRecipient = async (addr: Address) => {
+ $recipientAddress = addr;
+ invalidRecipient = false;
+ if ($destNetwork?.id && (await isSmartContract(addr, $destNetwork.id))) {
+ recipientIsSmartContract = true;
+ } else {
+ recipientIsSmartContract = false;
+ }
+ };
+
+ async function onDestOwnerValidation(event: CustomEvent<{ isValidEthereumAddress: boolean; addr: Address }>) {
+ const { isValidEthereumAddress, addr } = event.detail;
+ if (isValidEthereumAddress) {
+ validateDestOwner(addr);
+ } else {
+ invalidDestOwner = true;
+ }
+ }
+
+ const validateDestOwner = async (addr: Address) => {
+ $destOwnerAddress = addr;
+ invalidDestOwner = false;
+ // if ($destNetwork?.id && (await isSmartContract(addr, $destNetwork.id))) {
+ // destOwnerIsSmartContract = true;
+ // // invalidDestOwner = true;
+ // } else {
+ // destOwnerIsSmartContract = false;
+ // }
+ };
+
let escKeyListener: (event: KeyboardEvent) => void;
const addEscKeyListener = () => {
@@ -79,6 +116,7 @@
$: modalOpenChange(modalOpen);
$: ethereumAddressBinding = $recipientAddress || undefined;
+ $: destOwnerAddressBinding = $destOwnerAddress || undefined;
$: displayedRecipient = $recipientAddress || $account?.address;
@@ -134,17 +172,40 @@
+ on:addressvalidation={onRecipientValidation}
+ onDialog
+ resettable />
+ {#if recipientIsSmartContract}
+
+ You are sending funds to a smart contract. Please provide an alternate address that can manually claim the
+ funds if the relayer doesn't or you configured it that way. Ensure this is an address you control, as you
+ cannot claim the funds as the smart contract directly.
+
+
+ {/if}
+
{$t('common.cancel')}
{$t('common.confirm')}
diff --git a/packages/bridge-ui/src/components/Bridge/SharedBridgeComponents/RecipientStep/RecipientStep.svelte b/packages/bridge-ui/src/components/Bridge/SharedBridgeComponents/RecipientStep/RecipientStep.svelte
index 143e1626eb..e187ec9b20 100644
--- a/packages/bridge-ui/src/components/Bridge/SharedBridgeComponents/RecipientStep/RecipientStep.svelte
+++ b/packages/bridge-ui/src/components/Bridge/SharedBridgeComponents/RecipientStep/RecipientStep.svelte
@@ -4,7 +4,10 @@
import { Alert } from '$components/Alert';
import { ProcessingFee, Recipient } from '$components/Bridge/SharedBridgeComponents';
+ import DestOwner from './DestOwner.svelte';
+
let recipientComponent: Recipient;
+ let destOwnerComponent: DestOwner;
let processingFeeComponent: ProcessingFee;
export let hasEnoughEth: boolean = false;
@@ -18,6 +21,7 @@
diff --git a/packages/bridge-ui/src/components/Bridge/state.ts b/packages/bridge-ui/src/components/Bridge/state.ts
index f6089db261..c55af63702 100644
--- a/packages/bridge-ui/src/components/Bridge/state.ts
+++ b/packages/bridge-ui/src/components/Bridge/state.ts
@@ -29,6 +29,7 @@ export const processingFee = writable(BigInt(0));
export const gasLimitZero = writable(false);
export const processingFeeMethod = writable(ProcessingFeeMethod.RECOMMENDED);
export const recipientAddress = writable>(null);
+export const destOwnerAddress = writable>(null);
// Loading state
export const bridging = writable(false);
diff --git a/packages/bridge-ui/src/components/ChainSelectors/ChainPill/ChainPill.svelte b/packages/bridge-ui/src/components/ChainSelectors/ChainPill/ChainPill.svelte
index e4a8e6f496..6d2d882cba 100644
--- a/packages/bridge-ui/src/components/ChainSelectors/ChainPill/ChainPill.svelte
+++ b/packages/bridge-ui/src/components/ChainSelectors/ChainPill/ChainPill.svelte
@@ -8,7 +8,6 @@
import { DesktopOrLarger } from '$components/DesktopOrLarger';
import { classNames } from '$libs/util/classNames';
import { truncateString } from '$libs/util/truncateString';
- import { uid } from '$libs/util/uid';
import { account } from '$stores';
export let value: Maybe | null = null;
@@ -26,8 +25,8 @@
let iconSize = 'min-w-5 max-w-5 min-h-5 max-h-5';
- let buttonId = `button-${uid()}`;
- let dialogId = `dialog-${uid()}`;
+ let buttonId = `button-${crypto.randomUUID()}`;
+ let dialogId = `dialog-${crypto.randomUUID()}`;
let modalOpen = false;
const handlePillClick = () => {
diff --git a/packages/bridge-ui/src/components/ChainSelectors/SelectorDialogs/ChainsDialog.svelte b/packages/bridge-ui/src/components/ChainSelectors/SelectorDialogs/ChainsDialog.svelte
index 6317de54fa..126631bdc6 100644
--- a/packages/bridge-ui/src/components/ChainSelectors/SelectorDialogs/ChainsDialog.svelte
+++ b/packages/bridge-ui/src/components/ChainSelectors/SelectorDialogs/ChainsDialog.svelte
@@ -9,7 +9,6 @@
import { ActionButton } from '$components/Button';
import { chains } from '$libs/chain';
import { closeOnEscapeOrOutsideClick } from '$libs/customActions';
- import { uid } from '$libs/util/uid';
import { connectedSourceChain } from '$stores/network';
export let isOpen = false;
@@ -17,7 +16,7 @@
export let switchWallet = false;
let modalOpen = false;
- const dialogId = `dialog-${uid()}`;
+ const dialogId = `dialog-${crypto.randomUUID()}`;
const dispatch = createEventDispatcher();
diff --git a/packages/bridge-ui/src/components/Dialogs/ClaimDialog/ClaimDialog.svelte b/packages/bridge-ui/src/components/Dialogs/ClaimDialog/ClaimDialog.svelte
index 146c838754..649a5d42d5 100644
--- a/packages/bridge-ui/src/components/Dialogs/ClaimDialog/ClaimDialog.svelte
+++ b/packages/bridge-ui/src/components/Dialogs/ClaimDialog/ClaimDialog.svelte
@@ -24,7 +24,6 @@
} from '$libs/error';
import type { NFT } from '$libs/token';
import { getLogger } from '$libs/util/logger';
- import { uid } from '$libs/util/uid';
import { connectedSourceChain } from '$stores/network';
import { pendingTransactions } from '$stores/pendingTransactions';
@@ -37,7 +36,7 @@
const log = getLogger('ClaimDialog');
- const dialogId = `dialog-${uid()}`;
+ const dialogId = `dialog-${crypto.randomUUID()}`;
const dispatch = createEventDispatcher();
export let dialogOpen = false;
diff --git a/packages/bridge-ui/src/components/Dialogs/ReleaseDialog/ReleaseDialog.svelte b/packages/bridge-ui/src/components/Dialogs/ReleaseDialog/ReleaseDialog.svelte
index bf461a0c19..b09be8da5e 100644
--- a/packages/bridge-ui/src/components/Dialogs/ReleaseDialog/ReleaseDialog.svelte
+++ b/packages/bridge-ui/src/components/Dialogs/ReleaseDialog/ReleaseDialog.svelte
@@ -18,7 +18,6 @@
RetryError,
} from '$libs/error';
import { getLogger } from '$libs/util/logger';
- import { uid } from '$libs/util/uid';
import { connectedSourceChain } from '$stores/network';
import { pendingTransactions } from '$stores/pendingTransactions';
@@ -32,7 +31,7 @@
const log = getLogger('ReleaseDialog');
- const dialogId = `dialog-${uid()}`;
+ const dialogId = `dialog-${crypto.randomUUID()}`;
const dispatch = createEventDispatcher();
export let bridgeTx: BridgeTransaction;
diff --git a/packages/bridge-ui/src/components/Dialogs/RetryDialog/RetryDialog.svelte b/packages/bridge-ui/src/components/Dialogs/RetryDialog/RetryDialog.svelte
index 3a90c0a662..ef60ee478b 100644
--- a/packages/bridge-ui/src/components/Dialogs/RetryDialog/RetryDialog.svelte
+++ b/packages/bridge-ui/src/components/Dialogs/RetryDialog/RetryDialog.svelte
@@ -12,7 +12,6 @@
import type { BridgeTransaction } from '$libs/bridge';
import { closeOnEscapeOrOutsideClick } from '$libs/customActions';
import { getLogger } from '$libs/util/logger';
- import { uid } from '$libs/util/uid';
import { pendingTransactions } from '$stores/pendingTransactions';
import Claim from '../Claim.svelte';
@@ -35,7 +34,7 @@
const log = getLogger('RetryDialog');
const dispatch = createEventDispatcher();
- const dialogId = `dialog-${uid()}`;
+ const dialogId = `dialog-${crypto.randomUUID()}`;
let canContinue = false;
let retrying: boolean;
diff --git a/packages/bridge-ui/src/components/Dialogs/Shared/ClaimPreCheck.svelte b/packages/bridge-ui/src/components/Dialogs/Shared/ClaimPreCheck.svelte
index 3351c040dc..8004aef57c 100644
--- a/packages/bridge-ui/src/components/Dialogs/Shared/ClaimPreCheck.svelte
+++ b/packages/bridge-ui/src/components/Dialogs/Shared/ClaimPreCheck.svelte
@@ -104,8 +104,11 @@
$: hasPaidProcessingFee = tx.processingFee > 0;
$: differentRecipient = false;
- $: if (tx.message?.destOwner && $account?.address) {
- if (getAddress(tx.message.destOwner) === getAddress($account?.address)) {
+ $: if (tx.message?.to && $account?.address && tx.message.destOwner) {
+ if (
+ getAddress(tx.message.to) === getAddress($account.address) ||
+ getAddress($account.address) === getAddress(tx.message.destOwner)
+ ) {
differentRecipient = false;
} else {
differentRecipient = true;
diff --git a/packages/bridge-ui/src/components/Dialogs/Shared/ReviewStep.svelte b/packages/bridge-ui/src/components/Dialogs/Shared/ReviewStep.svelte
index 69f40fab2c..48b6f3b41f 100644
--- a/packages/bridge-ui/src/components/Dialogs/Shared/ReviewStep.svelte
+++ b/packages/bridge-ui/src/components/Dialogs/Shared/ReviewStep.svelte
@@ -58,7 +58,7 @@
{$t('common.recipient')}
{shortenAddress(tx.message?.destOwner, 5, 5)}
+ >{shortenAddress(tx.message?.to, 5, 5)}
{/if}
diff --git a/packages/bridge-ui/src/components/NFTs/NFTInfoDialog.svelte b/packages/bridge-ui/src/components/NFTs/NFTInfoDialog.svelte
index 668e817aba..d44164a01c 100644
--- a/packages/bridge-ui/src/components/NFTs/NFTInfoDialog.svelte
+++ b/packages/bridge-ui/src/components/NFTs/NFTInfoDialog.svelte
@@ -11,10 +11,9 @@
import type { NFT } from '$libs/token';
import { getTokenAddresses } from '$libs/token/getTokenAddresses';
import { shortenAddress } from '$libs/util/shortenAddress';
- import { uid } from '$libs/util/uid';
import { connectedSourceChain } from '$stores/network';
- const dialogId = `dialog-${uid()}`;
+ const dialogId = `dialog-${crypto.randomUUID()}`;
const placeholderUrl = '/placeholder.svg';
diff --git a/packages/bridge-ui/src/components/NotificationToast/NotificationToast.svelte b/packages/bridge-ui/src/components/NotificationToast/NotificationToast.svelte
index 34e7f0c8f8..ce60f9c22c 100644
--- a/packages/bridge-ui/src/components/NotificationToast/NotificationToast.svelte
+++ b/packages/bridge-ui/src/components/NotificationToast/NotificationToast.svelte
@@ -2,7 +2,6 @@
import { toast } from '@zerodevx/svelte-toast';
import { toastConfig } from '$config';
- import { uid } from '$libs/util/uid';
import ItemToast from './ItemToast.svelte';
import type { TypeToast } from './types';
@@ -28,7 +27,7 @@
}
export function notify(notificationType: NotificationType) {
- const id = Number(uid());
+ const id = Number(crypto.randomUUID());
const close = () => toast.pop(id);
const { title, message, type = 'unknown', closeManually = getDefaultCloseBehaviour(type) } = notificationType;
diff --git a/packages/bridge-ui/src/components/TokenDropdown/AddCustomERC20.svelte b/packages/bridge-ui/src/components/TokenDropdown/AddCustomERC20.svelte
index e9fd751376..9c72342e64 100644
--- a/packages/bridge-ui/src/components/TokenDropdown/AddCustomERC20.svelte
+++ b/packages/bridge-ui/src/components/TokenDropdown/AddCustomERC20.svelte
@@ -17,7 +17,6 @@
import { getTokenAddresses } from '$libs/token/getTokenAddresses';
import { getTokenWithInfoFromAddress } from '$libs/token/getTokenWithInfoFromAddress';
import { getLogger } from '$libs/util/logger';
- import { uid } from '$libs/util/uid';
import { config } from '$libs/wagmi';
import { account } from '$stores/account';
import { connectedSourceChain } from '$stores/network';
@@ -27,7 +26,7 @@
const dispatch = createEventDispatcher();
const log = getLogger('component:AddCustomERC20');
- const dialogId = `dialog-${uid()}`;
+ const dialogId = `dialog-${crypto.randomUUID()}`;
export let modalOpen = false;
export let loadingTokenDetails = false;
diff --git a/packages/bridge-ui/src/components/TokenDropdown/TokenDropdown.svelte b/packages/bridge-ui/src/components/TokenDropdown/TokenDropdown.svelte
index a39082eba1..27f734c21e 100644
--- a/packages/bridge-ui/src/components/TokenDropdown/TokenDropdown.svelte
+++ b/packages/bridge-ui/src/components/TokenDropdown/TokenDropdown.svelte
@@ -22,7 +22,6 @@
import { getTokenAddresses } from '$libs/token/getTokenAddresses';
import { getLogger } from '$libs/util/logger';
import { truncateString } from '$libs/util/truncateString';
- import { uid } from '$libs/util/uid';
import { type Account, account } from '$stores/account';
import { connectedSourceChain } from '$stores/network';
@@ -44,7 +43,7 @@
let customTokenModalOpen = false;
- let id = `menu-${uid()}`;
+ let id = `menu-${crypto.randomUUID()}`;
$: menuOpen = false;
let activeTab: TabTypes = TabTypes.TOKEN;
diff --git a/packages/bridge-ui/src/components/Tooltip/Tooltip.svelte b/packages/bridge-ui/src/components/Tooltip/Tooltip.svelte
index cf779ef53a..f69ca24573 100644
--- a/packages/bridge-ui/src/components/Tooltip/Tooltip.svelte
+++ b/packages/bridge-ui/src/components/Tooltip/Tooltip.svelte
@@ -4,12 +4,11 @@
import { Icon } from '$components/Icon';
import { classNames } from '$libs/util/classNames';
import { positionElementByTarget } from '$libs/util/positionElementByTarget';
- import { uid } from '$libs/util/uid';
export let position: Position = 'top';
export let tooltipOpen = false;
- let tooltipId = `tooltip-${uid()}`;
+ let tooltipId = `tooltip-${crypto.randomUUID()}`;
let tooltipClass = `block dialog-tooltip`;
let classes = classNames('flex z-10 ', $$props.class || 'relative');
diff --git a/packages/bridge-ui/src/components/Transactions/Filter/StatusFilterDialog.svelte b/packages/bridge-ui/src/components/Transactions/Filter/StatusFilterDialog.svelte
index b4a3827c85..4ed183dd43 100644
--- a/packages/bridge-ui/src/components/Transactions/Filter/StatusFilterDialog.svelte
+++ b/packages/bridge-ui/src/components/Transactions/Filter/StatusFilterDialog.svelte
@@ -3,11 +3,10 @@
import { ActionButton, CloseButton } from '$components/Button';
import { MessageStatus } from '$libs/bridge';
- import { uid } from '$libs/util/uid';
export let selectedStatus: MessageStatus | null = null;
- let dialogId = `dialog-${uid()}`;
+ let dialogId = `dialog-${crypto.randomUUID()}`;
export let menuOpen = false;
diff --git a/packages/bridge-ui/src/components/Transactions/Filter/StatusFilterDropdown.svelte b/packages/bridge-ui/src/components/Transactions/Filter/StatusFilterDropdown.svelte
index f2445651a8..4faea34358 100644
--- a/packages/bridge-ui/src/components/Transactions/Filter/StatusFilterDropdown.svelte
+++ b/packages/bridge-ui/src/components/Transactions/Filter/StatusFilterDropdown.svelte
@@ -5,13 +5,12 @@
import { MessageStatus } from '$libs/bridge';
import { closeOnEscapeOrOutsideClick } from '$libs/customActions';
import { classNames } from '$libs/util/classNames';
- import { uid } from '$libs/util/uid';
export let selectedStatus: MessageStatus | null = null;
let flipped = false;
let menuOpen = false;
- let uuid = `dropdown-${uid()}`;
+ let uuid = `dropdown-${crypto.randomUUID()}`;
let iconFlipperComponent: IconFlipper;
diff --git a/packages/bridge-ui/src/components/Transactions/InsufficientFunds.svelte b/packages/bridge-ui/src/components/Transactions/InsufficientFunds.svelte
index 8e78a5189b..afcd8c4f20 100644
--- a/packages/bridge-ui/src/components/Transactions/InsufficientFunds.svelte
+++ b/packages/bridge-ui/src/components/Transactions/InsufficientFunds.svelte
@@ -5,11 +5,10 @@
import { Icon } from '$components/Icon';
import { PUBLIC_GUIDE_URL } from '$env/static/public';
import { closeOnEscapeOrOutsideClick } from '$libs/customActions';
- import { uid } from '$libs/util/uid';
export let modalOpen = false;
- let dialogId = `dialog-${uid()}`;
+ let dialogId = `dialog-${crypto.randomUUID()}`;
function closeModal() {
modalOpen = false;
diff --git a/packages/bridge-ui/src/components/Transactions/MobileDetailsDialog.svelte b/packages/bridge-ui/src/components/Transactions/MobileDetailsDialog.svelte
index 6968d9431a..e07aaaadb0 100644
--- a/packages/bridge-ui/src/components/Transactions/MobileDetailsDialog.svelte
+++ b/packages/bridge-ui/src/components/Transactions/MobileDetailsDialog.svelte
@@ -13,7 +13,6 @@
import { getTokenAddresses } from '$libs/token/getTokenAddresses';
import { noop } from '$libs/util/noop';
import { shortenAddress } from '$libs/util/shortenAddress';
- import { uid } from '$libs/util/uid';
import { connectedSourceChain } from '$stores/network';
import ChainSymbolName from './ChainSymbolName.svelte';
@@ -34,7 +33,7 @@
const openToolTip = () => {
tooltipOpen = !tooltipOpen;
};
- let dialogId = `dialog-${uid()}`;
+ let dialogId = `dialog-${crypto.randomUUID()}`;
const handleStatusDialog = () => {
openStatusDialog = !openStatusDialog;
diff --git a/packages/bridge-ui/src/components/Transactions/Status/StatusInfoDialog.svelte b/packages/bridge-ui/src/components/Transactions/Status/StatusInfoDialog.svelte
index 3dc7f7245b..672480a605 100644
--- a/packages/bridge-ui/src/components/Transactions/Status/StatusInfoDialog.svelte
+++ b/packages/bridge-ui/src/components/Transactions/Status/StatusInfoDialog.svelte
@@ -3,13 +3,12 @@
import { CloseButton } from '$components/Button';
import { Icon } from '$components/Icon';
- import { uid } from '$libs/util/uid';
export let modalOpen = false;
export let noIcon = false;
- const dialogId = `dialog-${uid()}`;
+ const dialogId = `dialog-${crypto.randomUUID()}`;
const closeModal = () => (modalOpen = false);
diff --git a/packages/bridge-ui/src/i18n/en.json b/packages/bridge-ui/src/i18n/en.json
index 824bb73d6b..2436297943 100644
--- a/packages/bridge-ui/src/i18n/en.json
+++ b/packages/bridge-ui/src/i18n/en.json
@@ -42,7 +42,6 @@
"not_enough_funds": "You do not have enough ETH to cover the processing fee and transaction fee. Please add more ETH to your wallet (>= 0.0015 ETH).",
"slow_bridging": "Please note: Bridging to L1 will take around 24hrs!",
"smart_contract_wallet": "It seems you are using a smart contract wallet. Please double check that the recipient matches your wallet on the destination or change it accordingly.",
- "stable_coin": "You are bridging a stable coin. For USDC, we are currently partnering with Stargate Bridge for liquidity. Consider using their bridge, as the ecosystem partners are likely using their bridged version",
"wrapped_eth": "You are bridging wrapped ETH. Please be aware that un-wrapping will only work on the original chain of the token, NOT on the destination."
},
"button": {
@@ -250,6 +249,7 @@
"not_available_short": "N/A",
"ok": "Okay",
"recipient": "Recipient",
+ "reset_to_wallet": "Reset to current address",
"review": "Review",
"search_token": "Search token",
"see_results": "See results",
@@ -266,6 +266,16 @@
"custom_recipient": {
"placeholder": "Add custom recipient"
},
+ "destOwner": {
+ "alerts": {
+ "smartContract": "You cannot set the destination owner to a contract address"
+ },
+ "description": "You can set a custom address that should be able to claim the transaction on the destination chain, for example if the recipient is a smart contract that cannot manually claim.",
+ "placeholder": "add address that should be able to manually claim...",
+ "title": "Destination owner",
+ "tooltip": "Defaults to your address. You can specify a different address that should be able to claim this transaction.",
+ "tooltip_title": "What is Destination Owner?"
+ },
"faucet": {
"button": {
"checking": "Checking mintability",
diff --git a/packages/bridge-ui/src/libs/bridge/ERC1155Bridge.ts b/packages/bridge-ui/src/libs/bridge/ERC1155Bridge.ts
index bdc64eab28..94f9931e82 100644
--- a/packages/bridge-ui/src/libs/bridge/ERC1155Bridge.ts
+++ b/packages/bridge-ui/src/libs/bridge/ERC1155Bridge.ts
@@ -4,7 +4,7 @@ import { getContract, UserRejectedRequestError } from 'viem';
import { bridgeAbi, erc1155Abi, erc1155VaultAbi } from '$abi';
import { routingContractsMap } from '$bridgeConfig';
-import { gasLimitZero } from '$components/Bridge/state';
+import { destOwnerAddress, gasLimitZero } from '$components/Bridge/state';
import { gasLimitConfig } from '$config';
import {
ApproveError,
@@ -223,7 +223,7 @@ export class ERC1155Bridge extends Bridge {
const sendERC1155Args: NFTBridgeTransferOp = {
destChainId: BigInt(destChainId),
to,
- destOwner: to,
+ destOwner: get(destOwnerAddress) || to,
token,
gasLimit: Number(gasLimit),
fee,
diff --git a/packages/bridge-ui/src/libs/bridge/ERC20Bridge.ts b/packages/bridge-ui/src/libs/bridge/ERC20Bridge.ts
index f1c06c0324..e3023d9307 100644
--- a/packages/bridge-ui/src/libs/bridge/ERC20Bridge.ts
+++ b/packages/bridge-ui/src/libs/bridge/ERC20Bridge.ts
@@ -4,7 +4,7 @@ import { getContract, UserRejectedRequestError } from 'viem';
import { bridgeAbi, erc20Abi, erc20VaultAbi } from '$abi';
import { routingContractsMap } from '$bridgeConfig';
-import { gasLimitZero } from '$components/Bridge/state';
+import { destOwnerAddress, gasLimitZero } from '$components/Bridge/state';
import { gasLimitConfig } from '$config';
import {
ApproveError,
@@ -75,7 +75,7 @@ export class ERC20Bridge extends Bridge {
const sendERC20Args = {
destChainId: BigInt(destChainId),
- destOwner: to,
+ destOwner: get(destOwnerAddress) || to,
to,
token,
amount,
diff --git a/packages/bridge-ui/src/libs/bridge/ERC721Bridge.ts b/packages/bridge-ui/src/libs/bridge/ERC721Bridge.ts
index 294bdb6990..45c5f6968b 100644
--- a/packages/bridge-ui/src/libs/bridge/ERC721Bridge.ts
+++ b/packages/bridge-ui/src/libs/bridge/ERC721Bridge.ts
@@ -4,7 +4,7 @@ import { getContract, UserRejectedRequestError } from 'viem';
import { bridgeAbi, erc721Abi, erc721VaultAbi } from '$abi';
import { routingContractsMap } from '$bridgeConfig';
-import { gasLimitZero } from '$components/Bridge/state';
+import { destOwnerAddress, gasLimitZero } from '$components/Bridge/state';
import { gasLimitConfig } from '$config';
import {
ApproveError,
@@ -235,7 +235,7 @@ export class ERC721Bridge extends Bridge {
const sendERC721Args: NFTBridgeTransferOp = {
destChainId: BigInt(destChainId),
to,
- destOwner: to,
+ destOwner: get(destOwnerAddress) || to,
token,
gasLimit: Number(gasLimit),
fee,
diff --git a/packages/bridge-ui/src/libs/bridge/ETHBridge.ts b/packages/bridge-ui/src/libs/bridge/ETHBridge.ts
index 5cbae26530..b81911ec2c 100644
--- a/packages/bridge-ui/src/libs/bridge/ETHBridge.ts
+++ b/packages/bridge-ui/src/libs/bridge/ETHBridge.ts
@@ -3,7 +3,7 @@ import { get } from 'svelte/store';
import { getContract, UserRejectedRequestError } from 'viem';
import { bridgeAbi } from '$abi';
-import { gasLimitZero } from '$components/Bridge/state';
+import { destOwnerAddress, gasLimitZero } from '$components/Bridge/state';
import { BridgePausedError, SendMessageError } from '$libs/error';
import type { BridgeProver } from '$libs/proof';
import { isBridgePaused } from '$libs/util/checkForPausedContracts';
@@ -55,7 +55,7 @@ export class ETHBridge extends Bridge {
srcOwner: owner,
from: owner,
- destOwner: to,
+ destOwner: get(destOwnerAddress) || to,
srcChainId: BigInt(srcChainId),
destChainId: BigInt(destChainId),
diff --git a/packages/bridge-ui/src/libs/util/isSmartContractWallet.test.ts b/packages/bridge-ui/src/libs/util/isSmartContract.test.ts
similarity index 79%
rename from packages/bridge-ui/src/libs/util/isSmartContractWallet.test.ts
rename to packages/bridge-ui/src/libs/util/isSmartContract.test.ts
index ba9be467ff..64d9d99658 100644
--- a/packages/bridge-ui/src/libs/util/isSmartContractWallet.test.ts
+++ b/packages/bridge-ui/src/libs/util/isSmartContract.test.ts
@@ -4,7 +4,7 @@ import { beforeEach, describe, expect, it, vi } from 'vitest';
import { config } from '$libs/wagmi';
import { L1_CHAIN_ID } from '$mocks';
-import { isSmartContractWallet } from './isSmartContractWallet';
+import { isSmartContract } from './isSmartContract';
// Mock wagmi core
vi.mock('@wagmi/core');
@@ -13,7 +13,7 @@ vi.mock('$customToken');
vi.mock('$libs/token');
-describe('isSmartContractWallet', () => {
+describe('isSmartContract', () => {
const mockWalletAddress = '0x1234567890abcdef1234567890abcdef12345678';
const mockChainId = L1_CHAIN_ID;
const mockClient = {
@@ -30,7 +30,7 @@ describe('isSmartContractWallet', () => {
mockClient.getBytecode.mockResolvedValueOnce('0x6000600055');
// When
- const result = await isSmartContractWallet(mockWalletAddress, mockChainId);
+ const result = await isSmartContract(mockWalletAddress, mockChainId);
// Then
expect(result).toBe(true);
@@ -43,7 +43,7 @@ describe('isSmartContractWallet', () => {
mockClient.getBytecode.mockResolvedValueOnce('0x');
// When
- const result = await isSmartContractWallet(mockWalletAddress, mockChainId);
+ const result = await isSmartContract(mockWalletAddress, mockChainId);
// Then
expect(result).toBe(false);
@@ -56,6 +56,6 @@ describe('isSmartContractWallet', () => {
vi.mocked(getPublicClient).mockReturnValueOnce(null);
// When/Then
- await expect(isSmartContractWallet(mockWalletAddress, mockChainId)).rejects.toThrow('No public client found');
+ await expect(isSmartContract(mockWalletAddress, mockChainId)).rejects.toThrow('No public client found');
});
});
diff --git a/packages/bridge-ui/src/libs/util/isSmartContractWallet.ts b/packages/bridge-ui/src/libs/util/isSmartContract.ts
similarity index 70%
rename from packages/bridge-ui/src/libs/util/isSmartContractWallet.ts
rename to packages/bridge-ui/src/libs/util/isSmartContract.ts
index 53c49bf1e3..9bbc18e233 100644
--- a/packages/bridge-ui/src/libs/util/isSmartContractWallet.ts
+++ b/packages/bridge-ui/src/libs/util/isSmartContract.ts
@@ -5,9 +5,9 @@ import { config } from '$libs/wagmi';
import { getLogger } from './logger';
-const log = getLogger('util:isSmartContractWallet');
+const log = getLogger('util:isSmartContract');
-export const isSmartContractWallet = async (walletAddress: Address, chainId: number) => {
+export const isSmartContract = async (walletAddress: Address, chainId: number) => {
const publicClient = getPublicClient(config, { chainId });
if (!publicClient) throw new Error('No public client found');
@@ -18,6 +18,6 @@ export const isSmartContractWallet = async (walletAddress: Address, chainId: num
if (byteCode !== '0x' && byteCode !== undefined) {
isSmartContract = true;
}
- log('isSmartContractWallet', isSmartContract, walletAddress, chainId);
+ log('isSmartContract', isSmartContract, walletAddress, chainId);
return isSmartContract;
};
diff --git a/packages/bridge-ui/src/libs/util/uid.test.ts b/packages/bridge-ui/src/libs/util/uid.test.ts
deleted file mode 100644
index 44ee4aa327..0000000000
--- a/packages/bridge-ui/src/libs/util/uid.test.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { uid } from './uid';
-
-describe('uid', () => {
- it('should always return a unique id', () => {
- const generatedIds = new Set();
-
- // Is this unique enough? 😅
- for (let i = 0; i < 1000; i++) {
- generatedIds.add(uid());
- }
-
- expect(generatedIds.size).toBe(1000);
- });
-});
diff --git a/packages/bridge-ui/src/libs/util/uid.ts b/packages/bridge-ui/src/libs/util/uid.ts
deleted file mode 100644
index 62cb3175f1..0000000000
--- a/packages/bridge-ui/src/libs/util/uid.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export function uid() {
- return Math.floor(Math.random() * Date.now()).toString(16);
-}
diff --git a/packages/bridge-ui/src/libs/wagmi/watcher.ts b/packages/bridge-ui/src/libs/wagmi/watcher.ts
index 3523b253dd..31fe27791c 100644
--- a/packages/bridge-ui/src/libs/wagmi/watcher.ts
+++ b/packages/bridge-ui/src/libs/wagmi/watcher.ts
@@ -3,13 +3,14 @@ import { watchAccount } from '@wagmi/core';
import { chains, isSupportedChain } from '$libs/chain';
import { refreshUserBalance } from '$libs/util/balance';
import { checkForPausedContracts } from '$libs/util/checkForPausedContracts';
-import { isSmartContractWallet } from '$libs/util/isSmartContractWallet';
+import { isSmartContract } from '$libs/util/isSmartContract';
import { getLogger } from '$libs/util/logger';
import { account, connectedSmartContractWallet } from '$stores/account';
import { switchChainModal } from '$stores/modal';
import { connectedSourceChain } from '$stores/network';
import { config } from './client';
+
const log = getLogger('wagmi:watcher');
let isWatching = false;
@@ -23,6 +24,7 @@ export async function startWatching() {
async onChange(data) {
await checkForPausedContracts();
log('Account changed', data);
+ account.set(data);
refreshUserBalance();
const { chainId, address } = data;
@@ -30,7 +32,7 @@ export async function startWatching() {
if (chainId && address) {
let smartWallet = false;
try {
- smartWallet = (await isSmartContractWallet(address, Number(chainId))) || false;
+ smartWallet = (await isSmartContract(address, Number(chainId))) || false;
} catch (error) {
console.error('Error checking for smart contract wallet', error);
} finally {
@@ -49,10 +51,8 @@ export async function startWatching() {
// the source chain.
const srcChain = chains.find((c) => c.id === Number(chainId));
if (srcChain) connectedSourceChain.set(srcChain);
-
refreshUserBalance();
}
- account.set(data);
},
});
diff --git a/packages/docs-site/CHANGELOG.md b/packages/docs-site/CHANGELOG.md
index b9db85213a..156d798cec 100644
--- a/packages/docs-site/CHANGELOG.md
+++ b/packages/docs-site/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## [1.11.3](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.11.2...docs-site-v1.11.3) (2024-07-04)
+
+
+### Documentation
+
+* **docs-site,protocol:** streamline ProverSet deployment ([#17730](https://github.com/taikoxyz/taiko-mono/issues/17730)) ([919cb4c](https://github.com/taikoxyz/taiko-mono/commit/919cb4cd0064d1cfa994e53a30a73f98975cfe34))
+
## [1.11.2](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.11.1...docs-site-v1.11.2) (2024-07-01)
diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json
index 8523803d03..141f702f08 100644
--- a/packages/docs-site/package.json
+++ b/packages/docs-site/package.json
@@ -1,7 +1,7 @@
{
"name": "docs-site",
"type": "module",
- "version": "1.11.2",
+ "version": "1.11.3",
"scripts": {
"dev": "astro dev",
"start": "astro dev",
diff --git a/packages/protocol/contracts/L1/TaikoErrors.sol b/packages/protocol/contracts/L1/TaikoErrors.sol
deleted file mode 100644
index a690b707a0..0000000000
--- a/packages/protocol/contracts/L1/TaikoErrors.sol
+++ /dev/null
@@ -1,41 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity 0.8.24;
-
-/// @title TaikoErrors
-/// @notice This abstract contract provides custom error declarations used in
-/// the Taiko protocol. Each error corresponds to specific situations where
-/// exceptions might be thrown.
-/// @dev The errors defined here must match the definitions in the corresponding
-/// L1 libraries.
-/// @custom:security-contact security@taiko.xyz
-abstract contract TaikoErrors {
- error L1_ALREADY_CONTESTED();
- error L1_ALREADY_PROVED();
- error L1_BATCH_TRANSFER_FAILED();
- error L1_BLOB_NOT_AVAILABLE();
- error L1_BLOB_NOT_FOUND();
- error L1_BLOCK_MISMATCH();
- error L1_CANNOT_CONTEST();
- error L1_FORK_ERROR();
- error L1_INVALID_BLOCK_ID();
- error L1_INVALID_CONFIG();
- error L1_INVALID_GENESIS_HASH();
- error L1_INVALID_ANCHOR_BLOCK();
- error L1_INVALID_PARAM();
- error L1_INVALID_PAUSE_STATUS();
- error L1_INVALID_PROPOSER();
- error L1_INVALID_TIER();
- error L1_INVALID_TIMESTAMP();
- error L1_INVALID_TRANSITION();
- error L1_LIVENESS_BOND_NOT_RECEIVED();
- error L1_NOT_ASSIGNED_PROVER();
- error L1_NO_HOOKS();
- error L1_PROVING_PAUSED();
- error L1_RECEIVE_DISABLED();
- error L1_TOO_LATE();
- error L1_TOO_MANY_BLOCKS();
- error L1_TRANSITION_ID_ZERO();
- error L1_TRANSITION_NOT_FOUND();
- error L1_UNEXPECTED_PARENT();
- error L1_UNEXPECTED_TRANSITION_ID();
-}
diff --git a/packages/protocol/contracts/L1/TaikoEvents.sol b/packages/protocol/contracts/L1/TaikoEvents.sol
deleted file mode 100644
index f5a327bc02..0000000000
--- a/packages/protocol/contracts/L1/TaikoEvents.sol
+++ /dev/null
@@ -1,114 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity 0.8.24;
-
-import "./TaikoData.sol";
-
-/// @title TaikoEvents
-/// @notice This abstract contract provides event declarations for the Taiko
-/// protocol, which are emitted during block proposal, proof, verification, and
-/// Ethereum deposit processes.
-/// @dev The events defined here must match the definitions in the corresponding
-/// L1 libraries.
-/// @custom:security-contact security@taiko.xyz
-abstract contract TaikoEvents {
- /// @dev Emitted when token is credited back to a user's bond balance.
- event BondCredited(address indexed user, uint256 amount);
-
- /// @dev Emitted when token is debited from a user's bond balance.
- event BondDebited(address indexed user, uint256 amount);
-
- /// @dev Emitted when a block is proposed.
- /// @param blockId The ID of the proposed block.
- /// @param assignedProver The block's assigned prover.
- /// @param livenessBond The bond in Taiko token from the assigned prover.
- /// @param meta The block metadata containing information about the proposed
- /// block.
- /// @param depositsProcessed Ether deposits processed.
- event BlockProposed(
- uint256 indexed blockId,
- address indexed assignedProver,
- uint96 livenessBond,
- TaikoData.BlockMetadata meta,
- TaikoData.EthDeposit[] depositsProcessed
- );
-
- /// @notice Emitted when a block is proposed.
- /// @param blockId The ID of the proposed block.
- /// @param meta The metadata of the proposed block.
- event BlockProposed2(uint256 indexed blockId, TaikoData.BlockMetadata2 meta);
-
- /// @notice Emitted when a block's txList is in the calldata.
- /// @param blockId The ID of the proposed block.
- /// @param txList The txList.
- event CalldataTxList(uint256 indexed blockId, bytes txList);
-
- /// @dev Emitted when a block is verified.
- /// @param blockId The ID of the verified block.
- /// @param prover The prover whose transition is used for verifying the
- /// block.
- /// @param blockHash The hash of the verified block.
- /// @param stateRoot Deprecated and is always zero.
- /// @param tier The tier ID of the proof.
- event BlockVerified(
- uint256 indexed blockId,
- address indexed prover,
- bytes32 blockHash,
- bytes32 stateRoot,
- uint16 tier
- );
-
- /// @notice Emitted when some state variable values changed.
- /// @dev This event is currently used by Taiko node/client for block proposal/proving.
- /// @param slotB The SlotB data structure.
- event StateVariablesUpdated(TaikoData.SlotB slotB);
-
- /// @dev Emitted when a block transition is proved or re-proved.
- /// @param blockId The ID of the proven block.
- /// @param tran The verified transition.
- /// @param prover The prover address.
- /// @param validityBond The validity bond amount.
- /// @param tier The tier ID of the proof.
- event TransitionProved(
- uint256 indexed blockId,
- TaikoData.Transition tran,
- address prover,
- uint96 validityBond,
- uint16 tier
- );
-
- event TransitionProved2(
- uint256 indexed blockId,
- TaikoData.Transition tran,
- address prover,
- uint96 validityBond,
- uint16 tier,
- uint64 proposedIn
- );
-
- /// @dev Emitted when a block transition is contested.
- /// @param blockId The ID of the proven block.
- /// @param tran The verified transition.
- /// @param contester The contester address.
- /// @param contestBond The contesting bond amount.
- /// @param tier The tier ID of the proof.
- event TransitionContested(
- uint256 indexed blockId,
- TaikoData.Transition tran,
- address contester,
- uint96 contestBond,
- uint16 tier
- );
-
- event TransitionContested2(
- uint256 indexed blockId,
- TaikoData.Transition tran,
- address contester,
- uint96 contestBond,
- uint16 tier,
- uint64 proposedIn
- );
-
- /// @dev Emitted when proving has been paused
- /// @param paused True if paused, false if unpaused.
- event ProvingPaused(bool paused);
-}
diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol
index 1675275b24..abc5a4ea7b 100644
--- a/packages/protocol/contracts/L1/TaikoL1.sol
+++ b/packages/protocol/contracts/L1/TaikoL1.sol
@@ -7,8 +7,6 @@ import "./libs/LibProposing.sol";
import "./libs/LibProving.sol";
import "./libs/LibVerifying.sol";
import "./ITaikoL1.sol";
-import "./TaikoErrors.sol";
-import "./TaikoEvents.sol";
/// @title TaikoL1
/// @notice This contract serves as the "base layer contract" of the Taiko protocol, providing
@@ -19,14 +17,22 @@ import "./TaikoEvents.sol";
/// by the Bridge contract.
/// @dev Labeled in AddressResolver as "taiko"
/// @custom:security-contact security@taiko.xyz
-contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents, TaikoErrors {
+contract TaikoL1 is EssentialContract, ITaikoL1 {
/// @notice The TaikoL1 state.
TaikoData.State public state;
uint256[50] private __gap;
+ /// @notice Emitted when some state variable values changed.
+ /// @dev This event is currently used by Taiko node/client for block proposal/proving.
+ /// @param slotB The SlotB data structure.
+ event StateVariablesUpdated(TaikoData.SlotB slotB);
+
+ error L1_FORK_ERROR();
+ error L1_RECEIVE_DISABLED();
+
modifier whenProvingNotPaused() {
- if (state.slotB.provingPaused) revert L1_PROVING_PAUSED();
+ if (state.slotB.provingPaused) revert LibProving.L1_PROVING_PAUSED();
_;
}
diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol
index d88dee288c..30370a7055 100644
--- a/packages/protocol/contracts/L1/libs/LibProposing.sol
+++ b/packages/protocol/contracts/L1/libs/LibProposing.sol
@@ -20,7 +20,6 @@ library LibProposing {
bool postFork;
}
- // Warning: Any events defined here must also be defined in TaikoEvents.sol.
/// @notice Emitted when a block is proposed.
/// @param blockId The ID of the proposed block.
/// @param assignedProver The address of the assigned prover.
@@ -46,7 +45,6 @@ library LibProposing {
/// @param txList The txList.
event CalldataTxList(uint256 indexed blockId, bytes txList);
- // Warning: Any errors defined here must also be defined in TaikoErrors.sol.
error L1_BLOB_NOT_AVAILABLE();
error L1_BLOB_NOT_FOUND();
error L1_INVALID_ANCHOR_BLOCK();
diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol
index 9f8bc81784..d6b6941cef 100644
--- a/packages/protocol/contracts/L1/libs/LibProving.sol
+++ b/packages/protocol/contracts/L1/libs/LibProving.sol
@@ -33,7 +33,6 @@ library LibProving {
uint64 proposedAt;
}
- // Warning: Any events defined here must also be defined in TaikoEvents.sol.
/// @notice Emitted when a transition is proved.
/// @param blockId The block ID.
/// @param tran The transition data.
@@ -84,16 +83,15 @@ library LibProving {
/// @param paused The pause status.
event ProvingPaused(bool paused);
- // Warning: Any errors defined here must also be defined in TaikoErrors.sol.
error L1_ALREADY_CONTESTED();
error L1_ALREADY_PROVED();
error L1_BLOCK_MISMATCH();
error L1_CANNOT_CONTEST();
- error L1_INVALID_BLOCK_ID();
error L1_INVALID_PAUSE_STATUS();
error L1_INVALID_TIER();
error L1_INVALID_TRANSITION();
error L1_NOT_ASSIGNED_PROVER();
+ error L1_PROVING_PAUSED();
/// @notice Pauses or unpauses the proving process.
/// @param _state Current TaikoData.State.
@@ -149,7 +147,7 @@ library LibProving {
meta = LibData.metadataV1toV2(meta1, 0);
}
- if (_blockId != meta.id) revert L1_INVALID_BLOCK_ID();
+ if (_blockId != meta.id) revert LibUtils.L1_INVALID_BLOCK_ID();
// Make sure parentHash is not zero
// To contest an existing transition, simply use any non-zero value as
@@ -160,7 +158,7 @@ library LibProving {
// Check that the block has been proposed but has not yet been verified.
if (meta.id <= local.b.lastVerifiedBlockId || meta.id >= local.b.numBlocks) {
- revert L1_INVALID_BLOCK_ID();
+ revert LibUtils.L1_INVALID_BLOCK_ID();
}
local.slot = meta.id % _config.blockRingBufferSize;
diff --git a/packages/protocol/contracts/L1/libs/LibUtils.sol b/packages/protocol/contracts/L1/libs/LibUtils.sol
index 683c596610..b37159b0b9 100644
--- a/packages/protocol/contracts/L1/libs/LibUtils.sol
+++ b/packages/protocol/contracts/L1/libs/LibUtils.sol
@@ -31,7 +31,6 @@ library LibUtils {
uint16 tier
);
- // Warning: Any errors defined here must also be defined in TaikoErrors.sol.
error L1_BLOCK_MISMATCH();
error L1_INVALID_BLOCK_ID();
error L1_INVALID_GENESIS_HASH();
diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol
index 5a512f9274..63dd2e04fa 100644
--- a/packages/protocol/contracts/L1/libs/LibVerifying.sol
+++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol
@@ -2,8 +2,8 @@
pragma solidity 0.8.24;
import "../../signal/ISignalService.sol";
-import "./LibUtils.sol";
import "./LibBonds.sol";
+import "./LibUtils.sol";
/// @title LibVerifying
/// @notice A library for handling block verification in the Taiko protocol.
@@ -27,7 +27,6 @@ library LibVerifying {
ITierRouter tierRouter;
}
- // Warning: Any errors defined here must also be defined in TaikoErrors.sol.
error L1_BLOCK_MISMATCH();
error L1_INVALID_CONFIG();
error L1_TRANSITION_ID_ZERO();
diff --git a/packages/protocol/contracts/tko/TaikoToken.sol b/packages/protocol/contracts/tko/TaikoToken.sol
index dd275d79f5..7bb9d38086 100644
--- a/packages/protocol/contracts/tko/TaikoToken.sol
+++ b/packages/protocol/contracts/tko/TaikoToken.sol
@@ -27,28 +27,4 @@ contract TaikoToken is TaikoTokenBase {
// Mint 1 billion tokens
_mint(_recipient, 1_000_000_000 ether);
}
-
- /// @notice Batch transfers tokens
- /// @param recipients The list of addresses to transfer tokens to.
- /// @param amounts The list of amounts for transfer.
- /// @return true if the transfer is successful.
- function batchTransfer(
- address[] calldata recipients,
- uint256[] calldata amounts
- )
- external
- returns (bool)
- {
- if (recipients.length != amounts.length) revert TT_INVALID_PARAM();
- for (uint256 i; i < recipients.length; ++i) {
- _transfer(msg.sender, recipients[i], amounts[i]);
- }
- return true;
- }
-
- function delegates(address account) public view virtual override returns (address) {
- // Special checks to avoid reading from storage slots
- if (account == _TAIKO_L1 || account == _ERC20_VAULT) return address(0);
- else return super.delegates(account);
- }
}
diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol
index 5c2f36f2bb..30942d3222 100644
--- a/packages/protocol/test/L1/TaikoL1.t.sol
+++ b/packages/protocol/test/L1/TaikoL1.t.sol
@@ -155,7 +155,7 @@ contract TaikoL1Test is TaikoL1TestBase {
secondTransitionHash,
stateRoot,
meta.minTier,
- TaikoErrors.L1_NOT_ASSIGNED_PROVER.selector
+ LibProving.L1_NOT_ASSIGNED_PROVER.selector
);
// Only guardian or assigned prover is allowed
@@ -204,7 +204,7 @@ contract TaikoL1Test is TaikoL1TestBase {
bytes32("01"),
bytes32("02"),
meta.minTier,
- TaikoErrors.L1_PROVING_PAUSED.selector
+ LibProving.L1_PROVING_PAUSED.selector
);
}
diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol
index 9336742399..77351fa6c8 100644
--- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol
+++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol
@@ -71,7 +71,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase {
blockHash,
stateRoot,
meta.minTier,
- TaikoErrors.L1_ALREADY_PROVED.selector
+ LibProving.L1_ALREADY_PROVED.selector
);
vm.roll(block.number + 15 * 12);
@@ -264,7 +264,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase {
0,
stateRoot,
LibTiers.TIER_GUARDIAN,
- TaikoErrors.L1_INVALID_TRANSITION.selector
+ LibProving.L1_INVALID_TRANSITION.selector
);
}
@@ -304,7 +304,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase {
blockHash,
stateRoot,
meta.minTier,
- TaikoErrors.L1_NOT_ASSIGNED_PROVER.selector
+ LibProving.L1_NOT_ASSIGNED_PROVER.selector
);
vm.roll(block.number + 15 * 12);
@@ -397,7 +397,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase {
0,
stateRoot,
LibTiers.TIER_GUARDIAN,
- TaikoErrors.L1_INVALID_TRANSITION.selector
+ LibProving.L1_INVALID_TRANSITION.selector
);
vm.roll(block.number + 15 * 12);
@@ -451,7 +451,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase {
blockHash,
stateRoot,
LibTiers.TIER_GUARDIAN,
- TaikoErrors.L1_ALREADY_PROVED.selector
+ LibProving.L1_ALREADY_PROVED.selector
);
}
blockHash = bytes32(1_000_000 + blockId + 200);
@@ -494,7 +494,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase {
blockHash,
stateRoot,
LibTiers.TIER_SGX,
- TaikoErrors.L1_INVALID_BLOCK_ID.selector
+ LibUtils.L1_INVALID_BLOCK_ID.selector
);
parentHash = blockHash;
@@ -531,7 +531,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase {
blockHash,
stateRoot,
LibTiers.TIER_SGX,
- TaikoErrors.L1_BLOCK_MISMATCH.selector
+ LibUtils.L1_BLOCK_MISMATCH.selector
);
parentHash = blockHash;
@@ -568,7 +568,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase {
stateRoot,
stateRoot,
LibTiers.TIER_SGX,
- TaikoErrors.L1_INVALID_TIER.selector
+ LibProving.L1_INVALID_TIER.selector
);
vm.roll(block.number + 15 * 12);
@@ -606,7 +606,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase {
blockHash,
stateRoot,
LibTiers.TIER_SGX,
- TaikoErrors.L1_INVALID_TIER.selector
+ LibProving.L1_INVALID_TIER.selector
);
printVariables("");
diff --git a/packages/protocol/test/L1/TaikoL1TestGroup1.t.sol b/packages/protocol/test/L1/TaikoL1TestGroup1.t.sol
index 6f36f4a4d4..3aa82a5773 100644
--- a/packages/protocol/test/L1/TaikoL1TestGroup1.t.sol
+++ b/packages/protocol/test/L1/TaikoL1TestGroup1.t.sol
@@ -50,7 +50,7 @@ contract TaikoL1TestGroup1 is TaikoL1TestGroupBase {
blockHash,
stateRoot,
meta.minTier,
- TaikoErrors.L1_NOT_ASSIGNED_PROVER.selector
+ LibProving.L1_NOT_ASSIGNED_PROVER.selector
);
console2.log("====== Alice proves the block");
diff --git a/packages/protocol/test/L1/TaikoL1TestGroup5.t.sol b/packages/protocol/test/L1/TaikoL1TestGroup5.t.sol
index df449095b8..f9b6311e3c 100644
--- a/packages/protocol/test/L1/TaikoL1TestGroup5.t.sol
+++ b/packages/protocol/test/L1/TaikoL1TestGroup5.t.sol
@@ -58,7 +58,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase {
blockHash,
stateRoot,
LibTiers.TIER_GUARDIAN,
- TaikoErrors.L1_ALREADY_PROVED.selector
+ LibProving.L1_ALREADY_PROVED.selector
);
console2.log("====== Guardian re-approve with a different transition");
@@ -97,7 +97,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase {
blockHash,
stateRoot,
LibTiers.TIER_SGX,
- TaikoErrors.L1_INVALID_TIER.selector
+ LibProving.L1_INVALID_TIER.selector
);
console2.log("====== Verify the block");
@@ -157,7 +157,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase {
blockHash,
stateRoot,
LibTiers.TIER_GUARDIAN,
- TaikoErrors.L1_ALREADY_PROVED.selector
+ LibProving.L1_ALREADY_PROVED.selector
);
console2.log("====== Guardian re-approve with a different transition");
@@ -247,7 +247,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase {
blockHash,
stateRoot,
LibTiers.TIER_GUARDIAN,
- TaikoErrors.L1_ALREADY_PROVED.selector
+ LibProving.L1_ALREADY_PROVED.selector
);
console2.log("====== Guardian re-approve with a different transition");
diff --git a/packages/protocol/test/L1/TaikoL1TestGroup7.t.sol b/packages/protocol/test/L1/TaikoL1TestGroup7.t.sol
index 9bf9c1570b..7e48985ea9 100644
--- a/packages/protocol/test/L1/TaikoL1TestGroup7.t.sol
+++ b/packages/protocol/test/L1/TaikoL1TestGroup7.t.sol
@@ -36,7 +36,7 @@ contract TaikoL1TestGroup7 is TaikoL1TestGroupBase {
blockHash2,
stateRoot2,
meta.minTier,
- TaikoErrors.L1_CANNOT_CONTEST.selector
+ LibProving.L1_CANNOT_CONTEST.selector
);
printBlockAndTrans(meta.id);
}
@@ -79,7 +79,7 @@ contract TaikoL1TestGroup7 is TaikoL1TestGroupBase {
blockHash3,
stateRoot3,
meta.minTier,
- TaikoErrors.L1_ALREADY_CONTESTED.selector
+ LibProving.L1_ALREADY_CONTESTED.selector
);
printBlockAndTrans(meta.id);
diff --git a/packages/protocol/test/L1/TaikoL1TestGroup8.t.sol b/packages/protocol/test/L1/TaikoL1TestGroup8.t.sol
index 57916bff58..7c71c246c3 100644
--- a/packages/protocol/test/L1/TaikoL1TestGroup8.t.sol
+++ b/packages/protocol/test/L1/TaikoL1TestGroup8.t.sol
@@ -87,7 +87,7 @@ contract TaikoL1TestGroup8 is TaikoL1TestGroupBase {
blockHash,
stateRoot,
meta.minTier,
- TaikoErrors.L1_PROVING_PAUSED.selector
+ LibProving.L1_PROVING_PAUSED.selector
);
console2.log("====== Alice tries to propose another block after L1 proving paused");
@@ -106,16 +106,16 @@ contract TaikoL1TestGroup8 is TaikoL1TestGroupBase {
// 1. Gets a block that doesn't exist
// 2. Gets a transition by ID & hash that doesn't exist.
function test_taikoL1_group_8_case_3() external {
- vm.expectRevert(TaikoErrors.L1_INVALID_BLOCK_ID.selector);
+ vm.expectRevert(LibUtils.L1_INVALID_BLOCK_ID.selector);
L1.getBlock(2);
- vm.expectRevert(TaikoErrors.L1_TRANSITION_NOT_FOUND.selector);
+ vm.expectRevert(LibUtils.L1_TRANSITION_NOT_FOUND.selector);
L1.getTransition(0, 2);
- vm.expectRevert(TaikoErrors.L1_TRANSITION_NOT_FOUND.selector);
+ vm.expectRevert(LibUtils.L1_TRANSITION_NOT_FOUND.selector);
L1.getTransition(0, randBytes32());
- vm.expectRevert(TaikoErrors.L1_INVALID_BLOCK_ID.selector);
+ vm.expectRevert(LibUtils.L1_INVALID_BLOCK_ID.selector);
L1.getTransition(3, randBytes32());
}
}
diff --git a/packages/protocol/test/L1/TaikoL1TestGroup9.t.sol b/packages/protocol/test/L1/TaikoL1TestGroup9.t.sol
index 16bd04a3f5..a7bf18acab 100644
--- a/packages/protocol/test/L1/TaikoL1TestGroup9.t.sol
+++ b/packages/protocol/test/L1/TaikoL1TestGroup9.t.sol
@@ -80,7 +80,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase {
blockHash,
stateRoot,
LibTiers.TIER_GUARDIAN,
- TaikoErrors.L1_ALREADY_PROVED.selector
+ LibProving.L1_ALREADY_PROVED.selector
);
console2.log("====== Guardian re-approve with a different transition");
@@ -120,7 +120,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase {
blockHash,
stateRoot,
LibTiers.TIER_SGX,
- TaikoErrors.L1_INVALID_TIER.selector
+ LibProving.L1_INVALID_TIER.selector
);
console2.log("====== Verify the block");
@@ -181,7 +181,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase {
blockHash,
stateRoot,
LibTiers.TIER_GUARDIAN,
- TaikoErrors.L1_ALREADY_PROVED.selector
+ LibProving.L1_ALREADY_PROVED.selector
);
console2.log("====== Guardian re-approve with a different transition");
@@ -273,7 +273,7 @@ contract TaikoL1TestGroup5 is TaikoL1TestGroupBase {
blockHash,
stateRoot,
LibTiers.TIER_GUARDIAN,
- TaikoErrors.L1_ALREADY_PROVED.selector
+ LibProving.L1_ALREADY_PROVED.selector
);
console2.log("====== Guardian re-approve with a different transition");
diff --git a/packages/protocol/test/L1/TaikoL1testGroupA2.t.sol b/packages/protocol/test/L1/TaikoL1testGroupA2.t.sol
index 4e2d7d707c..b0bd9e06c7 100644
--- a/packages/protocol/test/L1/TaikoL1testGroupA2.t.sol
+++ b/packages/protocol/test/L1/TaikoL1testGroupA2.t.sol
@@ -35,7 +35,7 @@ contract TaikoL1TestGroupA2 is TaikoL1TestGroupBase {
bytes32 parentHash = GENESIS_BLOCK_HASH;
- proposeBlock(Alice, TaikoErrors.L1_FORK_ERROR.selector);
+ proposeBlock(Alice, TaikoL1.L1_FORK_ERROR.selector);
TaikoData.BlockParams2 memory params;
for (uint64 i = 1; i <= 5; ++i) {
diff --git a/packages/taiko-client/bindings/.githead b/packages/taiko-client/bindings/.githead
index b377ffaf36..24aa8a1e24 100644
--- a/packages/taiko-client/bindings/.githead
+++ b/packages/taiko-client/bindings/.githead
@@ -1 +1 @@
-3c95477a284ac94c7e3ce85c9cefdadc1aaacd06
+c370c7e0976bbe1160b074be665d751410367d16
diff --git a/packages/taiko-client/bindings/gen_lib_proving.go b/packages/taiko-client/bindings/gen_lib_proving.go
index a95a8249d9..c524754cb3 100644
--- a/packages/taiko-client/bindings/gen_lib_proving.go
+++ b/packages/taiko-client/bindings/gen_lib_proving.go
@@ -31,7 +31,7 @@ var (
// LibProvingMetaData contains all meta data concerning the LibProving contract.
var LibProvingMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]}]",
+ ABI: "[{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]}]",
}
// LibProvingABI is the input ABI used to generate the binding from.
diff --git a/packages/taiko-client/bindings/gen_lib_verifying.go b/packages/taiko-client/bindings/gen_lib_verifying.go
index f3733c15a2..72fb0caabd 100644
--- a/packages/taiko-client/bindings/gen_lib_verifying.go
+++ b/packages/taiko-client/bindings/gen_lib_verifying.go
@@ -31,7 +31,7 @@ var (
// LibVerifyingMetaData contains all meta data concerning the LibVerifying contract.
var LibVerifyingMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"error\",\"name\":\"L1_BATCH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CONFIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_LATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]}]",
+ ABI: "[{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CONFIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_LATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]}]",
}
// LibVerifyingABI is the input ABI used to generate the binding from.
diff --git a/packages/taiko-client/bindings/gen_prover_set.go b/packages/taiko-client/bindings/gen_prover_set.go
index 101607c964..ea5212f4c1 100644
--- a/packages/taiko-client/bindings/gen_prover_set.go
+++ b/packages/taiko-client/bindings/gen_prover_set.go
@@ -31,7 +31,7 @@ var (
// ProverSetMetaData contains all meta data concerning the ProverSet contract.
var ProverSetMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"admin\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approveAllowance\",\"inputs\":[{\"name\":\"_address\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"_delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableProver\",\"inputs\":[{\"name\":\"_prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_isProver\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isProver\",\"inputs\":[{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"isProver\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isValidSignature\",\"inputs\":[{\"name\":\"_hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"magicValue_\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdrawToAdmin\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProverEnabled\",\"inputs\":[{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"enabled\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]",
+ ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"admin\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approveAllowance\",\"inputs\":[{\"name\":\"_address\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_allowance\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"_delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableProver\",\"inputs\":[{\"name\":\"_prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_isProver\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_admin\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isProver\",\"inputs\":[{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"isProver\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isValidSignature\",\"inputs\":[{\"name\":\"_hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"magicValue_\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawToAdmin\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProverEnabled\",\"inputs\":[{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"enabled\",\"type\":\"bool\",\"indexed\":true,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PERMISSION_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]",
}
// ProverSetABI is the input ABI used to generate the binding from.
@@ -646,6 +646,27 @@ func (_ProverSet *ProverSetTransactorSession) Delegate(_delegatee common.Address
return _ProverSet.Contract.Delegate(&_ProverSet.TransactOpts, _delegatee)
}
+// DepositBond is a paid mutator transaction binding the contract method 0x4dcb05f9.
+//
+// Solidity: function depositBond(uint256 _amount) returns()
+func (_ProverSet *ProverSetTransactor) DepositBond(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) {
+ return _ProverSet.contract.Transact(opts, "depositBond", _amount)
+}
+
+// DepositBond is a paid mutator transaction binding the contract method 0x4dcb05f9.
+//
+// Solidity: function depositBond(uint256 _amount) returns()
+func (_ProverSet *ProverSetSession) DepositBond(_amount *big.Int) (*types.Transaction, error) {
+ return _ProverSet.Contract.DepositBond(&_ProverSet.TransactOpts, _amount)
+}
+
+// DepositBond is a paid mutator transaction binding the contract method 0x4dcb05f9.
+//
+// Solidity: function depositBond(uint256 _amount) returns()
+func (_ProverSet *ProverSetTransactorSession) DepositBond(_amount *big.Int) (*types.Transaction, error) {
+ return _ProverSet.Contract.DepositBond(&_ProverSet.TransactOpts, _amount)
+}
+
// EnableProver is a paid mutator transaction binding the contract method 0xcb4cd0a4.
//
// Solidity: function enableProver(address _prover, bool _isProver) returns()
@@ -856,6 +877,27 @@ func (_ProverSet *ProverSetTransactorSession) UpgradeToAndCall(newImplementation
return _ProverSet.Contract.UpgradeToAndCall(&_ProverSet.TransactOpts, newImplementation, data)
}
+// WithdrawBond is a paid mutator transaction binding the contract method 0xc3daab96.
+//
+// Solidity: function withdrawBond(uint256 _amount) returns()
+func (_ProverSet *ProverSetTransactor) WithdrawBond(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) {
+ return _ProverSet.contract.Transact(opts, "withdrawBond", _amount)
+}
+
+// WithdrawBond is a paid mutator transaction binding the contract method 0xc3daab96.
+//
+// Solidity: function withdrawBond(uint256 _amount) returns()
+func (_ProverSet *ProverSetSession) WithdrawBond(_amount *big.Int) (*types.Transaction, error) {
+ return _ProverSet.Contract.WithdrawBond(&_ProverSet.TransactOpts, _amount)
+}
+
+// WithdrawBond is a paid mutator transaction binding the contract method 0xc3daab96.
+//
+// Solidity: function withdrawBond(uint256 _amount) returns()
+func (_ProverSet *ProverSetTransactorSession) WithdrawBond(_amount *big.Int) (*types.Transaction, error) {
+ return _ProverSet.Contract.WithdrawBond(&_ProverSet.TransactOpts, _amount)
+}
+
// WithdrawToAdmin is a paid mutator transaction binding the contract method 0x8bd809fd.
//
// Solidity: function withdrawToAdmin(uint256 _amount) returns()
diff --git a/packages/taiko-client/bindings/gen_taiko_l1.go b/packages/taiko-client/bindings/gen_taiko_l1.go
index ab667d0570..7f3a2e1c72 100644
--- a/packages/taiko-client/bindings/gen_taiko_l1.go
+++ b/packages/taiko-client/bindings/gen_taiko_l1.go
@@ -121,7 +121,7 @@ type TaikoDataTransitionState struct {
// TaikoL1ClientMetaData contains all meta data concerning the TaikoL1Client contract.
var TaikoL1ClientMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"checkEOAForCalldataDA\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"deposits_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BATCH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BATCH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_CONFIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_LIVENESS_BOND_NOT_RECEIVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NO_HOOKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_RECEIVE_DISABLED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_LATE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]",
+ ABI: "[{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bondBalanceOf\",\"inputs\":[{\"name\":\"_user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"depositBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"blk_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Block\",\"components\":[{\"name\":\"metaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"proposedIn\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nextTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"verifiedTransitionId\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.Config\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxProposals\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockRingBufferSize\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"checkEOAForCalldataDA\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getLastSyncedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastVerifiedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"blockId_\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blockHash_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateVariables\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_tid\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransition\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.TransitionState\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"prover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"contester\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reserved1\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addressManager\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toPause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init2\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseProving\",\"inputs\":[{\"name\":\"_pause\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeBlock\",\"inputs\":[{\"name\":\"_params\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_txList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"meta_\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"deposits_\",\"type\":\"tuple[]\",\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"proveBlock\",\"inputs\":[{\"name\":\"_blockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[],\"outputs\":[{\"name\":\"__reserve1\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"slotA\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotA\",\"components\":[{\"name\":\"genesisHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"genesisTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSyncedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastSynecdAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"slotB\",\"type\":\"tuple\",\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"verifyBlocks\",\"inputs\":[{\"name\":\"_maxBlocksToVerify\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawBond\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockProposed\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"assignedProver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"livenessBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"meta\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"components\":[{\"name\":\"l1Hash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"difficulty\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blobHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extraData\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"depositsHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"coinbase\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"gasLimit\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"l1Height\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minTier\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"blobUsed\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"parentMetaHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"depositsProcessed\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"components\":[{\"name\":\"recipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BlockVerified\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondCredited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BondDebited\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CalldataTxList\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"txList\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProvingPaused\",\"inputs\":[{\"name\":\"paused\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateVariablesUpdated\",\"inputs\":[{\"name\":\"slotB\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.SlotB\",\"components\":[{\"name\":\"numBlocks\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"provingPaused\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"__reservedB1\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"__reservedB2\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"__reservedB3\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"lastUnpausedAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionContested\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"contester\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"contestBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransitionProved\",\"inputs\":[{\"name\":\"blockId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"tran\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"components\":[{\"name\":\"parentHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"graffiti\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"prover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"validityBond\",\"type\":\"uint96\",\"indexed\":false,\"internalType\":\"uint96\"},{\"name\":\"tier\",\"type\":\"uint16\",\"indexed\":false,\"internalType\":\"uint16\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ETH_TRANSFER_FAILED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_CONTESTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_ALREADY_PROVED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_AVAILABLE\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOB_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_BLOCK_MISMATCH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_CANNOT_CONTEST\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_BLOCK_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_GENESIS_HASH\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_SIG\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TIER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_INVALID_TRANSITION\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_PROVING_PAUSED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_RECEIVE_DISABLED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TOO_MANY_BLOCKS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_ID_ZERO\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_TRANSITION_NOT_FOUND\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_PARENT\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]",
}
// TaikoL1ClientABI is the input ABI used to generate the binding from.
@@ -301,6 +301,37 @@ func (_TaikoL1Client *TaikoL1ClientCallerSession) AddressManager() (common.Addre
return _TaikoL1Client.Contract.AddressManager(&_TaikoL1Client.CallOpts)
}
+// BondBalanceOf is a free data retrieval call binding the contract method 0xa9c2c835.
+//
+// Solidity: function bondBalanceOf(address _user) view returns(uint256)
+func (_TaikoL1Client *TaikoL1ClientCaller) BondBalanceOf(opts *bind.CallOpts, _user common.Address) (*big.Int, error) {
+ var out []interface{}
+ err := _TaikoL1Client.contract.Call(opts, &out, "bondBalanceOf", _user)
+
+ if err != nil {
+ return *new(*big.Int), err
+ }
+
+ out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
+
+ return out0, err
+
+}
+
+// BondBalanceOf is a free data retrieval call binding the contract method 0xa9c2c835.
+//
+// Solidity: function bondBalanceOf(address _user) view returns(uint256)
+func (_TaikoL1Client *TaikoL1ClientSession) BondBalanceOf(_user common.Address) (*big.Int, error) {
+ return _TaikoL1Client.Contract.BondBalanceOf(&_TaikoL1Client.CallOpts, _user)
+}
+
+// BondBalanceOf is a free data retrieval call binding the contract method 0xa9c2c835.
+//
+// Solidity: function bondBalanceOf(address _user) view returns(uint256)
+func (_TaikoL1Client *TaikoL1ClientCallerSession) BondBalanceOf(_user common.Address) (*big.Int, error) {
+ return _TaikoL1Client.Contract.BondBalanceOf(&_TaikoL1Client.CallOpts, _user)
+}
+
// GetBlock is a free data retrieval call binding the contract method 0x5fa15e79.
//
// Solidity: function getBlock(uint64 _blockId) view returns((bytes32,address,uint96,uint64,uint64,uint64,uint32,uint32) blk_)
@@ -907,6 +938,27 @@ func (_TaikoL1Client *TaikoL1ClientTransactorSession) AcceptOwnership() (*types.
return _TaikoL1Client.Contract.AcceptOwnership(&_TaikoL1Client.TransactOpts)
}
+// DepositBond is a paid mutator transaction binding the contract method 0x4dcb05f9.
+//
+// Solidity: function depositBond(uint256 _amount) returns()
+func (_TaikoL1Client *TaikoL1ClientTransactor) DepositBond(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) {
+ return _TaikoL1Client.contract.Transact(opts, "depositBond", _amount)
+}
+
+// DepositBond is a paid mutator transaction binding the contract method 0x4dcb05f9.
+//
+// Solidity: function depositBond(uint256 _amount) returns()
+func (_TaikoL1Client *TaikoL1ClientSession) DepositBond(_amount *big.Int) (*types.Transaction, error) {
+ return _TaikoL1Client.Contract.DepositBond(&_TaikoL1Client.TransactOpts, _amount)
+}
+
+// DepositBond is a paid mutator transaction binding the contract method 0x4dcb05f9.
+//
+// Solidity: function depositBond(uint256 _amount) returns()
+func (_TaikoL1Client *TaikoL1ClientTransactorSession) DepositBond(_amount *big.Int) (*types.Transaction, error) {
+ return _TaikoL1Client.Contract.DepositBond(&_TaikoL1Client.TransactOpts, _amount)
+}
+
// Init is a paid mutator transaction binding the contract method 0x29d1b62f.
//
// Solidity: function init(address _owner, address _addressManager, bytes32 _genesisBlockHash, bool _toPause) returns()
@@ -1159,6 +1211,27 @@ func (_TaikoL1Client *TaikoL1ClientTransactorSession) VerifyBlocks(_maxBlocksToV
return _TaikoL1Client.Contract.VerifyBlocks(&_TaikoL1Client.TransactOpts, _maxBlocksToVerify)
}
+// WithdrawBond is a paid mutator transaction binding the contract method 0xc3daab96.
+//
+// Solidity: function withdrawBond(uint256 _amount) returns()
+func (_TaikoL1Client *TaikoL1ClientTransactor) WithdrawBond(opts *bind.TransactOpts, _amount *big.Int) (*types.Transaction, error) {
+ return _TaikoL1Client.contract.Transact(opts, "withdrawBond", _amount)
+}
+
+// WithdrawBond is a paid mutator transaction binding the contract method 0xc3daab96.
+//
+// Solidity: function withdrawBond(uint256 _amount) returns()
+func (_TaikoL1Client *TaikoL1ClientSession) WithdrawBond(_amount *big.Int) (*types.Transaction, error) {
+ return _TaikoL1Client.Contract.WithdrawBond(&_TaikoL1Client.TransactOpts, _amount)
+}
+
+// WithdrawBond is a paid mutator transaction binding the contract method 0xc3daab96.
+//
+// Solidity: function withdrawBond(uint256 _amount) returns()
+func (_TaikoL1Client *TaikoL1ClientTransactorSession) WithdrawBond(_amount *big.Int) (*types.Transaction, error) {
+ return _TaikoL1Client.Contract.WithdrawBond(&_TaikoL1Client.TransactOpts, _amount)
+}
+
// Receive is a paid mutator transaction binding the contract receive function.
//
// Solidity: receive() payable returns()
@@ -1615,162 +1688,6 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBlockProposed(log types.Log) (
return event, nil
}
-// TaikoL1ClientBlockProposed0Iterator is returned from FilterBlockProposed0 and is used to iterate over the raw logs and unpacked data for BlockProposed0 events raised by the TaikoL1Client contract.
-type TaikoL1ClientBlockProposed0Iterator struct {
- Event *TaikoL1ClientBlockProposed0 // Event containing the contract specifics and raw log
-
- contract *bind.BoundContract // Generic contract to use for unpacking event data
- event string // Event name to use for unpacking event data
-
- logs chan types.Log // Log channel receiving the found contract events
- sub ethereum.Subscription // Subscription for errors, completion and termination
- done bool // Whether the subscription completed delivering logs
- fail error // Occurred error to stop iteration
-}
-
-// Next advances the iterator to the subsequent event, returning whether there
-// are any more events found. In case of a retrieval or parsing error, false is
-// returned and Error() can be queried for the exact failure.
-func (it *TaikoL1ClientBlockProposed0Iterator) Next() bool {
- // If the iterator failed, stop iterating
- if it.fail != nil {
- return false
- }
- // If the iterator completed, deliver directly whatever's available
- if it.done {
- select {
- case log := <-it.logs:
- it.Event = new(TaikoL1ClientBlockProposed0)
- if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
- it.fail = err
- return false
- }
- it.Event.Raw = log
- return true
-
- default:
- return false
- }
- }
- // Iterator still in progress, wait for either a data or an error event
- select {
- case log := <-it.logs:
- it.Event = new(TaikoL1ClientBlockProposed0)
- if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
- it.fail = err
- return false
- }
- it.Event.Raw = log
- return true
-
- case err := <-it.sub.Err():
- it.done = true
- it.fail = err
- return it.Next()
- }
-}
-
-// Error returns any retrieval or parsing error occurred during filtering.
-func (it *TaikoL1ClientBlockProposed0Iterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *TaikoL1ClientBlockProposed0Iterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// TaikoL1ClientBlockProposed0 represents a BlockProposed0 event raised by the TaikoL1Client contract.
-type TaikoL1ClientBlockProposed0 struct {
- BlockId *big.Int
- AssignedProver common.Address
- LivenessBond *big.Int
- Meta TaikoDataBlockMetadata
- DepositsProcessed []TaikoDataEthDeposit
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterBlockProposed0 is a free log retrieval operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a.
-//
-// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed)
-func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBlockProposed0(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*TaikoL1ClientBlockProposed0Iterator, error) {
-
- var blockIdRule []interface{}
- for _, blockIdItem := range blockId {
- blockIdRule = append(blockIdRule, blockIdItem)
- }
- var assignedProverRule []interface{}
- for _, assignedProverItem := range assignedProver {
- assignedProverRule = append(assignedProverRule, assignedProverItem)
- }
-
- logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BlockProposed0", blockIdRule, assignedProverRule)
- if err != nil {
- return nil, err
- }
- return &TaikoL1ClientBlockProposed0Iterator{contract: _TaikoL1Client.contract, event: "BlockProposed0", logs: logs, sub: sub}, nil
-}
-
-// WatchBlockProposed0 is a free log subscription operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a.
-//
-// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed)
-func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockProposed0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBlockProposed0, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) {
-
- var blockIdRule []interface{}
- for _, blockIdItem := range blockId {
- blockIdRule = append(blockIdRule, blockIdItem)
- }
- var assignedProverRule []interface{}
- for _, assignedProverItem := range assignedProver {
- assignedProverRule = append(assignedProverRule, assignedProverItem)
- }
-
- logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BlockProposed0", blockIdRule, assignedProverRule)
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(TaikoL1ClientBlockProposed0)
- if err := _TaikoL1Client.contract.UnpackLog(event, "BlockProposed0", log); err != nil {
- return err
- }
- event.Raw = log
-
- select {
- case sink <- event:
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- }
- }), nil
-}
-
-// ParseBlockProposed0 is a log parse operation binding the contract event 0xcda4e564245eb15494bc6da29f6a42e1941cf57f5314bf35bab8a1fca0a9c60a.
-//
-// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool,bytes32,address) meta, (address,uint96,uint64)[] depositsProcessed)
-func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBlockProposed0(log types.Log) (*TaikoL1ClientBlockProposed0, error) {
- event := new(TaikoL1ClientBlockProposed0)
- if err := _TaikoL1Client.contract.UnpackLog(event, "BlockProposed0", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
// TaikoL1ClientBlockVerifiedIterator is returned from FilterBlockVerified and is used to iterate over the raw logs and unpacked data for BlockVerified events raised by the TaikoL1Client contract.
type TaikoL1ClientBlockVerifiedIterator struct {
Event *TaikoL1ClientBlockVerified // Event containing the contract specifics and raw log
@@ -1927,9 +1844,9 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBlockVerified(log types.Log) (
return event, nil
}
-// TaikoL1ClientBlockVerified0Iterator is returned from FilterBlockVerified0 and is used to iterate over the raw logs and unpacked data for BlockVerified0 events raised by the TaikoL1Client contract.
-type TaikoL1ClientBlockVerified0Iterator struct {
- Event *TaikoL1ClientBlockVerified0 // Event containing the contract specifics and raw log
+// TaikoL1ClientBondCreditedIterator is returned from FilterBondCredited and is used to iterate over the raw logs and unpacked data for BondCredited events raised by the TaikoL1Client contract.
+type TaikoL1ClientBondCreditedIterator struct {
+ Event *TaikoL1ClientBondCredited // Event containing the contract specifics and raw log
contract *bind.BoundContract // Generic contract to use for unpacking event data
event string // Event name to use for unpacking event data
@@ -1943,7 +1860,7 @@ type TaikoL1ClientBlockVerified0Iterator struct {
// Next advances the iterator to the subsequent event, returning whether there
// are any more events found. In case of a retrieval or parsing error, false is
// returned and Error() can be queried for the exact failure.
-func (it *TaikoL1ClientBlockVerified0Iterator) Next() bool {
+func (it *TaikoL1ClientBondCreditedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -1952,7 +1869,7 @@ func (it *TaikoL1ClientBlockVerified0Iterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(TaikoL1ClientBlockVerified0)
+ it.Event = new(TaikoL1ClientBondCredited)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1967,7 +1884,7 @@ func (it *TaikoL1ClientBlockVerified0Iterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(TaikoL1ClientBlockVerified0)
+ it.Event = new(TaikoL1ClientBondCredited)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -1983,63 +1900,52 @@ func (it *TaikoL1ClientBlockVerified0Iterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *TaikoL1ClientBlockVerified0Iterator) Error() error {
+func (it *TaikoL1ClientBondCreditedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *TaikoL1ClientBlockVerified0Iterator) Close() error {
+func (it *TaikoL1ClientBondCreditedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// TaikoL1ClientBlockVerified0 represents a BlockVerified0 event raised by the TaikoL1Client contract.
-type TaikoL1ClientBlockVerified0 struct {
- BlockId *big.Int
- Prover common.Address
- BlockHash [32]byte
- StateRoot [32]byte
- Tier uint16
- Raw types.Log // Blockchain specific contextual infos
+// TaikoL1ClientBondCredited represents a BondCredited event raised by the TaikoL1Client contract.
+type TaikoL1ClientBondCredited struct {
+ User common.Address
+ Amount *big.Int
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterBlockVerified0 is a free log retrieval operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289.
+// FilterBondCredited is a free log retrieval operation binding the contract event 0x6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab606.
//
-// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier)
-func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBlockVerified0(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1ClientBlockVerified0Iterator, error) {
+// Solidity: event BondCredited(address indexed user, uint256 amount)
+func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBondCredited(opts *bind.FilterOpts, user []common.Address) (*TaikoL1ClientBondCreditedIterator, error) {
- var blockIdRule []interface{}
- for _, blockIdItem := range blockId {
- blockIdRule = append(blockIdRule, blockIdItem)
- }
- var proverRule []interface{}
- for _, proverItem := range prover {
- proverRule = append(proverRule, proverItem)
+ var userRule []interface{}
+ for _, userItem := range user {
+ userRule = append(userRule, userItem)
}
- logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BlockVerified0", blockIdRule, proverRule)
+ logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BondCredited", userRule)
if err != nil {
return nil, err
}
- return &TaikoL1ClientBlockVerified0Iterator{contract: _TaikoL1Client.contract, event: "BlockVerified0", logs: logs, sub: sub}, nil
+ return &TaikoL1ClientBondCreditedIterator{contract: _TaikoL1Client.contract, event: "BondCredited", logs: logs, sub: sub}, nil
}
-// WatchBlockVerified0 is a free log subscription operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289.
+// WatchBondCredited is a free log subscription operation binding the contract event 0x6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab606.
//
-// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier)
-func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerified0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBlockVerified0, blockId []*big.Int, prover []common.Address) (event.Subscription, error) {
+// Solidity: event BondCredited(address indexed user, uint256 amount)
+func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondCredited(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBondCredited, user []common.Address) (event.Subscription, error) {
- var blockIdRule []interface{}
- for _, blockIdItem := range blockId {
- blockIdRule = append(blockIdRule, blockIdItem)
- }
- var proverRule []interface{}
- for _, proverItem := range prover {
- proverRule = append(proverRule, proverItem)
+ var userRule []interface{}
+ for _, userItem := range user {
+ userRule = append(userRule, userItem)
}
- logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BlockVerified0", blockIdRule, proverRule)
+ logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BondCredited", userRule)
if err != nil {
return nil, err
}
@@ -2049,8 +1955,8 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerified0(opts *bind.Watc
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(TaikoL1ClientBlockVerified0)
- if err := _TaikoL1Client.contract.UnpackLog(event, "BlockVerified0", log); err != nil {
+ event := new(TaikoL1ClientBondCredited)
+ if err := _TaikoL1Client.contract.UnpackLog(event, "BondCredited", log); err != nil {
return err
}
event.Raw = log
@@ -2071,21 +1977,21 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBlockVerified0(opts *bind.Watc
}), nil
}
-// ParseBlockVerified0 is a log parse operation binding the contract event 0xdecbd2c61cbda254917d6fd4c980a470701e8f9f1b744f6ad163ca70ca5db289.
+// ParseBondCredited is a log parse operation binding the contract event 0x6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab606.
//
-// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash, bytes32 stateRoot, uint16 tier)
-func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBlockVerified0(log types.Log) (*TaikoL1ClientBlockVerified0, error) {
- event := new(TaikoL1ClientBlockVerified0)
- if err := _TaikoL1Client.contract.UnpackLog(event, "BlockVerified0", log); err != nil {
+// Solidity: event BondCredited(address indexed user, uint256 amount)
+func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondCredited(log types.Log) (*TaikoL1ClientBondCredited, error) {
+ event := new(TaikoL1ClientBondCredited)
+ if err := _TaikoL1Client.contract.UnpackLog(event, "BondCredited", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// TaikoL1ClientCalldataTxListIterator is returned from FilterCalldataTxList and is used to iterate over the raw logs and unpacked data for CalldataTxList events raised by the TaikoL1Client contract.
-type TaikoL1ClientCalldataTxListIterator struct {
- Event *TaikoL1ClientCalldataTxList // Event containing the contract specifics and raw log
+// TaikoL1ClientBondDebitedIterator is returned from FilterBondDebited and is used to iterate over the raw logs and unpacked data for BondDebited events raised by the TaikoL1Client contract.
+type TaikoL1ClientBondDebitedIterator struct {
+ Event *TaikoL1ClientBondDebited // Event containing the contract specifics and raw log
contract *bind.BoundContract // Generic contract to use for unpacking event data
event string // Event name to use for unpacking event data
@@ -2099,7 +2005,7 @@ type TaikoL1ClientCalldataTxListIterator struct {
// Next advances the iterator to the subsequent event, returning whether there
// are any more events found. In case of a retrieval or parsing error, false is
// returned and Error() can be queried for the exact failure.
-func (it *TaikoL1ClientCalldataTxListIterator) Next() bool {
+func (it *TaikoL1ClientBondDebitedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -2108,7 +2014,7 @@ func (it *TaikoL1ClientCalldataTxListIterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(TaikoL1ClientCalldataTxList)
+ it.Event = new(TaikoL1ClientBondDebited)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2123,7 +2029,7 @@ func (it *TaikoL1ClientCalldataTxListIterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(TaikoL1ClientCalldataTxList)
+ it.Event = new(TaikoL1ClientBondDebited)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2139,52 +2045,52 @@ func (it *TaikoL1ClientCalldataTxListIterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *TaikoL1ClientCalldataTxListIterator) Error() error {
+func (it *TaikoL1ClientBondDebitedIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *TaikoL1ClientCalldataTxListIterator) Close() error {
+func (it *TaikoL1ClientBondDebitedIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// TaikoL1ClientCalldataTxList represents a CalldataTxList event raised by the TaikoL1Client contract.
-type TaikoL1ClientCalldataTxList struct {
- BlockId *big.Int
- TxList []byte
- Raw types.Log // Blockchain specific contextual infos
+// TaikoL1ClientBondDebited represents a BondDebited event raised by the TaikoL1Client contract.
+type TaikoL1ClientBondDebited struct {
+ User common.Address
+ Amount *big.Int
+ Raw types.Log // Blockchain specific contextual infos
}
-// FilterCalldataTxList is a free log retrieval operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418.
+// FilterBondDebited is a free log retrieval operation binding the contract event 0x85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c.
//
-// Solidity: event CalldataTxList(uint256 indexed blockId, bytes txList)
-func (_TaikoL1Client *TaikoL1ClientFilterer) FilterCalldataTxList(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1ClientCalldataTxListIterator, error) {
+// Solidity: event BondDebited(address indexed user, uint256 amount)
+func (_TaikoL1Client *TaikoL1ClientFilterer) FilterBondDebited(opts *bind.FilterOpts, user []common.Address) (*TaikoL1ClientBondDebitedIterator, error) {
- var blockIdRule []interface{}
- for _, blockIdItem := range blockId {
- blockIdRule = append(blockIdRule, blockIdItem)
+ var userRule []interface{}
+ for _, userItem := range user {
+ userRule = append(userRule, userItem)
}
- logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "CalldataTxList", blockIdRule)
+ logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "BondDebited", userRule)
if err != nil {
return nil, err
}
- return &TaikoL1ClientCalldataTxListIterator{contract: _TaikoL1Client.contract, event: "CalldataTxList", logs: logs, sub: sub}, nil
+ return &TaikoL1ClientBondDebitedIterator{contract: _TaikoL1Client.contract, event: "BondDebited", logs: logs, sub: sub}, nil
}
-// WatchCalldataTxList is a free log subscription operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418.
+// WatchBondDebited is a free log subscription operation binding the contract event 0x85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c.
//
-// Solidity: event CalldataTxList(uint256 indexed blockId, bytes txList)
-func (_TaikoL1Client *TaikoL1ClientFilterer) WatchCalldataTxList(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientCalldataTxList, blockId []*big.Int) (event.Subscription, error) {
+// Solidity: event BondDebited(address indexed user, uint256 amount)
+func (_TaikoL1Client *TaikoL1ClientFilterer) WatchBondDebited(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientBondDebited, user []common.Address) (event.Subscription, error) {
- var blockIdRule []interface{}
- for _, blockIdItem := range blockId {
- blockIdRule = append(blockIdRule, blockIdItem)
+ var userRule []interface{}
+ for _, userItem := range user {
+ userRule = append(userRule, userItem)
}
- logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "CalldataTxList", blockIdRule)
+ logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "BondDebited", userRule)
if err != nil {
return nil, err
}
@@ -2194,8 +2100,8 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchCalldataTxList(opts *bind.Watc
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(TaikoL1ClientCalldataTxList)
- if err := _TaikoL1Client.contract.UnpackLog(event, "CalldataTxList", log); err != nil {
+ event := new(TaikoL1ClientBondDebited)
+ if err := _TaikoL1Client.contract.UnpackLog(event, "BondDebited", log); err != nil {
return err
}
event.Raw = log
@@ -2216,21 +2122,21 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchCalldataTxList(opts *bind.Watc
}), nil
}
-// ParseCalldataTxList is a log parse operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418.
+// ParseBondDebited is a log parse operation binding the contract event 0x85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c.
//
-// Solidity: event CalldataTxList(uint256 indexed blockId, bytes txList)
-func (_TaikoL1Client *TaikoL1ClientFilterer) ParseCalldataTxList(log types.Log) (*TaikoL1ClientCalldataTxList, error) {
- event := new(TaikoL1ClientCalldataTxList)
- if err := _TaikoL1Client.contract.UnpackLog(event, "CalldataTxList", log); err != nil {
+// Solidity: event BondDebited(address indexed user, uint256 amount)
+func (_TaikoL1Client *TaikoL1ClientFilterer) ParseBondDebited(log types.Log) (*TaikoL1ClientBondDebited, error) {
+ event := new(TaikoL1ClientBondDebited)
+ if err := _TaikoL1Client.contract.UnpackLog(event, "BondDebited", log); err != nil {
return nil, err
}
event.Raw = log
return event, nil
}
-// TaikoL1ClientCalldataTxList0Iterator is returned from FilterCalldataTxList0 and is used to iterate over the raw logs and unpacked data for CalldataTxList0 events raised by the TaikoL1Client contract.
-type TaikoL1ClientCalldataTxList0Iterator struct {
- Event *TaikoL1ClientCalldataTxList0 // Event containing the contract specifics and raw log
+// TaikoL1ClientCalldataTxListIterator is returned from FilterCalldataTxList and is used to iterate over the raw logs and unpacked data for CalldataTxList events raised by the TaikoL1Client contract.
+type TaikoL1ClientCalldataTxListIterator struct {
+ Event *TaikoL1ClientCalldataTxList // Event containing the contract specifics and raw log
contract *bind.BoundContract // Generic contract to use for unpacking event data
event string // Event name to use for unpacking event data
@@ -2244,7 +2150,7 @@ type TaikoL1ClientCalldataTxList0Iterator struct {
// Next advances the iterator to the subsequent event, returning whether there
// are any more events found. In case of a retrieval or parsing error, false is
// returned and Error() can be queried for the exact failure.
-func (it *TaikoL1ClientCalldataTxList0Iterator) Next() bool {
+func (it *TaikoL1ClientCalldataTxListIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -2253,7 +2159,7 @@ func (it *TaikoL1ClientCalldataTxList0Iterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(TaikoL1ClientCalldataTxList0)
+ it.Event = new(TaikoL1ClientCalldataTxList)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2268,7 +2174,7 @@ func (it *TaikoL1ClientCalldataTxList0Iterator) Next() bool {
// Iterator still in progress, wait for either a data or an error event
select {
case log := <-it.logs:
- it.Event = new(TaikoL1ClientCalldataTxList0)
+ it.Event = new(TaikoL1ClientCalldataTxList)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -2284,52 +2190,52 @@ func (it *TaikoL1ClientCalldataTxList0Iterator) Next() bool {
}
// Error returns any retrieval or parsing error occurred during filtering.
-func (it *TaikoL1ClientCalldataTxList0Iterator) Error() error {
+func (it *TaikoL1ClientCalldataTxListIterator) Error() error {
return it.fail
}
// Close terminates the iteration process, releasing any pending underlying
// resources.
-func (it *TaikoL1ClientCalldataTxList0Iterator) Close() error {
+func (it *TaikoL1ClientCalldataTxListIterator) Close() error {
it.sub.Unsubscribe()
return nil
}
-// TaikoL1ClientCalldataTxList0 represents a CalldataTxList0 event raised by the TaikoL1Client contract.
-type TaikoL1ClientCalldataTxList0 struct {
+// TaikoL1ClientCalldataTxList represents a CalldataTxList event raised by the TaikoL1Client contract.
+type TaikoL1ClientCalldataTxList struct {
BlockId *big.Int
TxList []byte
Raw types.Log // Blockchain specific contextual infos
}
-// FilterCalldataTxList0 is a free log retrieval operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418.
+// FilterCalldataTxList is a free log retrieval operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418.
//
// Solidity: event CalldataTxList(uint256 indexed blockId, bytes txList)
-func (_TaikoL1Client *TaikoL1ClientFilterer) FilterCalldataTxList0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1ClientCalldataTxList0Iterator, error) {
+func (_TaikoL1Client *TaikoL1ClientFilterer) FilterCalldataTxList(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1ClientCalldataTxListIterator, error) {
var blockIdRule []interface{}
for _, blockIdItem := range blockId {
blockIdRule = append(blockIdRule, blockIdItem)
}
- logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "CalldataTxList0", blockIdRule)
+ logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "CalldataTxList", blockIdRule)
if err != nil {
return nil, err
}
- return &TaikoL1ClientCalldataTxList0Iterator{contract: _TaikoL1Client.contract, event: "CalldataTxList0", logs: logs, sub: sub}, nil
+ return &TaikoL1ClientCalldataTxListIterator{contract: _TaikoL1Client.contract, event: "CalldataTxList", logs: logs, sub: sub}, nil
}
-// WatchCalldataTxList0 is a free log subscription operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418.
+// WatchCalldataTxList is a free log subscription operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418.
//
// Solidity: event CalldataTxList(uint256 indexed blockId, bytes txList)
-func (_TaikoL1Client *TaikoL1ClientFilterer) WatchCalldataTxList0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientCalldataTxList0, blockId []*big.Int) (event.Subscription, error) {
+func (_TaikoL1Client *TaikoL1ClientFilterer) WatchCalldataTxList(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientCalldataTxList, blockId []*big.Int) (event.Subscription, error) {
var blockIdRule []interface{}
for _, blockIdItem := range blockId {
blockIdRule = append(blockIdRule, blockIdItem)
}
- logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "CalldataTxList0", blockIdRule)
+ logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "CalldataTxList", blockIdRule)
if err != nil {
return nil, err
}
@@ -2339,8 +2245,8 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchCalldataTxList0(opts *bind.Wat
select {
case log := <-logs:
// New log arrived, parse the event and forward to the user
- event := new(TaikoL1ClientCalldataTxList0)
- if err := _TaikoL1Client.contract.UnpackLog(event, "CalldataTxList0", log); err != nil {
+ event := new(TaikoL1ClientCalldataTxList)
+ if err := _TaikoL1Client.contract.UnpackLog(event, "CalldataTxList", log); err != nil {
return err
}
event.Raw = log
@@ -2361,12 +2267,12 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) WatchCalldataTxList0(opts *bind.Wat
}), nil
}
-// ParseCalldataTxList0 is a log parse operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418.
+// ParseCalldataTxList is a log parse operation binding the contract event 0xa07bc5e8f00f6065c8727821591c519efd2348e4ff0c26560a85592e85b6f418.
//
// Solidity: event CalldataTxList(uint256 indexed blockId, bytes txList)
-func (_TaikoL1Client *TaikoL1ClientFilterer) ParseCalldataTxList0(log types.Log) (*TaikoL1ClientCalldataTxList0, error) {
- event := new(TaikoL1ClientCalldataTxList0)
- if err := _TaikoL1Client.contract.UnpackLog(event, "CalldataTxList0", log); err != nil {
+func (_TaikoL1Client *TaikoL1ClientFilterer) ParseCalldataTxList(log types.Log) (*TaikoL1ClientCalldataTxList, error) {
+ event := new(TaikoL1ClientCalldataTxList)
+ if err := _TaikoL1Client.contract.UnpackLog(event, "CalldataTxList", log); err != nil {
return nil, err
}
event.Raw = log
@@ -3081,9 +2987,9 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) ParseProvingPaused(log types.Log) (
return event, nil
}
-// TaikoL1ClientProvingPaused0Iterator is returned from FilterProvingPaused0 and is used to iterate over the raw logs and unpacked data for ProvingPaused0 events raised by the TaikoL1Client contract.
-type TaikoL1ClientProvingPaused0Iterator struct {
- Event *TaikoL1ClientProvingPaused0 // Event containing the contract specifics and raw log
+// TaikoL1ClientStateVariablesUpdatedIterator is returned from FilterStateVariablesUpdated and is used to iterate over the raw logs and unpacked data for StateVariablesUpdated events raised by the TaikoL1Client contract.
+type TaikoL1ClientStateVariablesUpdatedIterator struct {
+ Event *TaikoL1ClientStateVariablesUpdated // Event containing the contract specifics and raw log
contract *bind.BoundContract // Generic contract to use for unpacking event data
event string // Event name to use for unpacking event data
@@ -3097,7 +3003,7 @@ type TaikoL1ClientProvingPaused0Iterator struct {
// Next advances the iterator to the subsequent event, returning whether there
// are any more events found. In case of a retrieval or parsing error, false is
// returned and Error() can be queried for the exact failure.
-func (it *TaikoL1ClientProvingPaused0Iterator) Next() bool {
+func (it *TaikoL1ClientStateVariablesUpdatedIterator) Next() bool {
// If the iterator failed, stop iterating
if it.fail != nil {
return false
@@ -3106,141 +3012,7 @@ func (it *TaikoL1ClientProvingPaused0Iterator) Next() bool {
if it.done {
select {
case log := <-it.logs:
- it.Event = new(TaikoL1ClientProvingPaused0)
- if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
- it.fail = err
- return false
- }
- it.Event.Raw = log
- return true
-
- default:
- return false
- }
- }
- // Iterator still in progress, wait for either a data or an error event
- select {
- case log := <-it.logs:
- it.Event = new(TaikoL1ClientProvingPaused0)
- if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
- it.fail = err
- return false
- }
- it.Event.Raw = log
- return true
-
- case err := <-it.sub.Err():
- it.done = true
- it.fail = err
- return it.Next()
- }
-}
-
-// Error returns any retrieval or parsing error occurred during filtering.
-func (it *TaikoL1ClientProvingPaused0Iterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *TaikoL1ClientProvingPaused0Iterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// TaikoL1ClientProvingPaused0 represents a ProvingPaused0 event raised by the TaikoL1Client contract.
-type TaikoL1ClientProvingPaused0 struct {
- Paused bool
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterProvingPaused0 is a free log retrieval operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b.
-//
-// Solidity: event ProvingPaused(bool paused)
-func (_TaikoL1Client *TaikoL1ClientFilterer) FilterProvingPaused0(opts *bind.FilterOpts) (*TaikoL1ClientProvingPaused0Iterator, error) {
-
- logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "ProvingPaused0")
- if err != nil {
- return nil, err
- }
- return &TaikoL1ClientProvingPaused0Iterator{contract: _TaikoL1Client.contract, event: "ProvingPaused0", logs: logs, sub: sub}, nil
-}
-
-// WatchProvingPaused0 is a free log subscription operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b.
-//
-// Solidity: event ProvingPaused(bool paused)
-func (_TaikoL1Client *TaikoL1ClientFilterer) WatchProvingPaused0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientProvingPaused0) (event.Subscription, error) {
-
- logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "ProvingPaused0")
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(TaikoL1ClientProvingPaused0)
- if err := _TaikoL1Client.contract.UnpackLog(event, "ProvingPaused0", log); err != nil {
- return err
- }
- event.Raw = log
-
- select {
- case sink <- event:
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- }
- }), nil
-}
-
-// ParseProvingPaused0 is a log parse operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b.
-//
-// Solidity: event ProvingPaused(bool paused)
-func (_TaikoL1Client *TaikoL1ClientFilterer) ParseProvingPaused0(log types.Log) (*TaikoL1ClientProvingPaused0, error) {
- event := new(TaikoL1ClientProvingPaused0)
- if err := _TaikoL1Client.contract.UnpackLog(event, "ProvingPaused0", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
-// TaikoL1ClientStateVariablesUpdatedIterator is returned from FilterStateVariablesUpdated and is used to iterate over the raw logs and unpacked data for StateVariablesUpdated events raised by the TaikoL1Client contract.
-type TaikoL1ClientStateVariablesUpdatedIterator struct {
- Event *TaikoL1ClientStateVariablesUpdated // Event containing the contract specifics and raw log
-
- contract *bind.BoundContract // Generic contract to use for unpacking event data
- event string // Event name to use for unpacking event data
-
- logs chan types.Log // Log channel receiving the found contract events
- sub ethereum.Subscription // Subscription for errors, completion and termination
- done bool // Whether the subscription completed delivering logs
- fail error // Occurred error to stop iteration
-}
-
-// Next advances the iterator to the subsequent event, returning whether there
-// are any more events found. In case of a retrieval or parsing error, false is
-// returned and Error() can be queried for the exact failure.
-func (it *TaikoL1ClientStateVariablesUpdatedIterator) Next() bool {
- // If the iterator failed, stop iterating
- if it.fail != nil {
- return false
- }
- // If the iterator completed, deliver directly whatever's available
- if it.done {
- select {
- case log := <-it.logs:
- it.Event = new(TaikoL1ClientStateVariablesUpdated)
+ it.Event = new(TaikoL1ClientStateVariablesUpdated)
if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
it.fail = err
return false
@@ -3497,154 +3269,6 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) ParseTransitionContested(log types.
return event, nil
}
-// TaikoL1ClientTransitionContested0Iterator is returned from FilterTransitionContested0 and is used to iterate over the raw logs and unpacked data for TransitionContested0 events raised by the TaikoL1Client contract.
-type TaikoL1ClientTransitionContested0Iterator struct {
- Event *TaikoL1ClientTransitionContested0 // Event containing the contract specifics and raw log
-
- contract *bind.BoundContract // Generic contract to use for unpacking event data
- event string // Event name to use for unpacking event data
-
- logs chan types.Log // Log channel receiving the found contract events
- sub ethereum.Subscription // Subscription for errors, completion and termination
- done bool // Whether the subscription completed delivering logs
- fail error // Occurred error to stop iteration
-}
-
-// Next advances the iterator to the subsequent event, returning whether there
-// are any more events found. In case of a retrieval or parsing error, false is
-// returned and Error() can be queried for the exact failure.
-func (it *TaikoL1ClientTransitionContested0Iterator) Next() bool {
- // If the iterator failed, stop iterating
- if it.fail != nil {
- return false
- }
- // If the iterator completed, deliver directly whatever's available
- if it.done {
- select {
- case log := <-it.logs:
- it.Event = new(TaikoL1ClientTransitionContested0)
- if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
- it.fail = err
- return false
- }
- it.Event.Raw = log
- return true
-
- default:
- return false
- }
- }
- // Iterator still in progress, wait for either a data or an error event
- select {
- case log := <-it.logs:
- it.Event = new(TaikoL1ClientTransitionContested0)
- if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
- it.fail = err
- return false
- }
- it.Event.Raw = log
- return true
-
- case err := <-it.sub.Err():
- it.done = true
- it.fail = err
- return it.Next()
- }
-}
-
-// Error returns any retrieval or parsing error occurred during filtering.
-func (it *TaikoL1ClientTransitionContested0Iterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *TaikoL1ClientTransitionContested0Iterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// TaikoL1ClientTransitionContested0 represents a TransitionContested0 event raised by the TaikoL1Client contract.
-type TaikoL1ClientTransitionContested0 struct {
- BlockId *big.Int
- Tran TaikoDataTransition
- Contester common.Address
- ContestBond *big.Int
- Tier uint16
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterTransitionContested0 is a free log retrieval operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6.
-//
-// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier)
-func (_TaikoL1Client *TaikoL1ClientFilterer) FilterTransitionContested0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1ClientTransitionContested0Iterator, error) {
-
- var blockIdRule []interface{}
- for _, blockIdItem := range blockId {
- blockIdRule = append(blockIdRule, blockIdItem)
- }
-
- logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "TransitionContested0", blockIdRule)
- if err != nil {
- return nil, err
- }
- return &TaikoL1ClientTransitionContested0Iterator{contract: _TaikoL1Client.contract, event: "TransitionContested0", logs: logs, sub: sub}, nil
-}
-
-// WatchTransitionContested0 is a free log subscription operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6.
-//
-// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier)
-func (_TaikoL1Client *TaikoL1ClientFilterer) WatchTransitionContested0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientTransitionContested0, blockId []*big.Int) (event.Subscription, error) {
-
- var blockIdRule []interface{}
- for _, blockIdItem := range blockId {
- blockIdRule = append(blockIdRule, blockIdItem)
- }
-
- logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "TransitionContested0", blockIdRule)
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(TaikoL1ClientTransitionContested0)
- if err := _TaikoL1Client.contract.UnpackLog(event, "TransitionContested0", log); err != nil {
- return err
- }
- event.Raw = log
-
- select {
- case sink <- event:
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- }
- }), nil
-}
-
-// ParseTransitionContested0 is a log parse operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6.
-//
-// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier)
-func (_TaikoL1Client *TaikoL1ClientFilterer) ParseTransitionContested0(log types.Log) (*TaikoL1ClientTransitionContested0, error) {
- event := new(TaikoL1ClientTransitionContested0)
- if err := _TaikoL1Client.contract.UnpackLog(event, "TransitionContested0", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
// TaikoL1ClientTransitionProvedIterator is returned from FilterTransitionProved and is used to iterate over the raw logs and unpacked data for TransitionProved events raised by the TaikoL1Client contract.
type TaikoL1ClientTransitionProvedIterator struct {
Event *TaikoL1ClientTransitionProved // Event containing the contract specifics and raw log
@@ -3793,154 +3417,6 @@ func (_TaikoL1Client *TaikoL1ClientFilterer) ParseTransitionProved(log types.Log
return event, nil
}
-// TaikoL1ClientTransitionProved0Iterator is returned from FilterTransitionProved0 and is used to iterate over the raw logs and unpacked data for TransitionProved0 events raised by the TaikoL1Client contract.
-type TaikoL1ClientTransitionProved0Iterator struct {
- Event *TaikoL1ClientTransitionProved0 // Event containing the contract specifics and raw log
-
- contract *bind.BoundContract // Generic contract to use for unpacking event data
- event string // Event name to use for unpacking event data
-
- logs chan types.Log // Log channel receiving the found contract events
- sub ethereum.Subscription // Subscription for errors, completion and termination
- done bool // Whether the subscription completed delivering logs
- fail error // Occurred error to stop iteration
-}
-
-// Next advances the iterator to the subsequent event, returning whether there
-// are any more events found. In case of a retrieval or parsing error, false is
-// returned and Error() can be queried for the exact failure.
-func (it *TaikoL1ClientTransitionProved0Iterator) Next() bool {
- // If the iterator failed, stop iterating
- if it.fail != nil {
- return false
- }
- // If the iterator completed, deliver directly whatever's available
- if it.done {
- select {
- case log := <-it.logs:
- it.Event = new(TaikoL1ClientTransitionProved0)
- if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
- it.fail = err
- return false
- }
- it.Event.Raw = log
- return true
-
- default:
- return false
- }
- }
- // Iterator still in progress, wait for either a data or an error event
- select {
- case log := <-it.logs:
- it.Event = new(TaikoL1ClientTransitionProved0)
- if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
- it.fail = err
- return false
- }
- it.Event.Raw = log
- return true
-
- case err := <-it.sub.Err():
- it.done = true
- it.fail = err
- return it.Next()
- }
-}
-
-// Error returns any retrieval or parsing error occurred during filtering.
-func (it *TaikoL1ClientTransitionProved0Iterator) Error() error {
- return it.fail
-}
-
-// Close terminates the iteration process, releasing any pending underlying
-// resources.
-func (it *TaikoL1ClientTransitionProved0Iterator) Close() error {
- it.sub.Unsubscribe()
- return nil
-}
-
-// TaikoL1ClientTransitionProved0 represents a TransitionProved0 event raised by the TaikoL1Client contract.
-type TaikoL1ClientTransitionProved0 struct {
- BlockId *big.Int
- Tran TaikoDataTransition
- Prover common.Address
- ValidityBond *big.Int
- Tier uint16
- Raw types.Log // Blockchain specific contextual infos
-}
-
-// FilterTransitionProved0 is a free log retrieval operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f.
-//
-// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier)
-func (_TaikoL1Client *TaikoL1ClientFilterer) FilterTransitionProved0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1ClientTransitionProved0Iterator, error) {
-
- var blockIdRule []interface{}
- for _, blockIdItem := range blockId {
- blockIdRule = append(blockIdRule, blockIdItem)
- }
-
- logs, sub, err := _TaikoL1Client.contract.FilterLogs(opts, "TransitionProved0", blockIdRule)
- if err != nil {
- return nil, err
- }
- return &TaikoL1ClientTransitionProved0Iterator{contract: _TaikoL1Client.contract, event: "TransitionProved0", logs: logs, sub: sub}, nil
-}
-
-// WatchTransitionProved0 is a free log subscription operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f.
-//
-// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier)
-func (_TaikoL1Client *TaikoL1ClientFilterer) WatchTransitionProved0(opts *bind.WatchOpts, sink chan<- *TaikoL1ClientTransitionProved0, blockId []*big.Int) (event.Subscription, error) {
-
- var blockIdRule []interface{}
- for _, blockIdItem := range blockId {
- blockIdRule = append(blockIdRule, blockIdItem)
- }
-
- logs, sub, err := _TaikoL1Client.contract.WatchLogs(opts, "TransitionProved0", blockIdRule)
- if err != nil {
- return nil, err
- }
- return event.NewSubscription(func(quit <-chan struct{}) error {
- defer sub.Unsubscribe()
- for {
- select {
- case log := <-logs:
- // New log arrived, parse the event and forward to the user
- event := new(TaikoL1ClientTransitionProved0)
- if err := _TaikoL1Client.contract.UnpackLog(event, "TransitionProved0", log); err != nil {
- return err
- }
- event.Raw = log
-
- select {
- case sink <- event:
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- case err := <-sub.Err():
- return err
- case <-quit:
- return nil
- }
- }
- }), nil
-}
-
-// ParseTransitionProved0 is a log parse operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f.
-//
-// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier)
-func (_TaikoL1Client *TaikoL1ClientFilterer) ParseTransitionProved0(log types.Log) (*TaikoL1ClientTransitionProved0, error) {
- event := new(TaikoL1ClientTransitionProved0)
- if err := _TaikoL1Client.contract.UnpackLog(event, "TransitionProved0", log); err != nil {
- return nil, err
- }
- event.Raw = log
- return event, nil
-}
-
// TaikoL1ClientUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the TaikoL1Client contract.
type TaikoL1ClientUnpausedIterator struct {
Event *TaikoL1ClientUnpaused // Event containing the contract specifics and raw log
diff --git a/packages/taiko-client/bindings/gen_taiko_token.go b/packages/taiko-client/bindings/gen_taiko_token.go
index 28754d3b03..f21333ba76 100644
--- a/packages/taiko-client/bindings/gen_taiko_token.go
+++ b/packages/taiko-client/bindings/gen_taiko_token.go
@@ -37,7 +37,7 @@ type ERC20VotesUpgradeableCheckpoint struct {
// TaikoTokenMetaData contains all meta data concerning the TaikoToken contract.
var TaikoTokenMetaData = &bind.MetaData{
- ABI: "[{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchTransfer\",\"inputs\":[{\"name\":\"recipients\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"amounts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"checkpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pos\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structERC20VotesUpgradeable.Checkpoint\",\"components\":[{\"name\":\"fromBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"votes\",\"type\":\"uint224\",\"internalType\":\"uint224\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"clock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint48\",\"internalType\":\"uint48\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateBySig\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegates\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eip712Domain\",\"inputs\":[],\"outputs\":[{\"name\":\"fields\",\"type\":\"bytes1\",\"internalType\":\"bytes1\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extensions\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"inputs\":[{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permit\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateChanged\",\"inputs\":[{\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"previousBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"inputs\":[],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"TT_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]",
+ ABI: "[{\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"acceptOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"addressManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"pos\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structERC20VotesUpgradeable.Checkpoint\",\"components\":[{\"name\":\"fromBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"votes\",\"type\":\"uint224\",\"internalType\":\"uint224\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"clock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint48\",\"internalType\":\"uint48\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegate\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegateBySig\",\"inputs\":[{\"name\":\"delegatee\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegates\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eip712Domain\",\"inputs\":[],\"outputs\":[{\"name\":\"fields\",\"type\":\"bytes1\",\"internalType\":\"bytes1\"},{\"name\":\"name\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"version\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"extensions\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"inputs\":[{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPastVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"timepoint\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getVotes\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"impl\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"inNonReentrant\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"init\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_recipient\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastUnpausedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nonces\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numCheckpoints\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pendingOwner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"permit\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"v\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"proxiableUUID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolve\",\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_allowZeroAddress\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"addresspayable\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateChanged\",\"inputs\":[{\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"inputs\":[{\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"previousBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newBalance\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"inputs\":[],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferStarted\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"FUNC_NOT_IMPLEMENTED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"INVALID_PAUSE_STATUS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"REENTRANT_CALL\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_DENIED\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_INVALID_MANAGER\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"RESOLVER_ZERO_ADDR\",\"inputs\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"name\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"TT_INVALID_PARAM\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_ADDRESS\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ZERO_VALUE\",\"inputs\":[]}]",
}
// TaikoTokenABI is the input ABI used to generate the binding from.
@@ -1104,27 +1104,6 @@ func (_TaikoToken *TaikoTokenTransactorSession) Approve(spender common.Address,
return _TaikoToken.Contract.Approve(&_TaikoToken.TransactOpts, spender, amount)
}
-// BatchTransfer is a paid mutator transaction binding the contract method 0x88d695b2.
-//
-// Solidity: function batchTransfer(address[] recipients, uint256[] amounts) returns(bool)
-func (_TaikoToken *TaikoTokenTransactor) BatchTransfer(opts *bind.TransactOpts, recipients []common.Address, amounts []*big.Int) (*types.Transaction, error) {
- return _TaikoToken.contract.Transact(opts, "batchTransfer", recipients, amounts)
-}
-
-// BatchTransfer is a paid mutator transaction binding the contract method 0x88d695b2.
-//
-// Solidity: function batchTransfer(address[] recipients, uint256[] amounts) returns(bool)
-func (_TaikoToken *TaikoTokenSession) BatchTransfer(recipients []common.Address, amounts []*big.Int) (*types.Transaction, error) {
- return _TaikoToken.Contract.BatchTransfer(&_TaikoToken.TransactOpts, recipients, amounts)
-}
-
-// BatchTransfer is a paid mutator transaction binding the contract method 0x88d695b2.
-//
-// Solidity: function batchTransfer(address[] recipients, uint256[] amounts) returns(bool)
-func (_TaikoToken *TaikoTokenTransactorSession) BatchTransfer(recipients []common.Address, amounts []*big.Int) (*types.Transaction, error) {
- return _TaikoToken.Contract.BatchTransfer(&_TaikoToken.TransactOpts, recipients, amounts)
-}
-
// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
//
// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
diff --git a/packages/taikoon-ui/src/components/Collection/Collection.svelte b/packages/taikoon-ui/src/components/Collection/Collection.svelte
index 8692ed6721..932d922ef3 100644
--- a/packages/taikoon-ui/src/components/Collection/Collection.svelte
+++ b/packages/taikoon-ui/src/components/Collection/Collection.svelte
@@ -2,6 +2,7 @@
import { ResponsiveController } from '@taiko/ui-lib';
import { getContext, onMount } from 'svelte';
+ import { Button } from '$components/core/Button';
import { classNames } from '$lib/util/classNames';
import type { ITaikoonDetail } from '$stores/taikoonDetail';
@@ -10,6 +11,7 @@
import { default as TaikoonDetail } from './TaikoonDetail.svelte';
export let tokenIds: number[] = [];
+
let windowSize: 'sm' | 'md' | 'lg' = 'md';
export let disableClick = false;
@@ -21,10 +23,21 @@
$: selectedTaikoonId = -1;
+ $: visibleTokenIds = [] as number[];
onMount(() => {
onRouteChange();
});
+ $: tokenBatch = 50;
+ $: tokenIds,
+ visibleTokenIds.length === 0 &&
+ (visibleTokenIds = tokenIds.length > tokenBatch ? tokenIds.slice(0, tokenBatch) : tokenIds);
+
+ function loadMore() {
+ const nextBatch = tokenIds.slice(visibleTokenIds.length, visibleTokenIds.length + tokenBatch);
+ visibleTokenIds = [...visibleTokenIds, ...nextBatch];
+ }
+
async function onRouteChange() {
const hash = location.hash;
const taikoonId = parseInt(hash.replace('#', ''));
@@ -48,8 +61,9 @@
+
- {#each tokenIds as tokenId}
+ {#each visibleTokenIds as tokenId}
@@ -57,6 +71,15 @@
{/each}
+
+
+ More
diff --git a/packages/taikoon-ui/src/components/NftRenderer/NftRenderer.svelte b/packages/taikoon-ui/src/components/NftRenderer/NftRenderer.svelte
index 74a8ae7bf0..cef078fb9a 100644
--- a/packages/taikoon-ui/src/components/NftRenderer/NftRenderer.svelte
+++ b/packages/taikoon-ui/src/components/NftRenderer/NftRenderer.svelte
@@ -6,7 +6,6 @@
import { DynamicImage } from '$components/DynamicImage';
import IPFS from '$lib/ipfs';
import { classNames } from '$lib/util/classNames';
- //import { nftCache } from '$stores/nftCache';
import { Theme, theme } from '$stores/theme';
import { Spinner } from '$ui/Spinner';
@@ -18,18 +17,6 @@
async function getTokenUri(id: number) {
if (tokenId <= 0 || Number.isNaN(id)) return '';
- /*
- const cached = $nftCache[id];
- let metadata;
- if (!cached) {
- metadata = await IPFS.getMetadata(id);
- nftCache.set({
- ...$nftCache,
- [id]: JSON.stringify(metadata),
- });
- } else {
- metadata = JSON.parse(cached);
- }*/
const metadata = await IPFS.getMetadata(id);
if (!metadata || !metadata.image) return '';
tokenURI = metadata.image;
diff --git a/packages/taikoon-ui/src/lib/ipfs/getMetadata.ts b/packages/taikoon-ui/src/lib/ipfs/getMetadata.ts
index eb0edcafbf..35df21346e 100644
--- a/packages/taikoon-ui/src/lib/ipfs/getMetadata.ts
+++ b/packages/taikoon-ui/src/lib/ipfs/getMetadata.ts
@@ -1,5 +1,10 @@
+import { get } from 'svelte/store';
+
+import { nftCache } from '$stores/nftCache';
+
import Token from '../token';
-import get from './get';
+import httpGet from './httpGet';
+//import get from './get';
export interface ITokenMetadata {
name: string;
@@ -8,6 +13,20 @@ export interface ITokenMetadata {
}
export default async function getMetadata(tokenId: number): Promise {
const tokenURI = await Token.tokenURI(tokenId);
- const metadata = (await get(tokenURI, true)) as ITokenMetadata;
+ // const metadata = (await get(tokenURI, true)) as ITokenMetadata;
+
+ const cachedIds = get(nftCache);
+ const cached = cachedIds[tokenId];
+ let metadata;
+ if (!cached) {
+ metadata = (await httpGet(tokenURI, true)) as ITokenMetadata;
+ nftCache.set({
+ ...cachedIds,
+ [tokenId]: JSON.stringify(metadata),
+ });
+ } else {
+ metadata = JSON.parse(cached);
+ }
+
return metadata;
}
diff --git a/packages/taikoon-ui/src/lib/ipfs/get.ts b/packages/taikoon-ui/src/lib/ipfs/httpGet.ts
similarity index 52%
rename from packages/taikoon-ui/src/lib/ipfs/get.ts
rename to packages/taikoon-ui/src/lib/ipfs/httpGet.ts
index fd1f7a6d4e..090659e2b3 100644
--- a/packages/taikoon-ui/src/lib/ipfs/get.ts
+++ b/packages/taikoon-ui/src/lib/ipfs/httpGet.ts
@@ -1,4 +1,4 @@
-export default async function get(url: string, json?: boolean): Promise {
+export default async function httpGet(url: string, json?: boolean): Promise {
const response = await fetch(url);
return json ? response.json() : response.text();
}
diff --git a/packages/taikoon-ui/src/lib/ipfs/index.ts b/packages/taikoon-ui/src/lib/ipfs/index.ts
index aaf516e2bb..7d30d458f3 100644
--- a/packages/taikoon-ui/src/lib/ipfs/index.ts
+++ b/packages/taikoon-ui/src/lib/ipfs/index.ts
@@ -1,8 +1,8 @@
-import get from './get';
import getMetadata from './getMetadata';
+import httpGet from './httpGet';
const IPFS = {
- get,
+ get: httpGet,
getMetadata,
};
diff --git a/packages/taikoon-ui/src/lib/wagmi/publicClient.ts b/packages/taikoon-ui/src/lib/wagmi/publicClient.ts
index fca3f71006..4c9f626f7f 100644
--- a/packages/taikoon-ui/src/lib/wagmi/publicClient.ts
+++ b/packages/taikoon-ui/src/lib/wagmi/publicClient.ts
@@ -1,10 +1,10 @@
import { createPublicClient, http } from 'viem';
-import { holesky } from 'viem/chains';
+import { taiko } from 'viem/chains';
export default async function publicClient() {
const client = createPublicClient({
- chain: holesky,
- transport: http('https://1rpc.io/holesky'),
+ chain: taiko,
+ transport: http('https://rpc.mainnet.taiko.xyz'),
});
return client;
}