Collect Call
When does the originating transaction NOT pay for a Hook execution?
Hook Design Philosophy
Every party affected by a transaction should have the opportunity to have their hooks executed.
When hooks are not Strongly Executed it is unfair to bill the originating transaction for their execution. For example an OfferCreate which crosses 20 offers on the DEX should not be forced to pay for the execution of each of those account's Hooks.
Therefore during typical Weak execution the fee for the execution is collected from the owner of the Hook. To enable this:
- The Hook owner must have set asfTshCollecton their XRPL account using the AccountSet transaction.
- The Hook owner must have set hsfCollecton the specific Hook they wish to be called as a Weak TSH.
Fee Responsibility Table
| Type of Weak Execution | Fee | 
|---|---|
| Again As Weak - Happens when a Strongly Executed Hook calls hook_again | Free (already paid by the Strong Execution). | 
| Callback - Happens when an emitted transaction either makes it into a ledger or is flagged as being impossible to ever make it into a ledger. | Free (already paid during Emission). | 
| Weak Transactional Stakeholder - Happens if a transaction in some way mildly affects your account. | Paid for by your account (not by the originating transaction) if and only if both your account is marked with asfTshCollectflag and your Hook is marked with thehsfCollectflag. | 
Warning
This is an advanced feature most Hook Developers will probably not use.
Updated over 3 years ago