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 ...
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: '...
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 ...
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....
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: '...
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 ...
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. ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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);
...
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 ...
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
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
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 ...
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
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 ...
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 ...
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/...
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 ...
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 = '...
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.
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
gnosis-safe × 692safe-core-sdk × 138
gnosis × 124
safe-core × 116
safe × 42
solidity × 31
multisignature × 29
ethers.js × 24
smart-contract-wallets × 22
walletconnect × 13
signature × 12
safe-apps-sdk × 11
transactions × 10
hardhat × 10
nft × 8
polygon × 8
eip-1271 × 8
gnosis-chain × 7
account-abstraction × 7
web3js × 6
metamask × 6
contract-deployment × 6
etherscan × 6
error × 6
javascript × 5