tx · 6dTMKXHrBZVXcD91DkV44XSr7zN8HHZtTsgbv1G5tG5Y

3N3v2zVJyynhzc39qG5wrE244prmxQ4bgV4:  -0.14000000 Waves

2023.03.22 16:22 [2501276] smart account 3N3v2zVJyynhzc39qG5wrE244prmxQ4bgV4 > SELF 0.00000000 Waves

{ "type": 13, "id": "6dTMKXHrBZVXcD91DkV44XSr7zN8HHZtTsgbv1G5tG5Y", "fee": 14000000, "feeAssetId": null, "timestamp": 1679491297515, "version": 2, "chainId": 84, "sender": "3N3v2zVJyynhzc39qG5wrE244prmxQ4bgV4", "senderPublicKey": "B9tjfxvdWuoHAvWusCmsxYMGHa4o2uzQmod3uHjLmF5G", "proofs": [ "2bKtoDGKmneNwG3z2uPVGW7BCA9nLnU2GjFStVjjxzscgmCohKVXTCDcJgBYDhrfQfd6bTnnk7CFkhh99mthd59f", "2PwZ1FrBsUYEL8d7Ew6SQuDFdBvHJV4mye7B4dhiznPaA4ihyuAjK4HPg7VEX9oU93rVWNpbGsAnYDU3S2sDRT9H" ], "script": "base64:BgICCAINAAZvcmFjbGUJAQdBZGRyZXNzAQEaAVRIE5cMwNMzzCUygLYp96dkaICr48x7S5kBE2dldEJhc2U1OEZyb21PcmFjbGUBA2tleQQHJG1hdGNoMAkAnQgCBQZvcmFjbGUFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkA2QQBBQZzdHJpbmcEB25vdGhpbmcFByRtYXRjaDAJAAIBCQCsAgIFA2tleQIIaXMgZW1wdHkADWtBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA1rQWRtaW5QdWJLZXkyAgthZG1pbl9wdWJfMgANa0FkbWluUHViS2V5MwILYWRtaW5fcHViXzMAEmtBZG1pbkludm9rZVB1YktleQIQYWRtaW5faW52b2tlX3B1YgAMa1JvdXRpbmdBZGRyAg9yb3V0aW5nX2FkZHJlc3MADGFkbWluUHViS2V5MQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkxAAxhZG1pblB1YktleTIJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MgAMYWRtaW5QdWJLZXkzCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTMAC2FkbWluSW52b2tlCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEmtBZG1pbkludm9rZVB1YktleQAOcm91dGluZ0FkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrUm91dGluZ0FkZHIAEWtleVByZWZpeFBvb2xOYW1lAgVwb29sXwABAnR4AQZ2ZXJpZnkABAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAhdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgQDaW52BQckbWF0Y2gwBAppc1JpZ2h0RmVlAwkAAAIIBQNpbnYDZmVlAKD3NgkAAAIIBQNpbnYKZmVlQXNzZXRJZAUEdW5pdAcEDWlzUm91dGluZ0NhbGwDCQAAAggFA2ludgRkQXBwBQ5yb3V0aW5nQWRkcmVzcwkAAAIIBQNpbnYIZnVuY3Rpb24CDHJvdXRpbmdUcmFkZQcEEmlzRXhjaGFuZ2VDYWxsQ1BNTQMDCQEJaXNEZWZpbmVkAQkAnQgCBQZvcmFjbGUJAKwCAgURa2V5UHJlZml4UG9vbE5hbWUJAKUIAQkApAgBCAUDaW52BGRBcHAJAAACCAUDaW52CGZ1bmN0aW9uAgxjYWxsRnVuY3Rpb24HCQAAAgkAkQMCCAUDaW52BGFyZ3MAAAIIZXhjaGFuZ2UHBA5pc0V4Y2hhbmdlQ2FsbAMJAQlpc0RlZmluZWQBCQCdCAIFBm9yYWNsZQkArAICBRFrZXlQcmVmaXhQb29sTmFtZQkApQgBCQCkCAEIBQNpbnYEZEFwcAkAAAIIBQNpbnYIZnVuY3Rpb24CCGV4Y2hhbmdlBwQSYWRtaW5QdWJLZXkxU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkxAAEAAAQSYWRtaW5QdWJLZXkyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkyAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkzAAEAAAQXYWRtaW5QdWJLZXlJbnZva2VTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQthZG1pbkludm9rZQABAAAEEHNpZ25lZEJ5T25lQWRtaW4JAGcCCQBkAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkBRdhZG1pblB1YktleUludm9rZVNpZ25lZAABAwMDAwMDBQ5pc0V4Y2hhbmdlQ2FsbAYFEmlzRXhjaGFuZ2VDYWxsQ1BNTQYFDWlzUm91dGluZ0NhbGwJAAACCQCQAwEIBQNpbnYIcGF5bWVudHMAAQcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkHBQppc1JpZ2h0RmVlBwUQc2lnbmVkQnlPbmVBZG1pbgcEEmFkbWluUHViS2V5MVNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFDGFkbWluUHViS2V5MQABAAAEEmFkbWluUHViS2V5MlNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFDGFkbWluUHViS2V5MgABAAAEEmFkbWluUHViS2V5M1NpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFDGFkbWluUHViS2V5MwABAAAJAGcCCQBkAgkAZAIFEmFkbWluUHViS2V5MVNpZ25lZAUSYWRtaW5QdWJLZXkyU2lnbmVkBRJhZG1pblB1YktleTNTaWduZWQAAniM00o=", "height": 2501276, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FK1mseFSZGYNv7aNaDDWh9sMDem5s66bMp7BeSREj4yV Next: 2MGWf8kASDBFKUQTMB7KUktLecyYePGwJ8nffCZj8Qin Diff:
OldNewDifferences
1717
1818 let kAdminPubKey3 = "admin_pub_3"
1919
20+let kAdminInvokePubKey = "admin_invoke_pub"
21+
2022 let kRoutingAddr = "routing_address"
2123
2224 let adminPubKey1 = getBase58FromOracle(kAdminPubKey1)
2426 let adminPubKey2 = getBase58FromOracle(kAdminPubKey2)
2527
2628 let adminPubKey3 = getBase58FromOracle(kAdminPubKey3)
29+
30+let adminInvoke = getBase58FromOracle(kAdminInvokePubKey)
2731
2832 let routingAddress = Address(getBase58FromOracle(kRoutingAddr))
2933
4751 let isExchangeCall = if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
4852 then (inv.function == "exchange")
4953 else false
50- if (if (if (if (if (isExchangeCall)
54+ let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
55+ then 1
56+ else 0
57+ let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
58+ then 1
59+ else 0
60+ let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey3))
61+ then 1
62+ else 0
63+ let adminPubKeyInvokeSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke))
64+ then 1
65+ else 0
66+ let signedByOneAdmin = ((((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) + adminPubKeyInvokeSigned) >= 1)
67+ if (if (if (if (if (if (isExchangeCall)
5168 then true
5269 else isExchangeCallCPMM)
5370 then true
5774 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
5875 else false)
5976 then isRightFee
77+ else false)
78+ then signedByOneAdmin
6079 else false
6180 case _ =>
6281 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'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
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
20+let kAdminInvokePubKey = "admin_invoke_pub"
21+
2022 let kRoutingAddr = "routing_address"
2123
2224 let adminPubKey1 = getBase58FromOracle(kAdminPubKey1)
2325
2426 let adminPubKey2 = getBase58FromOracle(kAdminPubKey2)
2527
2628 let adminPubKey3 = getBase58FromOracle(kAdminPubKey3)
29+
30+let adminInvoke = getBase58FromOracle(kAdminInvokePubKey)
2731
2832 let routingAddress = Address(getBase58FromOracle(kRoutingAddr))
2933
3034 let keyPrefixPoolName = "pool_"
3135
3236
3337 @Verifier(tx)
3438 func verify () = match tx {
3539 case inv: InvokeScriptTransaction =>
3640 let isRightFee = if ((inv.fee == 900000))
3741 then (inv.feeAssetId == unit)
3842 else false
3943 let isRoutingCall = if ((inv.dApp == routingAddress))
4044 then (inv.function == "routingTrade")
4145 else false
4246 let isExchangeCallCPMM = if (if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
4347 then (inv.function == "callFunction")
4448 else false)
4549 then (inv.args[0] == "exchange")
4650 else false
4751 let isExchangeCall = if (isDefined(getString(oracle, (keyPrefixPoolName + toString(addressFromRecipient(inv.dApp))))))
4852 then (inv.function == "exchange")
4953 else false
50- if (if (if (if (if (isExchangeCall)
54+ let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
55+ then 1
56+ else 0
57+ let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
58+ then 1
59+ else 0
60+ let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey3))
61+ then 1
62+ else 0
63+ let adminPubKeyInvokeSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminInvoke))
64+ then 1
65+ else 0
66+ let signedByOneAdmin = ((((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) + adminPubKeyInvokeSigned) >= 1)
67+ if (if (if (if (if (if (isExchangeCall)
5168 then true
5269 else isExchangeCallCPMM)
5370 then true
5471 else isRoutingCall)
5572 then (size(inv.payments) == 1)
5673 else false)
5774 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
5875 else false)
5976 then isRightFee
77+ else false)
78+ then signedByOneAdmin
6079 else false
6180 case _ =>
6281 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
6382 then 1
6483 else 0
6584 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
6685 then 1
6786 else 0
6887 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
6988 then 1
7089 else 0
7190 (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
7291 }
7392

github/deemru/w8io/026f985 
43.86 ms