tx · FPythsu7o6huMznkwgV2tTspxG54SjRaNXqopAHuUxuu 3My6kED2uUWAEFmNmUsKXAEwNE3pCeMmjRt: -0.01400000 Waves 2019.02.05 07:54 [481277] smart account 3My6kED2uUWAEFmNmUsKXAEwNE3pCeMmjRt > SELF 0.00000000 Waves
{ "type": 13, "id": "FPythsu7o6huMznkwgV2tTspxG54SjRaNXqopAHuUxuu", "fee": 1400000, "feeAssetId": null, "timestamp": 1549342502995, "version": 1, "sender": "3My6kED2uUWAEFmNmUsKXAEwNE3pCeMmjRt", "senderPublicKey": "3qrTmx4jsup6WcnWLUdfzZayosrNHVNwSV99S6KvZwPy", "proofs": [ "3FHEjhyQjvP4oG1MH3cojvzzbUumuDZ14XhcSFKX7Z19fsrucnvWJhNiEd5unvLHPcUBnxcReKXGYFNdgqAFETUw" ], "script": "base64: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", "chainId": 84, "height": 481277, "spentComplexity": 0 } View: original | compacted Prev: GHTqyZDB7vr1p51ek4xUSCPGquc7XPE6pLgqxR63EKa Next: 4FZbfPyvJxEotQAGYLMaCx5Z9sAT3KewTZKa2A3RMyzj Diff:
Old | New | Differences | |
---|---|---|---|
41 | 41 | false | |
42 | 42 | } | |
43 | 43 | } | |
44 | - | else if (if (isDefined( | |
45 | - | then isDefined( | |
44 | + | else if (if (isDefined(getBinary(a.data, "answer"))) | |
45 | + | then isDefined(getInteger(a.data, "height")) | |
46 | 46 | else false) | |
47 | 47 | then (a.fee == dataFee) | |
48 | 48 | else false |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 1 #-} | |
2 | 2 | {-# CONTENT_TYPE EXPRESSION #-} | |
3 | 3 | let deposit = 100000000 | |
4 | 4 | let dataFee = 10000000 | |
5 | 5 | let payoutFee = 500000 | |
6 | 6 | let me = tx.sender | |
7 | 7 | let adminPublicKey = base58'22GEgQRoT3xuSPQTTBNofWLnYQsn2ZTwAzd5f51CMFeb' | |
8 | 8 | let answer = extract(getBinary(me, "answer")) | |
9 | 9 | let startHeight = extract(getInteger(me, "height")) | |
10 | 10 | match tx { | |
11 | 11 | case a: DataTransaction => | |
12 | 12 | if ((size(a.data) != 2)) | |
13 | 13 | then throw("data incorrect") | |
14 | 14 | else if (!(sigVerify(a.bodyBytes, a.proofs[0], adminPublicKey))) | |
15 | 15 | then { | |
16 | 16 | let paymentTxId = extract(getString(a.data, 0)) | |
17 | 17 | let paymentTx = transactionById(fromBase58String(paymentTxId)) | |
18 | 18 | match paymentTx { | |
19 | 19 | case b: TransferTransaction => | |
20 | 20 | let sender = getString(a.data, toBase58String(b.sender.bytes)) | |
21 | 21 | if (if (if (if (if (if (if (if (if (isDefined(sender)) | |
22 | 22 | then (b.recipient == me) | |
23 | 23 | else false) | |
24 | 24 | then (extract(sender) == paymentTxId) | |
25 | 25 | else false) | |
26 | 26 | then sigVerify(a.bodyBytes, a.proofs[0], b.senderPublicKey) | |
27 | 27 | else false) | |
28 | 28 | then (a.fee == dataFee) | |
29 | 29 | else false) | |
30 | 30 | then (b.amount >= (deposit + dataFee)) | |
31 | 31 | else false) | |
32 | 32 | then !(isDefined(b.assetId)) | |
33 | 33 | else false) | |
34 | 34 | then !(isDefined(getString(me, paymentTxId))) | |
35 | 35 | else false) | |
36 | 36 | then isDefined(getString(a.data, paymentTxId)) | |
37 | 37 | else false) | |
38 | 38 | then (extract(transactionHeightById(b.id)) >= startHeight) | |
39 | 39 | else false | |
40 | 40 | case _ => | |
41 | 41 | false | |
42 | 42 | } | |
43 | 43 | } | |
44 | - | else if (if (isDefined( | |
45 | - | then isDefined( | |
44 | + | else if (if (isDefined(getBinary(a.data, "answer"))) | |
45 | + | then isDefined(getInteger(a.data, "height")) | |
46 | 46 | else false) | |
47 | 47 | then (a.fee == dataFee) | |
48 | 48 | else false | |
49 | 49 | case c: MassTransferTransaction => | |
50 | 50 | let partTxId = getString(me, toBase58String(addressFromRecipient(c.transfers[1].recipient).bytes)) | |
51 | 51 | let participated = if (isDefined(partTxId)) | |
52 | 52 | then (extract(transactionHeightById(fromBase58String(extract(partTxId)))) >= startHeight) | |
53 | 53 | else false | |
54 | 54 | let correct = (sha256(toBytes(extract(getString(c.transfers[1].recipient, "answer")))) == answer) | |
55 | 55 | if (if (if (if (if (if (participated) | |
56 | 56 | then correct | |
57 | 57 | else false) | |
58 | 58 | then (c.transfers[0].recipient == addressFromPublicKey(adminPublicKey)) | |
59 | 59 | else false) | |
60 | 60 | then (c.transfers[0].amount >= (c.transfers[1].amount / 10)) | |
61 | 61 | else false) | |
62 | 62 | then (size(c.transfers) == 2) | |
63 | 63 | else false) | |
64 | 64 | then (c.fee == payoutFee) | |
65 | 65 | else false) | |
66 | 66 | then !(isDefined(c.feeAssetId)) | |
67 | 67 | else false | |
68 | 68 | case _ => | |
69 | 69 | true | |
70 | 70 | } |
github/deemru/w8io/3ef1775 43.60 ms ◑