FIELD

The described embodiments relate to systems and methods for conducting electronic transactions and, in particular, electronic transactions in a distributed ledger system.

Introduction

The Ethereum blockchain is programmable, and allows users to create and deploy custom programs in the form of smart contracts. The programmability of the Ethereum blockchain is made possible in part by the Ethereum Virtual Machine (“EVM”), which is Turing complete, and operates to execute the program code of smart contracts deployed on the Ethereum blockchain.

The Ethereum blockchain is comprised of multiple nodes that communicate with each other via a peer-to-peer network protocol. Each node executes its own EVM and, in particular, each node executes the same program code of deployed smart contracts using its own local EVM. Because each node executes the EVM separately, the Ethereum network uses a protocol to maintain consensus across all nodes, allowing nodes to maintain a shared state. This consensus mechanism renders certain data stored in the blockchain immutable after it has been confirmed via the consensus mechanism.

SUMMARY

In a first broad aspect, there is provided a method for automatically conducting a continuous forward rate agreement (CFRA) in a cryptocurrency using smart contracts, the method comprising: identifying a first smart contract, the first smart contract having a first address and a first borrower address associated therewith, the first smart contract having (i) a owed amount value initially based on an amount of cryptocurrency transferred to the first borrower address, (ii) a collateral value representing a value of a collateral object committed to the smart contract associated with the first borrower address, (iii) an interest rate query routine configured to periodically determine a first variable interest rate based at least on an extrinsic rate or an intrinsic rate; identifying at least one loan token associated with the first smart contract, the at least one loan token representing an interest in the collateral object; identifying a second smart contract, the second smart contract having a second address and a first lender address associated therewith, the second smart contract having (i) a lender balance representing a lender amount of cryptocurrency associated with the first lender address, and (ii) a second interest rate query routine configured to periodically determine a second variable interest rate based at least on the extrinsic rate or the intrinsic rate; generating an obligation object, wherein generating the obligation object comprises: receiving control of the at least one loan token; generating a borrower balance of the obligation object based on the collateral value associated with the at least one loan token; receiving control of the lender amount; generating the lender balance of the obligation object based on the lender amount; generating at least one lender token and at least one borrower token; associating the at least one lender token with the first lender address; associating the at least one borrower token with the first borrower address; and determining a predetermined interest rate associated with the obligation object; and executing the obligation object, wherein executing the obligation object comprises: receiving at least one first payment from the first borrower address; receiving at least one second payment from the first lender address; updating the borrower balance based on the at least one first payment and the at least one second payment; detecting a triggering event; and in response to detection of the triggering event: computing a lender return amount based on the lender balance and the at least one first payment; computing a borrower return amount based on the borrower balance and the at least one first payment; and releasing a cryptocurrency based on the lender return amount and the borrower return amount.

In some cases, the at least one lender token comprises a plurality of lender tokens.

In some cases, a subset of the plurality of lender tokens is associated with a second lender address, and wherein the lender amount is re-allocated between the first lender address and the second lender address according to a proportion of the plurality of lender tokens associated with the first and second lender addresses, respectively.

In some cases, the method may further comprise: de-associating the at least one lender token from the first lender address; transferring a subset of the loan amount to the first lender; and receiving a secondary loan amount to replace the subset of the loan amount, from the second lender.

In some cases, the at least one borrower token comprises a plurality of borrower tokens.

In some cases, a subset of the plurality of borrower tokens is associated with a second borrower address, and wherein the borrower balance is re-allocated between the first borrower address and the second borrower address according to a proportion of the plurality of borrower tokens associated with the first and second borrower addresses, respectively.

In some cases, the method may further comprise de-associating the at least one borrower token from the first borrower address.

In some cases, generating the obligation object further comprises querying an external server or smart contract to determine the predetermined interest rate.

In some cases, the predetermined interest rate is fixed.

In some cases, executing the obligation object further comprises: determining that the extrinsic rate is below the predetermined interest rate; and increasing a proportion of the loan amount to be allocated to the lender address, based on the difference between the extrinsic rate and the predetermined interest rate.

In some cases, executing the obligation object further comprises: determining that the extrinsic rate is above the predetermined interest rate; and increasing a proportion of the loan amount to be allocated to the borrower address, based on the difference between the extrinsic rate and the predetermined interest rate.

In some cases, receiving control of the lender amount comprises the obligation object receiving control of the lender amount, the method further comprising transferring a portion of the lender amount to the first smart contract to reduce the owed amount value.

In some cases, detecting the triggering event comprises detecting that the collateral value is lower than the loan amount presently allocated to the lender.

In some cases, detecting the triggering event comprises detecting that a term of the obligation object has elapsed.

In some cases, the first payment is at least one borrower interest payment based on the first variable interest rate.

In some cases, the second payment is at least one lender interest payment based on the second variable interest rate.

In some cases, the obligation object is a smart contract.

In some cases, the at least one first payment comprises a plurality of payments, and wherein the monitoring the at least one first payment comprises periodically monitoring the plurality of payments.

In some cases, the cryptocurrency is based on a form of Dai. In some cases, the extrinsic rate is a Dai Savings Rate. In some cases, the extrinsic rate is based on a dividend rate.

In another broad aspect, there is provided a method for automatically conducting a continuous forward rate agreement in a cryptocurrency using smart contracts, the method comprising: generating an obligation object, the obligation object having a first address and a first borrower address associated therewith, the obligation object having (i) an owed amount value initially based on an amount of cryptocurrency transferred to the first borrower address, (ii) a collateral value representing a value of a collateral object committed to the obligation object by the first borrower address, (iii) an interest rate query routine configured to periodically determine a first variable interest rate based at least on an extrinsic rate or an intrinsic rate, the obligation object further having a first lender address associated therewith, and (i) a lender balance representing a lender amount of cryptocurrency associated with the first lender address, wherein generating the obligation object further comprises: generating a borrower balance of the obligation object based on the collateral value associated with the at least one loan token; generating the lender balance of the obligation object based on the lender amount; generating at least one lender token and at least one borrower token; associating the at least one lender token with the first lender address; associating the at least one borrower token with the first borrower address; and determining a predetermined interest rate associated with the obligation object; and executing the obligation object, wherein executing the obligation object comprises: receiving at least one first payment from the first borrower address; receiving at least one second payment from the first lender address; updating the borrower balance based on the at least one first payment and the at least one second payment; detecting a triggering event; and in response to detection of the triggering event: computing a lender return amount based on the lender balance and the at least one first payment; computing a borrower return amount based on the borrower balance and the at least one first payment; and releasing a cryptocurrency based on the lender return amount and the borrower return amount.

In another broad aspect, there is provided a non-transitory computer readable medium storing computer program code executable by a processor, which when executed by the processor causes the processor to carry out the methods described herein.

In still another broad aspect, there is provided a system for automatically conducting a continuous forward rate agreement in a cryptocurrency using smart contracts, the system comprising: a data communications network; at least one lender device; at least one borrower device; and at least one node device comprising a processor and a memory, the processor configured to carry out the methods described herein.

