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