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:
OldNewDifferences
11 {-# STDLIB_VERSION 1 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
3-let deposit = 100000000
4-let dataFee = 10000000
53 let payoutFee = 500000
64 let me = tx.sender
75 let adminPublicKey = base58'22GEgQRoT3xuSPQTTBNofWLnYQsn2ZTwAzd5f51CMFeb'
6+let adminAddress = addressFromPublicKey(adminPublicKey)
87 let answer = extract(getBinary(me, "answer"))
98 let startHeight = extract(getInteger(me, "height"))
9+let ticketId = fromBase58String(extract(getString(me, "ticket")))
10+let gamePrice = extract(getInteger(me, "price"))
1011 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)
5422 then correct
5523 else false)
56- then (c.transfers[0].recipient == addressFromPublicKey(adminPublicKey))
24+ then (payout.fee == payoutFee)
5725 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))
6527 else false
6628 case _ =>
6729 true
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 1 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
3-let deposit = 100000000
4-let dataFee = 10000000
53 let payoutFee = 500000
64 let me = tx.sender
75 let adminPublicKey = base58'22GEgQRoT3xuSPQTTBNofWLnYQsn2ZTwAzd5f51CMFeb'
6+let adminAddress = addressFromPublicKey(adminPublicKey)
87 let answer = extract(getBinary(me, "answer"))
98 let startHeight = extract(getInteger(me, "height"))
9+let ticketId = fromBase58String(extract(getString(me, "ticket")))
10+let gamePrice = extract(getInteger(me, "price"))
1011 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)
5422 then correct
5523 else false)
56- then (c.transfers[0].recipient == addressFromPublicKey(adminPublicKey))
24+ then (payout.fee == payoutFee)
5725 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))
6527 else false
6628 case _ =>
6729 true
6830 }

github/deemru/w8io/3ef1775 
41.57 ms