Skip to main content
6 votes
Accepted

How to deploy gnosis safe proxy contracts on Mumbai testnet(Polygon) using Safe Core SDK?

The Safe Core SDK takes all the safe contracts and network configuration from safe-deployments. Specifically on this case, from here, meaning that if the Mumbai chainId (80001) is not present below ...
Germán's user avatar
  • 688
6 votes
Accepted

How to send ERC20 & ERC721 tokens using Safe Core SDK?

To create a token transfer you need to execute the following code: import { SafeTransactionDataPartial } from '@gnosis.pm/safe-core-sdk-types' const transaction: SafeTransactionDataPartial = { to: '...
Germán's user avatar
  • 688
6 votes

Signing messages as a Gnosis Safe (eip1271 support)

This functionality is provided via the CompatibilityFallbackHandler. This should be enabled by default on all Safes created via the Gnosis Safe web interface. In general the Safe currently has 2 ways ...
Richard's user avatar
  • 5,079
6 votes

Cannot tranfer() ETH to Gnosis Safe

This is explanied here: https://help.gnosis-safe.io/en/articles/5249851-why-can-t-i-transfer-eth-from-a-contract-into-a-safe You can also check further information in this post https://consensys....
Daniel Sánchez's user avatar
5 votes
Accepted

Getting ''Error: Unprocessable Entity" while calling 'safeService.proposeTransaction()'

Ok the issue is resolved. The reason was that the to field in the transaction is not checksumed: const transaction = { to: '0xb0968a944aF335f0f73900821a52d0066593aC5a', data: '0x', value: '...
chakshu jain's user avatar
5 votes

How to upgrade if a new version of Safe is released?

Gnosis Safe uses a Proxy/Implementation pattern in its smart contracts. The wallet is a Proxy that forwards calls to the implementation contract using the DELEGATECALL opcode. The implementation ...
mikheevm's user avatar
  • 1,085
5 votes

Deploy contract through gnosis transaction-builder

If you want to deploy a contract via a Safe you need to use a deployment proxy. In the Safe repository you can find the CreateCall for this, but there are also community based contract for this (e.g. ...
Richard's user avatar
  • 5,079
5 votes
Accepted

Ordering transactions in a batch multisend/multicall

If you look at Gnosis-Safe's MultiSend contract, you'll notice that you decide in which order you want to execute the "sub"-transaction. You need to encode each transaction you want to batch ...
Greg Jeanmart's user avatar
5 votes

Why is Bitwise AND operator used for comparing singleton address and 0xfff... in GnosisSafeProxy.sol

General objective of doing this and operation is to get extract the 20 bytes address with in a 32 bytes slot. There can be packed values with the address to clean up this is needed. The following ...
Tashun Sandaru's user avatar
5 votes
Accepted

What Does Gnosis Safe Contract's setup function return and why?

That's not a return data. That's a normal transaction. Whenever we call any contract function that performs write operations, the calls is sent in a form of transaction. Any js library would fetch the ...
Zartaj Afser's user avatar
  • 5,000
4 votes
Accepted

Risks around generating gnosis safes with the same contract address across different networks

Important to consider here is also the version of the Safe contracts. In the latest version (1.3.0) the Safe contracts make use of the chain id to validate the signatures (aka confirmations) of the ...
Richard's user avatar
  • 5,079
4 votes
Accepted

GS025 error when executing Gnosis Safe multisig transaction

I would say this is a shortcoming in the Safe core sdk (maybe worth opening an issues). You create a transaction with nonce 17 and also approve this transaction. But the executeTransaction function ...
Richard's user avatar
  • 5,079
4 votes

Why is my NFT showing as a placeholder image instead of the actual NFT image?

Apparently, different NFT contracts wildly vary within the ERC-721/1155 standards. Metadata, especially, is an open-ended game and marketplaces like OpenSea go to great lengths to support multiple ...
katspaugh's user avatar
  • 171
4 votes

Deploying a contract that inherits GnosisSafe from another smart contract

If the goal is to deploy a Safe with custom modules and guards, you don't necessarily need a separate contract to do that. When deploying a Safe, there's a distinct initializer parameter to setup ...
mikheevm's user avatar
  • 1,085
4 votes
Accepted

How can I add/remove an owner to gnosis-safe wallet from solidity smart contract?

addOwnerThreshold is a protected function. Check authorized modifier in the function definition. It can be called only by the Safe itself. If any contract could simply call this function, it would be ...
mikheevm's user avatar
  • 1,085
4 votes
Accepted

web3.eth.personal.sign with WalletConnect and Gnosis Safe

As the Safe is a smart contract based wallet you will not get a ECDSA signature that can be recovered to a Safe address. The Safe uses EIP-1271 to support message signing. In the current ...
Richard's user avatar
  • 5,079
4 votes

How to sign a Gnosis-Safe transaction via Argent wallet + Wallet-Connect

To encode an EIP-1271 signature you would take the data returned by your signature function (for Argent this should be the data returned by eth_sign when connected via WalletConnect) and encode it ...
Richard's user avatar
  • 5,079
4 votes
Accepted

Move transaction to Different Nonce, Keep signatures

"Moving" the signatures to another tx with different nonce it's impossible, and it would be a really critical security issue. You need to sign everything again or create a dummy tx with ...
Uxío's user avatar
  • 456
4 votes

GnosisSafe: Signing and verifying a signature

tl;dr Just use 0x as signature. The signature is valid if Gnosis Safe returns the EIP-1271 magic value (0x1626ba7e). if (signature == '0x') { let msgHash = ethers.utils.hashMessage(message); ...
Michael's user avatar
  • 235
4 votes

Gnosis safe transfer from contract fails with EIP2930 "Out of gas"

Solved it. https://etherscan.io/tx/0xfbf20efe99271206c0f5b497a92bee2e66f8bf9991e07648935194f17610b36e What no one tells you is that metamask does not add accesslist to your requests. If you have this ...
Efesus's user avatar
  • 51
4 votes

How can I batch execute multiple Gnosis Safe transactions via js/ts?

You can use the MultiSend contract to batch execute execTransaction calls. https://github.com/safe-global/safe-contracts/blob/main/contracts/libraries/MultiSend.sol
mikheevm's user avatar
  • 1,085
3 votes
Accepted

Transfer to gnosis safe through contract failing due to out of gas errors

Nevermind, we did it! We were using wrong access lists, this is the successful TX
Doggo's user avatar
  • 41
3 votes
Accepted

Using personal_sign with WalletConnect and Gnosis Safe

If safeProxyContract.isValidSignature(msgHash, signature) (See CompatibilityFallbackHandler.sol#L66) returns the EIP1271 magic value, then the message with the msgHash is signed. If it doesn't, then ...
Sebastian T F's user avatar
3 votes

Using Gnosis Safe to deploy a smart contract

You can use the CreateCall library to deploy Contracts: https://github.com/gnosis/safe-contracts/blob/main/contracts/libraries/CreateCall.sol
mikheevm's user avatar
  • 1,085
3 votes

GS013 error when executing Gnosis Safe transaction

The problem here is not the safeTxGas and gasPrice. If you would set these value, the internal Safe transaction would still fail. Looking at your transaction I can see that you try to transfer ...
Richard's user avatar
  • 5,079
3 votes

How to encode initializer in gnosis-safe proxy contract?

As proxies canot use the conventional constructor approach, the common way to compensate for this is to provide an initialization function (see OpenZepplin). To avoid that this can be front-run in a ...
Richard's user avatar
  • 5,079
3 votes

Using GnosisSafe to deploy ERC20

You could change the owner after deploying, but if you want to do it with the Safe itself: You can use the CreateCall library to deploy Contracts: https://github.com/gnosis/safe-contracts/blob/main/...
jomoormann's user avatar
3 votes

Gnosis Safe: Unexpected Delegate call while sending multiple transaction

Due to security reasons this warning is shown if a multisend contract is used that is not "known" by our services. As delegatecalls are critical this is to avoid that a malicious contract is ...
Richard's user avatar
  • 5,079
3 votes

Programmatically sending a transaction request to Gnosis Safe wallet

This is how I am doing it in a React app. I am connecting to Gnosis safe using their Safe Service. Use the correct url based on the network your Gnosis Safe is created on. const txServiceMainnet = '...
user3813848's user avatar
3 votes
Accepted

Expand Safe dashboard from within a SafeApp

The current implementation of the transaction queue at the bottom doesn't support a way to interface with it from within a safe app.
ua2's user avatar
  • 61

Only top scored, non community-wiki answers of a minimum length are eligible