tx · 3LEhnSG9CDkMB9rxKRdu8VeuAZjR1dkvu9pTiDUhGxG8

3N216NYttjnkMabJT2CKZSvP8rxoQEy7qZv:  -0.01000000 Waves

2019.09.02 15:04 [658320] smart account 3N216NYttjnkMabJT2CKZSvP8rxoQEy7qZv > SELF 0.00000000 Waves

{ "type": 13, "id": "3LEhnSG9CDkMB9rxKRdu8VeuAZjR1dkvu9pTiDUhGxG8", "fee": 1000000, "feeAssetId": null, "timestamp": 1567425912599, "version": 1, "sender": "3N216NYttjnkMabJT2CKZSvP8rxoQEy7qZv", "senderPublicKey": "4CsN7vdrYYorDMa1jXE1ZPZMWHE2WAeZAdMwWsj8EtLQ", "proofs": [ "4GcPt9BqUnfYW3Whns8ppx8HKnXAWWYBUdSKGH5stMK7swaeHoNqSRLZrSSpUi6BoQ4bn9R81GkvnTkTHBJV8c1c" ], "script": "base64:AAIDAAAAAAAAAAAAAAAgAAAAAA1pc3N1ZXJBc3NldElkAQAAACASgOsRk9Q3uKmrlsEQ2O+hlJzecsAnRD2sWqOsXor+UQAAAAARaW52ZXN0bWVudEFzc2V0SWQBAAAAIMyghA9N/H6PKJXRf4vv09OPc6rJgvZXIaRGMYd/LPwxAAAAABhpbnZlc3RtZW50QXNzZXRJZElzV2F2ZXMHAAAAAA5vd25lclB1YmxpY0tleQEAAAAgon1NjQ3EjCEr8urgzZc1VlV8eymVMM5zpX1fQE5Ht3UAAAAADG93bmVyQWRkcmVzcwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAAOb3duZXJQdWJsaWNLZXkAAAAAEm93bmVyQWRkcmVzc1N0cmluZwIAAAAjM01wZmE2MUI1cVByYnBrNERHeXVIUkpSRVJWanduZ2dXem4AAAAAEHdoaXRlbGlzdEFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVSy4ps+uwlECTaFaLiWJr0yF21GhUEUIDUAAAAAFGRBcHBXaGl0ZWxpc3RBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUfmUCX1snxW1v/+xY2Nws9888KP/E5q8WAAAAAAthc3NldERpZ2l0cwAAAAAAAA9CQAAAAAAQc3VtQWNjb3VudEFzc2V0cwAAAAAAC+vCAAAAAAAMaXNzdWVyQXNzZXRzAAAAAAAF9eEAAAAAAApzdGFydEJsb2NrAAAAAAAACguOAAAAABJpbmNyZWFzZVByaWNlQmxvY2sAAAAAAAAKHG4AAAAACGVuZEJsb2NrAAAAAAAAChxuAAAAAAVwcmljZQAAAAAAAA9CQAAAAAALcHJpY2VTZWNvbmQAAAAAAAAPQkAAAAAADXNvZnRDYXBBbW91bnQAAAAAAAX14QAAAAAADWhhcmRDYXBBbW91bnQAAAAAAAvrwgAAAAAAEmtleVN1bUFtb3VudFByZWZpeAIAAAAKc3VtQW1vdW50IAAAAAAWa2V5U3VtUGFpZEFtb3VudFByZWZpeAIAAAALcGFpZEFtb3VudCAAAAAAEmtleVN1bUFzc2V0c1ByZWZpeAIAAAAKc3VtQXNzZXRzIAAAAAAVa2V5QWxsb3dBY2NvdW50UHJlZml4AgAAAAZhbGxvdyAAAAAADWtleURpc3RBc3NldHMCAAAABmFzc2V0cwAAAAASa2V5Q29sbGVjdGVkQW1vdW50AgAAAAZhbW91bnQAAAAACWtleUlzc3VlcgIAAAAGaXNzdWVyAAAAAAlwQWRkcmVzczEJAQAAABFhZGRyZXNzRnJvbVN0cmluZwAAAAECAAAAIzNOQ1ZEYVQxQVNiUmQ0MmhCU3c0RUc2b2pHVlJHdHZNaXoxAAAAAAlwQWRkcmVzczIJAQAAABFhZGRyZXNzRnJvbVN0cmluZwAAAAECAAAAIzNNczJrVEF4ZHJjWER4d2VkZmJOalNpNmV3R0NVcXQzaGVaAAAAAAlwQWRkcmVzczMJAQAAABFhZGRyZXNzRnJvbVN0cmluZwAAAAECAAAAIzNONm9nbm03eG5RU0Zpb3duUzFEZjFMYWNKVVFYdmZERkxlAAAAAAlwQWRkcmVzczQJAQAAABFhZGRyZXNzRnJvbVN0cmluZwAAAAECAAAAIzNNdFZDbU45TVpiV2Y5cXhpTUZvRVBCcmRjMmZMcDNTdnVDAAAAAAlwQWRkcmVzczUJAQAAABFhZGRyZXNzRnJvbVN0cmluZwAAAAECAAAAIzNNdVdHOGdzVEs0UlFCc205N3NNQ3VVWFc5OUp2Unh3WVNnAAAAAAN2ZXICAAAADTIuMC4wLXRlc3RuZXQBAAAAH2dldEludmVzdG1lbnRBc3NldElkRm9yVHJhbnNmZXIAAAACAAAAB2lzV2F2ZXMAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAHaXNXYXZlcwcFAAAAB2Fzc2V0SWQFAAAABHVuaXQAAAACAAAAAWkBAAAAB2RlcG9zaXQAAAAABAAAAAxjdXJyZW50UHJpY2UDCQAAZgAAAAIFAAAAEmluY3JlYXNlUHJpY2VCbG9jawUAAAAGaGVpZ2h0BQAAAAVwcmljZQUAAAALcHJpY2VTZWNvbmQEAAAADWFjY291bnRBbW91bnQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAASa2V5Q29sbGVjdGVkQW1vdW50AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAADCQAAZgAAAAIFAAAACnN0YXJ0QmxvY2sFAAAABmhlaWdodAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABxUaGUgVG9rZW5zYWxlIHdvcmtzIGJldHdlZW4gCQABpAAAAAEFAAAACnN0YXJ0QmxvY2sCAAAABSBhbmQgCQABpAAAAAEFAAAACGVuZEJsb2NrAwMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAAhlbmRCbG9jawYJAABnAAAAAgUAAAANYWNjb3VudEFtb3VudAUAAAANaGFyZENhcEFtb3VudAkAAAIAAAABAgAAAGZUaGUgcmVxdWlyZWQgYW1vdW50IGhhcyBhbHJlYWR5IGJlZW4gYWNjdW11bGF0ZWQuIElmIHlvdSBhcmUgYW4gaW52ZXN0b3IsIHlvdSBjYW4gd2l0aGRyYXcgeW91ciBmdW5kcy4EAAAAB3BheW1lbnQEAAAAByRtYXRjaDAIBQAAAAFpAAAAB3BheW1lbnQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAD0F0dGFjaGVkUGF5bWVudAQAAAABcAUAAAAHJG1hdGNoMAQAAAALaXNQYXltZW50T2sEAAAAByRtYXRjaDEIBQAAAAFwAAAAB2Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDECAAAACkJ5dGVWZWN0b3IEAAAAB2Fzc2V0SWQFAAAAByRtYXRjaDEDCQEAAAABIQAAAAEFAAAAGGludmVzdG1lbnRBc3NldElkSXNXYXZlcwkAAAAAAAACBQAAAAdhc3NldElkBQAAABFpbnZlc3RtZW50QXNzZXRJZAcJAAAAAAAAAgUAAAAYaW52ZXN0bWVudEFzc2V0SWRJc1dhdmVzBgMFAAAAC2lzUGF5bWVudE9rCAUAAAABcAAAAAZhbW91bnQJAAACAAAAAQIAAAAeSW52YWxpZCBhc3NldCBJRCBvZiBpbnZlc3RtZW50CQAAAgAAAAECAAAAGFBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQAAAAKY3VycmVudEtleQkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAA5pc0FjY291bnRBbGxvdwQAAAAHJG1hdGNoMAkABBoAAAACBQAAABB3aGl0ZWxpc3RBZGRyZXNzBQAAAApjdXJyZW50S2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEA/////////wEDCQAAZgAAAAIA//////////8FAAAADmlzQWNjb3VudEFsbG93CQAAAgAAAAECAAAAKFlvdXIgYWNjb3VudCBoYXMgbm8gcmlnaHQgdG8gc2VuZCBmdW5kcy4EAAAADWFjY291bnRBc3NldHMEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAANa2V5RGlzdEFzc2V0cwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAABBzdW1BY2NvdW50QXNzZXRzAwkAAGYAAAACAAAAAAAAAAAACQAAZQAAAAIFAAAADWFjY291bnRBc3NldHMJAABpAAAAAgkAAGgAAAACBQAAAAdwYXltZW50BQAAAAthc3NldERpZ2l0cwUAAAAMY3VycmVudFByaWNlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAADBQYXltZW50IGlzIHRvbyBiaWcuIE1heGltdW0gcG9zc2libGUgcGF5bWVudCBpcyAJAAGkAAAAAQkAAGkAAAACCQAAaAAAAAIFAAAADWFjY291bnRBc3NldHMFAAAADGN1cnJlbnRQcmljZQUAAAALYXNzZXREaWdpdHMCAAAACCB3YXZlbGV0BAAAAA1jdXJyZW50QW1vdW50BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAASa2V5U3VtQW1vdW50UHJlZml4BQAAAApjdXJyZW50S2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAACW5ld0Ftb3VudAkAAGQAAAACBQAAAA1jdXJyZW50QW1vdW50BQAAAAdwYXltZW50BAAAAA1jdXJyZW50QXNzZXRzBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAASa2V5U3VtQXNzZXRzUHJlZml4BQAAAApjdXJyZW50S2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAACW5ld0Fzc2V0cwkAAGQAAAACBQAAAA1jdXJyZW50QXNzZXRzCQAAaQAAAAIJAABoAAAAAgUAAAAHcGF5bWVudAUAAAALYXNzZXREaWdpdHMFAAAADGN1cnJlbnRQcmljZQQAAAAQbmV3QWNjb3VudEFzc2V0cwkAAGUAAAACBQAAAA1hY2NvdW50QXNzZXRzCQAAaQAAAAIJAABoAAAAAgUAAAAHcGF5bWVudAUAAAALYXNzZXREaWdpdHMFAAAADGN1cnJlbnRQcmljZQQAAAAQbmV3QWNjb3VudEFtb3VudAkAAGQAAAACBQAAAA1hY2NvdW50QW1vdW50BQAAAAdwYXltZW50CQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAAEmtleVN1bUFtb3VudFByZWZpeAUAAAAKY3VycmVudEtleQUAAAAJbmV3QW1vdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAAEmtleVN1bUFzc2V0c1ByZWZpeAUAAAAKY3VycmVudEtleQUAAAAJbmV3QXNzZXRzCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA1rZXlEaXN0QXNzZXRzBQAAABBuZXdBY2NvdW50QXNzZXRzCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABJrZXlDb2xsZWN0ZWRBbW91bnQFAAAAEG5ld0FjY291bnRBbW91bnQFAAAAA25pbAAAAAFpAQAAAAp3aXRoZHJhd2FsAAAAAAQAAAALaXNEQXBwQWxsb3cEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAUZEFwcFdoaXRlbGlzdEFkZHJlc3MJAAQlAAAAAQUAAAAEdGhpcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAAAwkAAAAAAAACBQAAAAtpc0RBcHBBbGxvdwAAAAAAAAAAAAkAAAIAAAABAgAAAEJXaXRoZHJhd2FscyBhcmUgbm90IGF2YWlsYWJsZSB1bnRpbCB0aGUgaXNzdWVyIHBhc3NlcyB2ZXJpZmljYXRpb24EAAAACmN1cnJlbnRL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", "chainId": 84, "height": 658320, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let issuerAssetId = base58'2FEMZYbXvwjnB1FiMb7Sm79PZDABmPCLgPwFJg9cSwLL'
5+
6+let investmentAssetId = base58'Emn8cyGDFgnLCKLTXqVWhKJARhtR2muBUuZaSmqNzDfn'
7+
8+let investmentAssetIdIsWaves = false
9+
10+let ownerPublicKey = base58'BwHsCqQVYGPWoTdHFhzeFNj6mUJBkQCSjSXWXwc7rY8U'
11+
12+let ownerAddress = addressFromPublicKey(ownerPublicKey)
13+
14+let ownerAddressString = "3Mpfa61B5qPrbpk4DGyuHRJRERVjwnggWzn"
15+
16+let whitelistAddress = Address(base58'3N6DwWxT82nGJUwBwd7L514r2u71gr7WhwJ')
17+
18+let dAppWhitelistAddress = Address(base58'3N1SPvLZgv6FMfe5WNUtnPzt3okYxcJhYnR')
19+
20+let assetDigits = 1000000
21+
22+let sumAccountAssets = 200000000
23+
24+let issuerAssets = 100000000
25+
26+let startBlock = 658318
27+
28+let increasePriceBlock = 662638
29+
30+let endBlock = 662638
31+
32+let price = 1000000
33+
34+let priceSecond = 1000000
35+
36+let softCapAmount = 100000000
37+
38+let hardCapAmount = 200000000
39+
40+let keySumAmountPrefix = "sumAmount "
41+
42+let keySumPaidAmountPrefix = "paidAmount "
43+
44+let keySumAssetsPrefix = "sumAssets "
45+
46+let keyAllowAccountPrefix = "allow "
47+
48+let keyDistAssets = "assets"
49+
50+let keyCollectedAmount = "amount"
51+
52+let keyIssuer = "issuer"
53+
54+let pAddress1 = addressFromString("3NCVDaT1ASbRd42hBSw4EG6ojGVRGtvMiz1")
55+
56+let pAddress2 = addressFromString("3Ms2kTAxdrcXDxwedfbNjSi6ewGCUqt3heZ")
57+
58+let pAddress3 = addressFromString("3N6ognm7xnQSFiownS1Df1LacJUQXvfDFLe")
59+
60+let pAddress4 = addressFromString("3MtVCmN9MZbWf9qxiMFoEPBrdc2fLp3SvuC")
61+
62+let pAddress5 = addressFromString("3MuWG8gsTK4RQBsm97sMCuUXW99JvRxwYSg")
63+
64+let ver = "2.0.0-testnet"
65+
66+func getInvestmentAssetIdForTransfer (isWaves,assetId) = if ((isWaves == false))
67+ then assetId
68+ else unit
69+
70+
71+@Callable(i)
72+func deposit () = {
73+ let currentPrice = if ((increasePriceBlock > height))
74+ then price
75+ else priceSecond
76+ let accountAmount = match getInteger(this, keyCollectedAmount) {
77+ case a: Int =>
78+ a
79+ case _ =>
80+ 0
81+ }
82+ if ((startBlock > height))
83+ then throw(((("The Tokensale works between " + toString(startBlock)) + " and ") + toString(endBlock)))
84+ else if (if ((height > endBlock))
85+ then true
86+ else (accountAmount >= hardCapAmount))
87+ then throw("The required amount has already been accumulated. If you are an investor, you can withdraw your funds.")
88+ else {
89+ let payment = match i.payment {
90+ case p: AttachedPayment =>
91+ let isPaymentOk = match p.assetId {
92+ case assetId: ByteVector =>
93+ if (!(investmentAssetIdIsWaves))
94+ then (assetId == investmentAssetId)
95+ else false
96+ case _ =>
97+ (investmentAssetIdIsWaves == true)
98+ }
99+ if (isPaymentOk)
100+ then p.amount
101+ else throw("Invalid asset ID of investment")
102+ case _ =>
103+ throw("Payment must be attached")
104+ }
105+ let currentKey = toBase58String(i.caller.bytes)
106+ let isAccountAllow = match getInteger(whitelistAddress, currentKey) {
107+ case a: Int =>
108+ a
109+ case _ =>
110+ -255
111+ }
112+ if ((-1 > isAccountAllow))
113+ then throw("Your account has no right to send funds.")
114+ else {
115+ let accountAssets = match getInteger(this, keyDistAssets) {
116+ case a: Int =>
117+ a
118+ case _ =>
119+ sumAccountAssets
120+ }
121+ if ((0 > (accountAssets - ((payment * assetDigits) / currentPrice))))
122+ then throw((("Payment is too big. Maximum possible payment is " + toString(((accountAssets * currentPrice) / assetDigits))) + " wavelet"))
123+ else {
124+ let currentAmount = match getInteger(this, (keySumAmountPrefix + currentKey)) {
125+ case a: Int =>
126+ a
127+ case _ =>
128+ 0
129+ }
130+ let newAmount = (currentAmount + payment)
131+ let currentAssets = match getInteger(this, (keySumAssetsPrefix + currentKey)) {
132+ case a: Int =>
133+ a
134+ case _ =>
135+ 0
136+ }
137+ let newAssets = (currentAssets + ((payment * assetDigits) / currentPrice))
138+ let newAccountAssets = (accountAssets - ((payment * assetDigits) / currentPrice))
139+ let newAccountAmount = (accountAmount + payment)
140+ WriteSet([DataEntry((keySumAmountPrefix + currentKey), newAmount), DataEntry((keySumAssetsPrefix + currentKey), newAssets), DataEntry(keyDistAssets, newAccountAssets), DataEntry(keyCollectedAmount, newAccountAmount)])
141+ }
142+ }
143+ }
144+ }
145+
146+
147+
148+@Callable(i)
149+func withdrawal () = {
150+ let isDAppAllow = match getInteger(dAppWhitelistAddress, toString(this)) {
151+ case a: Int =>
152+ a
153+ case _ =>
154+ 0
155+ }
156+ if ((isDAppAllow == 0))
157+ then throw("Withdrawals are not available until the issuer passes verification")
158+ else {
159+ let currentKey = toBase58String(i.caller.bytes)
160+ let currentAssets = match getInteger(this, (keySumAssetsPrefix + currentKey)) {
161+ case a: Int =>
162+ a
163+ case _ =>
164+ 0
165+ }
166+ let currentAmount = match getInteger(this, (keySumAmountPrefix + currentKey)) {
167+ case a: Int =>
168+ a
169+ case _ =>
170+ 0
171+ }
172+ let accountAmount = match getInteger(this, keyCollectedAmount) {
173+ case a: Int =>
174+ a
175+ case _ =>
176+ 0
177+ }
178+ let accountAssets = match getInteger(this, keyDistAssets) {
179+ case a: Int =>
180+ a
181+ case _ =>
182+ 0
183+ }
184+ let investmentAssetIdForTransfer = getInvestmentAssetIdForTransfer(investmentAssetIdIsWaves, investmentAssetId)
185+ if (!(if ((height > endBlock))
186+ then true
187+ else (accountAmount >= hardCapAmount)))
188+ then throw(("The Tokensale end on block " + toString(endBlock)))
189+ else if (if (if ((currentKey == ownerAddressString))
190+ then (accountAmount >= softCapAmount)
191+ else false)
192+ then (isDAppAllow == 1)
193+ else false)
194+ then {
195+ let currentIssuerPaidAssets = match getInteger(this, keyIssuer) {
196+ case a: Int =>
197+ a
198+ case _ =>
199+ 0
200+ }
201+ if ((currentIssuerPaidAssets == 0))
202+ then ScriptResult(WriteSet([DataEntry(keyIssuer, (accountAssets + issuerAssets))]), TransferSet([ScriptTransfer(ownerAddress, (accountAssets + issuerAssets), issuerAssetId), ScriptTransfer(ownerAddress, accountAmount, investmentAssetIdForTransfer)]))
203+ else throw("The issuer has already taken its share!")
204+ }
205+ else if ((currentAmount == 0))
206+ then throw("Don't have money")
207+ else if (if ((accountAmount >= softCapAmount))
208+ then (isDAppAllow == 1)
209+ else false)
210+ then ScriptResult(WriteSet([DataEntry((keySumAmountPrefix + currentKey), 0), DataEntry((keySumAssetsPrefix + currentKey), 0)]), TransferSet([ScriptTransfer(i.caller, currentAssets, issuerAssetId)]))
211+ else ScriptResult(WriteSet([DataEntry((keySumAmountPrefix + currentKey), 0), DataEntry((keySumAssetsPrefix + currentKey), 0)]), TransferSet([ScriptTransfer(i.caller, currentAmount, investmentAssetIdForTransfer)]))
212+ }
213+ }
214+
215+
216+@Verifier(tx)
217+func verify () = match tx {
218+ case tx: SetScriptTransaction =>
219+ let pKey1Signed = if (isDefined(getInteger(extract(pAddress1), toBase58String(tx.id))))
220+ then 1
221+ else 0
222+ let pKey2Signed = if (isDefined(getInteger(extract(pAddress2), toBase58String(tx.id))))
223+ then 1
224+ else 0
225+ let pKey3Signed = if (isDefined(getInteger(extract(pAddress3), toBase58String(tx.id))))
226+ then 1
227+ else 0
228+ let pKey4Signed = if (isDefined(getInteger(extract(pAddress4), toBase58String(tx.id))))
229+ then 1
230+ else 0
231+ let pKey5Signed = if (isDefined(getInteger(extract(pAddress5), toBase58String(tx.id))))
232+ then 1
233+ else 0
234+ (((((pKey1Signed + pKey2Signed) + pKey3Signed) + pKey4Signed) + pKey5Signed) >= 3)
235+ case tx: SetAssetScriptTransaction =>
236+ (this == tx.sender)
237+ case _ =>
238+ false
239+}
240+

github/deemru/w8io/169f3d6 
27.51 ms