A financial product is made up of two components: the derivative recipe and the oracle recipe. The derivative recipe is a set of logic that defines how certain margin input is recalculated into a payout at the end of a contract. An oracle recipe describes how data will be fetched from an off-chain or on-chain source, which data exactly will be fetched, and how this data will be processed. Derivative and oracle recipes are registered at their respective derivative or oracle register. Data about margin inputs for positions is stored in the derivative register and fetched data from oracle recipes is stored in the oracle register. The Opium Core fetches data input from an oracle recipe at the oracle register to run calculations in the derivative recipe. As derivative and oracle recipes are Turing complete, they can comprise any possible logic. Products can, for example, be created on price movement, bankruptcy and political or sports events. Users can create many combinations of derivative recipes with oracle recipes and create a contract. The Opium Core, which is on-chain, checks if the input parameters, such as maturity, margin and, for example, strike price, fit the derivative and oracle recipe after which the token minter creates long or short tokens.