tx · BTLo4APhzFoU7Pic1BMcP5V9T47wmDE3cBjLWSjJv8V4

3N7UYW9TnmvBHnFst9imprHsoAMHQ3NR7Ub:  -0.01400000 Waves

2019.02.01 18:23 [476093] smart account 3N7UYW9TnmvBHnFst9imprHsoAMHQ3NR7Ub > SELF 0.00000000 Waves

{ "type": 13, "id": "BTLo4APhzFoU7Pic1BMcP5V9T47wmDE3cBjLWSjJv8V4", "fee": 1400000, "feeAssetId": null, "timestamp": 1549034661221, "version": 1, "sender": "3N7UYW9TnmvBHnFst9imprHsoAMHQ3NR7Ub", "senderPublicKey": "CXpiWubcdkB79QekRVaEXMVY8N12qP2f9zJp5sziGfge", "proofs": [ "4LmLDbGXP4F7PGVtRrCVgYpP1m3fj31u8enFCyto9y7Sd6x1D9iiwPJVhnGpLbDfrS493awJ23gs46dmHGEKht87" ], "script": "base64:AQQAAAAIdm90ZUJhbmsJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEJAAJZAAAAAQIAAAAABAAAABNtaW5pbWFsVm90aW5nSGVpZ2h0AAAAAAAAAABkBAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAPRGF0YVRyYW5zYWN0aW9uBAAAAAFkBQAAAAckbWF0Y2gwAwkAAAAAAAACCQABkAAAAAEIBQAAAAFkAAAABGRhdGEAAAAAAAAAAAIEAAAADWZlZVRyYW5zZmVySWQJAAPoAAAAAQkAAZEAAAACCAUAAAABZAAAAAZwcm9vZnMAAAAAAAAAAAAEAAAAByRtYXRjaDEFAAAADWZlZVRyYW5zZmVySWQDCQAAAQAAAAIFAAAAByRtYXRjaDECAAAAE1RyYW5zZmVyVHJhbnNhY3Rpb24EAAAAAmZUBQAAAAckbWF0Y2gxBAAAAAx2b3RpbmdIZWlnaHQJAQAAAAdleHRyYWN0AAAAAQkBAAAACmdldEludGVnZXIAAAACCAUAAAABZAAAAARkYXRhAAAAAAAAAAAAAwMDAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkABB0AAAACBQAAAAh2b3RlQmFuawgJAAGRAAAAAggFAAAAAWQAAAAEZGF0YQAAAAAAAAAAAAAAAANrZXkJAAAAAAAAAggFAAAAAmZUAAAACXJlY2lwaWVudAUAAAAIdm90ZUJhbmsHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAACZlQAAAAHYXNzZXRJZAcJAABmAAAAAgUAAAAMdm90aW5nSGVpZ2h0BQAAAAZoZWlnaHQHCQAAZwAAAAIJAABlAAAAAgUAAAAMdm90aW5nSGVpZ2h0BQAAAAZoZWlnaHQFAAAAE21pbmltYWxWb3RpbmdIZWlnaHQHCQAAAgAAAAECAAAAOXByb29mIGF0IGluZGV4IDAgZG9lc24ndCBjb250YWluIGZlZSB0cmFuc2ZlciB0cmFuc2FjdGlvbgkAAAIAAAABAgAAAE1kYXRhIHR4IHNob3VsZCBjb250YWluIHR3byBrZXktdmFsdWUgcGFpcnM6IDAgLSBhc3NldElkLW1heFZvdGluZ0hlaWdodCwgMSAtIAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAABdAUAAAAHJG1hdGNoMAMJAQAAAAlpc0RlZmluZWQAAAABCQAEGgAAAAIFAAAACHZvdGVCYW5rCQACWAAAAAEJAQAAAAdleHRyYWN0AAAAAQgFAAAAAXQAAAAHYXNzZXRJZAQAAAABaAkABBoAAAACBQAAAAh2b3RlQmFuawkAAlgAAAABCQEAAAAHZXh0cmFjdAAAAAEIBQAAAAF0AAAAB2Fzc2V0SWQDAwMJAABnAAAAAgUAAAAGaGVpZ2h0CQEAAAAHZXh0cmFjdAAAAAEFAAAAAWgDCQAAAAAAAAIJAAQkAAAAAQgFAAAAAXQAAAAJcmVjaXBpZW50CQEAAAARYWRkcmVzc0Zyb21TdHJpbmcAAAABCQEAAAAHZXh0cmFjdAAAAAEJAAQdAAAAAgUAAAAIdm90ZUJhbmsCAAAABHByb3MGCQAAAAAAAAIJAAQkAAAAAQgFAAAAAXQAAAAJcmVjaXBpZW50CQEAAAARYWRkcmVzc0Zyb21TdHJpbmcAAAABCQEAAAAHZXh0cmFjdAAAAAEJAAQdAAAAAgUAAAAIdm90ZUJhbmsCAAAABGNvbnMHCQEAAAAJaXNEZWZpbmVkAAAAAQkABB0AAAACBQAAAAh2b3RlQmFuawIAAAAEcHJvcwcJAQAAAAlpc0RlZmluZWQAAAABCQAEHQAAAAIFAAAACHZvdGVCYW5rAgAAAARjb25zBwkAAAIAAAABAgAAADN5b3UgY2Fubm90IHZvdGUgd2l0aCB0aGlzIHRva2VuLiBJdCdzIG5vdCByZWdpc3RyZWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBAAAAAFzBQAAAAckbWF0Y2gwCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQfx0X0k", "chainId": 84, "height": 476093, "spentComplexity": 0 } View: original | compacted Prev: 2ZyD3SxEDKEJnHVphPas96Gpvt5gV4vFQd1bG7TumCWw Next: Bzcm2r9WsrQh1q2xM1dATMXRcMVBxiWS3kj2f1Mei5qY Diff:
OldNewDifferences
1010 match feeTransferId {
1111 case fT: TransferTransaction =>
1212 let votingHeight = extract(getInteger(d.data, 0))
13- if (if (if (if (if (!(isDefined(getString(voteBank, d.data[0].key))))
13+ if (if (if (if (!(isDefined(getString(voteBank, d.data[0].key))))
1414 then (fT.recipient == voteBank)
1515 else false)
1616 then !(isDefined(fT.assetId))
1818 then (votingHeight > height)
1919 else false)
2020 then ((votingHeight - height) >= minimalVotingHeight)
21- else false)
22- then match transactionById(fromBase58String(d.data[0].key)) {
23- case i: IssueTransaction =>
24- let accountScriptedProof = extract(getBinary(d.data, 1))
25- let accountScriptHash = extract(getBinary(voteBank, "IssuerAccountScriptHash"))
26- let scriptTx = transactionById(accountScriptedProof)
27- if ((fT.amount >= (i.quantity * 900000)))
28- then if (if (if (if ( match scriptTx {
29- case s: SetScriptTransaction =>
30- if ((sha256(extract(s.script)) == accountScriptHash))
31- then true
32- else throw(("hash should be equal to " + toBase58String(sha256(extract(s.script)))))
33- case _ =>
34- throw("voting initiator not scripted, or script is wrong")
35- })
36- then (i.decimals == 0)
37- else false)
38- then (fT.senderPublicKey == i.senderPublicKey)
39- else false)
40- then (d.data[1].key == toBase58String(i.sender.bytes))
41- else false)
42- then sigVerify(d.bodyBytes, d.proofs[1], fT.senderPublicKey)
43- else false
44- else throw(("minimum trasfer transaction amount is" + toString((i.quantity * 900000))))
45- case _ =>
46- throw("data key at 0 index should contain voting asset id")
47- }
4821 else false
4922 case _ =>
5023 throw("proof at index 0 doesn't contain fee transfer transaction")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 1 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
33 let voteBank = addressFromPublicKey(fromBase58String(""))
44 let minimalVotingHeight = 100
55 match tx {
66 case d: DataTransaction =>
77 if ((size(d.data) == 2))
88 then {
99 let feeTransferId = transactionById(d.proofs[0])
1010 match feeTransferId {
1111 case fT: TransferTransaction =>
1212 let votingHeight = extract(getInteger(d.data, 0))
13- if (if (if (if (if (!(isDefined(getString(voteBank, d.data[0].key))))
13+ if (if (if (if (!(isDefined(getString(voteBank, d.data[0].key))))
1414 then (fT.recipient == voteBank)
1515 else false)
1616 then !(isDefined(fT.assetId))
1717 else false)
1818 then (votingHeight > height)
1919 else false)
2020 then ((votingHeight - height) >= minimalVotingHeight)
21- else false)
22- then match transactionById(fromBase58String(d.data[0].key)) {
23- case i: IssueTransaction =>
24- let accountScriptedProof = extract(getBinary(d.data, 1))
25- let accountScriptHash = extract(getBinary(voteBank, "IssuerAccountScriptHash"))
26- let scriptTx = transactionById(accountScriptedProof)
27- if ((fT.amount >= (i.quantity * 900000)))
28- then if (if (if (if ( match scriptTx {
29- case s: SetScriptTransaction =>
30- if ((sha256(extract(s.script)) == accountScriptHash))
31- then true
32- else throw(("hash should be equal to " + toBase58String(sha256(extract(s.script)))))
33- case _ =>
34- throw("voting initiator not scripted, or script is wrong")
35- })
36- then (i.decimals == 0)
37- else false)
38- then (fT.senderPublicKey == i.senderPublicKey)
39- else false)
40- then (d.data[1].key == toBase58String(i.sender.bytes))
41- else false)
42- then sigVerify(d.bodyBytes, d.proofs[1], fT.senderPublicKey)
43- else false
44- else throw(("minimum trasfer transaction amount is" + toString((i.quantity * 900000))))
45- case _ =>
46- throw("data key at 0 index should contain voting asset id")
47- }
4821 else false
4922 case _ =>
5023 throw("proof at index 0 doesn't contain fee transfer transaction")
5124 }
5225 }
5326 else throw("data tx should contain two key-value pairs: 0 - assetId-maxVotingHeight, 1 - ")
5427 case t: TransferTransaction =>
5528 if (isDefined(getInteger(voteBank, toBase58String(extract(t.assetId)))))
5629 then {
5730 let h = getInteger(voteBank, toBase58String(extract(t.assetId)))
5831 if (if (if ((height >= extract(h)))
5932 then if ((addressFromRecipient(t.recipient) == addressFromString(extract(getString(voteBank, "pros")))))
6033 then true
6134 else (addressFromRecipient(t.recipient) == addressFromString(extract(getString(voteBank, "cons"))))
6235 else false)
6336 then isDefined(getString(voteBank, "pros"))
6437 else false)
6538 then isDefined(getString(voteBank, "cons"))
6639 else false
6740 }
6841 else throw("you cannot vote with this token. It's not registred")
6942 case s: SetScriptTransaction =>
7043 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
7144 case _ =>
7245 false
7346 }

github/deemru/w8io/873ac7e 
35.82 ms