WBTC

Arbitrum One ERC-20 Token Browse chains

0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f

Proxy implementation: 0x3f770ac673856f105b586bb393d122721265ad46

Solidity v0.6.11+commit.5ef660b1

Fungible token following the ERC-20 standard.

🤖
Query this contract from your AI
Reference: 0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f
Sample prompt: "Tell me the current state of arbitrum/0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f"
No AI wired up yet? → mcp.smarts.md · Browse chains

Admin & Risk

Who can change the rules?

Detected upgradeable controls from the verified ABI.

Upgradeable

Current controls

Implementation
0x3f770ac673856f105b586bb393d122721265ad46 ↗ Arbiscan → smarts proxy

Overview

Read Functions
11
Write Functions
10
Events
3

Read Functions

Block #25,287,186 · just now
DOMAIN_SEPARATOR() view → 0x5a8dcb3325ce248306e60935ba6afde41646fd4e466b684babc515bce77ce7af

Returns the EIP-712 domain separator used for signing typed data.✨ AI

Returns

Name Type Description
bytes32 The domain separator (bytes32) used in EIP-712 typed data hashing for signatures and permits.✨ AI
allowance(owner: address, spender: address) view

Returns the remaining number of tokens that spender is allowed to spend on behalf of owner.✨ AI

dev: See {IERC20-allowance}.

Parameters

Name Type Description
owner address Token holder address whose allowance is being queried.✨ AI
spender address Address approved to spend tokens from the owner.✨ AI

Returns

Name Type Description
uint256 Remaining allowance amount (in the token's smallest unit) that spender may transfer from owner.✨ AI
balanceOf(account: address) view

Returns the token balance of the specified account.✨ AI

dev: See {IERC20-balanceOf}.

Parameters

Name Type Description
account address Address whose token balance will be returned.✨ AI

Returns

Name Type Description
uint256 The number of tokens owned by the account as a uint256.✨ AI
decimals() view → 8

Return the number of decimal places the token uses.✨ AI

dev: Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.

Returns

Name Type Description
uint8 Number of decimal places the token uses (uint8) for displaying balances and amounts.✨ AI
isMaster() view → false

Return whether this contract is the master implementation of the token.✨ AI

Returns

Name Type Description
bool True if this contract is the master implementation; false otherwise.✨ AI
l1Address() view → 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599

Returns the L1 token contract address corresponding to this L2 ERC-20 token.✨ AI

Returns

Name Type Description
address address of layer 1 token
l2Gateway() view → 0x09e9222e96e7b4ae2a407b98d48e330053351eee

Returns the L2 gateway address associated with this token.✨ AI

Returns

Name Type Description
address The address of the L2 gateway contract used for bridging this token.✨ AI
name() view → Wrapped BTC

Returns the name of the token.✨ AI

dev: Returns the name of the token.

Returns

Name Type Description
string The token's descriptive name as a string.✨ AI
nonces(owner: address) view

Return the current permit nonce for the specified owner address.✨ AI

dev: See {IERC20Permit-nonces}.

Parameters

Name Type Description
owner address Address whose permit nonce to retrieve.✨ AI

Returns

Name Type Description
uint256 Current uint256 nonce for the owner, used to validate off-chain permit signatures; increments on successful permit.✨ AI
symbol() view → WBTC

Returns the ERC-20 token symbol used to identify the token in user interfaces.✨ AI

dev: Returns the symbol of the token, usually a shorter version of the name.

Returns

Name Type Description
string The token symbol as a short string (e.g., "ETH"), suitable for display in wallets and user interfaces.✨ AI
totalSupply() view → 7,016.68 WBTC

Returns the total supply of tokens.✨ AI

dev: See {IERC20-totalSupply}.

Returns

Name Type Description
uint256 Total supply as a uint256 denominated in the token's smallest unit (e.g., wei).✨ AI

Write Functions

approve(spender: address, amount: uint256) nonpayable

Approve spender to spend up to amount tokens from your account.✨ AI

dev: See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.

Parameters

Name Type Description
spender address Address approved to spend tokens on caller's behalf.✨ AI
amount uint256 Maximum number of tokens the spender is allowed to transfer.✨ AI

Returns

Name Type Description
bool True if approval succeeded, false otherwise.✨ AI
bridgeBurn(account: address, amount: uint256) nonpayable

Burn tokens on L2.

dev: only the token bridge can call this

Parameters

Name Type Description
account address owner of tokens
amount uint256 amount of tokens burnt
bridgeInit(_l1Address: address, _data: bytes) nonpayable

initialize the token

dev: the L2 bridge assumes this does not fail or revert

Parameters

Name Type Description
_l1Address address L1 address of ERC20
_data bytes encoded symbol/name/decimal data for initial deploy
bridgeMint(account: address, amount: uint256) nonpayable

Mint tokens on L2. Callable path is L1Gateway depositToken (which handles L1 escrow), which triggers L2Gateway, which calls this

Parameters

Name Type Description
account address recipient of tokens
amount uint256 amount of tokens minted
decreaseAllowance(spender: address, subtractedValue: uint256) nonpayable

Decrease the caller's ERC-20 allowance for spender by subtractedValue and return true.✨ AI

dev: Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.

Parameters

Name Type Description
spender address Address which will have its allowance decreased.✨ AI
subtractedValue uint256 Amount of tokens to subtract from the spender's current allowance.✨ AI

Returns

Name Type Description
bool True if the allowance was decreased; reverts if subtractedValue exceeds current allowance and emits Approval.✨ AI
increaseAllowance(spender: address, addedValue: uint256) nonpayable

Increase the caller's ERC-20 allowance for spender by addedValue and return true on success.✨ AI

dev: Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.

Parameters

Name Type Description
spender address Address allowed to spend tokens on behalf of the caller.✨ AI
addedValue uint256 Amount to add to the current allowance, in the token's smallest unit.✨ AI

Returns

Name Type Description
bool True if the allowance was successfully increased.✨ AI
permit(owner: address, spender: address, value: uint256, deadline: uint256, v: uint8, r: bytes32, s: bytes32) nonpayable

Permit spender to spend tokens on owner's behalf using an off-chain signature (EIP-2612).✨ AI

dev: See {IERC20Permit-permit}.

Parameters

Name Type Description
owner address Address granting the allowance.✨ AI
spender address Address receiving the allowance.✨ AI
value uint256 Amount of tokens to approve.✨ AI
deadline uint256 Unix timestamp when the permit expires.✨ AI
v uint8 ECDSA signature parameter v.✨ AI
r bytes32 ECDSA signature parameter r.✨ AI
s bytes32 ECDSA signature parameter s.✨ AI
transfer(recipient: address, amount: uint256) nonpayable

Transfers a specified amount of tokens from the caller to the recipient.✨ AI

dev: See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.

Parameters

Name Type Description
recipient address Address receiving the tokens.✨ AI
amount uint256 Amount of tokens to transfer, expressed in the token's smallest unit.✨ AI

Returns

Name Type Description
bool True if the transfer succeeded.✨ AI
transferAndCall(_to: address, _value: uint256, _data: bytes) nonpayable

Transfers tokens to a recipient and then calls the recipient contract with the provided data.✨ AI

dev: transfer token to a contract address with additional data if the recipient is a contact.

Parameters

Name Type Description
_to address The address to transfer to.
_value uint256 The amount to be transferred.
_data bytes The extra data to be passed to the receiving contract.

Returns

Name Type Description
success bool success: true if the token transfer and the subsequent call to the recipient succeeded, otherwise false.✨ AI
transferFrom(sender: address, recipient: address, amount: uint256) nonpayable

Transfers amount tokens from sender to recipient using the caller's allowance.✨ AI

dev: See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.

Parameters

Name Type Description
sender address Address tokens are taken from.✨ AI
recipient address Address tokens are sent to.✨ AI
amount uint256 Number of tokens to transfer.✨ AI

Returns

Name Type Description
bool True if the transfer succeeded.✨ AI

Events

Approval(owner: address, spender: address, value: uint256)
Name Type Indexed Description
owner address
spender address
value uint256
Transfer(from: address, to: address, value: uint256, data: bytes)
Name Type Indexed Description
from address
to address
value uint256
data bytes
Transfer(from: address, to: address, value: uint256)
Name Type Indexed Description
from address
to address
value uint256