This is about paying for the delivery of
https://collectives.subsquare.io/posts/16
Report here: https://collectives.subsquare.io/posts/20
Validation done so far:
- Requested amount matches initial amount asked.
- Contributions are there and seem to match the report.
Noteworthy the following have not yet been implemented/should be improved in a follow-up:
- Ancestry proofs. Right now the on-demand order payment is not fully verified by the runtime.
- Mortality of transactions is not yet set correctly.
- Avoid accessing relay-chain storage where possible as this will easily break with upgrades. Most if not all accesses should be possible to avoid already (e.g. by properly using transaction mortality), where it is not yet (if there is any), adding a runtime API or similar should be considered.
- To make the work more accessible it should become integrated with Omni-node in some way.
- Handling of remaining misbehavior/use proper proofs to handle misbehaving nodes and asynchronicity. (Very much related to (1))
- Reward handling: While the code does determine what was spent for an order, it discards the information instead of making sure that the order placer will get compensated for the placed order accordingly. To make the system robust, the reward should consist of what was paid for the order (to ensure the order placer can not make a loss) + some actual reward on top - otherwise the parachain might stall with price fluctuations (collators refusing to order at a loss).
- Code audit
- Getting some parachain to use it, to prove its production readiness (together with the code audit).
- Code Quality: Quite a lot of traits for customization, which is a bit confusing to read and follow along. Consider to either remove some customizations which are unlikely to be needed (can be added on-demand) or structuring them properly in one-place, with good documentation on e.g. default behavior, that the pallet itself offers an implementation with this and that behavior, and similar. Structure the code a bit better to make it visible at a glance what is implementation detail and what is user-facing entry points.
Missing validation/yet to be done:
Does it actually work? I have not tested this yet. Anyone eager to try this out, play around with it - a short report would be valuable.
TL;DR: From review I would say that a lot of useful work has been delivered. I would believe from reading the code that it works (although it is lacking robustness in some places, as listed above). Therefore I would suggest voting yes on this payment. Any followup should need to be required to make good progress on the remaining points raised.
Related discussion: https://collectives.subsquare.io/posts/20