Skip to main content

Data source

What everyone needs to know​

  • A data source contract is a way of providing extensions to a treasury that either override or augment the default JBPayoutRedemptionPaymentTerminal3_1_1 functionality.
  • A data source contract can be used to provide custom data to the JBPayoutRedemptionPaymentTerminal3_1_1.pay(...) transaction and/or the JBPayoutRedemptionPaymentTerminal3_1_1.redeemTokensOf(...) transaction.
  • A data source is passed contextual information from the transactions, from which it can derive custom data for the protocol to use to affect subsequent behaviors in the pay and redeem transactions. Contextual information from the pay transaction is passed to the data source in the form of JBPayParamsData , and contextual information from the redeem transaction is passed to the data source in the form of JBRedeemParamsData.
  • Data sources can revert under custom circumstances, which can be used to create a gated treasury, max token supply, min contribution amount, etc.
  • A data source is responsible for specifying any delegate hooks that should be triggered after the core functionality of a pay(...) or redeemTokensOf(...) transaction executes successfully.
  • Each IJBPaymentTerminal fork can leverage data sources in unique ways.

What you'll want to know if you're building​

Get started building data sources.