tx · CcFWaVLFcAXc6xDfC1FkoxGgCBzVkyVzDdT3VpHYd3Q 3P7ok1T2xn87ea5xjxBPFZPNeShgSqHeaHg: -0.01400000 Waves 2020.01.07 23:12 [1874414] smart account 3P7ok1T2xn87ea5xjxBPFZPNeShgSqHeaHg > SELF 0.00000000 Waves
{ "type": 13, "id": "CcFWaVLFcAXc6xDfC1FkoxGgCBzVkyVzDdT3VpHYd3Q", "fee": 1400000, "feeAssetId": null, "timestamp": 1578427858126, "version": 1, "sender": "3P7ok1T2xn87ea5xjxBPFZPNeShgSqHeaHg", "senderPublicKey": "5KD6eu1HF3Fnzdr5L6ebB4u1fQEDtLwtpvTGJfKgQc4h", "proofs": [ "4usUDV1JonnZnxvdsAkBd5yXLzJZVn3ipwBfetBMS8XfStjrp9ErwfWCWkpQUAM3ZgEF1mp1g5bpUREcFSRWY2Vd", "2GzfwotW3HwkTa6iDB8BRiVGXvLDr74FVUair81kSB9Wtfj6qCaAnAf34tPUx9MUiekg6wREwyfuYE1C2CppSZmU" ], "script": "base64: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", "chainId": 87, "height": 1874414, "spentComplexity": 0 } View: original | compacted Prev: ATjg6MaVfZLT2z2mMzzmThxXzyfJSwrc4r4u5kxjZwY3 Next: D7Qcnoj3M59mbKsaLdHwGhrd7ArcHbGuDK3e7HD67p1E Diff:
Old | New | Differences | |
---|---|---|---|
9 | 9 | let matcherFeeId = Unit() | |
10 | 10 | let payoutAssetId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS' | |
11 | 11 | let traderPubKey = extract(tx.senderPublicKey) | |
12 | - | let managerPubKey = base58' | |
13 | - | let investorPubKeys = [base58' | |
12 | + | let managerPubKey = base58'EaKK5PAFUkgtnF7xcyABUzi8YBQADmUDnPzQBHjCTAKT' | |
13 | + | let investorPubKeys = [base58'EaKK5PAFUkgtnF7xcyABUzi8YBQADmUDnPzQBHjCTAKT'] | |
14 | 14 | func isFiatAsset (assetId) = if (if (if (if (if ((assetId == base58'Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck')) | |
15 | 15 | then true | |
16 | 16 | else (assetId == base58'Gtb1WRznfchDnTh37ezoDTJ4wcoKaRsKqKjJjy7nm2zU')) | |
72 | 72 | then sigVerify(i.bodyBytes, i.proofs[0], traderPubKey) | |
73 | 73 | else false | |
74 | 74 | case t: TransferTransaction => | |
75 | + | let recipient = addressFromRecipient(t.recipient) | |
75 | 76 | let rightTransfer = if (if ((t.assetId == payoutAssetId)) | |
76 | - | then ( | |
77 | + | then (recipient == addressFromString(payoutAddress)) | |
77 | 78 | else false) | |
78 | 79 | then true | |
79 | 80 | else if (if ((t.assetId == priceAssetId)) | |
80 | 81 | then true | |
81 | 82 | else (t.assetId == amountAssetId)) | |
82 | - | then ( | |
83 | + | then (recipient == addressFromString(redeemAddress)) | |
83 | 84 | else false | |
84 | 85 | if (rightTransfer) | |
85 | 86 | then if (sigVerify(t.bodyBytes, t.proofs[1], managerPubKey)) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# CONTENT_TYPE EXPRESSION #-} | |
3 | 3 | let payoutAddress = "3P8uxNCMRWjj2DUWAXaRXF4Q4thX9jQxXcs" | |
4 | 4 | let redeemAddress = "3PAkNyfHB5NV9jXioZ1DG3mynhUZyUzHWML" | |
5 | 5 | let votingAddress = "3PGEh2VpbpYyetTUTCY6bRxv2mpMwZoz5sP" | |
6 | 6 | let lockExpired = (value(lastBlock.timestamp) >= (1609459200 * 1000)) | |
7 | 7 | let priceAssetId = Unit() | |
8 | 8 | let amountAssetId = base58'BS1KFNR8zrXKBEWdUUvpaP6G57Hic3aESkwK7qQKdLpB' | |
9 | 9 | let matcherFeeId = Unit() | |
10 | 10 | let payoutAssetId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS' | |
11 | 11 | let traderPubKey = extract(tx.senderPublicKey) | |
12 | - | let managerPubKey = base58' | |
13 | - | let investorPubKeys = [base58' | |
12 | + | let managerPubKey = base58'EaKK5PAFUkgtnF7xcyABUzi8YBQADmUDnPzQBHjCTAKT' | |
13 | + | let investorPubKeys = [base58'EaKK5PAFUkgtnF7xcyABUzi8YBQADmUDnPzQBHjCTAKT'] | |
14 | 14 | func isFiatAsset (assetId) = if (if (if (if (if ((assetId == base58'Ft8X1v1LTa1ABafufpaCWyVj8KkaxUWE6xBhW6sNFJck')) | |
15 | 15 | then true | |
16 | 16 | else (assetId == base58'Gtb1WRznfchDnTh37ezoDTJ4wcoKaRsKqKjJjy7nm2zU')) | |
17 | 17 | then true | |
18 | 18 | else (assetId == base58'DEJbZipbKQjwEiRjx2AqQFucrj5CZ3rAc4ZvFM8nAsoA')) | |
19 | 19 | then true | |
20 | 20 | else (assetId == base58'2mX5DzVKWrAJw8iwdJnV2qtoeVG9h5nTDpTqC1wb1WEN')) | |
21 | 21 | then true | |
22 | 22 | else (assetId == base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ')) | |
23 | 23 | then true | |
24 | 24 | else (assetId == base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p') | |
25 | 25 | ||
26 | 26 | match tx { | |
27 | 27 | case o: Order => | |
28 | 28 | let rightOrder = if (if (if (if ((o.matcherFeeAssetId == matcherFeeId)) | |
29 | 29 | then (o.assetPair.priceAsset == priceAssetId) | |
30 | 30 | else false) | |
31 | 31 | then (o.assetPair.amountAsset == amountAssetId) | |
32 | 32 | else false) | |
33 | 33 | then true | |
34 | 34 | else if (if (if ((o.orderType == Buy)) | |
35 | 35 | then !(isDefined(o.matcherFeeAssetId)) | |
36 | 36 | else false) | |
37 | 37 | then !(isDefined(o.assetPair.amountAsset)) | |
38 | 38 | else false) | |
39 | 39 | then (o.assetPair.priceAsset == payoutAssetId) | |
40 | 40 | else false) | |
41 | 41 | then true | |
42 | 42 | else if (if (if ((o.orderType == Sell)) | |
43 | 43 | then !(isDefined(o.matcherFeeAssetId)) | |
44 | 44 | else false) | |
45 | 45 | then if (!(isDefined(o.assetPair.priceAsset))) | |
46 | 46 | then true | |
47 | 47 | else !(isDefined(o.assetPair.amountAsset)) | |
48 | 48 | else false) | |
49 | 49 | then !(isFiatAsset(o.assetPair.priceAsset)) | |
50 | 50 | else false | |
51 | 51 | if (rightOrder) | |
52 | 52 | then sigVerify(o.bodyBytes, o.proofs[0], traderPubKey) | |
53 | 53 | else false | |
54 | 54 | case b: BurnTransaction => | |
55 | 55 | let rightBurn = if (if ((b.assetId != payoutAssetId)) | |
56 | 56 | then (b.assetId != if (isDefined(priceAssetId)) | |
57 | 57 | then priceAssetId | |
58 | 58 | else base58'') | |
59 | 59 | else false) | |
60 | 60 | then (b.assetId != if (isDefined(amountAssetId)) | |
61 | 61 | then amountAssetId | |
62 | 62 | else base58'') | |
63 | 63 | else false | |
64 | 64 | if (rightBurn) | |
65 | 65 | then sigVerify(b.bodyBytes, b.proofs[0], traderPubKey) | |
66 | 66 | else false | |
67 | 67 | case l: LeaseCancelTransaction|LeaseTransaction => | |
68 | 68 | sigVerify(l.bodyBytes, l.proofs[0], traderPubKey) | |
69 | 69 | case i: InvokeScriptTransaction => | |
70 | 70 | let rightInvoke = (addressFromRecipient(i.dApp) == addressFromString(votingAddress)) | |
71 | 71 | if (rightInvoke) | |
72 | 72 | then sigVerify(i.bodyBytes, i.proofs[0], traderPubKey) | |
73 | 73 | else false | |
74 | 74 | case t: TransferTransaction => | |
75 | + | let recipient = addressFromRecipient(t.recipient) | |
75 | 76 | let rightTransfer = if (if ((t.assetId == payoutAssetId)) | |
76 | - | then ( | |
77 | + | then (recipient == addressFromString(payoutAddress)) | |
77 | 78 | else false) | |
78 | 79 | then true | |
79 | 80 | else if (if ((t.assetId == priceAssetId)) | |
80 | 81 | then true | |
81 | 82 | else (t.assetId == amountAssetId)) | |
82 | - | then ( | |
83 | + | then (recipient == addressFromString(redeemAddress)) | |
83 | 84 | else false | |
84 | 85 | if (rightTransfer) | |
85 | 86 | then if (sigVerify(t.bodyBytes, t.proofs[1], managerPubKey)) | |
86 | 87 | then true | |
87 | 88 | else lockExpired | |
88 | 89 | else false | |
89 | 90 | case s: SetScriptTransaction => | |
90 | 91 | let keys = extract(s.senderPublicKey) :: investorPubKeys | |
91 | 92 | let rightSetScript = ((if (sigVerify(s.bodyBytes, s.proofs[1], keys[1])) | |
92 | 93 | then 1 | |
93 | 94 | else 0) > (size(investorPubKeys) / 2)) | |
94 | 95 | if (rightSetScript) | |
95 | 96 | then sigVerify(s.bodyBytes, s.proofs[0], keys[0]) | |
96 | 97 | else false | |
97 | 98 | case _ => | |
98 | 99 | false | |
99 | 100 | } |
github/deemru/w8io/3ef1775 50.72 ms ◑