Extend receiver functionality#19
Open
yongqjn wants to merge 6 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
payoutReceiversupport so provider authorization is separated from provider-side payout custodypayoutReceiverwhen configuredIDisburser.onDisbursement(jobId, selector, token, amount, data)callback support for receiver contracts that advertise the interface via ERC-165Design Reference
This follows the Payout Receiver design described in HackMD:
https://hackmd.io/@nicholas-okx/HkBJoKY0Wg
The design goal is to avoid treating the provider as both the operational actor and the payment recipient. A job can keep
provideras the actor authorized to submit work, whilepayoutReceiverreceives provider-side funds. This supports wallet segregation and custom downstream fee routing without forcing one static ACP fee model.Behavior
payoutReceiver == address(0): ACP pays the provider and does not callonDisbursementonDisbursementIDisburser: ACP pays the receiver, then callsonDisbursementafter the ERC-20 transfercompleteScope note: this PR applies the payout receiver behavior to the current
completedisbursement path.settleis out of scope for this branch.Testing
npm test