Skip to content

Instantly share code, notes, and snippets.

@tdietert
Created March 8, 2018 16:34
Show Gist options
  • Save tdietert/1d889f55747c1761637d6afe6e5d4b54 to your computer and use it in GitHub Desktop.
Save tdietert/1d889f55747c1761637d6afe6e5d4b54 to your computer and use it in GitHub Desktop.
A simple loan implemented in FCL
global account issuer = 'CssRnWaxBhRRwhVL7ESgXkP7cgZ9vjFzV5nmr4jj3ZAh';
global account borrower = 'vVVq8PMEa9qGLL7LEmHUZKM78ze5JUgDPnjSE6FES63';
global assetFrac2 asset_ = 'HjdMu5LtF7BW6pGzvZGsV7ABUA4dkZFB2TmXQiymNpue';
global fixed2 interest= 0.05f;
global fixed2 principal;
global fixed2 payout;
global datetime maturityDate = "2018-03-08T10:12:00+00:00";
transition initial -> amountConfirmed;
transition amountConfirmed -> amountTransferred;
transition amountTransferred -> terminal;
@initial
propose(fixed2 ask) {
if((sender() == issuer)) {
principal = ask;
transitionTo(:amountConfirmed);
};
}
@amountConfirmed
loan() {
if((sender() == issuer)){
transferHoldings(issuer, asset_, principal, borrower);
transitionTo(:amountTransferred);
};
}
@amountTransferred
settle(){
after(maturityDate) {
if((sender() == issuer)){
if((isBusinessDayUK(now()))){
payout = (principal + (principal * interest));
transferHoldings(issuer, asset_, payout, borrower);
transitionTo(:terminal);
};
};
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment