tx · BhsbaTsch4WvYCtzFbxnjrdYREVKZ4nXx274upinc1RB 3P32KGEZqhNghPFjTPztpJMMWLcpiZJPwdP: -0.01400000 Waves 2022.09.16 12:57 [3297009] smart account 3P32KGEZqhNghPFjTPztpJMMWLcpiZJPwdP > SELF 0.00000000 Waves
{ "type": 13, "id": "BhsbaTsch4WvYCtzFbxnjrdYREVKZ4nXx274upinc1RB", "fee": 1400000, "feeAssetId": null, "timestamp": 1663321832390, "version": 2, "chainId": 87, "sender": "3P32KGEZqhNghPFjTPztpJMMWLcpiZJPwdP", "senderPublicKey": "5YjkiF9jfJb3fxMshx2fMLv6kF4Qf6CXRwfHxeJm8f89", "proofs": [ "5VtuGpD3weT9SCcK1wLGKXAQzwBTDBLQovXM9ZKfQvwD4vC7RHFhMa4eZVofrRiuTERuXVL7gPMchv5ZYr8JPAtW" ], "script": "base64:AAIEAAAAAAAAABAIAhIDCgEBEgASAwoBARIAAAAAAQAAAAAVbG9hbmVsaWdpYmlsaXR5ZmFjdG9yCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzAgAAABFlbGlnaWJpbGl0eWZhY3RvcgAAAAQAAAABaQEAAAALUmVxdWVzdExvYW4AAAABAAAABGRheXMEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAPbWF4aW11bWxvYW5kYXlzAAAAAAAAAABaBAAAAApsb2FuYW1vdW50CQAAaQAAAAIJAABoAAAAAggFAAAAA3BtdAAAAAZhbW91bnQFAAAAFWxvYW5lbGlnaWJpbGl0eWZhY3RvcgAAAAAAAAAD6AQAAAALVVNEVEFzc2V0SUQBAAAAIB6UBxNSdqEllf3IYaiCXxB/3zpPKbv8mkY/Wv02T5+RBAAAABBjaGVja1VTRFRiYWxhbmNlCQAD8AAAAAIFAAAABHRoaXMFAAAAC1VTRFRBc3NldElEAwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAkAAAIAAAABAgAAAEJJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQgZm9yIENvbGxhdGVyYWwsIHBsZWFzZSBhdHRhY2ggV0FWRVMgb25seS4DCQAAZwAAAAIAAAAAAAAAAAAFAAAABGRheXMJAAACAAAAAQIAAAAlRW50ZXIgbm8uIG9mIGRheXMgaW4gYmV0d2VlbiAxIHRvIDkwLgMJAABmAAAAAgUAAAAEZGF5cwUAAAAPbWF4aW11bWxvYW5kYXlzCQAAAgAAAAECAAAATVlvdSBFbnRlcmVkIGRheXMgZ3JlYXRlciB0aGFuIDkwIHBsZWFzZSBFbnRlciBuby4gb2YgZGF5cyBpbiBiZXR3ZWVuIDEgdG8gOTAuAwkAAGYAAAACAAAAAAAL68IACAUAAAADcG10AAAABmFtb3VudAkAAAIAAAABAgAAAB5QbGVhc2UgQXR0YWNoIG1pbmltdW0gMiBXQVZFUy4DCQAAZgAAAAIFAAAACmxvYW5hbW91bnQFAAAAEGNoZWNrVVNEVGJhbGFuY2UJAAACAAAAAQIAAAB/U29ycnkhIFJlcXVpcmVkIExvYW4gYW1vdW50IGlzIGdyZWF0ZXIgdGhhbiBhdmFpbGFibGUgb24gREFwcCBBZGRyZXNzLCBDaGVjayBEQXBwIFVTRFQgYmFsYW5jZSBvciBUcnkgZm9yIGEgbGVzcyBhbW91bnQgUGxlYXNlLgQAAAAKY3VycmVudEtleQkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAABB1c2VyYm9ycm93aGVpZ2h0CQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAABFCb3Jyb3dfaGVpZ2h0X09mXwUAAAAKY3VycmVudEtleQUAAAAGaGVpZ2h0BAAAAApsb2Fuc3RhdHVzAgAAAAlMT0FOX1BBSUQEAAAAD2xvYW5zdGF0dXNlbnRyeQkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACAgAAAA9Mb2FuX1N0YXR1c19PZl8FAAAACmN1cnJlbnRLZXkFAAAACmxvYW5zdGF0dXMEAAAAEGNvbGxhdGVyYWxhbW91bnQJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAFUNvbGxhdGVyYWxfQW1vdW50X09mXwUAAAAKY3VycmVudEtleQgFAAAAA3BtdAAAAAZhbW91bnQEAAAAD2xvYW5hbW91bnRlbnRyeQkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAPTG9hbl9BbW91bnRfT2ZfBQAAAApjdXJyZW50S2V5BQAAAApsb2FuYW1vdW50BAAAAAZvbmVkYXkAAAAAAAAABaAEAAAAD3RvdGFsbG9hbmJsb2NrcwkAAGgAAAACBQAAAAZvbmVkYXkFAAAABGRheXMEAAAAFHRvdGFsbG9hbmJsb2Nrc2VudHJ5CQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAABVUb3RhbF9Mb2FuX0Jsb2Nrc19PZl8FAAAACmN1cnJlbnRLZXkFAAAAD3RvdGFsbG9hbmJsb2NrcwQAAAAQcGVyYmxvY2tpbnRlcmVzdAAAAAAAAAAARAQAAAAMbG9hbmludGVyZXN0CQAAaAAAAAIJAABoAAAAAgUAAAAQcGVyYmxvY2tpbnRlcmVzdAUAAAAPdG90YWxsb2FuYmxvY2tzCQAA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Qm9ycm93X2hlaWdodF9PZl8FAAAACmN1cnJlbnRLZXkEAAAAC2dyYWNlcGVyaW9kBQAAABJnZXR0b3RhbGxvYW5ibG9ja3MEAAAADnJlcGF5dGltZWxpbWl0CQAAZAAAAAIFAAAAD2dldGJvcnJvd2hlaWdodAUAAAALZ3JhY2VwZXJpb2QDCQAAZgAAAAIFAAAABmhlaWdodAUAAAAOcmVwYXl0aW1lbGltaXQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAKFlvdXIgTG9hbiBSZXBheWJhY2sgcGVyaW9kIGlzIG92ZXIgd2l0aCAJAAGkAAAAAQUAAAALZ3JhY2VwZXJpb2QCAAAAByBibG9ja3MEAAAAD2dldGxvYW5pbnRlcmVzdAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAABFMb2FuX0ludGVyZXN0X09mXwUAAAAKY3VycmVudEtleQQAAAATZ2V0Y29sbGF0ZXJhbGFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAABVDb2xsYXRlcmFsX0Ftb3VudF9PZl8FAAAACmN1cnJlbnRLZXkEAAAAF2NvbGxhdGVyYWxyZWxlYXNlYW1vdW50CQAAZQAAAAIFAAAAE2dldGNvbGxhdGVyYWxhbW91bnQFAAAAD2dldGxvYW5pbnRlcmVzdAQAAAAQdXBkYXRlbG9hbnN0YXR1cwkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACAgAAAA9Mb2FuX1N0YXR1c19PZl8FAAAACmN1cnJlbnRLZXkCAAAAAAQAAAAQdXBkYXRlbG9hbmFtb3VudAkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAPTG9hbl9BbW91bnRfT2ZfBQAAAApjdXJyZW50S2V5AAAAAAAAAAAABAAAABV1cGRhdGV0b3RhbGxvYW5ibG9ja3MJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAFVRvdGFsX0xvYW5fQmxvY2tzX09mXwUAAAAKY3VycmVudEtleQAAAAAAAAAAAAQAAAAWdXBkYXRlY29sbGF0ZXJhbGFtb3VudAkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAVQ29sbGF0ZXJhbF9BbW91bnRfT2ZfBQAAAApjdXJyZW50S2V5AAAAAAAAAAAABAAAABJ1cGRhdGVib3Jyb3doZWlnaHQJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAEUJvcnJvd19oZWlnaHRfT2ZfBQAAAApjdXJyZW50S2V5AAAAAAAAAAAABAAAABJ1cGRhdGVsb2FuaW50ZXJlc3QJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAEUxvYW5fSW50ZXJlc3RfT2ZfBQAAAApjdXJyZW50S2V5AAAAAAAAAAAABAAAAAtsb2FubWVzc2FnZQkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAHbWVzc2FnZQIAAAAnPGgxPkxvYW4gUmVwYXllZCBTdWNjZXNzZnVsbHkhPC9oMT48YnI+CQAETAAAAAIFAAAAEHVwZGF0ZWxvYW5zdGF0dXMJAARMAAAAAgUAAAAQdXBkYXRlbG9hbmFtb3VudAkABEwAAAACBQAAABV1cGRhdGV0b3RhbGxvYW5ibG9ja3MJAARMAAAAAgUAAAAWdXBkYXRlY29sbGF0ZXJhbGFtb3VudAkABEwAAAACBQAAABJ1cGRhdGVib3Jyb3doZWlnaHQJAARMAAAAAgUAAAASdXBkYXRlbG9hbmludGVyZXN0CQAETAAAAAIFAAAAC2xvYW5tZXNzYWdlCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAXY29sbGF0ZXJhbHJlbGVhc2VhbW91bnQFAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAAAhTZXRQcmljZQAAAAEAAAAFUHJpY2UEAAAADWNhbGxlcmFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAALYWRtaW5yaWdodHMJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMCAAAAEURBcHBfQWRtaW5fUmlnaHRzAwkBAAAAAiE9AAAAAgUAAAALYWRtaW5yaWdodHMFAAAADWNhbGxlcmFkZHJlc3MJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAIkkga25vdyBZb3UgYXJlIG5vdCBBbiBBZG1pbi4gT25seSAFAAAAC2FkbWlucmlnaHRzAgAAACAgaGFzIHJpZ2h0cyB0byBzZXQgUHJpY2UgZm9yIGl0LgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAARZWxpZ2liaWxpdHlmYWN0b3IFAAAABVByaWNlBQAAAANuaWwAAAABaQEAAAAUU2V0QWRtaW5SaWdodEFkZHJlc3MAAAAACQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAEURBcHBfQWRtaW5fUmlnaHRzAgAAACMzUDMyS0dFWnFoTmdoUEZqVFB6dHBKTU1XTGNwaVpKUHdkUAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAHJG1hdGNoMAUAAAACdHgJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5DZ3DXg==", "height": 3297009, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GDSfW8tLnDn4h5usFX1HSZuivJMFdnyCMh7978Lrzqbx Next: none Diff:
Old | New | Differences | |
---|---|---|---|
1 | - | {-# STDLIB_VERSION | |
1 | + | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let loaneligibilityfactor = getIntegerValue(this, "eligibilityfactor") | |
5 | 5 | ||
6 | - | @Callable( | |
6 | + | @Callable(i) | |
7 | 7 | func RequestLoan (days) = { | |
8 | - | let pmt = | |
8 | + | let pmt = value(i.payments[0]) | |
9 | 9 | let maximumloandays = 90 | |
10 | 10 | let loanamount = ((pmt.amount * loaneligibilityfactor) / 1000) | |
11 | 11 | let USDTAssetID = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ' | |
21 | 21 | else if ((loanamount > checkUSDTbalance)) | |
22 | 22 | then throw("Sorry! Required Loan amount is greater than available on DApp Address, Check DApp USDT balance or Try for a less amount Please.") | |
23 | 23 | else { | |
24 | - | let currentKey = toBase58String( | |
25 | - | let userborrowheight = | |
24 | + | let currentKey = toBase58String(i.caller.bytes) | |
25 | + | let userborrowheight = IntegerEntry(("Borrow_height_Of_" + currentKey), height) | |
26 | 26 | let loanstatus = "LOAN_PAID" | |
27 | - | let loanstatusentry = | |
28 | - | let collateralamount = | |
29 | - | let loanamountentry = | |
27 | + | let loanstatusentry = StringEntry(("Loan_Status_Of_" + currentKey), loanstatus) | |
28 | + | let collateralamount = IntegerEntry(("Collateral_Amount_Of_" + currentKey), pmt.amount) | |
29 | + | let loanamountentry = IntegerEntry(("Loan_Amount_Of_" + currentKey), loanamount) | |
30 | 30 | let oneday = 1440 | |
31 | 31 | let totalloanblocks = (oneday * days) | |
32 | - | let totalloanblocksentry = | |
32 | + | let totalloanblocksentry = IntegerEntry(("Total_Loan_Blocks_Of_" + currentKey), totalloanblocks) | |
33 | 33 | let perblockinterest = 68 | |
34 | 34 | let loaninterest = ((perblockinterest * totalloanblocks) * (pmt.amount / 100000000)) | |
35 | - | let loaninterestentry = | |
35 | + | let loaninterestentry = IntegerEntry(("Loan_Interest_Of_" + currentKey), loaninterest) | |
36 | 36 | let previousloanbalance = getIntegerValue(this, "Total_Loan_Paid:") | |
37 | 37 | let totalloanpaid = (previousloanbalance + (pmt.amount / 100000000)) | |
38 | - | let TLP = | |
39 | - | let loanmessage = | |
40 | - | ||
38 | + | let TLP = IntegerEntry("Total_Loan_Paid:", totalloanpaid) | |
39 | + | let loanmessage = StringEntry("message", "<h1>Loan Issued Successfully!</h1><br>") | |
40 | + | [userborrowheight, loanstatusentry, collateralamount, loanamountentry, totalloanblocksentry, loaninterestentry, TLP, loanmessage, ScriptTransfer(i.caller, loanamount, base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ'), ScriptTransfer(addressFromPublicKey(base58'59q1hHBmeQgfSRst9Dn52VTBbtCu4SQ7AujhGDjHCqn6'), loaninterest, unit)] | |
41 | 41 | } | |
42 | 42 | } | |
43 | 43 | ||
44 | 44 | ||
45 | 45 | ||
46 | - | @Callable( | |
46 | + | @Callable(i) | |
47 | 47 | func RepayLoan () = { | |
48 | - | let pmt = | |
49 | - | let userkey = toBase58String( | |
48 | + | let pmt = value(i.payments[0]) | |
49 | + | let userkey = toBase58String(i.caller.bytes) | |
50 | 50 | let assetid = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ' | |
51 | 51 | let getloanamount = getIntegerValue(this, ("Loan_Amount_Of_" + userkey)) | |
52 | 52 | let gettotalloanblocks = getIntegerValue(this, ("Total_Loan_Blocks_Of_" + userkey)) | |
55 | 55 | else if ((pmt.amount != getloanamount)) | |
56 | 56 | then throw((("Your Input USDT Amount is not equal to Loan Amount:=> " + toString(getloanamount)) + " Divide Your 'Loan Amount:=>' with 1,000,000 to get value in USDT decimals.")) | |
57 | 57 | else { | |
58 | - | let currentKey = toBase58String( | |
58 | + | let currentKey = toBase58String(i.caller.bytes) | |
59 | 59 | let getborrowheight = getIntegerValue(this, ("Borrow_height_Of_" + currentKey)) | |
60 | 60 | let graceperiod = gettotalloanblocks | |
61 | 61 | let repaytimelimit = (getborrowheight + graceperiod) | |
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 | - | ScriptResult({ | |
69 | - | let updateloanstatus = DataEntry(("Loan_Status_Of_" + currentKey), "") | |
70 | - | let updateloanamount = DataEntry(("Loan_Amount_Of_" + currentKey), 0) | |
71 | - | let updatetotalloanblocks = DataEntry(("Total_Loan_Blocks_Of_" + currentKey), 0) | |
72 | - | let updatecollateralamount = DataEntry(("Collateral_Amount_Of_" + currentKey), 0) | |
73 | - | let updateborrowheight = DataEntry(("Borrow_height_Of_" + currentKey), 0) | |
74 | - | let updateloaninterest = DataEntry(("Loan_Interest_Of_" + currentKey), 0) | |
75 | - | let loanmessage = DataEntry("message", "<h1>Loan Repayed Successfully!</h1><br>") | |
76 | - | WriteSet([updateloanstatus, updateloanamount, updatetotalloanblocks, updatecollateralamount, updateborrowheight, updateloaninterest, loanmessage]) | |
77 | - | }, TransferSet([ScriptTransfer(inv.caller, collateralreleaseamount, unit)])) | |
68 | + | let updateloanstatus = StringEntry(("Loan_Status_Of_" + currentKey), "") | |
69 | + | let updateloanamount = IntegerEntry(("Loan_Amount_Of_" + currentKey), 0) | |
70 | + | let updatetotalloanblocks = IntegerEntry(("Total_Loan_Blocks_Of_" + currentKey), 0) | |
71 | + | let updatecollateralamount = IntegerEntry(("Collateral_Amount_Of_" + currentKey), 0) | |
72 | + | let updateborrowheight = IntegerEntry(("Borrow_height_Of_" + currentKey), 0) | |
73 | + | let updateloaninterest = IntegerEntry(("Loan_Interest_Of_" + currentKey), 0) | |
74 | + | let loanmessage = StringEntry("message", "<h1>Loan Repayed Successfully!</h1><br>") | |
75 | + | [updateloanstatus, updateloanamount, updatetotalloanblocks, updatecollateralamount, updateborrowheight, updateloaninterest, loanmessage, ScriptTransfer(i.caller, collateralreleaseamount, unit)] | |
78 | 76 | } | |
79 | 77 | } | |
80 | 78 | } | |
79 | + | ||
80 | + | ||
81 | + | ||
82 | + | @Callable(i) | |
83 | + | func SetPrice (Price) = { | |
84 | + | let calleraddress = toBase58String(i.caller.bytes) | |
85 | + | let adminrights = getStringValue(this, "DApp_Admin_Rights") | |
86 | + | if ((adminrights != calleraddress)) | |
87 | + | then throw((("I know You are not An Admin. Only " + adminrights) + " has rights to set Price for it.")) | |
88 | + | else [IntegerEntry("eligibilityfactor", Price)] | |
89 | + | } | |
90 | + | ||
91 | + | ||
92 | + | ||
93 | + | @Callable(i) | |
94 | + | func SetAdminRightAddress () = [StringEntry("DApp_Admin_Rights", "3P32KGEZqhNghPFjTPztpJMMWLcpiZJPwdP")] | |
81 | 95 | ||
82 | 96 | ||
83 | 97 | @Verifier(tx) |
Old | New | Differences | |
---|---|---|---|
1 | - | {-# STDLIB_VERSION | |
1 | + | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let loaneligibilityfactor = getIntegerValue(this, "eligibilityfactor") | |
5 | 5 | ||
6 | - | @Callable( | |
6 | + | @Callable(i) | |
7 | 7 | func RequestLoan (days) = { | |
8 | - | let pmt = | |
8 | + | let pmt = value(i.payments[0]) | |
9 | 9 | let maximumloandays = 90 | |
10 | 10 | let loanamount = ((pmt.amount * loaneligibilityfactor) / 1000) | |
11 | 11 | let USDTAssetID = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ' | |
12 | 12 | let checkUSDTbalance = assetBalance(this, USDTAssetID) | |
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 > checkUSDTbalance)) | |
22 | 22 | then throw("Sorry! Required Loan amount is greater than available on DApp Address, Check DApp USDT balance or Try for a less amount Please.") | |
23 | 23 | else { | |
24 | - | let currentKey = toBase58String( | |
25 | - | let userborrowheight = | |
24 | + | let currentKey = toBase58String(i.caller.bytes) | |
25 | + | let userborrowheight = IntegerEntry(("Borrow_height_Of_" + currentKey), height) | |
26 | 26 | let loanstatus = "LOAN_PAID" | |
27 | - | let loanstatusentry = | |
28 | - | let collateralamount = | |
29 | - | let loanamountentry = | |
27 | + | let loanstatusentry = StringEntry(("Loan_Status_Of_" + currentKey), loanstatus) | |
28 | + | let collateralamount = IntegerEntry(("Collateral_Amount_Of_" + currentKey), pmt.amount) | |
29 | + | let loanamountentry = IntegerEntry(("Loan_Amount_Of_" + currentKey), loanamount) | |
30 | 30 | let oneday = 1440 | |
31 | 31 | let totalloanblocks = (oneday * days) | |
32 | - | let totalloanblocksentry = | |
32 | + | let totalloanblocksentry = IntegerEntry(("Total_Loan_Blocks_Of_" + currentKey), totalloanblocks) | |
33 | 33 | let perblockinterest = 68 | |
34 | 34 | let loaninterest = ((perblockinterest * totalloanblocks) * (pmt.amount / 100000000)) | |
35 | - | let loaninterestentry = | |
35 | + | let loaninterestentry = IntegerEntry(("Loan_Interest_Of_" + currentKey), loaninterest) | |
36 | 36 | let previousloanbalance = getIntegerValue(this, "Total_Loan_Paid:") | |
37 | 37 | let totalloanpaid = (previousloanbalance + (pmt.amount / 100000000)) | |
38 | - | let TLP = | |
39 | - | let loanmessage = | |
40 | - | ||
38 | + | let TLP = IntegerEntry("Total_Loan_Paid:", totalloanpaid) | |
39 | + | let loanmessage = StringEntry("message", "<h1>Loan Issued Successfully!</h1><br>") | |
40 | + | [userborrowheight, loanstatusentry, collateralamount, loanamountentry, totalloanblocksentry, loaninterestentry, TLP, loanmessage, ScriptTransfer(i.caller, loanamount, base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ'), ScriptTransfer(addressFromPublicKey(base58'59q1hHBmeQgfSRst9Dn52VTBbtCu4SQ7AujhGDjHCqn6'), loaninterest, unit)] | |
41 | 41 | } | |
42 | 42 | } | |
43 | 43 | ||
44 | 44 | ||
45 | 45 | ||
46 | - | @Callable( | |
46 | + | @Callable(i) | |
47 | 47 | func RepayLoan () = { | |
48 | - | let pmt = | |
49 | - | let userkey = toBase58String( | |
48 | + | let pmt = value(i.payments[0]) | |
49 | + | let userkey = toBase58String(i.caller.bytes) | |
50 | 50 | let assetid = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ' | |
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 USDT Asset Only for Repay or Your Input USDT Amount is not equal to Loan You Took.") | |
55 | 55 | else if ((pmt.amount != getloanamount)) | |
56 | 56 | then throw((("Your Input USDT Amount is not equal to Loan Amount:=> " + toString(getloanamount)) + " Divide Your 'Loan Amount:=>' with 1,000,000 to get value in USDT decimals.")) | |
57 | 57 | else { | |
58 | - | let currentKey = toBase58String( | |
58 | + | let currentKey = toBase58String(i.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 | - | ScriptResult({ | |
69 | - | let updateloanstatus = DataEntry(("Loan_Status_Of_" + currentKey), "") | |
70 | - | let updateloanamount = DataEntry(("Loan_Amount_Of_" + currentKey), 0) | |
71 | - | let updatetotalloanblocks = DataEntry(("Total_Loan_Blocks_Of_" + currentKey), 0) | |
72 | - | let updatecollateralamount = DataEntry(("Collateral_Amount_Of_" + currentKey), 0) | |
73 | - | let updateborrowheight = DataEntry(("Borrow_height_Of_" + currentKey), 0) | |
74 | - | let updateloaninterest = DataEntry(("Loan_Interest_Of_" + currentKey), 0) | |
75 | - | let loanmessage = DataEntry("message", "<h1>Loan Repayed Successfully!</h1><br>") | |
76 | - | WriteSet([updateloanstatus, updateloanamount, updatetotalloanblocks, updatecollateralamount, updateborrowheight, updateloaninterest, loanmessage]) | |
77 | - | }, TransferSet([ScriptTransfer(inv.caller, collateralreleaseamount, unit)])) | |
68 | + | let updateloanstatus = StringEntry(("Loan_Status_Of_" + currentKey), "") | |
69 | + | let updateloanamount = IntegerEntry(("Loan_Amount_Of_" + currentKey), 0) | |
70 | + | let updatetotalloanblocks = IntegerEntry(("Total_Loan_Blocks_Of_" + currentKey), 0) | |
71 | + | let updatecollateralamount = IntegerEntry(("Collateral_Amount_Of_" + currentKey), 0) | |
72 | + | let updateborrowheight = IntegerEntry(("Borrow_height_Of_" + currentKey), 0) | |
73 | + | let updateloaninterest = IntegerEntry(("Loan_Interest_Of_" + currentKey), 0) | |
74 | + | let loanmessage = StringEntry("message", "<h1>Loan Repayed Successfully!</h1><br>") | |
75 | + | [updateloanstatus, updateloanamount, updatetotalloanblocks, updatecollateralamount, updateborrowheight, updateloaninterest, loanmessage, ScriptTransfer(i.caller, collateralreleaseamount, unit)] | |
78 | 76 | } | |
79 | 77 | } | |
80 | 78 | } | |
79 | + | ||
80 | + | ||
81 | + | ||
82 | + | @Callable(i) | |
83 | + | func SetPrice (Price) = { | |
84 | + | let calleraddress = toBase58String(i.caller.bytes) | |
85 | + | let adminrights = getStringValue(this, "DApp_Admin_Rights") | |
86 | + | if ((adminrights != calleraddress)) | |
87 | + | then throw((("I know You are not An Admin. Only " + adminrights) + " has rights to set Price for it.")) | |
88 | + | else [IntegerEntry("eligibilityfactor", Price)] | |
89 | + | } | |
90 | + | ||
91 | + | ||
92 | + | ||
93 | + | @Callable(i) | |
94 | + | func SetAdminRightAddress () = [StringEntry("DApp_Admin_Rights", "3P32KGEZqhNghPFjTPztpJMMWLcpiZJPwdP")] | |
81 | 95 | ||
82 | 96 | ||
83 | 97 | @Verifier(tx) | |
84 | 98 | func verify () = match tx { | |
85 | 99 | case _ => | |
86 | 100 | sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
87 | 101 | } | |
88 | 102 |
github/deemru/w8io/3ef1775 47.50 ms ◑