When initiating a new transaction, it is possible to set the transaction nonce, gas price and gas limit manually as an advance feature.
This is an advanced feature, meaning it should not clutter the interface for regular users.
Parameters to set in this version:
Safe nonce, safeTxGasNonce, Gas limit, Gas priceNote: Safe transaction parameters will be taken into account no matter if the confirmation happens on or off-chain. Ethereum tx params are only relevant for on-chain confirmations and executions. But we don't know that upfront.
Validation:
SafeTxGas can not be lower than Ethereum gas limitModals that need modifications:
Also to consider: When using our direct Ledger integration, users aren't able to set the gas price on the Ledger. So that would have to be done via our interface (cf. gnosis/safe#314)
Just received some user feedback where the following scenario leads to inconveniences:
- 2/3 Safe with owners a,b,c
- there's a disagreement, a and b want to remove c
- before they can trigger the tx, owner c "spams" the safe with transactions so send all company funds to itself, re-creating the same txs multiple times.
-> Currently, A and B would have to manually reject all those spam txs before they can get their tx to remove the owner through.
@rmeissner
I have 2 open questions about this feature:
I think "yes" in both cases. Do you agree?
@posthnikova this is another upcoming web feature that would require design.
@rmeissner
I have 2 open questions about this feature:
- Should we differentiate between base gas and safetxgas?
- Should this feature only be available when the user executes a tx or confirms on-chain, i.e. not for off chain signatures?
I think "yes" in both cases. Do you agree?
We don't necessarily know if the user will end up confirming on-chain or off-chain when creating a transaction. As this should be a "hidden / advanced feature" anyways, I think it's not that critical to also have it enabled when the user eventually ends up confirming off-chain though. There's not much downside if someone sets the gas price manually and then signs off chain as this only means the user doesn't have to pay any gas at all & confirmation is instant.
Just to recap (primarily for myself)
There are 2 types of advanced settings:
I think first we should define which of these should be able to be set before I can tell you what do differentiate.
For 1. I would only allow to adjust the nonce and the safeTxGas of the Safe transaction. And have the option to set a refund in a later version. But if we allow to specify really all parameter then we definetly need to differentiate between baseGas and safeTxGas (as they have totally different purposes).
For 2. As Lukas said, we actually don't know ahead of time how the confirmation will be created so I would also always display this.
Okay, thank you both for your responses! I updated the ticket description. I think we should start with the following params then in this version:
I'm for activating it first in advanced settings. This way it doesn't clutter the interface for everyone.
A proposal for sending funds:
https://invis.io/BRZDPI8XPG5
When it's enabled there will be an additional step in send popups. I assume you can leave any field or all fields empty.
Activating this in the settings assumes that there are two kinds of users:
However, I would assume that the lines aren't that clear. And users occasionally would like to set the parameters manually, but most of the time don't want to do so. This is why I would vote for not having to activate the feature in the settings. Also, this would probably make the feature less discoverable and would maybe mean more effort/complexity as there needs to be two different flows depending on whether the setting is activated.

Having a simple "advanced options" setting doesn't clutter the interface that much in my opinion.
There could also be a third option, i.e.

Or always show the transaction details in the review screen and have a "Edit" button to customize. I think that would add value also to users that don't want to set the parameters manually. As even if a user doesn't want to edit the parameters, knowing them before triggering the transaction might be of benefit to users.
Also, we should probably also have seperate screens for confirmations/executions. As there, compared to initial transaction creation, the SafeTxGas and Safe nonce cannot be set. Potentially we can still display it there, but show that they are non-modifiable.
Also, we should probably also have seperate screens for confirmations/executions. As there, compared to initial transaction creation, the SafeTxGas and Safe nonce cannot be set. Potentially we can still display it there, but show that they are non-modifiable.
Hm, I generally agree with you, but that's something to check with the devs as they told me that it'll be tricky to figure out if it's an execution/on-chain or off-chain confirmation.
I wouldn't try to anticipate whether it's on- or off-chain. I meant that there should be a difference between:
As with the former category, the user can potentially set the SafeTxGas and Safe nonce, but with the latter, this is not possible anymore.
ah, yes, the safe related items can only be set when creating the tx, not afterwards when confirming / executing.
I was referring to the Ethereum related items.
I have 2 versions, from settings and from Send popup https://invis.io/BRZDPI8XPG5. We don't have data what users prefer, I can include it in the upcoming user test.
Or always show the transaction details in the review screen and have a "Edit" button to customize.
I think that would add value also to users that don't want to set the parameters manually. As even if
a user doesn't want to edit the parameters, knowing them before triggering the transaction might be of
benefit to users.
I wouldn't show parameters the user didn't configure on Review screen. I would offer to edit them earlier.
I like the version with the "Advanced options" button a bit more. But you're right, we don't have data. We just know how Metamask does it.
Hey team, just found this while searching for a way to manually set gas limit, since our transactions (inner, not outer) are failing due to out-of-gas. Is there a workaround while this feature is being developed?
@illuzen in case you are triggering transactions via Safe apps, then there's a new feature in the Safe apps SDK available to set the safeTxGas (gnosis/safe-apps-sdk#21).
If that's not an option, then the only workaround is to trigger a transaction via our API at https://safe-transaction.gnosis.io/. There is a POST endpoint that allows you to create new transactions which then popup at https://gnosis-safe.io/app/ when you sign them with an owner of the Safe. Would that work?
People preferred the option with 'Advanced' in Send popup so now it's the main version: https://invis.io/BRZDPI8XPG5.
Small change: popup height is the same (except the Review step when advanced parameters were set). We don't know on step 1 whether advanced parameters would be changed so it doesn't make sense to make the height of popup match the 'Review with advanced' height.
Hey team, just found this while searching for a way to manually set gas limit, since our transactions (inner, not outer) are failing due to out-of-gas. Is there a workaround while this feature is being developed?
@illuzen We released a fix for the Safe Multisig interface today (v2.15.1.) that should fix the gas limit estimation issues related to Safe Apps.
People preferred the option with 'Advanced' in Send popup so now it's the main version: https://invis.io/BRZDPI8XPG5.
Small change: popup height is the same (except the Review step when advanced parameters were set). We don't know on step 1 whether advanced parameters would be changed so it doesn't make sense to make the height of popup match the 'Review with advanced' height.
We should also have versions for:
For Safe App transactions, regular asset transfers, contract interactions and collectible transfers, the Ethereum transaction parameters only make sense if it's a 1-oo-x Safe, as or >1 threshold the Ethereum transaction parameters are set with the final (executing) confirmation. Should we still display those in all cases?
For the pure confirmation/execution case, the Safe Transaction parameters should not be able to set, only the Ethereum transaction parameters. As at this point the Safe transaction parameters cannot be changed.
For Safe App transactions, regular asset transfers, contract interactions and collectible transfers, the Ethereum transaction parameters only make sense if it's a 1-oo-x Safe, as or >1 threshold the Ethereum transaction parameters are set with the final (executing) confirmation. Should we still display those in all cases?
Ideally no, only the configurable things should be dislpayed, if possible, i.e.
Safe-related params: Only when initiating a transaction as the first signer. It can't be modified afterwards. - Perhaps a read-only display of those would make sense?
Ethereum-related params: Only when the current signer can also execute, otherwise it doesn't make sense. - How about on-chain confirmations in that case though?
Let me break down the options here. There are cases when you can set some of the parameters and cases when you can set none. Plus some parameters could be modified by other owners before you.

@posthnikova Nice over view, thank you. This all looks correct to me.
@posthnikova a case for on-chain confirmations are missing. e.g. when the owner of a safe is another Safe or e.g. argent, then it would be an on-chain approval. In that case, Ethereum params could be set for that confirmation tx.
As far as I understood the devs, we don't know upfront, if the wallet wants to do an on or off chain approval. So that needs to be clarified again.
Richard: Please note, currently for 1.0.0 Safes, we force on-chain confirmations.
As far as I understood the devs, we don't know upfront, if the wallet wants to do an on or off chain approval. So that needs to be clarified again.
In a v1, we could say to always show the Ethereum tx params in all cases.
OR
Only show these Ethereum tx params for hardware wallets (if we know that) <- Let's do this.
As far as I understood the devs, we don't know upfront, if the wallet wants to do an on or off chain
approval. So that needs to be clarified again.
Do you mean at the moment of creation we don't know this? Or at the moment of confirmation? Because we shouldn't say that this confirmation is off-chain then.
Or at the moment of confirmation? Because we shouldn't say that this confirmation is off-chain then.
At the moment of confirmation. But someone from the dev team needs to comment on this if this is actually true.
@illuzen We released a fix for the Safe Multisig interface today (v2.15.1.) that should fix the gas limit estimation issues related to Safe Apps.
Thanks @lukasschor, any ETA on when this upgrade will be available thru the web interface? We are still experiencing the same gas limit issues.
Thanks @lukasschor, any ETA on when this upgrade will be available thru the web interface? We are still experiencing the same gas limit issues.
This issue was added to the next release which we plan to release in ~2 weeks.
@rmeissner I'm not sure to understand how safeTxGas works, do we have documentation on this?
@tschubotz can we assume all the users will know what safeTxGas means? In case we can't, should we add an explanation in the UI?
@nicosampler you can find the docs here: https://docs.gnosis.io/safe/docs/contracts_tx_execution/#safe-transaction-gas-limit-estimation
This is an advanced feature and in a first version I would be fine without an explainer, but we could also link to the docs as a simple workaround in a first iteration :)
safeTxGas attempt of explanation:
It's the amount of gas excectTransaction can use. If the parameter was set to 0, the contract will assume it can spend all remaining gas, if it's > 0 the gas set by the Wallet should be always greater than safeTxGas, otherwise it will fail.
https://github.com/gnosis/safe-contracts/blob/development/contracts/GnosisSafe.sol#L145
Regarding Sasha's designs and Lukas's comment https://github.com/gnosis/safe-react/issues/838#issuecomment-726053014, I will implement it so the review screen always includes the details. I believe this information is important.
If in the future the users complain about it, we can modify it so it's only shown if the user clicked on advanced options.
@tschubotz @posthnikova @lukasschor
I would like to suggest a change (it was previously mentioned before).
I think it would be better if we remove the "Advanced options" link for the TX screen and show it instead on the review screen.
The main reason for this change is that if the user clicks on "Advanced options" and then in "Confirm" it will be redirected to the "Review screen" and perhaps he didn't finish with the TX parameters (Address, value, etc). Also, it would be kinda weird if in the "review screen" he clicks on "back" and is redirected to the TX parameters instead of "Advanced options".
If you accept this change, the "Advanced options" screen should only have 1 button "confirm". It will help the user to understand that if he did not edit the inputs, the default values will be used.
I like that proposal since it would be similar to what metamask does. However I wouldn't allow the user to confirm a tx right from the advanced parameters screen. I think they should get back to the review screen again where they have to click "confirm"
Initially it was intended that 'Confirm' from Advanced parameters goes back to tx parameters (recipient, amount).
I think they should get back to the review screen again where they have to click "confirm"
Yes that's what I wanted to say
Initially it was intended that 'Confirm' from Advanced parameters goes back to tx parameters (recipient, amount).
@posthnikova that means though that if they notice on the review page that they want to change something in the advanced params, they would have to
Whereas when we allow them to modify the advanced params from the review screen, that would be way shorter. What do you think about that? Wouldn't that be simpler?
Wouldn't that be simpler?
I think they should get back to the review screen again where they have to click "confirm"
There's a additional click to 'Submit' transaction so the number of clicks is equal. For me both solutions are ok. We don't know how many users would want to configure advanced parameters. Always showing them on Review screen assumes everyone would want to see them.

With how high it is the gas price I bet everyone wants to see it :stuck_out_tongue_closed_eyes:
@posthnikova what do you think if in this screen we make "tx details" collapsible?
Do you mean recipient and amount?
no I mean this

We can do this but the popup would scroll anyway in expanded state.
yes, I suggest it as an intermediate alternative to "show it always" or "when the user changed the options".
If we make it collapsible the UI is barely modified and we have the best of the two options. if some users don't want to pay attention to the gas cost they won't expand it.
Updated structure with advanced options on Review step.
Send funds, 1 out of x Safe or hardware wallet:

Send funds, >1 out of x Safe:

Other popups are pretty much the same, parameters you can't set are disabled:

Send collectible:

Contract interaction:

Safe app transaction:

awesome, love it!
I like this new version as well! Main reasons:
Zeplin screens:
Send Funds
Send Funds (Review):https://zpl.io/Vx7nkkg
Send Funds (Review - Advanced Expanded): https://zpl.io/bAenmzO
Advanced Popup: https://zpl.io/a7XeGEv
Send Funds (Review, disabled Ethereum parameters): https://zpl.io/VKX6EgA _(for >1 out of x Safes and hardware wallets)_
Advanced Popup, disabled Ethereum parameters: https://zpl.io/bPw1rpM _(for >1 out of x Safes and hardware wallets)_
Contract Interaction
Contract Interaction (Review): https://zpl.io/2yr17m9
Contract Interaction (Review - Advanced Expanded): https://zpl.io/a3M90my
Send Collectible
Send Collectible (Review): https://zpl.io/adgRM7L
Send Collectible (Review - Advanced Expanded): https://zpl.io/VOl1XzY
Safe Apps
Safe Apps Transaction (Review): https://zpl.io/amQeMzK
Safe Apps Transaction (Review - Advanced Expanded): https://zpl.io/2ppPxnN
Confirmation and execution popups will be later.
@rmeissner can you help me to elaborate on a list of validations for the form?
For 2. Inwould check agaibst on-chain info (or no check atball isbalso fine for me in a first version, up to @tschubotz )
For 3. safeTxGas can be 0 (the nonces too actually)
Aldo this should be added to the issue description ;)
the nonces too actually
yes, I wanted to say no negative values
For 2. Inwould check agaibst on-chain info (or no check atball isbalso fine for me in a first version, up to @tschubotz )
Both fine for me too. I think there is no need add more logic. It's an advanced feature, so people should know what they are doing in my opinion.
Most helpful comment
This issue was added to the next release which we plan to release in ~2 weeks.