tx · GsAb4b8vBjV9XSijTSiHQjJFTBDohsiDdQkpGWvkudCH

3N7CY9W9yReAkMthCB2XrcPWpUPtswUaGgk:  -0.01000000 Waves

2020.07.01 17:13 [1068074] smart account 3N7CY9W9yReAkMthCB2XrcPWpUPtswUaGgk > SELF 0.00000000 Waves

{ "type": 13, "id": "GsAb4b8vBjV9XSijTSiHQjJFTBDohsiDdQkpGWvkudCH", "fee": 1000000, "feeAssetId": null, "timestamp": 1593612775058, "version": 1, "sender": "3N7CY9W9yReAkMthCB2XrcPWpUPtswUaGgk", "senderPublicKey": "9vPrW2EifxUyN9MsGkHYJi544BUwzRYrfwxqZYh8Aa6K", "proofs": [ "Bp83aTfKwUUocYxnSC4rzyAQcvuWoAGdSCvQdDBhQAwKabGsSDevf84SFpJTThmYKDAaQXMqq5dfmiWPzjWnB2B" ], "script": "base64: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AQUAAAAJbWluQW1vdW50CQAAZQAAAAIFAAAACmN1ckJhbGFuY2UIBQAAAAJ0eAAAAAZhbW91bnQJAAACAAAAAQIAAAAjVW5hYmxlIHRvIHNlbmQgc3VjaCBhbW91bnQgKHR5cGU9MikGBAAAAAprZXlPdmVyYWxsAgAAAAlyZXNfV0FWRVMEAAAAEG1pbkFtb3VudE92ZXJhbGwJAAQaAAAAAgkBAAAAEmdldEFkZHJlc3NGcm9tQm9vawAAAAEFAAAAE3doaXRlbGlzdEFkZHJlc3NLZXkFAAAACmtleU92ZXJhbGwDCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAQbWluQW1vdW50T3ZlcmFsbAQAAAAKY3VyQmFsYW5jZQkBAAAADHdhdmVzQmFsYW5jZQAAAAEJAQAAAAdleHRyYWN0AAAAAQgFAAAAAnR4AAAABnNlbmRlcgMJAABmAAAAAgkBAAAAB2V4dHJhY3QAAAABBQAAABBtaW5BbW91bnRPdmVyYWxsCQAAZQAAAAIFAAAACmN1ckJhbGFuY2UIBQAAAAJ0eAAAAAZhbW91bnQJAAACAAAAAQIAAAAjVW5hYmxlIHRvIHNlbmQgc3VjaCBhbW91bnQgKHR5cGU9MSkGBgMJAAAAAAAAAggFAAAAAnR4AAAAB2Fzc2V0SWQJAQAAABdnZXRBc3NldEZyb21BZGRyZXNzQm9vawAAAAAJAAAAAAAAAggFAAAAAnR4AAAACXJlY2lwaWVudAkBAAAAEmdldEFkZHJlc3NGcm9tQm9vawAAAAEFAAAAEWdhdGV3YXlBZGRyZXNzS2V5BAAAAAp3aGl0ZTFMaXN0CQACWAAAAAEICAUAAAACdHgAAAAGc2VuZGVyAAAABWJ5dGVzBAAAAAhhc3NldFR4dAkAAlgAAAABCQEAAAAHZXh0cmFjdAAAAAEIBQAAAAJ0eAAAAAdhc3NldElkBAAAAA93aGl0ZTFMaXN0QXNzZXQJAAEsAAAAAgkAASwAAAACBQAAAAp3aGl0ZTFMaXN0AgAAAAFfBQAAAAhhc3NldFR4dAQAAAARd2hpdGUxTGlzdE92ZXJhbGwJAAEsAAAAAgIAAAAEcmVzXwUAAAAIYXNzZXRUeHQEAAAAFHdoaXRlMUxpc3RBc3NldEVudHJ5CQAEGgAAAAIJAQAAABJnZXRBZGRyZXNzRnJvbUJvb2sAAAABBQAAABN3aGl0ZWxpc3RBZGRyZXNzS2V5BQAAAA93aGl0ZTFMaXN0QXNzZXQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAABR3aGl0ZTFMaXN0QXNzZXRFbnRyeQQAAAAWd2hpdGUxTGlzdE92ZXJhbGxFbnRyeQkABBoAAAACCQEAAAASZ2V0QWRkcmVzc0Zyb21Cb29rAAAAAQUAAAATd2hpdGVsaXN0QWRkcmVzc0tleQUAAAARd2hpdGUxTGlzdE92ZXJhbGwDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAABZ3aGl0ZTFMaXN0T3ZlcmFsbEVudHJ5BgQAAAALY3VyMUJhbGFuY2UJAAPrAAAAAggFAAAAAnR4AAAABnNlbmRlcggFAAAAAnR4AAAAB2Fzc2V0SWQDCQAAZgAAAAIJAQAAAAdleHRyYWN0AAAAAQUAAAAWd2hpdGUxTGlzdE92ZXJhbGxFbnRyeQkAAGUAAAACBQAAAAtjdXIxQmFsYW5jZQgFAAAAAnR4AAAABmFtb3VudAkAAAIAAAABAgAAACNVbmFibGUgdG8gc2VuZCBzdWNoIGFtb3VudCAodHlwZT0xKQYEAAAAC2N1cjFCYWxhbmNlCQAD6wAAAAIIBQAAAAJ0eAAAAAZzZW5kZXIIBQAAAAJ0eAAAAAdhc3NldElkAwkAAGYAAAACCQEAAAAHZXh0cmFjdAAAAAEFAAAAFHdoaXRlMUxpc3RBc3NldEVudHJ5CQAAZQAAAAIFAAAAC2N1cjFCYWxhbmNlCAUAAAACdHgAAAAGYW1vdW50CQAAAgAAAAECAAAAI1VuYWJsZSB0byBzZW5kIHN1Y2ggYW1vdW50ICh0eXBlPTIpBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAAAAAnR4BQAAAAckbWF0Y2gwBAAAAAR0eElkCQACWAAAAAEIBQAAAAJ0eAAAAAJpZAQAAAAJcEFkZHJlc3MxCQEAAAASZ2V0QWRkcmVzc0Zyb21Cb29rAAAAAQIAAAAJcEFkZHJlc3MxBAAAAAlwQWRkcmVzczIJAQAAABJnZXRBZGRyZXNzRnJvbUJvb2sAAAABAgAAAAlwQWRkcmVzczIEAAAA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", "chainId": 84, "height": 1068074, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# CONTENT_TYPE EXPRESSION #-}
3+let addressBook = Address(base58'3MwoVRAPfC2NKuuYJKHVAVtUFhq8MyTEfQh')
4+let whitelistAddressKey = "whitelistAddress"
5+let dAppWhitelistAddressKey = "dAppWhitelistAddress"
6+let matcherAddressKey = "matcherAddress"
7+let gatewayAddressKey = "gatewayAddress"
8+let gatewayControlAssetKey = "gatewayControlAsset"
9+let validState = 1000
10+let ver = "5.0.1"
11+func getAddressFromBook (key) = match getString(addressBook, key) {
12+ case a: String =>
13+ Address(fromBase58String(a))
14+ case _ =>
15+ throw("no key")
16+}
17+
18+func getAssetFromAddressBook () = match getString(extract(addressBook), gatewayControlAssetKey) {
19+ case a: String =>
20+ toBytes(a)
21+ case _ =>
22+ throw("no key")
23+}
24+
25+match tx {
26+ case o: Order =>
27+ if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
28+ then (addressFromPublicKey(o.matcherPublicKey) == getAddressFromBook(matcherAddressKey))
29+ else false
30+ case tx: TransferTransaction =>
31+ if (!(sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)))
32+ then throw("Transaction must be signed by owner")
33+ else {
34+ let userState = getInteger(getAddressFromBook(whitelistAddressKey), toBase58String(tx.sender.bytes))
35+ if (!(isDefined(userState)))
36+ then throw("Address not in whitelist")
37+ else if ((userState != validState))
38+ then throw("User not in valid state")
39+ else if (!(isDefined(tx.assetId)))
40+ then {
41+ let key = (toBase58String(tx.sender.bytes) + "_WAVES")
42+ let minAmount = getInteger(getAddressFromBook(whitelistAddressKey), key)
43+ if (isDefined(minAmount))
44+ then {
45+ let curBalance = wavesBalance(extract(tx.sender))
46+ if ((extract(minAmount) > (curBalance - tx.amount)))
47+ then throw("Unable to send such amount (type=2)")
48+ else true
49+ }
50+ else {
51+ let keyOverall = "res_WAVES"
52+ let minAmountOverall = getInteger(getAddressFromBook(whitelistAddressKey), keyOverall)
53+ if (isDefined(minAmountOverall))
54+ then {
55+ let curBalance = wavesBalance(extract(tx.sender))
56+ if ((extract(minAmountOverall) > (curBalance - tx.amount)))
57+ then throw("Unable to send such amount (type=1)")
58+ else true
59+ }
60+ else true
61+ }
62+ }
63+ else if ((tx.assetId == getAssetFromAddressBook()))
64+ then (tx.recipient == getAddressFromBook(gatewayAddressKey))
65+ else {
66+ let white1List = toBase58String(tx.sender.bytes)
67+ let assetTxt = toBase58String(extract(tx.assetId))
68+ let white1ListAsset = ((white1List + "_") + assetTxt)
69+ let white1ListOverall = ("res_" + assetTxt)
70+ let white1ListAssetEntry = getInteger(getAddressFromBook(whitelistAddressKey), white1ListAsset)
71+ if (!(isDefined(white1ListAssetEntry)))
72+ then {
73+ let white1ListOverallEntry = getInteger(getAddressFromBook(whitelistAddressKey), white1ListOverall)
74+ if (!(isDefined(white1ListOverallEntry)))
75+ then true
76+ else {
77+ let cur1Balance = assetBalance(tx.sender, tx.assetId)
78+ if ((extract(white1ListOverallEntry) > (cur1Balance - tx.amount)))
79+ then throw("Unable to send such amount (type=1)")
80+ else true
81+ }
82+ }
83+ else {
84+ let cur1Balance = assetBalance(tx.sender, tx.assetId)
85+ if ((extract(white1ListAssetEntry) > (cur1Balance - tx.amount)))
86+ then throw("Unable to send such amount (type=2)")
87+ else true
88+ }
89+ }
90+ }
91+ case tx: SetScriptTransaction =>
92+ let txId = toBase58String(tx.id)
93+ let pAddress1 = getAddressFromBook("pAddress1")
94+ let pAddress2 = getAddressFromBook("pAddress2")
95+ let pAddress3 = getAddressFromBook("pAddress3")
96+ let pAddress4 = getAddressFromBook("pAddress4")
97+ let pAddress5 = getAddressFromBook("pAddress5")
98+ let pAddress6 = getAddressFromBook("pAddress6")
99+ let pAddress7 = getAddressFromBook("pAddress7")
100+ let pAddress8 = getAddressFromBook("pAddress8")
101+ let pKey1Signed = if (isDefined(getInteger(pAddress1, txId)))
102+ then 1
103+ else 0
104+ let pKey2Signed = if (isDefined(getInteger(pAddress2, txId)))
105+ then 1
106+ else 0
107+ let pKey3Signed = if (isDefined(getInteger(pAddress3, txId)))
108+ then 1
109+ else 0
110+ let pKey4Signed = if (isDefined(getInteger(pAddress4, txId)))
111+ then 1
112+ else 0
113+ let pKey5Signed = if (isDefined(getInteger(pAddress5, txId)))
114+ then 1
115+ else 0
116+ let pKey6Signed = if (isDefined(getInteger(pAddress6, txId)))
117+ then 1
118+ else 0
119+ let pKey7Signed = if (isDefined(getInteger(pAddress7, txId)))
120+ then 1
121+ else 0
122+ let pKey8Signed = if (isDefined(getInteger(pAddress8, txId)))
123+ then 1
124+ else 0
125+ ((((((((pKey1Signed + pKey2Signed) + pKey3Signed) + pKey4Signed) + pKey5Signed) + pKey6Signed) + pKey7Signed) + pKey8Signed) >= 3)
126+ case tx: LeaseTransaction =>
127+ false
128+ case tx: SponsorFeeTransaction =>
129+ false
130+ case tx: MassTransferTransaction =>
131+ false
132+ case tx: IssueTransaction =>
133+ false
134+ case tx: ReissueTransaction =>
135+ false
136+ case tx: BurnTransaction =>
137+ false
138+ case tx: ExchangeTransaction =>
139+ false
140+ case tx: InvokeScriptTransaction =>
141+ match tx.payment {
142+ case a: AttachedPayment =>
143+ match getInteger(getAddressFromBook(dAppWhitelistAddressKey), toBase58String(addressFromRecipient(tx.dApp).bytes)) {
144+ case unused: Int =>
145+ true
146+ case _ =>
147+ false
148+ }
149+ case _ =>
150+ true
151+ }
152+ case _ =>
153+ sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
154+}

github/deemru/w8io/169f3d6 
22.74 ms