2022.12.16 14:31 [3428273] smart account 3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp > SELF 0.00000000 Waves

{ "type": 13, "id": "GkSJdHJ915cB9pLCyzvuDvK5VocFHKWeHFrrt1zbcYfm", "fee": 700000, "feeAssetId": null, "timestamp": 1671190317287, "version": 2, "chainId": 87, "sender": "3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp", "senderPublicKey": "GTY8yEJ2S4heRompxyvbJoBN1Td5BM5Pp4JgVbj9tmCw", "proofs": [ "", "mCXaV9cEUEP8EWWwRnijtELju1aEUSaWeApk3g8x3yMHb65XYYyGTWhMQuMvYqrRdxHVFP645udKfxuhS9Nxb85", "S6gFK7K7FxD1E3cdVDCf5ChbkK8Bow2vYsgrWfQc6DMkMVYPiL9eeGnWaPNfRdAbhBnep12VaMPAThedwNZzJmf" ], "script": "base64:BgICCAITAAZvcmFjbGUJAQdBZGRyZXNzAQEaAVeK/whomjW6QM1hdPISN96mN/D6OM7oHjgBE2dldEJhc2U1OEZyb21PcmFjbGUBA2tleQQHJG1hdGNoMAkAnQgCBQZvcmFjbGUFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkA2QQBBQZzdHJpbmcEB25vdGhpbmcFByRtYXRjaDAJAAIBCQCsAgIFA2tleQIIaXMgZW1wdHkADWtBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA1rQWRtaW5QdWJLZXkyAgthZG1pbl9wdWJfMgANa0FkbWluUHViS2V5MwILYWRtaW5fcHViXzMAEmtBZG1pbkludm9rZVB1YktleQIQYWRtaW5faW52b2tlX3B1YgALa0dvdkFkZHJlc3MCEmdvdmVybmFuY2VfYWRkcmVzcwAMa0Zhcm1BZGRyZXNzAg9mYXJtaW5nX2FkZHJlc3MAD2tTdXJ2ZXlzQWRkcmVzcwIPc3VydmV5c19hZGRyZXNzAAxrUm91dGluZ0FkZHICD3JvdXRpbmdfYWRkcmVzcwAMYWRtaW5QdWJLZXkxCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTEADGFkbWluUHViS2V5MgkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkyAAxhZG1pblB1YktleTMJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MwALYWRtaW5JbnZva2UJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUSa0FkbWluSW52b2tlUHViS2V5ABFnb3Zlcm5hbmNlQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFC2tHb3ZBZGRyZXNzAA5mYXJtaW5nQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDGtGYXJtQWRkcmVzcwAOc3VydmV5c0FkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ9rU3VydmV5c0FkZHJlc3MADnJvdXRpbmdBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUMa1JvdXRpbmdBZGRyABFrZXlQcmVmaXhQb29sTmFtZQIFcG9vbF8AAQJ0eAEGdmVyaWZ5AAQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EA2ludgUHJG1hdGNoMAQKaXNSaWdodEZlZQMJAAACCAUDaW52A2ZlZQCg9zYJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHBA1pc1JvdXRpbmdDYWxsAwkAAAIIBQNpbnYEZEFwcAUOcm91dGluZ0FkZHJlc3MJAAACCAUDaW52CGZ1bmN0aW9uAgxyb3V0aW5nVHJhZGUHBBJpc0V4Y2hhbmdlQ2FsbENQTU0DAwkBCWlzRGVmaW5lZAEJAJ0IAgUGb3JhY2xlCQCsAgIFEWtleVByZWZpeFBvb2xOYW1lCQClCAEJAKQIAQgFA2ludgRkQXBwCQAAAggFA2ludghmdW5jdGlvbgIMY2FsbEZ1bmN0aW9uBwkAAAIJAJEDAggFA2ludgRhcmdzAAACCGV4Y2hhbmdlBwQOaXNFeGNoYW5nZUNhbGwDCQEJaXNEZWZpbmVkAQkAnQgCBQZvcmFjbGUJAKwCAgURa2V5UHJlZml4UG9vbE5hbWUJAKUIAQkApAgBCAUDaW52BGRBcHAJAAACCAUDaW52CGZ1bmN0aW9uAghleGNoYW5nZQcEDWlzQWlyZHJvcENhbGwDCQAAAggFA2ludgRkQXBwBRFnb3Zlcm5hbmNlQWRkcmVzcwkAAAIIBQNpbnYIZnVuY3Rpb24CB2FpckRyb3AHBBNpc1VwZGF0ZVdlaWdodHNDYWxsAwkAAAIIBQNpbnYEZEFwcAURZ292ZXJuYW5jZUFkZHJlc3MJAAACCAUDaW52CGZ1bmN0aW9uAg11cGRhdGVXZWlnaHRzBwQWaXNUYWtlbkludG9BY2NvdW50Q1BNTQMDCQEJaXNEZWZpbmVkAQkAnQgCBQZvcmFjbGUJAKwCAgURa2V5UHJlZml4UG9vbE5hbWUJAKUIAQkApAgBCAUDaW52BGRBcHAJAAACCAUDaW52CGZ1bmN0aW9uAgxjYWxsRnVuY3Rpb24HCQAAAgkAkQMCCAUDaW52BGFyZ3MAAAIZdGFrZUludG9BY2NvdW50RXh0cmFGdW5kcwcEEmlzVGFrZW5JbnRvQWNjb3VudAMJAQlpc0RlZmluZWQBCQCdCAIFBm9yYWNsZQkArAICBRFrZXlQcmVmaXhQb29sTmFtZQkApQgBCQCkCAEIBQNpbnYEZEFwcAkAAAIIBQNpbnYIZnVuY3Rpb24CGXRha2VJbnRvQWNjb3VudEV4dHJhRnVuZHMHBAxpc1dyaXRlVG90YWwDCQAAAggFA2ludgRkQXBwBQ5zdXJ2ZXlzQWRkcmVzcwkAAAIIBQNpbnYIZnVuY3Rpb24CC3dyaXRlVG90YWxzBwQSYWRtaW5QdWJLZXkxU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkxAAEAAAQSYWRtaW5QdWJLZXkyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkyAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkzAAEAAAQXYWRtaW5QdWJLZXlJbnZva2VTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQthZG1pbkludm9rZQABAAAEEHNpZ25lZEJ5T25lQWRtaW4JAGcCCQBkAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkBRdhZG1pblB1YktleUludm9rZVNpZ25lZAABAwMDAwMDAwUOaXNFeGNoYW5nZUNhbGwGBRJpc0V4Y2hhbmdlQ2FsbENQTU0GBQ1pc0FpcmRyb3BDYWxsBgUNaXNSb3V0aW5nQ2FsbAkAAAIJAJADAQgFA2ludghwYXltZW50cwABBwYDAwMDBRNpc1VwZGF0ZVdlaWdodHNDYWxsBgUSaXNUYWtlbkludG9BY2NvdW50BgUWaXNUYWtlbkludG9BY2NvdW50Q1BNTQYFDGlzV3JpdGVUb3RhbAkAAAIJAJADAQgFA2ludghwYXltZW50cwAABwUQc2lnbmVkQnlPbmVBZG1pbgcFCmlzUmlnaHRGZWUHBBJhZG1pblB1YktleTFTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQxhZG1pblB1YktleTEAAQAABBJhZG1pblB1YktleTJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQxhZG1pblB1YktleTIAAQAABBJhZG1pblB1YktleTNTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwACBQxhZG1pblB1YktleTMAAQAACQBnAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkAAKIPdtg", "height": 3428273, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DzpYgnwEZ7n38gbBjQqVkb2KVXWUXRsMbqPWnmsyeVLs Next: AqamNYe7nt9a8Hou2mBJnx9qfbZPTWGzJxvWYMcCpgC5 Diff:
OldNewDifferences
4949 @Verifier(tx)
5050 func verify () = match tx {
5151 case inv: InvokeScriptTransaction =>
52+ let isRightFee = if ((inv.fee == 900000))
53+ then (inv.feeAssetId == unit)
54+ else false
5255 let isRoutingCall = if ((inv.dApp == routingAddress))
5356 then (inv.function == "routingTrade")
5457 else false
7780 let isWriteTotal = if ((inv.dApp == surveysAddress))
7881 then (inv.function == "writeTotals")
7982 else false
80- let signedByAdmin = sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke)
81- if (if (if (if (if (if (isExchangeCall)
83+ let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
84+ then 1
85+ else 0
86+ let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
87+ then 1
88+ else 0
89+ let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey3))
90+ then 1
91+ else 0
92+ let adminPubKeyInvokeSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke))
93+ then 1
94+ else 0
95+ let signedByOneAdmin = ((((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) + adminPubKeyInvokeSigned) >= 1)
96+ if (if (if (if (if (if (if (isExchangeCall)
8297 then true
8398 else isExchangeCallCPMM)
8499 then true
97112 else isWriteTotal)
98113 then (size(inv.payments) == 0)
99114 else false)
100- then signedByAdmin
115+ then signedByOneAdmin
116+ else false)
117+ then isRightFee
101118 else false
102119 case _ =>
103120 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
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
2828 let kRoutingAddr = "routing_address"
2929
3030 let adminPubKey1 = getBase58FromOracle(kAdminPubKey1)
3131
3232 let adminPubKey2 = getBase58FromOracle(kAdminPubKey2)
3333
3434 let adminPubKey3 = getBase58FromOracle(kAdminPubKey3)
3535
3636 let adminInvoke = getBase58FromOracle(kAdminInvokePubKey)
3737
3838 let governanceAddress = Address(getBase58FromOracle(kGovAddress))
3939
4040 let farmingAddress = Address(getBase58FromOracle(kFarmAddress))
4141
4242 let surveysAddress = Address(getBase58FromOracle(kSurveysAddress))
4343
4444 let routingAddress = Address(getBase58FromOracle(kRoutingAddr))
4545
4646 let keyPrefixPoolName = "pool_"
4747
4848
4949 @Verifier(tx)
5050 func verify () = match tx {
5151 case inv: InvokeScriptTransaction =>
52+ let isRightFee = if ((inv.fee == 900000))
53+ then (inv.feeAssetId == unit)
54+ else false
5255 let isRoutingCall = if ((inv.dApp == routingAddress))
5356 then (inv.function == "routingTrade")
5457 else false
5558 let isExchangeCallCPMM = if (if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
5659 then (inv.function == "callFunction")
5760 else false)
5861 then (inv.args[0] == "exchange")
5962 else false
6063 let isExchangeCall = if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
6164 then (inv.function == "exchange")
6265 else false
6366 let isAirdropCall = if ((inv.dApp == governanceAddress))
6467 then (inv.function == "airDrop")
6568 else false
6669 let isUpdateWeightsCall = if ((inv.dApp == governanceAddress))
6770 then (inv.function == "updateWeights")
6871 else false
6972 let isTakenIntoAccountCPMM = if (if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
7073 then (inv.function == "callFunction")
7174 else false)
7275 then (inv.args[0] == "takeIntoAccountExtraFunds")
7376 else false
7477 let isTakenIntoAccount = if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
7578 then (inv.function == "takeIntoAccountExtraFunds")
7679 else false
7780 let isWriteTotal = if ((inv.dApp == surveysAddress))
7881 then (inv.function == "writeTotals")
7982 else false
80- let signedByAdmin = sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke)
81- if (if (if (if (if (if (isExchangeCall)
83+ let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
84+ then 1
85+ else 0
86+ let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
87+ then 1
88+ else 0
89+ let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey3))
90+ then 1
91+ else 0
92+ let adminPubKeyInvokeSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke))
93+ then 1
94+ else 0
95+ let signedByOneAdmin = ((((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) + adminPubKeyInvokeSigned) >= 1)
96+ if (if (if (if (if (if (if (isExchangeCall)
8297 then true
8398 else isExchangeCallCPMM)
8499 then true
85100 else isAirdropCall)
86101 then true
87102 else isRoutingCall)
88103 then (size(inv.payments) == 1)
89104 else false)
90105 then true
91106 else if (if (if (if (isUpdateWeightsCall)
92107 then true
93108 else isTakenIntoAccount)
94109 then true
95110 else isTakenIntoAccountCPMM)
96111 then true
97112 else isWriteTotal)
98113 then (size(inv.payments) == 0)
99114 else false)
100- then signedByAdmin
115+ then signedByOneAdmin
116+ else false)
117+ then isRightFee
101118 else false
102119 case _ =>
103120 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
104121 then 1
105122 else 0
106123 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
107124 then 1
108125 else 0
109126 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
110127 then 1
111128 else 0
112129 (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
113130 }
114131

github/deemru/w8io/786bc32 
25.21 ms