-
Couldn't load subscription status.
- Fork 1k
Frontend MASP sustainability fee (backport #4790) #4905
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Cherry-pick of 2418cf5 has failed: Cherry-pick of ce7150d has failed: To fix up this pull request, you can check it out locally. See documentation: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally |
🧪 CI InsightsHere's what we observed from your CI run for a7b976b. 🟢 All jobs passed!But CI Insights is watching 👀 |
(cherry picked from commit 2418cf5)
(cherry picked from commit 8b38f4b)
(cherry picked from commit 3cacd32)
(cherry picked from commit ce7150d)
(cherry picked from commit 718b77e)
(cherry picked from commit 8070560)
(cherry picked from commit f0c4925)
(cherry picked from commit c5fef2b)
(cherry picked from commit 2c82472)
(cherry picked from commit 2757e68)
9c5d777 to
a7b976b
Compare
Describe your changes
Adds support for an optional masp frontend providers sustainability fees. This fee is supported as both a transparent and a shielded transfer (with the exception of incoming shielding IBC packets). To support it the followings have been changed:
Shielding and (IBC) unshielding
The sdk has been extended to allow specifying the entry for this fee. This is an optional target and a percentage which will be applied to all inputs. The sdk adjusts the input amounts to account for this extra fee.
There's one limitation for the IBC unshielding case. If the transaction ultimately fails (rejected by the target chain or timed out) we refund the amount of the unshielding to a disposable address. The frontend fees are not part of this amount and do not get refunded: to support this we'd need to temporarily escrow those tokens to an internal address and finalize the fee payment only once the target chain has confirmed the transaction to be successful (this would require some protocol support and should probably be done in conjunction with #4726). On top of this, the unshielding refunds are done to a disposable transparent address from which the user might want to reshield the tokens: this would incur in another frontend fee event leading to multiple fees applied to the same overall action.
Incoming IBC shielding packets
The optional target and percentage of the fee can be passed to the
gen_ibc_shielding_transferfunction. Since IBC is limited to a single token, the asset is automatically inferred to be the same of the transfer and fees are not supported when shielding nfts. The fee amount itself will be encoded as an additional shielded output of the MASP bundle so that we can avoid the need for protocol-breaking changes.Osmosis swaps
Osmosis swaps are ultimately collapsed to the above ibc cases and so the same rules apply. In case the swap was fully shielded the frontend provider should refrain from charging a fee since this should count as a fully shielded transaction.
Checklist before merging
breaking::labelsnamada-docsreponamada-indexerornamada-masp-indexer, a corresponding PR is opened in that repoThis is an automatic backport of pull request #4790 done by [Mergify](https://mergify.com).