tx · DgYEyA7zNNRWW4V7MrCoU759abxzxy6WzpwwnG1KpZMS 3PHwL6FTA7Axjo44tpTGTjhgcfqc4xGY576: -0.01400000 Waves 2021.04.29 06:18 [2567843] smart account 3PHwL6FTA7Axjo44tpTGTjhgcfqc4xGY576 > SELF 0.00000000 Waves
{ "type": 13, "id": "DgYEyA7zNNRWW4V7MrCoU759abxzxy6WzpwwnG1KpZMS", "fee": 1400000, "feeAssetId": null, "timestamp": 1619666242072, "version": 2, "chainId": 87, "sender": "3PHwL6FTA7Axjo44tpTGTjhgcfqc4xGY576", "senderPublicKey": "3D9xjQpXYSkSGgkSjM3TEXX2aCMvxqjoT5BR4aNcXaS2", "proofs": [ "5gHajXVVgEwGLKmmyWgA2apJsiC7jXmfpLfDnWVkvhZcdzyePhm5eRTnqAkrFshGKM96JefBtknQEgG7mSmviGsX" ], "script": "base64:AAIDAAAAAAAAAAkIARIDCgEBEgAAAAABAAAAABVsb2FuZWxpZ2liaWxpdHlmYWN0b3IJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAAEWVsaWdpYmlsaXR5ZmFjdG9yAAAAAgAAAANpbnYBAAAAC1JlcXVlc3RMb2FuAAAAAQAAAARkYXlzBAAAAANwbXQJAQAAAAdleHRyYWN0AAAAAQgFAAAAA2ludgAAAAdwYXltZW50BAAAAA9tYXhpbXVtbG9hbmRheXMAAAAAAAAAAFoEAAAACmxvYW5hbW91bnQJAABpAAAAAgkAAGgAAAACCAUAAAADcG10AAAABmFtb3VudAUAAAAVbG9hbmVsaWdpYmlsaXR5ZmFjdG9yAAAAAAAAAAPoBAAAAAtVU0ROQXNzZXRJRAEAAAAgtiYpwwT1zlORpA5LdSQvZIxRsfrfr1QpvUjSHSqyqtEEAAAAEGNoZWNrVVNETmJhbGFuY2UJAAPrAAAAAgUAAAAEdGhpcwUAAAALVVNETkFzc2V0SUQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAECAAAAQkluY29ycmVjdCBhc3NldCBhdHRhY2hlZCBmb3IgQ29sbGF0ZXJhbCwgcGxlYXNlIGF0dGFjaCBXQVZFUyBvbmx5LgMJAABnAAAAAgAAAAAAAAAAAAUAAAAEZGF5cwkAAAIAAAABAgAAACVFbnRlciBuby4gb2YgZGF5cyBpbiBiZXR3ZWVuIDEgdG8gOTAuAwkAAGYAAAACBQAAAARkYXlzBQAAAA9tYXhpbXVtbG9hbmRheXMJAAACAAAAAQIAAABNWW91IEVudGVyZWQgZGF5cyBncmVhdGVyIHRoYW4gOTAgcGxlYXNlIEVudGVyIG5vLiBvZiBkYXlzIGluIGJldHdlZW4gMSB0byA5MC4DCQAAZgAAAAIAAAAAAAvrwgAIBQAAAANwbXQAAAAGYW1vdW50CQAAAgAAAAECAAAAHlBsZWFzZSBBdHRhY2ggbWluaW11bSAyIFdBVkVTLgMJAABmAAAAAgUAAAAKbG9hbmFtb3VudAUAAAAQY2hlY2tVU0ROYmFsYW5jZQkAAAIAAAABAgAAAH9Tb3JyeSEgUmVxdWlyZWQgTG9hbiBhbW91bnQgaXMgZ3JlYXRlciB0aGFuIGF2YWlsYWJsZSBvbiBEQXBwIEFkZHJlc3MsIENoZWNrIERBcHAgVVNETiBiYWxhbmNlIG9yIFRyeSBmb3IgYSBsZXNzIGFtb3VudCBQbGVhc2UuBAAAAApjdXJyZW50S2V5CQACWAAAAAEICAUAAAADaW52AAAABmNhbGxlcgAAAAVieXRlcwQAAAAQdXNlcmJvcnJvd2hlaWdodAkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgIAAAARQm9ycm93X2hlaWdodF9PZl8FAAAACmN1cnJlbnRLZXkFAAAABmhlaWdodAQAAAAKbG9hbnN0YXR1cwIAAAAJTE9BTl9QQUlEBAAAAA9sb2Fuc3RhdHVzZW50cnkJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAICAAAAD0xvYW5fU3RhdHVzX09mXwUAAAAKY3VycmVudEtleQUAAAAKbG9hbnN0YXR1cwQAAAAQY29sbGF0ZXJhbGFtb3VudAkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgIAAAAVQ29sbGF0ZXJhbF9BbW91bnRfT2ZfBQAAAApjdXJyZW50S2V5CAUAAAADcG10AAAABmFtb3VudAQAAAAPbG9hbmFtb3VudGVudHJ5CQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAAA9Mb2FuX0Ftb3VudF9PZl8FAAAACmN1cnJlbnRLZXkFAAAACmxvYW5hbW91bnQEAAAABm9uZWRheQAAAAAAAAAFoAQAAAAPdG90YWxsb2FuYmxvY2tzCQAAaAAAAAIFAAAABm9uZWRheQUAAAAEZGF5cwQAAAAUdG90YWxsb2FuYmxvY2tzZW50cnkJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAICAAAAFVRvdGFsX0xvYW5fQmxvY2tzX09mXwUAAAAKY3VycmVudEtleQUAAAAPdG90YWxsb2FuYmxvY2tzBAAAABBwZXJibG9ja2ludGVyZXN0AAAAAAAAAABEBAAAAAxsb2FuaW50ZXJlc3QJAABoAAAAAgkAAGgAAAACBQAAABBwZXJibG9ja2ludGVyZXN0BQAAAA90b3RhbGxvYW5ibG9ja3MJAABpAAAAAggFAAAAA3BtdAAAAAZhbW91bnQAAAAAAAX14QAEAAAAEWxvYW5pbnRlcmVzdGVudHJ5CQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAABFMb2FuX0ludGVyZXN0X09mXwUAAAAKY3VycmVudEtleQUAAAAMbG9hbmludGVyZXN0BAAAABNwcmV2aW91c2xvYW5iYWxhbmNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzAgAAABBUb3RhbF9Mb2FuX1BhaWQ6BAAAAA10b3RhbGxvYW5wYWlkCQAAZAAAAAIFAAAAE3ByZXZpb3VzbG9hbmJhbGFuY2UJAABpAAAAAggFAAAAA3BtdAAAAAZhbW91bnQAAAAAAAX14QAEAAAAA1RMUAkBAAAACURhdGFFbnRyeQAAAAICAAAAEFRvdGFsX0xvYW5fUGFpZDoFAAAADXRvdGFsbG9hbnBhaWQEAAAAC2xvYW5tZXNzYWdlCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAHbWVzc2FnZQIAAAAmPGgxPkxvYW4gSXNzdWVkIFN1Y2Nlc3NmdWxseSE8L2gxPjxicj4JAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIFAAAAEHVzZXJib3Jyb3doZWlnaHQJAARMAAAAAgUAAAAPbG9hbnN0YXR1c2VudHJ5CQAETAAAAAIFAAAAEGNvbGxhdGVyYWxhbW91bnQJAARMAAAAAgUAAAAPbG9hbmFtb3VudGVudHJ5CQAETAAAAAIFAAAAFHRvdGFsbG9hbmJsb2Nrc2VudHJ5CQAETAAAAAIFAAAAEWxvYW5pbnRlcmVzdGVudHJ5CQAETAAAAAIFAAAAA1RMUAkABEwAAAACBQAAAAtsb2FubWVzc2FnZQUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAANpbnYAAAAGY2FsbGVyBQAAAApsb2FuYW1vdW50AQAAACC2JinDBPXOU5GkDkt1JC9kjFGx+t+vVCm9SNIdKrKq0QkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABAQAAACD4pjQTJcJSowMPnoCp5sYIjTjUlUnJPawCWCInLz2qCwkAAGkAAAACCQAAaAAAAAIFAAAADGxvYW5pbnRlcmVzdAAAAAAAAAAASwAAAAAAAAAAZAUAAAAEdW5pdAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABAQAAACCC4ePIkXCc/JEhh3oHoQtpQ092KlXm5KiCBDJdSIO7RQkAAGkAAAACCQAAaAAAAAIFAAAADGxvYW5pbnRlcmVzdAAAAAAAAAAAGQAAAAAAAAAAZAUAAAAEdW5pdAUAAAADbmlsAAAAA2ludgEAAAAJUmVwYXlMb2FuAAAAAAQAAAADcG10CQEAAAAHZXh0cmFjdAAAAAEIBQAAAANpbnYAAAAHcGF5bWVudAQAAAAHdXNlcmtleQkAAlgAAAABCAgFAAAAA2ludgAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAB2Fzc2V0aWQBAAAAILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRBAAAAA1nZXRsb2FuYW1vdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAICAAAAD0xvYW5fQW1vdW50X09mXwUAAAAHdXNlcmtleQQAAAASZ2V0dG90YWxsb2FuYmxvY2tzCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAICAAAAFVRvdGFsX0xvYW5fQmxvY2tzX09mXwUAAAAHdXNlcmtleQMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAAHYXNzZXRpZAkAAAIAAAABAgAAAFlDaG9vc2UgVVNETiBBc3NldCBPbmx5IGZvciBSZXBheSBvciBZb3VyIElucHV0IFVTRE4gQW1vdW50IGlzIG5vdCBlcXVhbCB0byBMb2FuIFlvdSBUb29rLgMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAGYW1vdW50BQAAAA1nZXRsb2FuYW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAADZZb3VyIElucHV0IFVTRE4gQW1vdW50IGlzIG5vdCBlcXVhbCB0byBMb2FuIEFtb3VudDo9PiAJAAGkAAAAAQUAAAANZ2V0bG9hbmFtb3VudAIAAABLIERpdmlkZSBZb3VyICdMb2FuIEFtb3VudDo9Picgd2l0aCAxLDAwMCwwMDAgdG8gZ2V0IHZhbHVlIGluIFVTRE4gZGVjaW1hbHMuBAAAAApjdXJyZW50S2V5CQACWAAAAAEICAUAAAADaW52AAAABmNhbGxlcgAAAAVieXRlcwQAAAAPZ2V0Ym9ycm93aGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAICAAAAEUJvcnJvd19oZWlnaHRfT2ZfBQAAAApjdXJyZW50S2V5BAAAAAtncmFjZXBlcmlvZAUAAAASZ2V0dG90YWxsb2FuYmxvY2tzBAAAAA5yZXBheXRpbWVsaW1pdAkAAGQAAAACBQAAAA9nZXRib3Jyb3doZWlnaHQFAAAAC2dyYWNlcGVyaW9kAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAADnJlcGF5dGltZWxpbWl0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAChZb3VyIExvYW4gUmVwYXliYWNrIHBlcmlvZCBpcyBvdmVyIHdpdGggCQABpAAAAAEFAAAAC2dyYWNlcGVyaW9kAgAAAAcgYmxvY2tzBAAAAA9nZXRsb2FuaW50ZXJlc3QJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAARTG9hbl9JbnRlcmVzdF9PZl8FAAAACmN1cnJlbnRLZXkEAAAAE2dldGNvbGxhdGVyYWxhbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAVQ29sbGF0ZXJhbF9BbW91bnRfT2ZfBQAAAApjdXJyZW50S2V5BAAAABdjb2xsYXRlcmFscmVsZWFzZWFtb3VudAkAAGUAAAACBQAAABNnZXRjb2xsYXRlcmFsYW1vdW50BQAAAA9nZXRsb2FuaW50ZXJlc3QJAQAAAAxTY3JpcHRSZXN1bHQAAAACBAAAABB1cGRhdGVsb2Fuc3RhdHVzCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAAA9Mb2FuX1N0YXR1c19PZl8FAAAACmN1cnJlbnRLZXkCAAAAAAQAAAAQdXBkYXRlbG9hbmFtb3VudAkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgIAAAAPTG9hbl9BbW91bnRfT2ZfBQAAAApjdXJyZW50S2V5AAAAAAAAAAAABAAAABV1cGRhdGV0b3RhbGxvYW5ibG9ja3MJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAICAAAAFVRvdGFsX0xvYW5fQmxvY2tzX09mXwUAAAAKY3VycmVudEtleQAAAAAAAAAAAAQAAAAWdXBkYXRlY29sbGF0ZXJhbGFtb3VudAkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgIAAAAVQ29sbGF0ZXJhbF9BbW91bnRfT2ZfBQAAAApjdXJyZW50S2V5AAAAAAAAAAAABAAAABJ1cGRhdGVib3Jyb3doZWlnaHQJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAICAAAAEUJvcnJvd19oZWlnaHRfT2ZfBQAAAApjdXJyZW50S2V5AAAAAAAAAAAABAAAABJ1cGRhdGVsb2FuaW50ZXJlc3QJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAICAAAAEUxvYW5fSW50ZXJlc3RfT2ZfBQAAAApjdXJyZW50S2V5AAAAAAAAAAAABAAAAAtsb2FubWVzc2FnZQkBAAAACURhdGFFbnRyeQAAAAICAAAAB21lc3NhZ2UCAAAAJzxoMT5Mb2FuIFJlcGF5ZWQgU3VjY2Vzc2Z1bGx5ITwvaDE+PGJyPgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACBQAAABB1cGRhdGVsb2Fuc3RhdHVzCQAETAAAAAIFAAAAEHVwZGF0ZWxvYW5hbW91bnQJAARMAAAAAgUAAAAVdXBkYXRldG90YWxsb2FuYmxvY2tzCQAETAAAAAIFAAAAFnVwZGF0ZWNvbGxhdGVyYWxhbW91bnQJAARMAAAAAgUAAAASdXBkYXRlYm9ycm93aGVpZ2h0CQAETAAAAAIFAAAAEnVwZGF0ZWxvYW5pbnRlcmVzdAkABEwAAAACBQAAAAtsb2FubWVzc2FnZQUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAANpbnYAAAAGY2FsbGVyBQAAABdjb2xsYXRlcmFscmVsZWFzZWFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAHJG1hdGNoMAUAAAACdHgJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5lDbpcA==", "height": 2567843, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: D26HXXjfdZsEvz9fd8LHTuKbNdzNDk5jx9KSz9VC8haH Next: none Diff:
Old | New | Differences | |
---|---|---|---|
37 | 37 | let totalloanpaid = (previousloanbalance + (pmt.amount / 100000000)) | |
38 | 38 | let TLP = DataEntry("Total_Loan_Paid:", totalloanpaid) | |
39 | 39 | let loanmessage = DataEntry("message", "<h1>Loan Issued Successfully!</h1><br>") | |
40 | - | ScriptResult(WriteSet([userborrowheight, loanstatusentry, collateralamount, loanamountentry, totalloanblocksentry, loaninterestentry, TLP, loanmessage]), TransferSet([ScriptTransfer(inv.caller, loanamount, base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'), ScriptTransfer(addressFromPublicKey(base58'Hjd6p3ArqjnQAsejFwu7JcQciVVx9RaQhtMfGBCAi76z'), loaninterest, unit)])) | |
40 | + | ScriptResult(WriteSet([userborrowheight, loanstatusentry, collateralamount, loanamountentry, totalloanblocksentry, loaninterestentry, TLP, loanmessage]), TransferSet([ScriptTransfer(inv.caller, loanamount, base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'), ScriptTransfer(addressFromPublicKey(base58'Hjd6p3ArqjnQAsejFwu7JcQciVVx9RaQhtMfGBCAi76z'), ((loaninterest * 75) / 100), unit), ScriptTransfer(addressFromPublicKey(base58'9ounAoJmMq3BtRZR4Es6U6MB8z1UBpuTQmLt2A5dtK2C'), ((loaninterest * 25) / 100), unit)])) | |
41 | 41 | } | |
42 | 42 | } | |
43 | 43 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let loaneligibilityfactor = getIntegerValue(this, "eligibilityfactor") | |
5 | 5 | ||
6 | 6 | @Callable(inv) | |
7 | 7 | func RequestLoan (days) = { | |
8 | 8 | let pmt = extract(inv.payment) | |
9 | 9 | let maximumloandays = 90 | |
10 | 10 | let loanamount = ((pmt.amount * loaneligibilityfactor) / 1000) | |
11 | 11 | let USDNAssetID = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p' | |
12 | 12 | let checkUSDNbalance = assetBalance(this, USDNAssetID) | |
13 | 13 | if (isDefined(pmt.assetId)) | |
14 | 14 | then throw("Incorrect asset attached for Collateral, please attach WAVES only.") | |
15 | 15 | else if ((0 >= days)) | |
16 | 16 | then throw("Enter no. of days in between 1 to 90.") | |
17 | 17 | else if ((days > maximumloandays)) | |
18 | 18 | then throw("You Entered days greater than 90 please Enter no. of days in between 1 to 90.") | |
19 | 19 | else if ((200000000 > pmt.amount)) | |
20 | 20 | then throw("Please Attach minimum 2 WAVES.") | |
21 | 21 | else if ((loanamount > checkUSDNbalance)) | |
22 | 22 | then throw("Sorry! Required Loan amount is greater than available on DApp Address, Check DApp USDN balance or Try for a less amount Please.") | |
23 | 23 | else { | |
24 | 24 | let currentKey = toBase58String(inv.caller.bytes) | |
25 | 25 | let userborrowheight = DataEntry(("Borrow_height_Of_" + currentKey), height) | |
26 | 26 | let loanstatus = "LOAN_PAID" | |
27 | 27 | let loanstatusentry = DataEntry(("Loan_Status_Of_" + currentKey), loanstatus) | |
28 | 28 | let collateralamount = DataEntry(("Collateral_Amount_Of_" + currentKey), pmt.amount) | |
29 | 29 | let loanamountentry = DataEntry(("Loan_Amount_Of_" + currentKey), loanamount) | |
30 | 30 | let oneday = 1440 | |
31 | 31 | let totalloanblocks = (oneday * days) | |
32 | 32 | let totalloanblocksentry = DataEntry(("Total_Loan_Blocks_Of_" + currentKey), totalloanblocks) | |
33 | 33 | let perblockinterest = 68 | |
34 | 34 | let loaninterest = ((perblockinterest * totalloanblocks) * (pmt.amount / 100000000)) | |
35 | 35 | let loaninterestentry = DataEntry(("Loan_Interest_Of_" + currentKey), loaninterest) | |
36 | 36 | let previousloanbalance = getIntegerValue(this, "Total_Loan_Paid:") | |
37 | 37 | let totalloanpaid = (previousloanbalance + (pmt.amount / 100000000)) | |
38 | 38 | let TLP = DataEntry("Total_Loan_Paid:", totalloanpaid) | |
39 | 39 | let loanmessage = DataEntry("message", "<h1>Loan Issued Successfully!</h1><br>") | |
40 | - | ScriptResult(WriteSet([userborrowheight, loanstatusentry, collateralamount, loanamountentry, totalloanblocksentry, loaninterestentry, TLP, loanmessage]), TransferSet([ScriptTransfer(inv.caller, loanamount, base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'), ScriptTransfer(addressFromPublicKey(base58'Hjd6p3ArqjnQAsejFwu7JcQciVVx9RaQhtMfGBCAi76z'), loaninterest, unit)])) | |
40 | + | ScriptResult(WriteSet([userborrowheight, loanstatusentry, collateralamount, loanamountentry, totalloanblocksentry, loaninterestentry, TLP, loanmessage]), TransferSet([ScriptTransfer(inv.caller, loanamount, base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'), ScriptTransfer(addressFromPublicKey(base58'Hjd6p3ArqjnQAsejFwu7JcQciVVx9RaQhtMfGBCAi76z'), ((loaninterest * 75) / 100), unit), ScriptTransfer(addressFromPublicKey(base58'9ounAoJmMq3BtRZR4Es6U6MB8z1UBpuTQmLt2A5dtK2C'), ((loaninterest * 25) / 100), unit)])) | |
41 | 41 | } | |
42 | 42 | } | |
43 | 43 | ||
44 | 44 | ||
45 | 45 | ||
46 | 46 | @Callable(inv) | |
47 | 47 | func RepayLoan () = { | |
48 | 48 | let pmt = extract(inv.payment) | |
49 | 49 | let userkey = toBase58String(inv.caller.bytes) | |
50 | 50 | let assetid = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p' | |
51 | 51 | let getloanamount = getIntegerValue(this, ("Loan_Amount_Of_" + userkey)) | |
52 | 52 | let gettotalloanblocks = getIntegerValue(this, ("Total_Loan_Blocks_Of_" + userkey)) | |
53 | 53 | if ((pmt.assetId != assetid)) | |
54 | 54 | then throw("Choose USDN Asset Only for Repay or Your Input USDN Amount is not equal to Loan You Took.") | |
55 | 55 | else if ((pmt.amount != getloanamount)) | |
56 | 56 | then throw((("Your Input USDN Amount is not equal to Loan Amount:=> " + toString(getloanamount)) + " Divide Your 'Loan Amount:=>' with 1,000,000 to get value in USDN decimals.")) | |
57 | 57 | else { | |
58 | 58 | let currentKey = toBase58String(inv.caller.bytes) | |
59 | 59 | let getborrowheight = getIntegerValue(this, ("Borrow_height_Of_" + currentKey)) | |
60 | 60 | let graceperiod = gettotalloanblocks | |
61 | 61 | let repaytimelimit = (getborrowheight + graceperiod) | |
62 | 62 | if ((height > repaytimelimit)) | |
63 | 63 | then throw((("Your Loan Repayback period is over with " + toString(graceperiod)) + " blocks")) | |
64 | 64 | else { | |
65 | 65 | let getloaninterest = getIntegerValue(this, ("Loan_Interest_Of_" + currentKey)) | |
66 | 66 | let getcollateralamount = getIntegerValue(this, ("Collateral_Amount_Of_" + currentKey)) | |
67 | 67 | let collateralreleaseamount = (getcollateralamount - getloaninterest) | |
68 | 68 | ScriptResult({ | |
69 | 69 | let updateloanstatus = DataEntry(("Loan_Status_Of_" + currentKey), "") | |
70 | 70 | let updateloanamount = DataEntry(("Loan_Amount_Of_" + currentKey), 0) | |
71 | 71 | let updatetotalloanblocks = DataEntry(("Total_Loan_Blocks_Of_" + currentKey), 0) | |
72 | 72 | let updatecollateralamount = DataEntry(("Collateral_Amount_Of_" + currentKey), 0) | |
73 | 73 | let updateborrowheight = DataEntry(("Borrow_height_Of_" + currentKey), 0) | |
74 | 74 | let updateloaninterest = DataEntry(("Loan_Interest_Of_" + currentKey), 0) | |
75 | 75 | let loanmessage = DataEntry("message", "<h1>Loan Repayed Successfully!</h1><br>") | |
76 | 76 | WriteSet([updateloanstatus, updateloanamount, updatetotalloanblocks, updatecollateralamount, updateborrowheight, updateloaninterest, loanmessage]) | |
77 | 77 | }, TransferSet([ScriptTransfer(inv.caller, collateralreleaseamount, unit)])) | |
78 | 78 | } | |
79 | 79 | } | |
80 | 80 | } | |
81 | 81 | ||
82 | 82 | ||
83 | 83 | @Verifier(tx) | |
84 | 84 | func verify () = match tx { | |
85 | 85 | case _ => | |
86 | 86 | sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
87 | 87 | } | |
88 | 88 |
github/deemru/w8io/3ef1775 37.65 ms ◑