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