tx · 57pvCi5zgHJG1SJ7XAYxpCYrW5cS7PaqCyAkme7sNd2Q
3N4mapsqVLDdiatjTF2rYB5KiLn2e6Y4eJb: -0.01400000 Waves
2019.01.30 09:29 [472638] smart account 3N4mapsqVLDdiatjTF2rYB5KiLn2e6Y4eJb > SELF 0.00000000 Waves
{
"type": 13,
"id": "57pvCi5zgHJG1SJ7XAYxpCYrW5cS7PaqCyAkme7sNd2Q",
"fee": 1400000,
"feeAssetId": null,
"timestamp": 1548829788137,
"version": 1,
"sender": "3N4mapsqVLDdiatjTF2rYB5KiLn2e6Y4eJb",
"senderPublicKey": "BTdTmTBfL5TMXno6wjKmpDfg3m4L5A71Kaujb4kJtuYe",
"proofs": [
"5XXLMd3WWs1swEyKNuYX79cMPEi1dM9y8oVR3uDaJ5e1YJrAUJkB24rPDNnBEwuK71dvvZo69VSNLuZ2YarLKpj7"
],
"script": "base64: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",
"chainId": 84,
"height": 472638,
"spentComplexity": 0
}
View: original | compacted
Prev: 2NQAuZhNx89zVYTZtbQFazUTBptMxsjn1mo4aLnsaicd
Next: 3WrAuzFPyBzau4AUZaEapyzvrSeSFArFh1ddAHEtTqRu
Diff:
Old | New | | Differences |
---|
4 | 4 | | let minimalVotingHeight = 10 |
---|
5 | 5 | | match tx { |
---|
6 | 6 | | case d: DataTransaction => |
---|
7 | | - | if ((size(d.data) == 3)) |
---|
| 7 | + | if (if ((size(d.data) == 3)) |
---|
| 8 | + | then (size(d.proofs) == 3) |
---|
| 9 | + | else false) |
---|
8 | 10 | | then { |
---|
9 | 11 | | let assetTranserId = transactionById(d.proofs[1]) |
---|
10 | 12 | | let feeTransferId = transactionById(d.proofs[0]) |
---|
|
25 | 27 | | else false) |
---|
26 | 28 | | then (fT.amount == (aT.amount * 500000)) |
---|
27 | 29 | | else false) |
---|
28 | | - | then (d.data[0].key == toBase58String(aT.attachment)) |
---|
| 30 | + | then (d.data[0].key == toBase58String(sha256(aT.attachment))) |
---|
29 | 31 | | else false) |
---|
30 | | - | then (d.data[0].key == toBase58String(fT.attachment)) |
---|
| 32 | + | then (d.data[0].key == toBase58String(sha256(fT.attachment))) |
---|
31 | 33 | | else false) |
---|
32 | | - | then (d.data[1].key == (toBase58String(fT.attachment) + "_height")) |
---|
| 34 | + | then (d.data[1].key == (toBase58String(sha256(fT.attachment)) + "_height")) |
---|
33 | 35 | | else false) |
---|
34 | | - | then (d.data[2].key == (toBase58String(fT.attachment) + "_asset")) |
---|
| 36 | + | then (d.data[2].key == (toBase58String(sha256(fT.attachment)) + "_asset")) |
---|
35 | 37 | | else false) |
---|
36 | 38 | | then (extract(getInteger(aT.sender, d.data[1].key)) > height) |
---|
37 | 39 | | else false) |
---|
38 | 40 | | then (extract(getBinary(aT.sender, d.data[2].key)) == aT.assetId) |
---|
39 | 41 | | else false) |
---|
40 | | - | then sigVerify(d.bodyBytes, d.proofs[2], d.senderPublicKey) |
---|
| 42 | + | then sigVerify(d.bodyBytes, d.proofs[2], d.proofs[3]) |
---|
41 | 43 | | else false |
---|
42 | 44 | | case _ => |
---|
43 | 45 | | false |
---|
|
50 | 52 | | case t: TransferTransaction => |
---|
51 | 53 | | if (isDefined(getString(voteBank, toBase58String(t.attachment)))) |
---|
52 | 54 | | then { |
---|
53 | | - | let voteStarter = extract(addressFromString(extract(getString(voteBank, toBase58String(t.attachment))))) |
---|
54 | | - | if (if (if (if (if (if ((extract(getInteger(voteBank, (toBase58String(t.attachment) + "_height"))) > height)) |
---|
| 55 | + | let voteStarter = extract(addressFromString(extract(getString(voteBank, toBase58String(sha256(t.attachment)))))) |
---|
| 56 | + | if (if (if (if (if (if ((extract(getInteger(voteBank, (toBase58String(sha256(t.attachment)) + "_height"))) > height)) |
---|
55 | 57 | | then if ((addressFromRecipient(t.recipient) == addressFromString(extract(getString(voteStarter, "YES"))))) |
---|
56 | 58 | | then true |
---|
57 | 59 | | else (addressFromRecipient(t.recipient) == addressFromString(extract(getString(voteStarter, "NO")))) |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 1 #-} |
---|
2 | 2 | | {-# CONTENT_TYPE EXPRESSION #-} |
---|
3 | 3 | | let voteBank = addressFromPublicKey(fromBase58String("BTdTmTBfL5TMXno6wjKmpDfg3m4L5A71Kaujb4kJtuYe")) |
---|
4 | 4 | | let minimalVotingHeight = 10 |
---|
5 | 5 | | match tx { |
---|
6 | 6 | | case d: DataTransaction => |
---|
7 | | - | if ((size(d.data) == 3)) |
---|
| 7 | + | if (if ((size(d.data) == 3)) |
---|
| 8 | + | then (size(d.proofs) == 3) |
---|
| 9 | + | else false) |
---|
8 | 10 | | then { |
---|
9 | 11 | | let assetTranserId = transactionById(d.proofs[1]) |
---|
10 | 12 | | let feeTransferId = transactionById(d.proofs[0]) |
---|
11 | 13 | | match assetTranserId { |
---|
12 | 14 | | case aT: TransferTransaction => |
---|
13 | 15 | | match feeTransferId { |
---|
14 | 16 | | case fT: TransferTransaction => |
---|
15 | 17 | | if (if (if (if (if (if (if (if (if (if (if (if (if (!(isDefined(getString(voteBank, d.data[0].key)))) |
---|
16 | 18 | | then isDefined(getString(aT.sender, "YES")) |
---|
17 | 19 | | else false) |
---|
18 | 20 | | then isDefined(getString(aT.sender, "NO")) |
---|
19 | 21 | | else false) |
---|
20 | 22 | | then isDefined(getInteger(aT.sender, "height")) |
---|
21 | 23 | | else false) |
---|
22 | 24 | | then (aT.recipient == voteBank) |
---|
23 | 25 | | else false) |
---|
24 | 26 | | then (fT.recipient == voteBank) |
---|
25 | 27 | | else false) |
---|
26 | 28 | | then (fT.amount == (aT.amount * 500000)) |
---|
27 | 29 | | else false) |
---|
28 | | - | then (d.data[0].key == toBase58String(aT.attachment)) |
---|
| 30 | + | then (d.data[0].key == toBase58String(sha256(aT.attachment))) |
---|
29 | 31 | | else false) |
---|
30 | | - | then (d.data[0].key == toBase58String(fT.attachment)) |
---|
| 32 | + | then (d.data[0].key == toBase58String(sha256(fT.attachment))) |
---|
31 | 33 | | else false) |
---|
32 | | - | then (d.data[1].key == (toBase58String(fT.attachment) + "_height")) |
---|
| 34 | + | then (d.data[1].key == (toBase58String(sha256(fT.attachment)) + "_height")) |
---|
33 | 35 | | else false) |
---|
34 | | - | then (d.data[2].key == (toBase58String(fT.attachment) + "_asset")) |
---|
| 36 | + | then (d.data[2].key == (toBase58String(sha256(fT.attachment)) + "_asset")) |
---|
35 | 37 | | else false) |
---|
36 | 38 | | then (extract(getInteger(aT.sender, d.data[1].key)) > height) |
---|
37 | 39 | | else false) |
---|
38 | 40 | | then (extract(getBinary(aT.sender, d.data[2].key)) == aT.assetId) |
---|
39 | 41 | | else false) |
---|
40 | | - | then sigVerify(d.bodyBytes, d.proofs[2], d.senderPublicKey) |
---|
| 42 | + | then sigVerify(d.bodyBytes, d.proofs[2], d.proofs[3]) |
---|
41 | 43 | | else false |
---|
42 | 44 | | case _ => |
---|
43 | 45 | | false |
---|
44 | 46 | | } |
---|
45 | 47 | | case _ => |
---|
46 | 48 | | false |
---|
47 | 49 | | } |
---|
48 | 50 | | } |
---|
49 | 51 | | else false |
---|
50 | 52 | | case t: TransferTransaction => |
---|
51 | 53 | | if (isDefined(getString(voteBank, toBase58String(t.attachment)))) |
---|
52 | 54 | | then { |
---|
53 | | - | let voteStarter = extract(addressFromString(extract(getString(voteBank, toBase58String(t.attachment))))) |
---|
54 | | - | if (if (if (if (if (if ((extract(getInteger(voteBank, (toBase58String(t.attachment) + "_height"))) > height)) |
---|
| 55 | + | let voteStarter = extract(addressFromString(extract(getString(voteBank, toBase58String(sha256(t.attachment)))))) |
---|
| 56 | + | if (if (if (if (if (if ((extract(getInteger(voteBank, (toBase58String(sha256(t.attachment)) + "_height"))) > height)) |
---|
55 | 57 | | then if ((addressFromRecipient(t.recipient) == addressFromString(extract(getString(voteStarter, "YES"))))) |
---|
56 | 58 | | then true |
---|
57 | 59 | | else (addressFromRecipient(t.recipient) == addressFromString(extract(getString(voteStarter, "NO")))) |
---|
58 | 60 | | else false) |
---|
59 | 61 | | then (t.assetId == extract(getBinary(voteStarter, (toBase58String(t.attachment) + "_asset")))) |
---|
60 | 62 | | else false) |
---|
61 | 63 | | then (t.amount == 1) |
---|
62 | 64 | | else false) |
---|
63 | 65 | | then (t.fee == 500000) |
---|
64 | 66 | | else false) |
---|
65 | 67 | | then (wavesBalance(t.sender) > 100000000) |
---|
66 | 68 | | else false) |
---|
67 | 69 | | then sigVerify(t.bodyBytes, t.proofs[0], tx.senderPublicKey) |
---|
68 | 70 | | else false |
---|
69 | 71 | | } |
---|
70 | 72 | | else false |
---|
71 | 73 | | case s: SetScriptTransaction => |
---|
72 | 74 | | sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) |
---|
73 | 75 | | case _ => |
---|
74 | 76 | | false |
---|
75 | 77 | | } |
---|