2019.04.29 17:26 [1504315] smart account 3PC3qUM2Sfkb4jmu3Rvn6nwWycimjKrY792 > SELF 0.00000000 Waves

{ "type": 13, "id": "2wfLCnMZc9z3yhqiAhKTsMEmCsnjMPWuiD4AbwwTgbr9", "fee": 1000000, "feeAssetId": null, "timestamp": 1556548069440, "version": 1, "sender": "3PC3qUM2Sfkb4jmu3Rvn6nwWycimjKrY792", "senderPublicKey": "2QTgrCwcvKMzHiyE7ZnnuGQL3djFRYYR6XfcayGiJJN5", "proofs": [ "2rtfp6Y6ouoReVFAffeSHRnLLQobynUAKGWNM6nr2LqFpVEP3Wi8M8ughRLPYbQwpLTCrCNs4h5L6W6UP8HLmj4a" ], "script": "base64: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", "chainId": 87, "height": 1504315, "spentComplexity": 0 } View: original | compacted Prev: none Next: Eyvk8ywNn98vsLMaFiZCq3UjBEZWZzZzsBg8P5VVphYY Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 2 #-}
2+{-# CONTENT_TYPE EXPRESSION #-}
3+let WhitelistAddr = addressFromString("3P87HeVEvJ8xWiQW6N3fpCBHMxwczeGqyqD")
4+let GatewayAddr = addressFromString("3P9Typ8Wnoxt719juABnCeErU5wAvfcXAU9")
5+let validState = 1000
6+let protector0 = base58'288ncauvQoCp71m2oXUXC6LMt7yEv8vPLeAD6mo4hF8Q'
7+let protector1 = base58'4q7deHa3UojcsSDSFBvwsj2oXa39BMT9iTMnLfk3Rbpp'
8+let protector2 = base58'C92PjnMxbMtvwyZLWdNJKeK2MfZU6wsESVzYjof1mSVu'
9+let protector3 = base58'HUKkWXsC7xzSncw7EDb5NPsXKFx5VJq82hUMgB1G7ELK'
10+let protector4 = base58'E9rAmSbNdH2F3dYffqTSbvRA96pX1HBYWbAHQrNJu2Ej'
11+match tx {
12+ case o: Order =>
13+ if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
14+ then (o.matcherPublicKey == base58'E3UwaHCQCySghK3zwNB8EDHoc3b8uhzGPFz3gHmWon4W')
15+ else false
16+ case tx: TransferTransaction =>
17+ if (!(sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)))
18+ then throw("Transaction must be signed by owner")
19+ else {
20+ let userState = getInteger(extract(WhitelistAddr), toBase58String(tx.sender.bytes))
21+ if (!(isDefined(userState)))
22+ then throw("Address not in whitelist")
23+ else if ((userState != validState))
24+ then throw("User not in valid state")
25+ else if (!(isDefined(tx.assetId)))
26+ then {
27+ let key = (toBase58String(tx.sender.bytes) + "_WAVES")
28+ let minAmount = getInteger(extract(WhitelistAddr), key)
29+ if (isDefined(minAmount))
30+ then {
31+ let curBalance = wavesBalance(extract(tx.sender))
32+ if ((extract(minAmount) > (curBalance - tx.amount)))
33+ then throw("Unable to send such amount (type=2)")
34+ else true
35+ }
36+ else {
37+ let keyOverall = "res_WAVES"
38+ let minAmountOverall = getInteger(extract(WhitelistAddr), keyOverall)
39+ if (isDefined(minAmountOverall))
40+ then {
41+ let curBalance = wavesBalance(extract(tx.sender))
42+ if ((extract(minAmountOverall) > (curBalance - tx.amount)))
43+ then throw("Unable to send such amount (type=1)")
44+ else true
45+ }
46+ else true
47+ }
48+ }
49+ else {
50+ let TGATEId = base58'J6spRevsYuwKEHgzyPfojvdBPq67C8yvErr6e9ny8Jom'
51+ if ((tx.assetId == TGATEId))
52+ then (tx.recipient == GatewayAddr)
53+ else true
54+ }
55+ }
56+ case tx: SetScriptTransaction =>
57+ let p0signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], protector0))
58+ then 1
59+ else 0
60+ let p1signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], protector1))
61+ then 1
62+ else 0
63+ let p2signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], protector2))
64+ then 1
65+ else 0
66+ let p3signed = if (sigVerify(tx.bodyBytes, tx.proofs[3], protector3))
67+ then 1
68+ else 0
69+ let p4signed = if (sigVerify(tx.bodyBytes, tx.proofs[4], protector4))
70+ then 1
71+ else 0
72+ (((((p0signed + p1signed) + p2signed) + p3signed) + p4signed) >= 3)
73+ case tx: LeaseTransaction =>
74+ false
75+ case tx: SponsorFeeTransaction =>
76+ false
77+ case tx: MassTransferTransaction =>
78+ false
79+ case _ =>
80+ sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
81+}

github/deemru/w8io/786bc32 
58.38 ms