2022.12.07 11:42 [3415160] smart account 3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp > SELF 0.00000000 Waves

{ "type": 13, "id": "DzpYgnwEZ7n38gbBjQqVkb2KVXWUXRsMbqPWnmsyeVLs", "fee": 700000, "feeAssetId": null, "timestamp": 1670402490756, "version": 2, "chainId": 87, "sender": "3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp", "senderPublicKey": "GTY8yEJ2S4heRompxyvbJoBN1Td5BM5Pp4JgVbj9tmCw", "proofs": [ "", "29Gy6UufzS2Sgqrg5fSDKQ5Qkuv9iv5EbmgwteHe8nzRc1irQb4AZzzX5R16DvaHKarY6EX6WH2mH1zp8tJ5yJUk", "uZHSFEyYenPkEFat26676NAvDFuz7iidbczC5dDALtuX7mStW5fstEQAwpQvMSHhfGMyMBX178iYmjQkiueZ3KY" ], "script": "base64:BgICCAITAAZvcmFjbGUJAQdBZGRyZXNzAQEaAVeK/whomjW6QM1hdPISN96mN/D6OM7oHjgBE2dldEJhc2U1OEZyb21PcmFjbGUBA2tleQQHJG1hdGNoMAkAnQgCBQZvcmFjbGUFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkA2QQBBQZzdHJpbmcEB25vdGhpbmcFByRtYXRjaDAJAAIBCQCsAgIFA2tleQIIaXMgZW1wdHkADWtBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA1rQWRtaW5QdWJLZXkyAgthZG1pbl9wdWJfMgANa0FkbWluUHViS2V5MwILYWRtaW5fcHViXzMAEmtBZG1pbkludm9rZVB1YktleQIQYWRtaW5faW52b2tlX3B1YgALa0dvdkFkZHJlc3MCEmdvdmVybmFuY2VfYWRkcmVzcwAMa0Zhcm1BZGRyZXNzAg9mYXJtaW5nX2FkZHJlc3MAD2tTdXJ2ZXlzQWRkcmVzcwIPc3VydmV5c19hZGRyZXNzAAxrUm91dGluZ0FkZHICD3JvdXRpbmdfYWRkcmVzcwAMYWRtaW5QdWJLZXkxCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTEADGFkbWluUHViS2V5MgkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkyAAxhZG1pblB1YktleTMJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MwALYWRtaW5JbnZva2UJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUSa0FkbWluSW52b2tlUHViS2V5ABFnb3Zlcm5hbmNlQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFC2tHb3ZBZGRyZXNzAA5mYXJtaW5nQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDGtGYXJtQWRkcmVzcwAOc3VydmV5c0FkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ9rU3VydmV5c0FkZHJlc3MADnJvdXRpbmdBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUMa1JvdXRpbmdBZGRyABFrZXlQcmVmaXhQb29sTmFtZQIFcG9vbF8AAQJ0eAEGdmVyaWZ5AAQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EA2ludgUHJG1hdGNoMAQNaXNSb3V0aW5nQ2FsbAMJAAACCAUDaW52BGRBcHAFDnJvdXRpbmdBZGRyZXNzCQAAAggFA2ludghmdW5jdGlvbgIMcm91dGluZ1RyYWRlBwQSaXNFeGNoYW5nZUNhbGxDUE1NAwMJAQlpc0RlZmluZWQBCQCdCAIFBm9yYWNsZQkArAICBRFrZXlQcmVmaXhQb29sTmFtZQkApQgBCQCkCAEIBQNpbnYEZEFwcAkAAAIIBQNpbnYIZnVuY3Rpb24CDGNhbGxGdW5jdGlvbgcJAAACCQCRAwIIBQNpbnYEYXJncwAAAghleGNoYW5nZQcEDmlzRXhjaGFuZ2VDYWxsAwkBCWlzRGVmaW5lZAEJAJ0IAgUGb3JhY2xlCQCsAgIFEWtleVByZWZpeFBvb2xOYW1lCQClCAEJAKQIAQgFA2ludgRkQXBwCQAAAggFA2ludghmdW5jdGlvbgIIZXhjaGFuZ2UHBA1pc0FpcmRyb3BDYWxsAwkAAAIIBQNpbnYEZEFwcAURZ292ZXJuYW5jZUFkZHJlc3MJAAACCAUDaW52CGZ1bmN0aW9uAgdhaXJEcm9wBwQTaXNVcGRhdGVXZWlnaHRzQ2FsbAMJAAACCAUDaW52BGRBcHAFEWdvdmVybmFuY2VBZGRyZXNzCQAAAggFA2ludghmdW5jdGlvbgINdXBkYXRlV2VpZ2h0cwcEFmlzVGFrZW5JbnRvQWNjb3VudENQTU0DAwkBCWlzRGVmaW5lZAEJAJ0IAgUGb3JhY2xlCQCsAgIFEWtleVByZWZpeFBvb2xOYW1lCQClCAEJAKQIAQgFA2ludgRkQXBwCQAAAggFA2ludghmdW5jdGlvbgIMY2FsbEZ1bmN0aW9uBwkAAAIJAJEDAggFA2ludgRhcmdzAAACGXRha2VJbnRvQWNjb3VudEV4dHJhRnVuZHMHBBJpc1Rha2VuSW50b0FjY291bnQDCQEJaXNEZWZpbmVkAQkAnQgCBQZvcmFjbGUJAKwCAgURa2V5UHJlZml4UG9vbE5hbWUJAKUIAQkApAgBCAUDaW52BGRBcHAJAAACCAUDaW52CGZ1bmN0aW9uAhl0YWtlSW50b0FjY291bnRFeHRyYUZ1bmRzBwQMaXNXcml0ZVRvdGFsAwkAAAIIBQNpbnYEZEFwcAUOc3VydmV5c0FkZHJlc3MJAAACCAUDaW52CGZ1bmN0aW9uAgt3cml0ZVRvdGFscwcEDXNpZ25lZEJ5QWRtaW4JAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFC2FkbWluSW52b2tlAwMDAwMDBQ5pc0V4Y2hhbmdlQ2FsbAYFEmlzRXhjaGFuZ2VDYWxsQ1BNTQYFDWlzQWlyZHJvcENhbGwGBQ1pc1JvdXRpbmdDYWxsCQAAAgkAkAMBCAUDaW52CHBheW1lbnRzAAEHBgMDAwMFE2lzVXBkYXRlV2VpZ2h0c0NhbGwGBRJpc1Rha2VuSW50b0FjY291bnQGBRZpc1Rha2VuSW50b0FjY291bnRDUE1NBgUMaXNXcml0ZVRvdGFsCQAAAgkAkAMBCAUDaW52CHBheW1lbnRzAAAHBQ1zaWduZWRCeUFkbWluBwQSYWRtaW5QdWJLZXkxU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkxAAEAAAQSYWRtaW5QdWJLZXkyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAQUMYWRtaW5QdWJLZXkyAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUMYWRtaW5QdWJLZXkzAAEAAAkAZwIJAGQCCQBkAgUSYWRtaW5QdWJLZXkxU2lnbmVkBRJhZG1pblB1YktleTJTaWduZWQFEmFkbWluUHViS2V5M1NpZ25lZAACxAFfRw==", "height": 3415160, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7NUVt96p7snVmLDZmped7GLssoftvRd9NoaHUSJQr8kq Next: GkSJdHJ915cB9pLCyzvuDvK5VocFHKWeHFrrt1zbcYfm Diff:
OldNewDifferences
2525
2626 let kSurveysAddress = "surveys_address"
2727
28+let kRoutingAddr = "routing_address"
29+
2830 let adminPubKey1 = getBase58FromOracle(kAdminPubKey1)
2931
3032 let adminPubKey2 = getBase58FromOracle(kAdminPubKey2)
3941
4042 let surveysAddress = Address(getBase58FromOracle(kSurveysAddress))
4143
44+let routingAddress = Address(getBase58FromOracle(kRoutingAddr))
45+
4246 let keyPrefixPoolName = "pool_"
4347
4448
4549 @Verifier(tx)
4650 func verify () = match tx {
4751 case inv: InvokeScriptTransaction =>
48- let isExchangeCall = if (if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
52+ let isRoutingCall = if ((inv.dApp == routingAddress))
53+ then (inv.function == "routingTrade")
54+ else false
55+ let isExchangeCallCPMM = if (if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
4956 then (inv.function == "callFunction")
5057 else false)
5158 then (inv.args[0] == "exchange")
59+ else false
60+ let isExchangeCall = if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
61+ then (inv.function == "exchange")
5262 else false
5363 let isAirdropCall = if ((inv.dApp == governanceAddress))
5464 then (inv.function == "airDrop")
5666 let isUpdateWeightsCall = if ((inv.dApp == governanceAddress))
5767 then (inv.function == "updateWeights")
5868 else false
59- let isUpdatePoolInterest = if ((inv.dApp == farmingAddress))
60- then (inv.function == "updatePoolInterest")
61- else false
62- let isTakenIntoAccount = if (if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
69+ let isTakenIntoAccountCPMM = if (if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
6370 then (inv.function == "callFunction")
6471 else false)
6572 then (inv.args[0] == "takeIntoAccountExtraFunds")
73+ else false
74+ let isTakenIntoAccount = if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
75+ then (inv.function == "takeIntoAccountExtraFunds")
6676 else false
6777 let isWriteTotal = if ((inv.dApp == surveysAddress))
6878 then (inv.function == "writeTotals")
6979 else false
7080 let signedByAdmin = sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke)
71- if (if (if (if (isExchangeCall)
81+ if (if (if (if (if (if (isExchangeCall)
82+ then true
83+ else isExchangeCallCPMM)
7284 then true
7385 else isAirdropCall)
86+ then true
87+ else isRoutingCall)
7488 then (size(inv.payments) == 1)
7589 else false)
7690 then true
7791 else if (if (if (if (isUpdateWeightsCall)
7892 then true
79- else isUpdatePoolInterest)
93+ else isTakenIntoAccount)
8094 then true
81- else isTakenIntoAccount)
95+ else isTakenIntoAccountCPMM)
8296 then true
8397 else isWriteTotal)
8498 then (size(inv.payments) == 0)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let oracle = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
55
66 func getBase58FromOracle (key) = match getString(oracle, key) {
77 case string: String =>
88 fromBase58String(string)
99 case nothing =>
1010 throw((key + "is empty"))
1111 }
1212
1313
1414 let kAdminPubKey1 = "admin_pub_1"
1515
1616 let kAdminPubKey2 = "admin_pub_2"
1717
1818 let kAdminPubKey3 = "admin_pub_3"
1919
2020 let kAdminInvokePubKey = "admin_invoke_pub"
2121
2222 let kGovAddress = "governance_address"
2323
2424 let kFarmAddress = "farming_address"
2525
2626 let kSurveysAddress = "surveys_address"
2727
28+let kRoutingAddr = "routing_address"
29+
2830 let adminPubKey1 = getBase58FromOracle(kAdminPubKey1)
2931
3032 let adminPubKey2 = getBase58FromOracle(kAdminPubKey2)
3133
3234 let adminPubKey3 = getBase58FromOracle(kAdminPubKey3)
3335
3436 let adminInvoke = getBase58FromOracle(kAdminInvokePubKey)
3537
3638 let governanceAddress = Address(getBase58FromOracle(kGovAddress))
3739
3840 let farmingAddress = Address(getBase58FromOracle(kFarmAddress))
3941
4042 let surveysAddress = Address(getBase58FromOracle(kSurveysAddress))
4143
44+let routingAddress = Address(getBase58FromOracle(kRoutingAddr))
45+
4246 let keyPrefixPoolName = "pool_"
4347
4448
4549 @Verifier(tx)
4650 func verify () = match tx {
4751 case inv: InvokeScriptTransaction =>
48- let isExchangeCall = if (if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
52+ let isRoutingCall = if ((inv.dApp == routingAddress))
53+ then (inv.function == "routingTrade")
54+ else false
55+ let isExchangeCallCPMM = if (if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
4956 then (inv.function == "callFunction")
5057 else false)
5158 then (inv.args[0] == "exchange")
59+ else false
60+ let isExchangeCall = if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
61+ then (inv.function == "exchange")
5262 else false
5363 let isAirdropCall = if ((inv.dApp == governanceAddress))
5464 then (inv.function == "airDrop")
5565 else false
5666 let isUpdateWeightsCall = if ((inv.dApp == governanceAddress))
5767 then (inv.function == "updateWeights")
5868 else false
59- let isUpdatePoolInterest = if ((inv.dApp == farmingAddress))
60- then (inv.function == "updatePoolInterest")
61- else false
62- let isTakenIntoAccount = if (if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
69+ let isTakenIntoAccountCPMM = if (if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
6370 then (inv.function == "callFunction")
6471 else false)
6572 then (inv.args[0] == "takeIntoAccountExtraFunds")
73+ else false
74+ let isTakenIntoAccount = if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
75+ then (inv.function == "takeIntoAccountExtraFunds")
6676 else false
6777 let isWriteTotal = if ((inv.dApp == surveysAddress))
6878 then (inv.function == "writeTotals")
6979 else false
7080 let signedByAdmin = sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke)
71- if (if (if (if (isExchangeCall)
81+ if (if (if (if (if (if (isExchangeCall)
82+ then true
83+ else isExchangeCallCPMM)
7284 then true
7385 else isAirdropCall)
86+ then true
87+ else isRoutingCall)
7488 then (size(inv.payments) == 1)
7589 else false)
7690 then true
7791 else if (if (if (if (isUpdateWeightsCall)
7892 then true
79- else isUpdatePoolInterest)
93+ else isTakenIntoAccount)
8094 then true
81- else isTakenIntoAccount)
95+ else isTakenIntoAccountCPMM)
8296 then true
8397 else isWriteTotal)
8498 then (size(inv.payments) == 0)
8599 else false)
86100 then signedByAdmin
87101 else false
88102 case _ =>
89103 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
90104 then 1
91105 else 0
92106 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
93107 then 1
94108 else 0
95109 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
96110 then 1
97111 else 0
98112 (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
99113 }
100114

github/deemru/w8io/786bc32 
25.87 ms