2021.02.05 12:56 [2448492] smart account 3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp > SELF 0.00000000 Waves

{ "type": 13, "id": "7X42mSPQqYtXZMrTtEpihS8emZcXdNXL9Vz9uf792DUb", "fee": 1000000, "feeAssetId": null, "timestamp": 1612519039363, "version": 1, "sender": "3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp", "senderPublicKey": "GTY8yEJ2S4heRompxyvbJoBN1Td5BM5Pp4JgVbj9tmCw", "proofs": [ "2iSZ6Cd3auMUAfzrecQxDgbAMrwR4a6zftRQwVzhZfnvNQEr11PSRpEoSJUV7hHhZsmTvFgmAXtqn1f9tWBhZkLp" ], "script": "base64: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", "chainId": 87, "height": 2448492, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: D3XfasuiN15qWbKv3uTWEoEjDrEpDf74wxKSPFJ8yUW3 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let oracle = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
5+
6+let governanceContract = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS')
7+
8+let adminInvoke = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
9+
10+let adminPubKey1 = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA'
11+
12+let adminPubKey2 = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7'
13+
14+let adminPubKey3 = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ'
15+
16+let exchangers = [getStringValue(oracle, "waves_usdn"), getStringValue(oracle, "btc_usdn"), getStringValue(oracle, "waves_btc"), getStringValue(oracle, "nsbt_usdn"), getStringValue(oracle, "wct_usdn"), getStringValue(oracle, "usdt_usdn"), getStringValue(oracle, "west_usdn"), getStringValue(oracle, "waves_eurn"), getStringValue(oracle, "usdtlp_usdn"), getStringValue(oracle, "swop_usdn")]
17+
18+
19+@Verifier(tx)
20+func verify () = match tx {
21+ case invoke: InvokeScriptTransaction =>
22+ let dAppIsExchanger = containsElement(exchangers, toBase58String(addressFromRecipient(invoke.dApp).bytes))
23+ let dAppIsGovernance = (invoke.dApp == governanceContract)
24+ let callExchange = (invoke.function == "exchange")
25+ let callAirdrop = (invoke.function == "airDrop")
26+ let signedByAdmin = sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke)
27+ if (if (if (if (dAppIsExchanger)
28+ then callExchange
29+ else false)
30+ then true
31+ else if (dAppIsGovernance)
32+ then callAirdrop
33+ else false)
34+ then (size(invoke.payments) == 1)
35+ else false)
36+ then signedByAdmin
37+ else false
38+ case _ =>
39+ let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
40+ then 1
41+ else 0
42+ let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
43+ then 1
44+ else 0
45+ let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
46+ then 1
47+ else 0
48+ (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
49+}
50+

github/deemru/w8io/786bc32 
28.93 ms