GnosisSafeL2

BNB Smart Chain

0x9c28a2483901018216282216bc47cb699ca2d57f

Proxy implementation: 0x3e5c63644e683549055b9be8653de26e0b4cd36e

Solidity v0.7.6+commit.7338295f

🤖
Query this contract from your AI
Reference: 0x9c28a2483901018216282216bc47cb699ca2d57f
Sample prompt: “Tell me the current state of bnb/0x9c28a2483901018216282216bc47cb699ca2d57f”
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
0x3e5c63644e683549055b9be8653de26e0b4cd36e ↗ BscScan → smarts proxy

Overview

Read Functions
16
Write Functions
15
Events
17

Read Functions

Block #100,311,464 · just now
VERSION() view → 1.3.0

Returns the current contract version string.✨ AI

Returns

Name Type Description
string A string containing the contract version identifier, e.g. a semantic version or build tag.✨ AI
approvedHashes(address, bytes32) view

Get the stored approval value for an owner and a specific hash.✨ AI

Parameters

Name Type Description
address
bytes32

Returns

Name Type Description
uint256 Uint256 value representing the stored approval state for the owner and hash.✨ AI
checkNSignatures(dataHash: bytes32, data: bytes, signatures: bytes, requiredSignatures: uint256) view

Verify that the provided signatures satisfy the requiredSignatures threshold for the given dataHash and data.✨ AI

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

Checks that the provided signatures validly authorize the given dataHash and data.✨ AI

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 → 0x66e4c80ef04e0e7c2c84f54827b4f0726aa83b3fc4c03ab63fe92f5d277fcf71

Returns the EIP-712 domain separator for this Gnosis Safe on L2.✨ AI

Returns

Name Type Description
bytes32 The 32-byte EIP-712 domain separator used in typed data hashing and signature verification.✨ AI
encodeTransactionData(to: address, value: uint256, data: bytes, operation: uint8, safeTxGas: uint256, baseGas: uint256, gasPrice: uint256, gasToken: address, refundReceiver: address, _nonce: uint256) view

Encode a Safe transaction into the canonical bytes payload for signing or relaying.✨ AI

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 → 56

Gets the current chain ID of the blockchain.✨ AI

dev: Returns the chain id used by this contract.

Returns

Name Type Description
uint256 The chain identifier (chainId) as a uint256.✨ AI
getModulesPaginated(start: address, pageSize: uint256) view

Returns a paginated list of enabled module addresses starting after the provided address.✨ AI

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 → [0xbb13aea87783ba4c1ce6447babac81d00d0c1888, 0xb54d9cbedf797ae4f9f22601d007fcaa1568f69a, 0xec1ca72692e86d19af9d62f18f0bf22f94d12515, 0x7bfdecd31850bc11aa7c581468d5a337bd7ba72c]

Returns the list of owner addresses for this Gnosis Safe.✨ AI

dev: Returns array of owners.

Returns

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

Read raw contract storage starting at the specified storage slot offset and return the requested bytes.✨ AI

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 → 3

Returns the current approval threshold required to execute a transaction.✨ AI

Returns

Name Type Description
uint256 The uint256 number of owner confirmations required to execute a safe transaction.✨ AI
getTransactionHash(to: address, value: uint256, data: bytes, operation: uint8, safeTxGas: uint256, baseGas: uint256, gasPrice: uint256, gasToken: address, refundReceiver: address, _nonce: uint256) view

Compute the deterministic hash of a Safe transaction for signing or on-chain verification.✨ AI

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

Returns true if the specified module address is enabled for this Safe.✨ AI

dev: Returns if an module is enabled

Parameters

Name Type Description
module address Module address to check for enabled status.✨ AI

Returns

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

Checks whether the provided address is a registered owner of the Safe.✨ AI

Parameters

Name Type Description
owner address Address to check for ownership.✨ AI

Returns

Name Type Description
bool True if the address is an owner, false otherwise.✨ AI
nonce() view → 14

Returns the current nonce used to sequence the safe's transactions.✨ AI

Returns

Name Type Description
uint256 Current nonce (uint256) used to order and replay-protect the safe's transactions.✨ AI
signedMessages(bytes32) view

Return the uint256 value stored for a given message hash.✨ AI

Parameters

Name Type Description
bytes32

Returns

Name Type Description
uint256 The uint256 value associated with the given message hash.✨ AI

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

Approve a hash so the Safe marks it as approved by the calling owner.✨ AI

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

Execute a Safe transaction with provided calldata, gas settings, and signatures.✨ AI

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 True if the transaction was executed successfully, false otherwise.✨ AI
execTransactionFromModule(to: address, value: uint256, data: bytes, operation: uint8) nonpayable

Executes a transaction initiated by a module, sending value and data to the specified target address.✨ AI

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 True if the executed call succeeded, false otherwise.✨ AI
execTransactionFromModuleReturnData(to: address, value: uint256, data: bytes, operation: uint8) nonpayable

Executes a transaction from an enabled module and returns whether it succeeded and any returned data.✨ AI

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 Boolean indicating whether the executed transaction succeeded.✨ AI
returnData bytes Raw return data from the executed call.✨ AI
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

Set the fallback handler address that processes calls that do not match any contract function.✨ AI

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

Sets the guard contract that runs checks before transactions execute.✨ AI

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

Set up the Safe by configuring owners, threshold, optional setup call, handlers, and payment.✨ AI

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

Simulate a call to targetContract using calldataPayload and revert to expose the call outcome for off-chain inspection.✨ AI

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