2020.10.25 10:35 [2299569] smart account 3P6VEUyoBE1qdNuhUzbnFRLThuoe1pzS4B2 > SELF 0.00000000 Waves
{ "type": 13, "id": "5zaQTqdaSiyFqAuyBzBYC71EXvYX2ADVKEF13pEFAaxe", "fee": 1400000, "feeAssetId": null, "timestamp": 1603609010516, "version": 2, "chainId": 87, "sender": "3P6VEUyoBE1qdNuhUzbnFRLThuoe1pzS4B2", "senderPublicKey": "3o7qJCobCVuW81YsLvWLKA9vbEdKavWEdatMWHcV74P3", "proofs": [ "2A4LNK3ZyQPtuh2xePaevkvfXisvTeDZZmCeyEtQZLsHzURnMYVEYQqWQHapF35f9v2THYdGRQNZV7GqFddpJHmr", "3pWkJcuXziFM48vHArnybxrSoHS3tnENTnMm4QQrcjrzVR6rXaRUyvmupmdodK6BShoUbFwinGaA5rXRexRvzhBj" ], "script": "base64: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", "height": 2299569, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EeqiYrQrfUU95Abxj1gShXS8PVdRQ7RbvhQHEhuJ1zWm Next: FcaE3hFCNRjpMiCUPtspWLDzGGGuuNJZbFHtNNtAuhJQ Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# CONTENT_TYPE EXPRESSION #-} | |
3 | 3 | let scriptVersion = "v1.02-final_20201020" | |
4 | - | let | |
4 | + | let saleSupply = (10000 * 100000) | |
5 | 5 | let adminPublicKey = base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k' | |
6 | 6 | let mmbotPublicKey = base58'62KBavoHK4TtCYmURFVeNC8j3gL8Jo7WwcrweoBLWofc' | |
7 | 7 | let wxchgPublicKey = base58'9cpfKN9suPNvfeUNphzxXMjcnn974eme8ZhWUjaktzU5' | |
38 | 38 | then 1 | |
39 | 39 | else 0)) | |
40 | 40 | let isValidGuarantors = (validGuarantors >= minSignatures) | |
41 | - | let maxSendAmount = max([0, (assetBalance(this, fmmtAsset) - | |
41 | + | let maxSendAmount = max([0, (assetBalance(this, fmmtAsset) - saleSupply)]) | |
42 | 42 | match tx { | |
43 | 43 | case o: Order => | |
44 | 44 | if (if (if (isValidMMBot) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# CONTENT_TYPE EXPRESSION #-} | |
3 | 3 | let scriptVersion = "v1.02-final_20201020" | |
4 | - | let | |
4 | + | let saleSupply = (10000 * 100000) | |
5 | 5 | let adminPublicKey = base58'JDYJq5RKnSXKLYUQfL89zWPdM3QH5hW8JUTpjnTYV95k' | |
6 | 6 | let mmbotPublicKey = base58'62KBavoHK4TtCYmURFVeNC8j3gL8Jo7WwcrweoBLWofc' | |
7 | 7 | let wxchgPublicKey = base58'9cpfKN9suPNvfeUNphzxXMjcnn974eme8ZhWUjaktzU5' | |
8 | 8 | let guarantors = ([valueOrElse(getBinary(this, "guarantor1"), base58''), valueOrElse(getBinary(this, "guarantor2"), base58''), valueOrElse(getBinary(this, "guarantor3"), base58''), valueOrElse(getBinary(this, "guarantor4"), base58''), valueOrElse(getBinary(this, "guarantor5"), base58'')] :+ base58'') | |
9 | 9 | let actualSize = value(indexOf(guarantors, base58'')) | |
10 | 10 | let minSignatures = ((actualSize / 2) + (actualSize % 2)) | |
11 | 11 | let btcAsset = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS' | |
12 | 12 | let ethAsset = base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu' | |
13 | 13 | let usdtAsset = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ' | |
14 | 14 | let fmmtAsset = base58'7sqT7HvCVtcrCTQV72FM5so65wjzM164rzoqDZRsRXg7' | |
15 | 15 | let xfeeAsset = base58'5EMfVQiB8NF4HuhaXrZzDM637whWuVBsduq59ZaCSNqk' | |
16 | 16 | let fixedAssets = ([btcAsset, ethAsset, usdtAsset, fmmtAsset] :+ unit) | |
17 | 17 | let fsale = Address(base58'3P6VEUyoBE1qdNuhUzbnFRLThuoe1pzS4B2') | |
18 | 18 | let fdapp = Address(base58'3PFRxT9CXG81Evr8MeVJGnQSjFP6cq1SHWL') | |
19 | 19 | let fcold = Address(base58'3PDUqa5qmnhPJfKPnBzUd5PisA42iawV6W7') | |
20 | 20 | let admin = Address(base58'3PLRw83NCgHKKFfeJi8XWZ4fypqJJxm2x2x') | |
21 | 21 | let fteam = Address(base58'3P3TMgAUVtJKWHxQMdt8Ao6A1qnRyVmCSr2') | |
22 | 22 | let isValidOwner = sigVerify_8Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
23 | 23 | let isValidMMBot = if (isValidOwner) | |
24 | 24 | then true | |
25 | 25 | else sigVerify_8Kb(tx.bodyBytes, tx.proofs[1], mmbotPublicKey) | |
26 | 26 | let isValidAdmin = if (isValidOwner) | |
27 | 27 | then true | |
28 | 28 | else sigVerify_8Kb(tx.bodyBytes, tx.proofs[1], adminPublicKey) | |
29 | 29 | let validGuarantors = (((((if (sigVerify_8Kb(tx.bodyBytes, tx.proofs[1], guarantors[0])) | |
30 | 30 | then 1 | |
31 | 31 | else 0) + (if (sigVerify_8Kb(tx.bodyBytes, tx.proofs[2], guarantors[1])) | |
32 | 32 | then 1 | |
33 | 33 | else 0)) + (if (sigVerify_8Kb(tx.bodyBytes, tx.proofs[3], guarantors[2])) | |
34 | 34 | then 1 | |
35 | 35 | else 0)) + (if (sigVerify_8Kb(tx.bodyBytes, tx.proofs[4], guarantors[3])) | |
36 | 36 | then 1 | |
37 | 37 | else 0)) + (if (sigVerify_8Kb(tx.bodyBytes, tx.proofs[5], guarantors[4])) | |
38 | 38 | then 1 | |
39 | 39 | else 0)) | |
40 | 40 | let isValidGuarantors = (validGuarantors >= minSignatures) | |
41 | - | let maxSendAmount = max([0, (assetBalance(this, fmmtAsset) - | |
41 | + | let maxSendAmount = max([0, (assetBalance(this, fmmtAsset) - saleSupply)]) | |
42 | 42 | match tx { | |
43 | 43 | case o: Order => | |
44 | 44 | if (if (if (isValidMMBot) | |
45 | 45 | then if (if (if ((o.orderType == Buy)) | |
46 | 46 | then (o.assetPair.priceAsset != xfeeAsset) | |
47 | 47 | else false) | |
48 | 48 | then containsElement(fixedAssets, o.assetPair.amountAsset) | |
49 | 49 | else false) | |
50 | 50 | then true | |
51 | 51 | else if (if ((o.orderType == Sell)) | |
52 | 52 | then (o.assetPair.amountAsset != xfeeAsset) | |
53 | 53 | else false) | |
54 | 54 | then containsElement(fixedAssets, o.assetPair.priceAsset) | |
55 | 55 | else false | |
56 | 56 | else false) | |
57 | 57 | then !(isDefined(o.matcherFeeAssetId)) | |
58 | 58 | else false) | |
59 | 59 | then (o.matcherPublicKey == wxchgPublicKey) | |
60 | 60 | else false | |
61 | 61 | case t: TransferTransaction => | |
62 | 62 | if (if (if (isValidOwner) | |
63 | 63 | then !(containsElement(fixedAssets, t.assetId)) | |
64 | 64 | else false) | |
65 | 65 | then !(containsElement(fixedAssets, t.feeAssetId)) | |
66 | 66 | else false) | |
67 | 67 | then true | |
68 | 68 | else if (if (if (isValidAdmin) | |
69 | 69 | then (t.assetId == fmmtAsset) | |
70 | 70 | else false) | |
71 | 71 | then (maxSendAmount >= t.amount) | |
72 | 72 | else false) | |
73 | 73 | then (addressFromRecipient(t.recipient) == fcold) | |
74 | 74 | else false | |
75 | 75 | case _: SetScriptTransaction|DataTransaction => | |
76 | 76 | if (isValidAdmin) | |
77 | 77 | then isValidGuarantors | |
78 | 78 | else false | |
79 | 79 | case _ => | |
80 | 80 | false | |
81 | 81 | } |
github/deemru/w8io/786bc32 46.99 ms ◑