tx · EX7v9wmVhm872pmA3V9CE6GXtMhvANX2z5MERA9PoBTW

3N4EKCSKqAYmVFiBTt5DyGYjk56aKZsff7W:  -0.01000000 Waves

2021.09.17 17:06 [1707152] smart account 3N4EKCSKqAYmVFiBTt5DyGYjk56aKZsff7W > SELF 0.00000000 Waves

{ "type": 13, "id": "EX7v9wmVhm872pmA3V9CE6GXtMhvANX2z5MERA9PoBTW", "fee": 1000000, "feeAssetId": null, "timestamp": 1631887645851, "version": 2, "chainId": 84, "sender": "3N4EKCSKqAYmVFiBTt5DyGYjk56aKZsff7W", "senderPublicKey": "3tzrgq6Xg2HGk84cTqnsMgmgozEnErc7mv3LeJC6bDLv", "proofs": [ "3YYr5a6v22UU6awYYJNvqUXzbZrwEEdvtLagtSXLNvkctybY1i86B8sQxJuBHcZPvBDoP8Vp7bDZoMar9nRLDPtG" ], "script": "base64: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", "height": 1707152, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+
5+
6+@Callable(i)
7+func approveCredit (client,amount,target,lockHash) = if (if ((this == i.caller))
8+ then !(isDefined(getBoolean(this, (client + "_status"))))
9+ else false)
10+ then WriteSet([DataEntry((client + "_status"), "approved"), DataEntry((client + "_amount"), amount), DataEntry((client + "_target"), target), DataEntry((client + "_lockScriptId"), lockHash)])
11+ else throw((("Credit for " + client) + " has already been approved or caller is not dApp owner"))
12+
13+
14+
15+@Callable(i)
16+func getMoney () = {
17+ let callerStr = toBase58String(i.caller.bytes)
18+ let status = match getString(this, (callerStr + "_status")) {
19+ case _: Unit =>
20+ "unset"
21+ case x: String =>
22+ x
23+ case _ =>
24+ throw("Match error")
25+ }
26+ let lockTxId = extract(getString(this, (callerStr + "_lockScriptId")))
27+ let lockTx = transactionHeightById(fromBase58String(lockTxId))
28+ let isLockSet = match lockTx {
29+ case _: Int =>
30+ true
31+ case _ =>
32+ throw("Lock has not been set")
33+ }
34+ let amount = extract(getInteger(this, (callerStr + "_amount")))
35+ if (if ((status == "approved"))
36+ then isLockSet
37+ else false)
38+ then ScriptResult(WriteSet([DataEntry((callerStr + "_status"), "borrowed")]), TransferSet([ScriptTransfer(i.caller, amount, unit)]))
39+ else throw("Credit was not approved or money has already been taken")
40+ }
41+
42+
43+
44+@Callable(i)
45+func returnMoney () = {
46+ let callerStr = toBase58String(i.caller.bytes)
47+ let status = match getString(this, (callerStr + "_status")) {
48+ case _: Unit =>
49+ "unset"
50+ case x: String =>
51+ x
52+ case _ =>
53+ throw("Match error")
54+ }
55+ let pmt = extract(i.payment)
56+ let amountToReturn = getInteger(this, (callerStr + "_amount"))
57+ if ((status != "borrowed"))
58+ then throw("Cannot return, nothing was borrowed")
59+ else if (isDefined(pmt.assetId))
60+ then throw("Can return only WAVES at the moment")
61+ else if ((amountToReturn != pmt.amount))
62+ then throw("Should return borrowed amount")
63+ else WriteSet([DataEntry((callerStr + "_status"), "returned")])
64+ }
65+
66+
67+
68+@Callable(i)
69+func cancelContract () = {
70+ let callerStr = toBase58String(i.caller.bytes)
71+ let status = match getString(this, (callerStr + "_status")) {
72+ case _: Unit =>
73+ "unset"
74+ case x: String =>
75+ x
76+ case _ =>
77+ throw("Match error")
78+ }
79+ if (if ((status == "approved"))
80+ then true
81+ else (status == "unset"))
82+ then WriteSet([DataEntry((callerStr + "_status"), "canceled")])
83+ else throw("Cannot cancel credit. Money has already been taken")
84+ }
85+
86+
87+@Verifier(tx)
88+func verify () = match tx {
89+ case _: DataTransaction =>
90+ false
91+ case _: SetScriptTransaction =>
92+ false
93+ case _ =>
94+ sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
95+}
96+

github/deemru/w8io/873ac7e 
52.87 ms