2022.11.25 11:29 [3397834] smart account 3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp > SELF 0.00000000 Waves

{ "type": 13, "id": "7NUVt96p7snVmLDZmped7GLssoftvRd9NoaHUSJQr8kq", "fee": 700000, "feeAssetId": null, "timestamp": 1669364940001, "version": 2, "chainId": 87, "sender": "3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp", "senderPublicKey": "GTY8yEJ2S4heRompxyvbJoBN1Td5BM5Pp4JgVbj9tmCw", "proofs": [ "", "5RbmNk3yXKmmCj3kdGJX4XryqU8Xz2NSMkeFepWn9GxJgsHkPvfZV4UVLtfiQaCcbXJuF9Hnvmv4abyPkjsWpsYC", "LX8ttvRAi3FE482ReeBw7RtVTxALRHceV8Map5FAvBZpkvqFSKvNrnarhLb4f2UzB8TcABKjWKzTCXJB5KU52dt" ], "script": "base64:BgICCAIRAAZvcmFjbGUJAQdBZGRyZXNzAQEaAVeK/whomjW6QM1hdPISN96mN/D6OM7oHjgBE2dldEJhc2U1OEZyb21PcmFjbGUBA2tleQQHJG1hdGNoMAkAnQgCBQZvcmFjbGUFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkA2QQBBQZzdHJpbmcEB25vdGhpbmcFByRtYXRjaDAJAAIBCQCsAgIFA2tleQIIaXMgZW1wdHkADWtBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA1rQWRtaW5QdWJLZXkyAgthZG1pbl9wdWJfMgANa0FkbWluUHViS2V5MwILYWRtaW5fcHViXzMAEmtBZG1pbkludm9rZVB1YktleQIQYWRtaW5faW52b2tlX3B1YgALa0dvdkFkZHJlc3MCEmdvdmVybmFuY2VfYWRkcmVzcwAMa0Zhcm1BZGRyZXNzAg9mYXJtaW5nX2FkZHJlc3MAD2tTdXJ2ZXlzQWRkcmVzcwIPc3VydmV5c19hZGRyZXNzAAxhZG1pblB1YktleTEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MQAMYWRtaW5QdWJLZXkyCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTIADGFkbWluUHViS2V5MwkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkzAAthZG1pbkludm9rZQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRJrQWRtaW5JbnZva2VQdWJLZXkAEWdvdmVybmFuY2VBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQULa0dvdkFkZHJlc3MADmZhcm1pbmdBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUMa0Zhcm1BZGRyZXNzAA5zdXJ2ZXlzQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFD2tTdXJ2ZXlzQWRkcmVzcwARa2V5UHJlZml4UG9vbE5hbWUCBXBvb2xfAAECdHgBBnZlcmlmeQAEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBANpbnYFByRtYXRjaDAEDmlzRXhjaGFuZ2VDYWxsAwMJAQlpc0RlZmluZWQBCQCdCAIFBm9yYWNsZQkArAICBRFrZXlQcmVmaXhQb29sTmFtZQkApQgBCQCkCAEIBQNpbnYEZEFwcAkAAAIIBQNpbnYIZnVuY3Rpb24CDGNhbGxGdW5jdGlvbgcJAAACCQCRAwIIBQNpbnYEYXJncwAAAghleGNoYW5nZQcEDWlzQWlyZHJvcENhbGwDCQAAAggFA2ludgRkQXBwBRFnb3Zlcm5hbmNlQWRkcmVzcwkAAAIIBQNpbnYIZnVuY3Rpb24CB2FpckRyb3AHBBNpc1VwZGF0ZVdlaWdodHNDYWxsAwkAAAIIBQNpbnYEZEFwcAURZ292ZXJuYW5jZUFkZHJlc3MJAAACCAUDaW52CGZ1bmN0aW9uAg11cGRhdGVXZWlnaHRzBwQUaXNVcGRhdGVQb29sSW50ZXJlc3QDCQAAAggFA2ludgRkQXBwBQ5mYXJtaW5nQWRkcmVzcwkAAAIIBQNpbnYIZnVuY3Rpb24CEnVwZGF0ZVBvb2xJbnRlcmVzdAcEEmlzVGFrZW5JbnRvQWNjb3VudAMDCQEJaXNEZWZpbmVkAQkAnQgCBQZvcmFjbGUJAKwCAgURa2V5UHJlZml4UG9vbE5hbWUJAKUIAQkApAgBCAUDaW52BGRBcHAJAAACCAUDaW52CGZ1bmN0aW9uAgxjYWxsRnVuY3Rpb24HCQAAAgkAkQMCCAUDaW52BGFyZ3MAAAIZdGFrZUludG9BY2NvdW50RXh0cmFGdW5kcwcEDGlzV3JpdGVUb3RhbAMJAAACCAUDaW52BGRBcHAFDnN1cnZleXNBZGRyZXNzCQAAAggFA2ludghmdW5jdGlvbgILd3JpdGVUb3RhbHMHBA1zaWduZWRCeUFkbWluCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQthZG1pbkludm9rZQMDAwMFDmlzRXhjaGFuZ2VDYWxsBgUNaXNBaXJkcm9wQ2FsbAkAAAIJAJADAQgFA2ludghwYXltZW50cwABBwYDAwMDBRNpc1VwZGF0ZVdlaWdodHNDYWxsBgUUaXNVcGRhdGVQb29sSW50ZXJlc3QGBRJpc1Rha2VuSW50b0FjY291bnQGBQxpc1dyaXRlVG90YWwJAAACCQCQAwEIBQNpbnYIcGF5bWVudHMAAAcFDXNpZ25lZEJ5QWRtaW4HBBJhZG1pblB1YktleTFTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQxhZG1pblB1YktleTEAAQAABBJhZG1pblB1YktleTJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQxhZG1pblB1YktleTIAAQAABBJhZG1pblB1YktleTNTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwACBQxhZG1pblB1YktleTMAAQAACQBnAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkAALm3HOv", "height": 3397834, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BFcjEhZV4Sw7aH5hSe2QyASFmt7BSBV5uAj3PFvWxuKm Next: DzpYgnwEZ7n38gbBjQqVkb2KVXWUXRsMbqPWnmsyeVLs Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let oracle = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
4545 @Verifier(tx)
4646 func verify () = match tx {
4747 case inv: InvokeScriptTransaction =>
48- let isExchangeCall = if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
49- then (inv.function == "exchange")
48+ let isExchangeCall = if (if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
49+ then (inv.function == "callFunction")
50+ else false)
51+ then (inv.args[0] == "exchange")
5052 else false
5153 let isAirdropCall = if ((inv.dApp == governanceAddress))
5254 then (inv.function == "airDrop")
5759 let isUpdatePoolInterest = if ((inv.dApp == farmingAddress))
5860 then (inv.function == "updatePoolInterest")
5961 else false
60- let isTakenIntoAccount = if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
61- then (inv.function == "takeIntoAccountExtraFunds")
62+ let isTakenIntoAccount = if (if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
63+ then (inv.function == "callFunction")
64+ else false)
65+ then (inv.args[0] == "takeIntoAccountExtraFunds")
6266 else false
6367 let isWriteTotal = if ((inv.dApp == surveysAddress))
6468 then (inv.function == "writeTotals")
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# 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 adminPubKey1 = getBase58FromOracle(kAdminPubKey1)
2929
3030 let adminPubKey2 = getBase58FromOracle(kAdminPubKey2)
3131
3232 let adminPubKey3 = getBase58FromOracle(kAdminPubKey3)
3333
3434 let adminInvoke = getBase58FromOracle(kAdminInvokePubKey)
3535
3636 let governanceAddress = Address(getBase58FromOracle(kGovAddress))
3737
3838 let farmingAddress = Address(getBase58FromOracle(kFarmAddress))
3939
4040 let surveysAddress = Address(getBase58FromOracle(kSurveysAddress))
4141
4242 let keyPrefixPoolName = "pool_"
4343
4444
4545 @Verifier(tx)
4646 func verify () = match tx {
4747 case inv: InvokeScriptTransaction =>
48- let isExchangeCall = if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
49- then (inv.function == "exchange")
48+ let isExchangeCall = if (if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
49+ then (inv.function == "callFunction")
50+ else false)
51+ then (inv.args[0] == "exchange")
5052 else false
5153 let isAirdropCall = if ((inv.dApp == governanceAddress))
5254 then (inv.function == "airDrop")
5355 else false
5456 let isUpdateWeightsCall = if ((inv.dApp == governanceAddress))
5557 then (inv.function == "updateWeights")
5658 else false
5759 let isUpdatePoolInterest = if ((inv.dApp == farmingAddress))
5860 then (inv.function == "updatePoolInterest")
5961 else false
60- let isTakenIntoAccount = if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
61- then (inv.function == "takeIntoAccountExtraFunds")
62+ let isTakenIntoAccount = if (if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
63+ then (inv.function == "callFunction")
64+ else false)
65+ then (inv.args[0] == "takeIntoAccountExtraFunds")
6266 else false
6367 let isWriteTotal = if ((inv.dApp == surveysAddress))
6468 then (inv.function == "writeTotals")
6569 else false
6670 let signedByAdmin = sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke)
6771 if (if (if (if (isExchangeCall)
6872 then true
6973 else isAirdropCall)
7074 then (size(inv.payments) == 1)
7175 else false)
7276 then true
7377 else if (if (if (if (isUpdateWeightsCall)
7478 then true
7579 else isUpdatePoolInterest)
7680 then true
7781 else isTakenIntoAccount)
7882 then true
7983 else isWriteTotal)
8084 then (size(inv.payments) == 0)
8185 else false)
8286 then signedByAdmin
8387 else false
8488 case _ =>
8589 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
8690 then 1
8791 else 0
8892 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
8993 then 1
9094 else 0
9195 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
9296 then 1
9397 else 0
9498 (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
9599 }
96100

github/deemru/w8io/786bc32 
26.54 ms