2021.02.01 15:58 [2442886] smart account 3P5j5X3pnCoekLdzEi9VnSp1EhtkSx7RFQa > SELF 0.00000000 Waves
{ "type": 13, "id": "AqSmfo8BYP1jAqN5CLDk6sdtuTnH34WxumtiyVKL61yW", "fee": 1400000, "feeAssetId": null, "timestamp": 1612184342000, "version": 1, "sender": "3P5j5X3pnCoekLdzEi9VnSp1EhtkSx7RFQa", "senderPublicKey": "9ggjtodAeBcEXiqKuN961nZDPNjdaojZxVakeDdCax95", "proofs": [ "4w1mQNC2uujTwo9D2s1atABrysMjuMavuqtekkCo2gLtK2nygBvMYnNqpVJQ1LJAoc3RfrL1H9uZRBdt1S26Z1nb" ], "script": "base64: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", "chainId": 87, "height": 2442886, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 4 #-} | |
2 | + | {-# CONTENT_TYPE EXPRESSION #-} | |
3 | + | let digiliraPay = base58'4snGCeL4Wjopx9awWd7pfdqUYyN1CLqbPz66bn7VY8oe' | |
4 | + | let gateway = base58'ActWMpdeyp8YHRhLxXmwdJmr37VXGgb44m8DuSVJW3k1' | |
5 | + | let sponsorToken = base58'HLfv6YiY1ZpDktcKL9R79FTcez9WdMjaeMWxhREGcAqr' | |
6 | + | let paymentToken = base58'HDBmVe4MFyVdh1Jy48m9XqXiHAVuNbwFB8dPskVMHS6B' | |
7 | + | let recoveryToken = base58'HL1XtTLSdKMxB8LrkRYszqwtiSRepGTBBdnyrCqgaEVX' | |
8 | + | let proxyWaves = base58'WAVES' | |
9 | + | let recovery1 = base58'2tKRd22A8nkVNjtgT7JJxqSR8D9EA2RfsprJt35jw8Hr' | |
10 | + | let recovery2 = base58'9cxzRSwiomyztUboaxherWQUUMGqZ3yX2nYrUa6XR9bT' | |
11 | + | let recovery3 = base58'BCAaT65dW2nviLrwdqtoWFJP9D8z3576qFYKkHQ4wxPt' | |
12 | + | let banned = 403000 | |
13 | + | let digiliraPayOnly = 99 | |
14 | + | let transferBlock = 100 | |
15 | + | let paymentBlock = 200 | |
16 | + | let paymentFundBlock = 300 | |
17 | + | let fundBlock = 400 | |
18 | + | func recovery (w) = { | |
19 | + | let s1 = if (sigVerify(tx.bodyBytes, tx.proofs[0], recovery1)) | |
20 | + | then 1 | |
21 | + | else 0 | |
22 | + | let s2 = if (sigVerify(tx.bodyBytes, tx.proofs[1], recovery2)) | |
23 | + | then 1 | |
24 | + | else 0 | |
25 | + | let s3 = if (sigVerify(tx.bodyBytes, tx.proofs[2], recovery3)) | |
26 | + | then 1 | |
27 | + | else 0 | |
28 | + | if ((((s1 + s2) + s3) >= 2)) | |
29 | + | then true | |
30 | + | else throw("Unauthorized") | |
31 | + | } | |
32 | + | ||
33 | + | match tx { | |
34 | + | case w: TransferTransaction => | |
35 | + | let myStatus = getInteger(addressFromPublicKey(digiliraPay), toBase58String(w.sender.bytes)) | |
36 | + | let isUser = getInteger(addressFromPublicKey(digiliraPay), toBase58String(addressFromRecipient(w.recipient).bytes)) | |
37 | + | let isAsset = getInteger(addressFromPublicKey(digiliraPay), toBase58String(valueOrElse(w.assetId, proxyWaves))) | |
38 | + | if (isDefined(isUser)) | |
39 | + | then if (if (if (if (if (if ((isUser == banned)) | |
40 | + | then true | |
41 | + | else (isAsset == banned)) | |
42 | + | then true | |
43 | + | else (myStatus == banned)) | |
44 | + | then true | |
45 | + | else (valueOrElse(isAsset, banned) > valueOrElse(isUser, 0))) | |
46 | + | then true | |
47 | + | else (valueOrElse(isAsset, banned) > valueOrElse(myStatus, 0))) | |
48 | + | then true | |
49 | + | else (digiliraPayOnly > valueOrElse(isAsset, 0))) | |
50 | + | then if (if (if ((w.feeAssetId == recoveryToken)) | |
51 | + | then (w.recipient == addressFromPublicKey(gateway)) | |
52 | + | else false) | |
53 | + | then (myStatus == banned) | |
54 | + | else false) | |
55 | + | then recovery(w) | |
56 | + | else throw("Transfer is not available right now. User banned or permission denied") | |
57 | + | else if ((w.recipient == addressFromPublicKey(gateway))) | |
58 | + | then if (if ((fundBlock > valueOrElse(isAsset, 0))) | |
59 | + | then (valueOrElse(isAsset, 0) >= paymentBlock) | |
60 | + | else false) | |
61 | + | then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
62 | + | else throw("Transfer is not available right now. Asset cannot be used on payment transactions.") | |
63 | + | else if ((w.feeAssetId != paymentToken)) | |
64 | + | then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
65 | + | else throw("Transfer is not available right now. Payment Fee Token") | |
66 | + | else if (if (if (if (if ((w.feeAssetId == sponsorToken)) | |
67 | + | then true | |
68 | + | else (w.feeAssetId == paymentToken)) | |
69 | + | then true | |
70 | + | else (myStatus == banned)) | |
71 | + | then true | |
72 | + | else (transferBlock > valueOrElse(isAsset, 0))) | |
73 | + | then true | |
74 | + | else (valueOrElse(isAsset, 0) >= paymentFundBlock)) | |
75 | + | then throw("Transfer is not available right now.") | |
76 | + | else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
77 | + | case t: DataTransaction|SetScriptTransaction => | |
78 | + | sigVerify(t.bodyBytes, t.proofs[1], digiliraPay) | |
79 | + | case _ => | |
80 | + | false | |
81 | + | } |
github/deemru/w8io/786bc32 36.29 ms ◑