SafeL2

Arbitrum One

0x29fcb43b46531bca003ddc8fcb67ffe91900c762

Solidity v0.7.6+commit.7338295f

🤖
Query this contract from your AI
Reference: 0x29fcb43b46531bca003ddc8fcb67ffe91900c762
Sample prompt: “Tell me the current state of arbitrum/0x29fcb43b46531bca003ddc8fcb67ffe91900c762”
No AI wired up yet? → mcp.smarts.md

Admin & Risk

Who can change the rules?

No admin risk controls detected from the verified ABI.

Overview

Read Functions
16
Write Functions
14
Events
17

Read Functions

Block #25,170,236 · just now
VERSION() view → 1.4.1

Returns

Name Type Description
string
approvedHashes(address, bytes32) view

Parameters

Name Type Description
address
bytes32

Returns

Name Type Description
uint256
checkNSignatures(dataHash: bytes32, data: bytes, signatures: bytes, requiredSignatures: uint256) view

Checks whether the signature provided is valid for the provided data and hash. Reverts otherwise.

dev: Since the EIP-1271 does an external call, be mindful of reentrancy attacks.

Parameters

Name Type Description
dataHash bytes32 Hash of the data (could be either a message hash or transaction hash)
data bytes That should be signed (this is passed to an external validator contract)
signatures bytes Signature data that should be verified. Can be packed ECDSA signature ({bytes32 r}{bytes32 s}{uint8 v}), contract signature (EIP-1271) or approved hash.
requiredSignatures uint256 Amount of required valid signatures.
checkSignatures(dataHash: bytes32, data: bytes, signatures: bytes) view

Checks whether the signature provided is valid for the provided data and hash. Reverts otherwise.

Parameters

Name Type Description
dataHash bytes32 Hash of the data (could be either a message hash or transaction hash)
data bytes That should be signed (this is passed to an external validator contract)
signatures bytes Signature data that should be verified. Can be packed ECDSA signature ({bytes32 r}{bytes32 s}{uint8 v}), contract signature (EIP-1271) or approved hash.
domainSeparator() view → 0x14bc710f219bede1871f09b18578bb1bb634a85874c68074fde4e817262d321b
dev: Returns the domain separator for this contract, as defined in the EIP-712 standard.

Returns

Name Type Description
bytes32 bytes32 The domain separator hash.
encodeTransactionData(to: address, value: uint256, data: bytes, operation: uint8, safeTxGas: uint256, baseGas: uint256, gasPrice: uint256, gasToken: address, refundReceiver: address, _nonce: uint256) view

Returns the pre-image of the transaction hash (see getTransactionHash).

Parameters

Name Type Description
to address Destination address.
value uint256 Ether value.
data bytes Data payload.
operation uint8 Operation type.
safeTxGas uint256 Gas that should be used for the safe transaction.
baseGas uint256 Gas costs for that are independent of the transaction execution(e.g. base transaction fee, signature check, payment of the refund)
gasPrice uint256 Maximum gas price that should be used for this transaction.
gasToken address Token address (or 0 if ETH) that is used for the payment.
refundReceiver address Address of receiver of gas payment (or 0 if tx.origin).
_nonce uint256 Transaction nonce.

Returns

Name Type Description
bytes Transaction hash bytes.
getChainId() view → 42,161

Returns the ID of the chain the contract is currently deployed on.

Returns

Name Type Description
uint256 The ID of the current chain as a uint256.
getModulesPaginated(start: address, pageSize: uint256) view

Returns an array of modules. If all entries fit into a single page, the next pointer will be 0x1. If another page is present, next will be the last element of the returned array.

Parameters

Name Type Description
start address Start of the page. Has to be a module or start pointer (0x1 address)
pageSize uint256 Maximum number of modules that should be returned. Has to be > 0

Returns

Name Type Description
array address[] array Array of modules.
next address next Start of the next page.
getOwners() view reverted

Returns a list of Safe owners.

Returns

Name Type Description
address[] Array of Safe owners.
getStorageAt(offset: uint256, length: uint256) view

Reads `length` bytes of storage in the currents contract

Parameters

Name Type Description
offset uint256 - the offset in the current contract's storage in words to start reading from
length uint256 - the number of words (32 bytes) of data to read

Returns

Name Type Description
bytes the bytes that were read.
getThreshold() view → 1

Returns the number of required confirmations for a Safe transaction aka the threshold.

Returns

Name Type Description
uint256 Threshold number.
getTransactionHash(to: address, value: uint256, data: bytes, operation: uint8, safeTxGas: uint256, baseGas: uint256, gasPrice: uint256, gasToken: address, refundReceiver: address, _nonce: uint256) view

Returns transaction hash to be signed by owners.

Parameters

Name Type Description
to address Destination address.
value uint256 Ether value.
data bytes Data payload.
operation uint8 Operation type.
safeTxGas uint256 Fas that should be used for the safe transaction.
baseGas uint256 Gas costs for data used to trigger the safe transaction.
gasPrice uint256 Maximum gas price that should be used for this transaction.
gasToken address Token address (or 0 if ETH) that is used for the payment.
refundReceiver address Address of receiver of gas payment (or 0 if tx.origin).
_nonce uint256 Transaction nonce.

Returns

Name Type Description
bytes32 Transaction hash.
isModuleEnabled(module: address) view

Returns if an module is enabled

Parameters

Name Type Description
module address

Returns

Name Type Description
bool True if the module is enabled
isOwner(owner: address) view

Returns if `owner` is an owner of the Safe.

Parameters

Name Type Description
owner address

Returns

Name Type Description
bool Boolean if owner is an owner of the Safe.
nonce() view → 0

Returns

Name Type Description
uint256
signedMessages(bytes32) view

Parameters

Name Type Description
bytes32

Returns

Name Type Description
uint256

Write Functions

addOwnerWithThreshold(owner: address, _threshold: uint256) nonpayable

Adds the owner `owner` to the Safe and updates the threshold to `_threshold`.

dev: This can only be done via a Safe transaction.

Parameters

Name Type Description
owner address New owner address.
_threshold uint256 New threshold.
approveHash(hashToApprove: bytes32) nonpayable

Marks hash `hashToApprove` as approved.

dev: This can be used with a pre-approved hash transaction signature. IMPORTANT: The approved hash stays approved forever. There's no revocation mechanism, so it behaves similarly to ECDSA signatures

Parameters

Name Type Description
hashToApprove bytes32 The hash to mark as approved for signatures that are verified by this contract.
changeThreshold(_threshold: uint256) nonpayable

Changes the threshold of the Safe to `_threshold`.

dev: This can only be done via a Safe transaction.

Parameters

Name Type Description
_threshold uint256 New threshold.
disableModule(prevModule: address, module: address) nonpayable

Disables the module `module` for the Safe.

dev: This can only be done via a Safe transaction.

Parameters

Name Type Description
prevModule address Previous module in the modules linked list.
module address Module to be removed.
enableModule(module: address) nonpayable

Enables the module `module` for the Safe.

dev: This can only be done via a Safe transaction.

Parameters

Name Type Description
module address Module to be whitelisted.
execTransaction(to: address, value: uint256, data: bytes, operation: uint8, safeTxGas: uint256, baseGas: uint256, gasPrice: uint256, gasToken: address, refundReceiver: address, signatures: bytes) payable

Executes a `operation` {0: Call, 1: DelegateCall}} transaction to `to` with `value` (Native Currency) and pays `gasPrice` * `gasLimit` in `gasToken` token to `refundReceiver`.

dev: The fees are always transferred, even if the user transaction fails. This method doesn't perform any sanity check of the transaction, such as: - if the contract at `to` address has code or not - if the `gasToken` is a contract or not It is the responsibility of the caller to perform such checks.

Parameters

Name Type Description
to address Destination address of Safe transaction.
value uint256 Ether value of Safe transaction.
data bytes Data payload of Safe transaction.
operation uint8 Operation type of Safe transaction.
safeTxGas uint256 Gas that should be used for the Safe transaction.
baseGas uint256 Gas costs that are independent of the transaction execution(e.g. base transaction fee, signature check, payment of the refund)
gasPrice uint256 Gas price that should be used for the payment calculation.
gasToken address Token address (or 0 if ETH) that is used for the payment.
refundReceiver address Address of receiver of gas payment (or 0 if tx.origin).
signatures bytes Signature data that should be verified. Can be packed ECDSA signature ({bytes32 r}{bytes32 s}{uint8 v}), contract signature (EIP-1271) or approved hash.

Returns

Name Type Description
bool success Boolean indicating transaction's success.
execTransactionFromModule(to: address, value: uint256, data: bytes, operation: uint8) nonpayable

Execute `operation` (0: Call, 1: DelegateCall) to `to` with `value` (Native Token)

dev: Function is virtual to allow overriding for L2 singleton to emit an event for indexing.

Parameters

Name Type Description
to address Destination address of module transaction.
value uint256 Ether value of module transaction.
data bytes Data payload of module transaction.
operation uint8 Operation type of module transaction.

Returns

Name Type Description
success bool success Boolean flag indicating if the call succeeded.
execTransactionFromModuleReturnData(to: address, value: uint256, data: bytes, operation: uint8) nonpayable

Execute `operation` (0: Call, 1: DelegateCall) to `to` with `value` (Native Token) and return data

Parameters

Name Type Description
to address Destination address of module transaction.
value uint256 Ether value of module transaction.
data bytes Data payload of module transaction.
operation uint8 Operation type of module transaction.

Returns

Name Type Description
success bool success Boolean flag indicating if the call succeeded.
returnData bytes returnData Data returned by the call.
removeOwner(prevOwner: address, owner: address, _threshold: uint256) nonpayable

Removes the owner `owner` from the Safe and updates the threshold to `_threshold`.

dev: This can only be done via a Safe transaction.

Parameters

Name Type Description
prevOwner address Owner that pointed to the owner to be removed in the linked list
owner address Owner address to be removed.
_threshold uint256 New threshold.
setFallbackHandler(handler: address) nonpayable

Set Fallback Handler to `handler` for the Safe.

dev: Only fallback calls without value and with data will be forwarded. This can only be done via a Safe transaction. Cannot be set to the Safe itself.

Parameters

Name Type Description
handler address contract to handle fallback calls.
setGuard(guard: address) nonpayable

Set Transaction Guard `guard` for the Safe. Make sure you trust the guard.

dev: Set a guard that checks transactions before execution This can only be done via a Safe transaction. ⚠️ IMPORTANT: Since a guard has full power to block Safe transaction execution, a broken guard can cause a denial of service for the Safe. Make sure to carefully audit the guard code and design recovery mechanisms.

Parameters

Name Type Description
guard address The address of the guard to be used or the 0 address to disable the guard
setup(_owners: address[], _threshold: uint256, to: address, data: bytes, fallbackHandler: address, paymentToken: address, payment: uint256, paymentReceiver: address) nonpayable

Sets an initial storage of the Safe contract.

dev: This method can only be called once. If a proxy was created without setting up, anyone can call setup and claim the proxy.

Parameters

Name Type Description
_owners address[] List of Safe owners.
_threshold uint256 Number of required confirmations for a Safe transaction.
to address Contract address for optional delegate call.
data bytes Data payload for optional delegate call.
fallbackHandler address Handler for fallback calls to this contract
paymentToken address Token that should be used for the payment (0 is ETH)
payment uint256 Value that should be paid
paymentReceiver address Address that should receive the payment (or 0 if tx.origin)
simulateAndRevert(targetContract: address, calldataPayload: bytes) nonpayable
dev: Performs a delegatecall on a targetContract in the context of self. Internally reverts execution to avoid side effects (making it static). This method reverts with data equal to `abi.encode(bool(success), bytes(response))`. Specifically, the `returndata` after a call to this method will be: `success:bool || response.length:uint256 || response:bytes`.

Parameters

Name Type Description
targetContract address Address of the contract containing the code to execute.
calldataPayload bytes Calldata that should be sent to the target contract (encoded method name and arguments).
swapOwner(prevOwner: address, oldOwner: address, newOwner: address) nonpayable

Replaces the owner `oldOwner` in the Safe with `newOwner`.

dev: This can only be done via a Safe transaction.

Parameters

Name Type Description
prevOwner address Owner that pointed to the owner to be replaced in the linked list
oldOwner address Owner address to be replaced.
newOwner address New owner address.

Events

AddedOwner(owner: address)
Name Type Indexed Description
owner address
ApproveHash(approvedHash: bytes32, owner: address)
Name Type Indexed Description
approvedHash bytes32
owner address
ChangedFallbackHandler(handler: address)
Name Type Indexed Description
handler address
ChangedGuard(guard: address)
Name Type Indexed Description
guard address
ChangedThreshold(threshold: uint256)
Name Type Indexed Description
threshold uint256
DisabledModule(module: address)
Name Type Indexed Description
module address
EnabledModule(module: address)
Name Type Indexed Description
module address
ExecutionFailure(txHash: bytes32, payment: uint256)
Name Type Indexed Description
txHash bytes32
payment uint256
ExecutionFromModuleFailure(module: address)
Name Type Indexed Description
module address
ExecutionFromModuleSuccess(module: address)
Name Type Indexed Description
module address
ExecutionSuccess(txHash: bytes32, payment: uint256)
Name Type Indexed Description
txHash bytes32
payment uint256
RemovedOwner(owner: address)
Name Type Indexed Description
owner address
SafeModuleTransaction(module: address, to: address, value: uint256, data: bytes, operation: uint8)
Name Type Indexed Description
module address
to address
value uint256
data bytes
operation uint8
SafeMultiSigTransaction(to: address, value: uint256, data: bytes, operation: uint8, safeTxGas: uint256, baseGas: uint256, gasPrice: uint256, gasToken: address, refundReceiver: address, signatures: bytes, additionalInfo: bytes)
Name Type Indexed Description
to address
value uint256
data bytes
operation uint8
safeTxGas uint256
baseGas uint256
gasPrice uint256
gasToken address
refundReceiver address
signatures bytes
additionalInfo bytes
SafeReceived(sender: address, value: uint256)
Name Type Indexed Description
sender address
value uint256
SafeSetup(initiator: address, owners: address[], threshold: uint256, initializer: address, fallbackHandler: address)
Name Type Indexed Description
initiator address
owners address[]
threshold uint256
initializer address
fallbackHandler address
SignMsg(msgHash: bytes32)
Name Type Indexed Description
msgHash bytes32