tx · HKG1ZhhFEjdGqfuy6zwajVsjpTH3gERksnjrWXqXcY8n

3PFHNdEPu71QwBAnc2HZPcrbxoseNfUvHEA:  -0.00700000 Waves

2023.10.06 14:54 [3852564] smart account 3PFHNdEPu71QwBAnc2HZPcrbxoseNfUvHEA > SELF 0.00000000 Waves

{ "type": 13, "id": "HKG1ZhhFEjdGqfuy6zwajVsjpTH3gERksnjrWXqXcY8n", "fee": 700000, "feeAssetId": null, "timestamp": 1696593130044, "version": 2, "chainId": 87, "sender": "3PFHNdEPu71QwBAnc2HZPcrbxoseNfUvHEA", "senderPublicKey": "DDDs6X5FCyoVAc24Btjc5pGX7N8P7UcWNBPd9nrhAfUg", "proofs": [ "2GR47pbTL4PWALtmUsXE56h3JVR2cEZmq4W3c8ZxNw7cZry63vZLc2M4h6vUy76thCHi5817ukRLuPuu89LVg4BU" ], "script": "base64:BgIOCAISAwoBGBIDCgEYEgAdAARDT05GCQEHQWRkcmVzcwEBGgFXiBPj4FPIbzt7CVcq1QOjPiNDcEQ85xSrAA5BWExZX01BSU5fQUREUgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEQ09ORgINbWFpbl9jb250cmFjdAAMQVhMWV9GQVJNSU5HCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQRDT05GAgdmYXJtaW5nAA5BWExZX1RPS0VOT01JQwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEQ09ORgIJdG9rZW5vbWljAA1BWExZX1RFQU1fQk9YCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQRDT05GAgh0ZWFtX2JveAAMQVhMWV9TVEFLSU5HCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQRDT05GAgdzdGFraW5nAAdTRl9QT09MAgJTRgAHV1hfUE9PTAICV1gAFEFNT1VOVF9XQVZFU19GT1JfRkVFAIDC1y8AD1BFUkNFTlRfVE9fVEVBTQAyAAlrQXhseVBvb2wCCGF4bHlQb29sAAxrQVhMWVRva2VuSWQCC2F4bHlUb2tlbklkAAprU2hhcmVQb29sAgxfcG9vbFNoYXJlSWQABWtQb29sAgVwb29sXwAJa0FkbWluMVBLAhVncm91cDFfYWRtaW4xX3B1Yl9rZXkACWtBZG1pbjJQSwIVZ3JvdXAxX2FkbWluMl9wdWJfa2V5AAlrQWRtaW4zUEsCFWdyb3VwMV9hZG1pbjNfcHViX2tleQAPa09wZXJhdG9yQ2FsbFBLAhJhZG1pbl9jYWxsX3B1Yl9rZXkACGFkbWluMVBLCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQRDT05GBQlrQWRtaW4xUEsCEkNhbid0IGdldCBhZG1pbjFQSwAIYWRtaW4yUEsJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBENPTkYFCWtBZG1pbjJQSwISQ2FuJ3QgZ2V0IGFkbWluMlBLAAhhZG1pbjNQSwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEQ09ORgUJa0FkbWluM1BLAhJDYW4ndCBnZXQgYWRtaW4zUEsACm9wZXJhdG9yUEsJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBENPTkYFD2tPcGVyYXRvckNhbGxQSwIUQ2FuJ3QgZ2V0IG9wZXJhdG9yUEsABmF4bHlJZAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUOQVhMWV9UT0tFTk9NSUMFDGtBWExZVG9rZW5JZAIXQ2FuJ3QgZ2V0IGF4bHkgdG9rZW4gaWQACGF4bHlQb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDEFYTFlfRkFSTUlORwUJa0F4bHlQb29sAhZDYW4ndCBnZXQgYXhseVBvb2wga2V5AhNDYW4ndCBnZXQgYXhseSBwb29sAQ91bmtub3duUG9vbFR5cGUACQACAQIPV3JvbmcgcG9vbCB0eXBlAQppc1NlbGZDYWxsAQFpAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwUEdW5pdAkAAgECK09ubHkgY29udHJhY3QgaXRzZWxmIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BCWxpc3RUb0ludAIBYQRpdGVtCQDNCAIFAWEJAQ1wYXJzZUludFZhbHVlAQUEaXRlbQEQZGlyZWN0U3dvcGZpQ1BNTQEFckFyZ3MEBGRBcHAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUFckFyZ3MAAQQDcG10BARwbXRQCQC1CQIJAJEDAgUFckFyZ3MAAgIBfAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBCQCRAwIFBHBtdFAAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBHBtdFAAAQUDbmlsBAttaW5Ub1JlY2l2ZQkAkQMCBQVyQXJncwADCQD8BwQFBGRBcHACDGNhbGxGdW5jdGlvbgkAzAgCAghleGNoYW5nZQkAzAgCCQDMCAIFC21pblRvUmVjaXZlBQNuaWwFA25pbAUDcG10ARNkaXJlY3RSb3V0aW5nU3dvcGZpAQVyQXJncwQEZEFwcAkBEUBleHRyTmF0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AgAABQl0b1N0YWtpbmcJAAIBAhRObyB0b2tlbnMgdG8gYWlyZHJvcAQDaW52CQD8BwQFCGF4bHlQb29sAgxjYWxsRnVuY3Rpb24JAMwIAgIIZXhjaGFuZ2UJAMwIAgkAzAgCAgExBQNuaWwFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUJdG9TdGFraW5nBQNuaWwDCQAAAgUDaW52BQNpbnYEC2F4bHlCYWxhbmNlCQDwBwIFBHRoaXMFBmF4bHlJZAMJAAACBQtheGx5QmFsYW5jZQULYXhseUJhbGFuY2UEBGludkEJAPwHBAUMQVhMWV9TVEFLSU5HAgdhaXJkcm9wBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBmF4bHlJZAULYXhseUJhbGFuY2UFA25pbAMJAAACBQRpbnZBBQRpbnZBCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDUFYTFlfVEVBTV9CT1gFBnRvVGVhbQUEdW5pdAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EA2ludgUHJG1hdGNoMAQKaXNSaWdodEZlZQMJAAACCAUDaW52A2ZlZQCg9zYJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHBAppc0V4THBDYWxsCQAAAggFA2ludghmdW5jdGlvbgILZXhjaGFuZ2VMcHMEDmlzRXhUb2tlbnNDYWxsCQAAAggFA2ludghmdW5jdGlvbgIOZXhjaGFuZ2VUb2tlbnMEEGlzQWlyZHJvcFN0YWtpbmcJAAACCAUDaW52CGZ1bmN0aW9uAg5haXJkcm9wU3Rha2luZwQSYWRtaW5QdWJLZXkxU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUIYWRtaW4xUEsAAQAABBJhZG1pblB1YktleTJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQhhZG1pbjJQSwABAAAEEmFkbWluUHViS2V5M1NpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFCGFkbWluM1BLAAEAAAQVYWRtaW5QdWJLZXlDYWxsU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUKb3BlcmF0b3JQSwABAAAEEHNpZ25lZEJ5T25lQWRtaW4JAGcCCQBkAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkBRVhZG1pblB1YktleUNhbGxTaWduZWQAAQMDBQppc1JpZ2h0RmVlAwMFCmlzRXhMcENhbGwGBQ5pc0V4VG9rZW5zQ2FsbAYFEGlzQWlyZHJvcFN0YWtpbmcHBRBzaWduZWRCeU9uZUFkbWluBwQSYWRtaW5QdWJLZXkxU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUIYWRtaW4xUEsAAQAABBJhZG1pblB1YktleTJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQhhZG1pbjJQSwABAAAEEmFkbWluUHViS2V5M1NpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFCGFkbWluM1BLAAEAAAkAZwIJAGQCCQBkAgUSYWRtaW5QdWJLZXkxU2lnbmVkBRJhZG1pblB1YktleTJTaWduZWQFEmFkbWluUHViS2V5M1NpZ25lZAACsplK6g==", "height": 3852564, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 9NbPiHR71jfmbknawFuCjBHPhzpnzi2kKuN1mgR16jpq Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let CONF = Address(base58'3PELQTKtehZiFGhPFj1NdaMCFKF89AtMxxA')
5+
6+let AXLY_MAIN_ADDR = addressFromStringValue(getStringValue(CONF, "main_contract"))
7+
8+let AXLY_FARMING = addressFromStringValue(getStringValue(CONF, "farming"))
9+
10+let AXLY_TOKENOMIC = addressFromStringValue(getStringValue(CONF, "tokenomic"))
11+
12+let AXLY_TEAM_BOX = addressFromStringValue(getStringValue(CONF, "team_box"))
13+
14+let AXLY_STAKING = addressFromStringValue(getStringValue(CONF, "staking"))
15+
16+let SF_POOL = "SF"
17+
18+let WX_POOL = "WX"
19+
20+let AMOUNT_WAVES_FOR_FEE = 100000000
21+
22+let PERCENT_TO_TEAM = 50
23+
24+let kAxlyPool = "axlyPool"
25+
26+let kAXLYTokenId = "axlyTokenId"
27+
28+let kSharePool = "_poolShareId"
29+
30+let kPool = "pool_"
31+
32+let kAdmin1PK = "group1_admin1_pub_key"
33+
34+let kAdmin2PK = "group1_admin2_pub_key"
35+
36+let kAdmin3PK = "group1_admin3_pub_key"
37+
38+let kOperatorCallPK = "admin_call_pub_key"
39+
40+let admin1PK = fromBase58String(valueOrErrorMessage(getString(CONF, kAdmin1PK), "Can't get admin1PK"))
41+
42+let admin2PK = fromBase58String(valueOrErrorMessage(getString(CONF, kAdmin2PK), "Can't get admin2PK"))
43+
44+let admin3PK = fromBase58String(valueOrErrorMessage(getString(CONF, kAdmin3PK), "Can't get admin3PK"))
45+
46+let operatorPK = fromBase58String(valueOrErrorMessage(getString(CONF, kOperatorCallPK), "Can't get operatorPK"))
47+
48+let axlyId = fromBase58String(valueOrErrorMessage(getString(AXLY_TOKENOMIC, kAXLYTokenId), "Can't get axly token id"))
49+
50+let axlyPool = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(AXLY_FARMING, kAxlyPool), "Can't get axlyPool key")), "Can't get axly pool")
51+
52+func unknownPoolType () = throw("Wrong pool type")
53+
54+
55+func isSelfCall (i) = if ((i.caller == this))
56+ then unit
57+ else throw("Only contract itself can call this function")
58+
59+
60+func listToInt (a,item) = (a :+ parseIntValue(item))
61+
62+
63+func directSwopfiCPMM (rArgs) = {
64+ let dApp = addressFromStringValue(rArgs[1])
65+ let pmt = {
66+ let pmtP = split(rArgs[2], "|")
67+[AttachedPayment(fromBase58String(pmtP[0]), parseIntValue(pmtP[1]))]
68+ }
69+ let minToRecive = rArgs[3]
70+ invoke(dApp, "callFunction", ["exchange", [minToRecive]], pmt)
71+ }
72+
73+
74+func directRoutingSwopfi (rArgs) = {
75+ let dApp = addressFromStringValue(rArgs[1])
76+ let pmt = {
77+ let pmtP = split(rArgs[2], "|")
78+[AttachedPayment(fromBase58String(pmtP[0]), parseIntValue(pmtP[1]))]
79+ }
80+ let args = {
81+ let eArgs = split(rArgs[3], "|")
82+ let exchangers = split(eArgs[0], ",")
83+ let exchangersType = split(eArgs[1], ",")
84+ let args1 = {
85+ let $l = split(eArgs[2], ",")
86+ let $s = size($l)
87+ let $acc0 = nil
88+ func $f0_1 ($a,$i) = if (($i >= $s))
89+ then $a
90+ else listToInt($a, $l[$i])
91+
92+ func $f0_2 ($a,$i) = if (($i >= $s))
93+ then $a
94+ else throw("List size exceeds 3")
95+
96+ $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
97+ }
98+ let args2 = {
99+ let $l = split(eArgs[3], ",")
100+ let $s = size($l)
101+ let $acc0 = nil
102+ func $f1_1 ($a,$i) = if (($i >= $s))
103+ then $a
104+ else listToInt($a, $l[$i])
105+
106+ func $f1_2 ($a,$i) = if (($i >= $s))
107+ then $a
108+ else throw("List size exceeds 3")
109+
110+ $f1_2($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3)
111+ }
112+ let routingAssetsKeys = split(eArgs[4], ",")
113+ let minToRecive = parseIntValue(eArgs[5])
114+[exchangers, exchangersType, args1, args2, routingAssetsKeys, minToRecive]
115+ }
116+ invoke(dApp, "routingTrade", args, pmt)
117+ }
118+
119+
120+@Callable(i)
121+func exchangeLps (lps) = valueOrElse(isSelfCall(i), {
122+ func exLP (a,lp) = {
123+ let lpB = fromBase58String(lp)
124+ let balance = assetBalance(this, lpB)
125+ let pool = valueOrErrorMessage(getString(AXLY_MAIN_ADDR, (lp + kSharePool)), ("Can't get pool of lp:" + lp))
126+ let pType = valueOrErrorMessage(getString(AXLY_MAIN_ADDR, (kPool + pool)), "Pool is not inited")
127+ let poolAddr = valueOrErrorMessage(addressFromString(pool), "unknown addr")
128+ if ((balance > 0))
129+ then {
130+ let inv = if ((pType == SF_POOL))
131+ then invoke(poolAddr, "callFunction", ["withdraw", ["0"]], [AttachedPayment(lpB, balance)])
132+ else if ((pType == WX_POOL))
133+ then invoke(poolAddr, "get", nil, [AttachedPayment(lpB, balance)])
134+ else unknownPoolType()
135+ if ((inv == inv))
136+ then (a :+ true)
137+ else throw("Strict value is not equal to itself.")
138+ }
139+ else (a :+ false)
140+ }
141+
142+ let res = {
143+ let $l = lps
144+ let $s = size($l)
145+ let $acc0 = nil
146+ func $f0_1 ($a,$i) = if (($i >= $s))
147+ then $a
148+ else exLP($a, $l[$i])
149+
150+ func $f0_2 ($a,$i) = if (($i >= $s))
151+ then $a
152+ else throw("List size exceeds 50")
153+
154+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
155+ }
156+ $Tuple2(nil, res)
157+ })
158+
159+
160+
161+@Callable(i)
162+func exchangeTokens (routes) = valueOrElse(isSelfCall(i), {
163+ func exchangeToken (r,route) = {
164+ let rArgs = split(route, "__")
165+ if ((rArgs[0] == "directSwopfiCPMM"))
166+ then {
167+ let inv = directSwopfiCPMM(rArgs)
168+ if ((inv == inv))
169+ then (r :+ inv)
170+ else throw("Strict value is not equal to itself.")
171+ }
172+ else if ((rArgs[0] == "routingSwopfi"))
173+ then {
174+ let inv = directRoutingSwopfi(rArgs)
175+ if ((inv == inv))
176+ then (r :+ inv)
177+ else throw("Strict value is not equal to itself.")
178+ }
179+ else throw("Unknown route type")
180+ }
181+
182+ let res = {
183+ let $l = routes
184+ let $s = size($l)
185+ let $acc0 = nil
186+ func $f0_1 ($a,$i) = if (($i >= $s))
187+ then $a
188+ else exchangeToken($a, $l[$i])
189+
190+ func $f0_2 ($a,$i) = if (($i >= $s))
191+ then $a
192+ else throw("List size exceeds 30")
193+
194+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
195+ }
196+ if ((res == res))
197+ then nil
198+ else throw("Strict value is not equal to itself.")
199+ })
200+
201+
202+
203+@Callable(i)
204+func airdropStaking () = valueOrElse(isSelfCall(i), {
205+ let wBalance = wavesBalance(this).available
206+ let bAirdrop = (wBalance - AMOUNT_WAVES_FOR_FEE)
207+ let toTeam = fraction(bAirdrop, PERCENT_TO_TEAM, 100)
208+ let toStaking = (bAirdrop - toTeam)
209+ if ((0 >= bAirdrop))
210+ then throw("No tokens to airdrop")
211+ else if ((0 >= toStaking))
212+ then throw("No tokens to airdrop")
213+ else {
214+ let inv = invoke(axlyPool, "callFunction", ["exchange", ["1"]], [AttachedPayment(unit, toStaking)])
215+ if ((inv == inv))
216+ then {
217+ let axlyBalance = assetBalance(this, axlyId)
218+ if ((axlyBalance == axlyBalance))
219+ then {
220+ let invA = invoke(AXLY_STAKING, "airdrop", nil, [AttachedPayment(axlyId, axlyBalance)])
221+ if ((invA == invA))
222+ then [ScriptTransfer(AXLY_TEAM_BOX, toTeam, unit)]
223+ else throw("Strict value is not equal to itself.")
224+ }
225+ else throw("Strict value is not equal to itself.")
226+ }
227+ else throw("Strict value is not equal to itself.")
228+ }
229+ })
230+
231+
232+@Verifier(tx)
233+func verify () = match tx {
234+ case inv: InvokeScriptTransaction =>
235+ let isRightFee = if ((inv.fee == 900000))
236+ then (inv.feeAssetId == unit)
237+ else false
238+ let isExLpCall = (inv.function == "exchangeLps")
239+ let isExTokensCall = (inv.function == "exchangeTokens")
240+ let isAirdropStaking = (inv.function == "airdropStaking")
241+ let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], admin1PK))
242+ then 1
243+ else 0
244+ let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], admin2PK))
245+ then 1
246+ else 0
247+ let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], admin3PK))
248+ then 1
249+ else 0
250+ let adminPubKeyCallSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], operatorPK))
251+ then 1
252+ else 0
253+ let signedByOneAdmin = ((((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) + adminPubKeyCallSigned) >= 1)
254+ if (if (isRightFee)
255+ then if (if (isExLpCall)
256+ then true
257+ else isExTokensCall)
258+ then true
259+ else isAirdropStaking
260+ else false)
261+ then signedByOneAdmin
262+ else false
263+ case _ =>
264+ let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], admin1PK))
265+ then 1
266+ else 0
267+ let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], admin2PK))
268+ then 1
269+ else 0
270+ let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], admin3PK))
271+ then 1
272+ else 0
273+ (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
274+}
275+

github/deemru/w8io/3ef1775 
39.49 ms