diff --git a/scripts/btcMortgage.js b/scripts/btcMortgage.js index aaf6556..797ba69 100644 --- a/scripts/btcMortgage.js +++ b/scripts/btcMortgage.js @@ -111,4 +111,76 @@ findLocker, extractPubKeyFromSign } + //get BTC rates + const getRate = btcMortgage.getRate = {}; + + getRate["BTC"] = function () { + return new Promise((resolve, reject) => { + fetch('https://api.coinlore.net/api/ticker/?id=90').then(response => { + if (response.ok) { + response.json() + .then(result => resolve(result[0].price_usd)) + .catch(error => reject(error)); + } else + reject(response.status); + }).catch(error => reject(error)); + }); + } + + //Loan details on FLO blockchain + const LOAN_DETAILS_IDENTIFIER = "BTC Mortage: Loan details"; + + function stringifyLoanOpenData( + borrower, loan_amount, policy_id, + coborrower, collateral_value, collateral_lock_id, + lender, loan_transfer_id, + borrower_sign, coborrower_sign, lender_sign + ) { + return [ + LOAN_DETAILS_IDENTIFIER, + "Borrower:" + floCrypto.toFloID(borrower), + "Amount:" + loan_amount, + "Policy:" + policy_id, + "CoBorrower:" + floCrypto.toFloID(coborrower), + "CollateralValue:" + collateral_value + "BTC", + "CollateralLock:" + collateral_lock_id, + "Lender:" + floCrypto.toFloID(lender), + "TokenTransfer:" + loan_transfer_id, + "Signature-B:" + borrower_sign, + "Signature-C:" + coborrower_sign, + "Signature-L:" + lender_sign + ].join('|'); + /*MAYDO: Maybe make it a worded sentence? + BTC Mortage: + L#${lender_floid} is lending ${loan_amount}USD (ref#${loan_transfer_id}) to B#${borrower_floid} + inaccoradance with policy#${policy_id} + as mortage on collateral#${collateral_id} (${btc_amount}BTC) provided by C#${coborrower_floid}. + Signed by B'${borrower_sign} , C'{coborrower_sign} and L'${lender_sign} + */ + } + + function parseLoanOpenData(str, tx_time) { + let splits = str.split('|'); + if (splits[0] !== LOAN_DETAILS_IDENTIFIER) + throw "Invalid Loan blockchain data"; + var details = { open_time: tx_time }; + splits.forEach(s => { + let d = s.split(':'); + switch (d[0]) { + case "Borrower": details.borrower = d[1]; break; + case "Amount": details.loan_amount = parseFloat(d[1]); break; + case "Policy": details.policy_id = d[1]; break; + case "CoBorrower": details.coborrower = d[1]; break; + case "CollateralValue": details.collateral_value = parseFloat(d[1]); break; + case "CollateralLock": details.collateral_lock_id = d[1]; break; + case "Lender": details.lender = d[1]; break; + case "TokenTransfer": details.loan_transfer_id = d[1]; break; + case "Signature-B": details.borrower_sign = d[1]; break; + case "Signature-C": details.coborrower_sign = d[1]; break; + case "Signature-L": details.lender_sign = d[1]; break; + } + }); + return details; + } + })(window.btcMortgage = {}) \ No newline at end of file