tx · 9uT1KHeGpZvju9J859MBUptrxCG3qZxUpYe5D2wwNDVH
3N1q2ieDU25PkmLZxFZrdGxETB1vWeLQo4y: -0.01400000 Waves
2022.04.20 12:01 [2016658] smart account 3N1q2ieDU25PkmLZxFZrdGxETB1vWeLQo4y > SELF 0.00000000 Waves
{
"type": 13,
"id": "9uT1KHeGpZvju9J859MBUptrxCG3qZxUpYe5D2wwNDVH",
"fee": 1400000,
"feeAssetId": null,
"timestamp": 1650445322462,
"version": 2,
"chainId": 84,
"sender": "3N1q2ieDU25PkmLZxFZrdGxETB1vWeLQo4y",
"senderPublicKey": "EgxqmjPExKP8GAbJQALcx5po8T3xyXNAKUPuvben5unh",
"proofs": [
"4ydsKCYn7ovoYjhk9eH9zTKkx97Q9KnfJJkHQWiQiGFTC7T4ipAqB285LLvpzNR3UEKFN8noHePzVkdQcfwMBFTR"
],
"script": "base64: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",
"height": 2016658,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: 6ATv1GSBEwaG32a9MBsQCDWQCC1HmAtLjqMARpTfXxQ3
Next: none
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 5 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | | - | let a = "oracleKey" |
---|
| 4 | + | let a = "REVOKED" |
---|
5 | 5 | | |
---|
6 | | - | let b = 1000000 |
---|
| 6 | + | let b = "ACTIVE" |
---|
7 | 7 | | |
---|
8 | | - | func c (d) = { |
---|
9 | | - | let e = getInteger(this, d) |
---|
10 | | - | if ($isInstanceOf(e, "Int")) |
---|
| 8 | + | let c = "oracleKey" |
---|
| 9 | + | |
---|
| 10 | + | func d (e) = { |
---|
| 11 | + | let f = getString(this, e) |
---|
| 12 | + | if ($isInstanceOf(f, "String")) |
---|
11 | 13 | | then { |
---|
12 | | - | let f = e |
---|
13 | | - | f |
---|
14 | | - | } |
---|
15 | | - | else 0 |
---|
16 | | - | } |
---|
17 | | - | |
---|
18 | | - | |
---|
19 | | - | func g (d) = { |
---|
20 | | - | let e = getString(this, d) |
---|
21 | | - | if ($isInstanceOf(e, "String")) |
---|
22 | | - | then { |
---|
23 | | - | let h = e |
---|
24 | | - | h |
---|
| 14 | + | let g = f |
---|
| 15 | + | g |
---|
25 | 16 | | } |
---|
26 | 17 | | else "" |
---|
27 | 18 | | } |
---|
28 | 19 | | |
---|
29 | 20 | | |
---|
30 | | - | let i = g(a) |
---|
| 21 | + | let h = d(c) |
---|
31 | 22 | | |
---|
32 | | - | let j = value(addressFromString(i)) |
---|
| 23 | + | let i = value(addressFromString(h)) |
---|
33 | 24 | | |
---|
34 | | - | let k = fromBase58String(getStringValue(j, "SconexAssetId")) |
---|
| 25 | + | let j = addressFromString(valueOrErrorMessage(getString(i, "resellDapp"), "resellDapp not found")) |
---|
35 | 26 | | |
---|
36 | | - | func l (m) = { |
---|
37 | | - | let n = toString(m) |
---|
38 | | - | let o = c("global_lastCheck_SCONEX_interest") |
---|
39 | | - | let p = c((n + "_lastCheck_SCONEX_interest")) |
---|
40 | | - | let q = c((n + "_SCONEX_staked")) |
---|
41 | | - | let r = if ((p > 0)) |
---|
42 | | - | then fraction((o - p), q, b) |
---|
43 | | - | else 0 |
---|
44 | | - | [IntegerEntry((n + "_lastCheck_SCONEX_interest"), o), IntegerEntry((n + "_SCONEX_claimed"), (c((n + "_SCONEX_claimed")) + r)), ScriptTransfer(m, r, k)] |
---|
| 27 | + | let k = addressFromString(valueOrErrorMessage(getString(i, "sconexDapp"), "sconexDapp not found")) |
---|
| 28 | + | |
---|
| 29 | + | let l = [j, k] |
---|
| 30 | + | |
---|
| 31 | + | func m (e) = valueOrElse(getString(this, e), "") |
---|
| 32 | + | |
---|
| 33 | + | |
---|
| 34 | + | func n (o) = { |
---|
| 35 | + | let p = { |
---|
| 36 | + | let f = assetInfo(o) |
---|
| 37 | + | if ($isInstanceOf(f, "Asset")) |
---|
| 38 | + | then { |
---|
| 39 | + | let q = f |
---|
| 40 | + | q.quantity |
---|
| 41 | + | } |
---|
| 42 | + | else throw("Invalid NFT id") |
---|
| 43 | + | } |
---|
| 44 | + | p |
---|
45 | 45 | | } |
---|
46 | 46 | | |
---|
47 | 47 | | |
---|
48 | | - | @Callable(s) |
---|
49 | | - | func stake () = { |
---|
50 | | - | let t = s.payments[0].amount |
---|
51 | | - | let n = toString(s.caller) |
---|
52 | | - | let u = c("global_staked") |
---|
53 | | - | if ((s.payments[0].assetId != k)) |
---|
54 | | - | then throw("wrong asset attached") |
---|
55 | | - | else (l(s.caller) ++ [IntegerEntry("global_staked", (u + t)), IntegerEntry((n + "_SCONEX_staked"), (c((n + "_SCONEX_staked")) + t))]) |
---|
| 48 | + | func r (o,s) = if ((assetBalance(Address(fromBase58String(s)), o) != 1)) |
---|
| 49 | + | then false |
---|
| 50 | + | else true |
---|
| 51 | + | |
---|
| 52 | + | |
---|
| 53 | + | func t (u) = { |
---|
| 54 | + | let v = m(("cert_" + u)) |
---|
| 55 | + | if ((v != "")) |
---|
| 56 | + | then [StringEntry((("cert_" + v) + "_status"), a)] |
---|
| 57 | + | else nil |
---|
56 | 58 | | } |
---|
57 | 59 | | |
---|
58 | 60 | | |
---|
59 | | - | |
---|
60 | | - | @Callable(s) |
---|
61 | | - | func unStake (t) = { |
---|
62 | | - | let n = toString(s.caller) |
---|
63 | | - | let q = c((n + "_SCONEX_staked")) |
---|
64 | | - | if ((t > q)) |
---|
65 | | - | then throw("you don't have tokens available") |
---|
66 | | - | else (l(s.caller) ++ [IntegerEntry((n + "_SCONEX_staked"), (q - t)), IntegerEntry("global_staked", (c("global_staked") - t)), ScriptTransfer(s.caller, t, k)]) |
---|
67 | | - | } |
---|
| 61 | + | @Callable(w) |
---|
| 62 | + | func initDapp (x) = if ((w.caller != this)) |
---|
| 63 | + | then throw("You cannot do this action") |
---|
| 64 | + | else if ((h != "")) |
---|
| 65 | + | then throw("oracle already set, you can't override!") |
---|
| 66 | + | else [StringEntry(c, x)] |
---|
68 | 67 | | |
---|
69 | 68 | | |
---|
70 | 69 | | |
---|
71 | | - | @Callable(s) |
---|
72 | | - | func claimReward () = l(s.caller) |
---|
| 70 | + | @Callable(w) |
---|
| 71 | + | func createCert (y,u,z) = if (containsElement(l, w.caller)) |
---|
| 72 | + | then { |
---|
| 73 | + | let v = toBase58String(w.transactionId) |
---|
| 74 | + | let A = fromBase58String(u) |
---|
| 75 | + | let B = n(A) |
---|
| 76 | + | if ((B != 1)) |
---|
| 77 | + | then throw("This is not an NFT!") |
---|
| 78 | + | else if (r(A, y)) |
---|
| 79 | + | then { |
---|
| 80 | + | let C = t(u) |
---|
| 81 | + | let D = [StringEntry(("cert_" + u), v), StringEntry((("cert_" + v) + "_nftId"), u), StringEntry((("cert_" + v) + "_owner"), y), StringEntry((("cert_" + v) + "_artist"), z), StringEntry((("cert_" + v) + "_status"), b)] |
---|
| 82 | + | (C ++ D) |
---|
| 83 | + | } |
---|
| 84 | + | else throw(("The NFT isn't owned by " + y)) |
---|
| 85 | + | } |
---|
| 86 | + | else throw("This dapp can not create certs!") |
---|
73 | 87 | | |
---|
74 | | - | |
---|
75 | | - | |
---|
76 | | - | @Callable(s) |
---|
77 | | - | func topUpReward () = { |
---|
78 | | - | let t = fraction(s.payments[0].amount, 9, 10) |
---|
79 | | - | let o = c("global_lastCheck_SCONEX_interest") |
---|
80 | | - | let u = c("global_staked") |
---|
81 | | - | let v = if ((u > 0)) |
---|
82 | | - | then fraction(t, b, u) |
---|
83 | | - | else 0 |
---|
84 | | - | if ((s.payments[0].assetId != k)) |
---|
85 | | - | then throw("wrong asset attached") |
---|
86 | | - | else [IntegerEntry("global_SCONEX_earnings", (c("global_SCONEX_earnings") + t)), IntegerEntry("global_lastCheck_SCONEX_interest", (o + v))] |
---|
87 | | - | } |
---|
88 | | - | |
---|
89 | | - | |
---|
90 | | - | @Verifier(w) |
---|
91 | | - | func x () = sigVerify(w.bodyBytes, w.proofs[0], w.senderPublicKey) |
---|
92 | 88 | | |
---|