GnosisSafeL2

Optimism

0x2a82ae142b2e62cb7d10b55e323acb1cab663a26

Proxy implementation: 0xfb1bffc9d739b8d520daf37df666da4c687191ea

Solidity v0.7.6+commit.7338295f

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

Admin & Risk

Who can change the rules?

Detected upgradeable controls from the verified ABI.

Upgradeable

Current controls

Implementation
0xfb1bffc9d739b8d520daf37df666da4c687191ea ↗ Etherscan → smarts proxy

Overview

Read Functions
16
Write Functions
15
Events
17

Read Functions

Block #152,044,126 · just now
VERSION() view → 1.3.0

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
dev: Checks whether the signature provided is valid for the provided data, hash. Will revert 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 ECDSA signature, contract signature (EIP-1271) or approved hash.
requiredSignatures uint256 Amount of required valid signatures.
checkSignatures(dataHash: bytes32, data: bytes, signatures: bytes) view
dev: Checks whether the signature provided is valid for the provided data, hash. Will revert 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 ECDSA signature, contract signature (EIP-1271) or approved hash.
domainSeparator() view → 0x462891ca8f7777ee79e5fe4366d0577864fdf00769c59e345303b084bf0cf38d

Returns

Name Type Description
bytes32
encodeTransactionData(to: address, value: uint256, data: bytes, operation: uint8, safeTxGas: uint256, baseGas: uint256, gasPrice: uint256, gasToken: address, refundReceiver: address, _nonce: uint256) view
dev: Returns the bytes that are hashed 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 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 → 10
dev: Returns the chain id used by this contract.

Returns

Name Type Description
uint256
getModulesPaginated(start: address, pageSize: uint256) view
dev: Returns array of modules.

Parameters

Name Type Description
start address Start of the page.
pageSize uint256 Maximum number of modules that should be returned.

Returns

Name Type Description
array address[] array Array of modules.
next address next Start of the next page.
getOwners() view → [0x3f3cd78ef9bd85961c0729e6bbb11e94ca6f61d2]
dev: Returns array of owners.

Returns

Name Type Description
address[] Array of Safe owners.
getStorageAt(offset: uint256, length: uint256) view
dev: 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

Name Type Description
uint256
getTransactionHash(to: address, value: uint256, data: bytes, operation: uint8, safeTxGas: uint256, baseGas: uint256, gasPrice: uint256, gasToken: address, refundReceiver: address, _nonce: uint256) view
dev: Returns 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
dev: 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

Parameters

Name Type Description
owner address

Returns

Name Type Description
bool
nonce() view → 13

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: Allows to add a new owner to the Safe and update the threshold at the same time. 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
dev: Marks a hash as approved. This can be used to validate a hash that is used by a signature.

Parameters

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

Changes the threshold of the Safe to `_threshold`.

dev: Allows to update the number of required confirmations by Safe owners. 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: Allows to remove a module from the whitelist. This can only be done via a Safe transaction.

Parameters

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

Enables the module `module` for the Safe.

dev: Allows to add a module to the whitelist. 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
dev: Allows to execute a Safe transaction confirmed by required number of owners and then pays the account that submitted the transaction. Note: The fees are always transferred, even if the user transaction fails.

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 Packed signature data ({bytes32 r}{bytes32 s}{uint8 v})

Returns

Name Type Description
bool
execTransactionFromModule(to: address, value: uint256, data: bytes, operation: uint8) nonpayable
dev: Allows a Module to execute a Safe transaction without any further confirmations.

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
execTransactionFromModuleReturnData(to: address, value: uint256, data: bytes, operation: uint8) nonpayable
dev: Allows a Module to execute a Safe transaction without any further confirmations 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
returnData bytes
removeOwner(prevOwner: address, owner: address, _threshold: uint256) nonpayable

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

dev: Allows to remove an owner from the Safe and update the threshold at the same time. 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.
requiredTxGas(to: address, value: uint256, data: bytes, operation: uint8) nonpayable

Deprecated in favor of common/StorageAccessible.sol and will be removed in next version.

dev: Allows to estimate a Safe transaction. This method is only meant for estimation purpose, therefore the call will always revert and encode the result in the revert data. Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execTransaction`

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.

Returns

Name Type Description
uint256 Estimate without refunds and overhead fees (base transaction and payload data gas costs).
setFallbackHandler(handler: address) nonpayable
dev: Allows to add a contract to handle fallback calls. Only fallback calls without value and with data will be forwarded. This can only be done via a Safe transaction.

Parameters

Name Type Description
handler address contract to handle fallbacks calls.
setGuard(guard: address) nonpayable
dev: Set a guard that checks transactions before execution

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
dev: Setup function sets initial storage of contract.

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 Adddress that should receive the payment (or 0 if tx.origin)
simulateAndRevert(targetContract: address, calldataPayload: bytes) nonpayable
dev: Performs a delegetecall 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: Allows to swap/replace an owner from the Safe with another address. 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