This PR introduces native staking capabilities to Safe, enabling a seamless staking experience directly within the platform. By tapping the "Stake" button from the dashboard sidebar menu, users are able to engage in self-custodial staking using their currently selected Safe account through the StakeKit widget. The widget is connected with Safe's walletProvider, supporting both transaction signing and message signing.
There are some minor changes to the existing code that had to be made to support Transaction and Message signing
Add operation type parameter to SafeAppsTxParams to correctly submit a DelegateCall transaction to the Multisend contract
Return MessageHash on signMessage to determine whether the a message has been signed or not. (So the StakeKit widget can wait for all other owners to sign)
How to test it
Important: STAKE feature needs to be added to specific chains for this feature to appear on sidebar and work
Tap the "Stake" button from the dashboard sidebar menu and use the StakeKit widget to stake / unstake supported assets.
Make sure to add your STAKEKIT_API_KEY as environment variable.
Screenshots
Checklist
[ ] I've tested the branch on mobile π±
[ ] I've documented how it affects the analytics (if at all) π
[ ] I've written a unit/e2e test for it (if applicable) π§βπ»
What it solves
Adds staking functionality to Safe Wallet Web
How this PR fixes it
This PR introduces native staking capabilities to Safe, enabling a seamless staking experience directly within the platform. By tapping the "Stake" button from the dashboard sidebar menu, users are able to engage in self-custodial staking using their currently selected Safe account through the StakeKit widget. The widget is connected with Safe's walletProvider, supporting both transaction signing and message signing.
There are some minor changes to the existing code that had to be made to support Transaction and Message signing
Add operation type parameter to SafeAppsTxParams to correctly submit a DelegateCall transaction to the Multisend contract Return MessageHash on signMessage to determine whether the a message has been signed or not. (So the StakeKit widget can wait for all other owners to sign)
How to test it
Important:
STAKE
feature needs to be added to specific chains for this feature to appear on sidebar and workTap the "Stake" button from the dashboard sidebar menu and use the StakeKit widget to stake / unstake supported assets.
Make sure to add your
STAKEKIT_API_KEY
as environment variable.Screenshots
Checklist