tx · 2xGeHG3MYXDTeAgborR4LnPtXsBD82oHNPPFxEuGjtAp

3PF8ihzUXp9QqvtcnpSveENQHqLDYGvbRvZ:  -0.01000000 Waves

2023.03.10 20:11 [3549767] smart account 3PF8ihzUXp9QqvtcnpSveENQHqLDYGvbRvZ > SELF 0.00000000 Waves

{ "type": 13, "id": "2xGeHG3MYXDTeAgborR4LnPtXsBD82oHNPPFxEuGjtAp", "fee": 1000000, "feeAssetId": null, "timestamp": 1678468290353, "version": 2, "chainId": 87, "sender": "3PF8ihzUXp9QqvtcnpSveENQHqLDYGvbRvZ", "senderPublicKey": "9kcEZHonGr2aoSBCDgKiB7nf7C6dYThx4YnvpDKNSD77", "proofs": [ "2y6Cmi6RU9yfoRxNJozH3FkWyTVfAhFmTzJZaYapJrpDRtWDgQbYKcvW3kykvv7aEtn7m9Y8o6XeYzoVkz6tLsuo", "2C5SWwNmC9nqMPBppDNwXs4L12X7EKxHV8b1aKv3iV3Sde4iJn6N62zVENPG8wJywxczmH4rzeL5K6wYNFstDANw" ], "script": "base64:AAIFAAAAAAAAABUIAhIECgIBCBILCgkRGBgYAQEYAQgAAAANAQAAABBnZXRTdHJpbmdPclRocm93AAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAMQ2FuJ3QgcmVhZCAnBQAAAANrZXkCAAAADScgYXQgYWRkcmVzcyAJAAQlAAAAAQUAAAAHYWRkcmVzcwEAAAATcGFyc2VBZGRyZXNzT3JUaHJvdwAAAAEAAAAMbWF5YmVBZGRyZXNzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQUAAAAMbWF5YmVBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAAaQ2FuJ3QgcGFyc2UgYWRkcmVzcyBmcm9tICcFAAAADG1heWJlQWRkcmVzcwIAAAABJwEAAAAYa2V5X2xhc3RGZWVTd2FwVGltZXN0YW1wAAAAAQAAAAdhc3NldElkCQABLAAAAAIJAAEsAAAAAgIAAAAERmVlXwUAAAAHYXNzZXRJZAIAAAASX2xhc3RTd2FwVGltZXN0YW1wAAAAAAxwcm94eUFkZHJlc3MJAQAAABNwYXJzZUFkZHJlc3NPclRocm93AAAAAQkBAAAAEGdldFN0cmluZ09yVGhyb3cAAAACBQAAAAR0aGlzAgAAAA1wcm94eS1hZGRyZXNzAQAAAApnZXRBc3NldElkAAAAAQAAAAVhc3NldAMJAAAAAAAAAgUAAAAFYXNzZXQCAAAABVdBVkVTBQAAAAR1bml0CAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEJAAJZAAAAAQUAAAAFYXNzZXQJAAEsAAAAAgIAAAARQ2FuJ3QgZmluZCBhc3NldCAFAAAABWFzc2V0AAAAAmlkAAAAABJmZWVQcmlvcml0eUFzc2V0SWQEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwIAAAARRmVlX3ByaW9yaXR5QXNzZXQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAQcHJpb3JpdHlBc3NldFN0cgUAAAAHJG1hdGNoMAkAAlkAAAABBQAAABBwcmlvcml0eUFzc2V0U3RyCQAAAgAAAAECAAAAIFdBVkVTIGNhbm5vdCBiZSBhIHByaW9yaXR5IGFzc2V0AAAAABZmZWVQcmlvcml0eU1pblJlY2VpdmVkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMCAAAAF0ZlZV9wcmlvcml0eU1pblJlY2VpdmVkAAAAAAAAAAAAAAAAAApmZWVNYW5hZ2VyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMCAAAAFEZlZV9tYW5hZ2VyUHVibGljS2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAD21heWJlRmVlTWFuYWdlcgUAAAAHJG1hdGNoMAkAAlkAAAABBQAAAA9tYXliZUZlZU1hbmFnZXIFAAAABHVuaXQAAAAACnR4RmVlTGltaXQJAAQaAAAAAgUAAAAEdGhpcwIAAAAORmVlX3R4RmVlTGltaXQAAAAAD2ZlZVN3YXBJbnRlcnZhbAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzAgAAABBGZWVfc3dhcEludGVydmFsAAAAAAAAAAAAAQAAABRnZXRQcmlvcml0eUFzc2V0SW5mbwAAAAAEAAAAByRtYXRjaDAJAAPsAAAAAQUAAAASZmVlUHJpb3JpdHlBc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVBc3NldAQAAAAQZmVlUHJpb3JpdHlBc3NldAUAAAAHJG1hdGNoMAkABRYAAAAECQACWAAAAAEIBQAAABBmZWVQcmlvcml0eUFzc2V0AAAAAmlkCAUAAAAQZmVlUHJpb3JpdHlBc3NldAAAAARuYW1lCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAIBQAAABBmZWVQcmlvcml0eUFzc2V0AAAACGRlY2ltYWxzAAAAAAAAAAAAAAAAAAAAAAAABQAAAARET1dOBQAAABZmZWVQcmlvcml0eU1pblJlY2VpdmVkCQAAAgAAAAECAAAAFFVuZXhwZWN0ZWQgYmVoYXZpb3VyAQAAABdnZXRMYXN0RmVlU3dhcFRpbWVzdGFtcAAAAAEAAAAHYXNzZXRJZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAYa2V5X2xhc3RGZWVTd2FwVGltZXN0YW1wAAAAAQkAAlgAAAABBQAAAAdhc3NldElkAAAAAAAAAAAAAQAAABdzZXRMYXN0RmVlU3dhcFRpbWVzdGFtcAAAAAIAAAAHYXNzZXRJZAAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABhrZXlfbGFzdEZlZVN3YXBUaW1lc3RhbXAAAAABCQACWAAAAAEFAAAAB2Fzc2V0SWQFAAAACXRpbWVzdGFtcAUAAAADbmlsAAAAAgAAAANpbnYBAAAAE2NsYWltUmVmZXJyZXJSZXdhcmQAAAACAAAABmFtb3VudAAAAAdhc3NldElkBAAAAAVhc3NldAkBAAAACmdldEFzc2V0SWQAAAABBQAAAAdhc3NldElkAwkBAAAAAiE9AAAAAgUAAAAMcHJveHlBZGRyZXNzCAUAAAADaW52AAAABmNhbGxlcgkAAAIAAAABAgAAACtvbmx5IHNlbGYgY2FsbHMgb3IgYnkgY29sbGVjdG9yIGFyZSBhbGxvd2VkAwkAAGcAAAACAAAAAAAAAAAABQAAAAZhbW91bnQJAAACAAAAAQIAAAAXSW5jb3JyZWN0IHJld2FyZCBhbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAMcHJveHlBZGRyZXNzBQAAAAZhbW91bnQFAAAABWFzc2V0BQAAAANuaWwAAAADaW52AQAAAAxQUklWQVRFX3N3YXAAAAAJAAAACWFtb3VudHNJbgAAAAlhZGRyZXNzZXMAAAAPYXNzZXRzVG9SZWNlaXZlAAAAC2VzdFJlY2VpdmVkAAAAEXNsaXBwYWdlVG9sZXJhbmNlAAAAC21pblJlY2VpdmVkAAAAB29wdGlvbnMAAAAJcG10QW1vdW50AAAAC3BtdEFzc2V0U3RyBAAAAApwbXRBc3NldElkCQACWQAAAAEFAAAAC3BtdEFzc2V0U3RyBAAAAANwbXQDAwkAAAAAAAACBQAAAAtwbXRBc3NldFN0cgIAAAAFV0FWRVMGCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAAEmZlZVByaW9yaXR5QXNzZXRJZAkAAAIAAAAB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", "height": 3549767, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BcYFnD6sqhrjR6WKDdcJTuvbEvNZ8cCp6tUQVWLBgWcf Next: none Diff:
OldNewDifferences
3333 unit
3434 }
3535
36-let swapFeeLimit = getInteger(this, "Fee_swapFeeLimit")
36+let txFeeLimit = getInteger(this, "Fee_txFeeLimit")
3737
38-let feeAssetSwapInterval = valueOrElse(getInteger(this, "Fee_assetSwapInterval"), 0)
38+let feeSwapInterval = valueOrElse(getInteger(this, "Fee_swapInterval"), 0)
39+
40+func getPriorityAssetInfo () = match assetInfo(feePriorityAssetId) {
41+ case feePriorityAsset: Asset =>
42+ $Tuple4(toBase58String(feePriorityAsset.id), feePriorityAsset.name, pow(10, 0, feePriorityAsset.decimals, 0, 0, DOWN), feePriorityMinReceived)
43+ case _ =>
44+ throw("Unexpected behaviour")
45+}
46+
3947
4048 func getLastFeeSwapTimestamp (assetId) = valueOrElse(getInteger(this, key_lastFeeSwapTimestamp(toBase58String(assetId))), 0)
4149
6977 then throw("Only self calls are allowed")
7078 else if (isDefined(inv.feeAssetId))
7179 then throw("Only WAVES allowed for feeAssetId")
72- else if (if (isDefined(swapFeeLimit))
73- then (inv.fee > value(swapFeeLimit))
80+ else if (if (isDefined(txFeeLimit))
81+ then (inv.fee > value(txFeeLimit))
7482 else false)
75- then throw((("Maximum fee (" + toString(value(swapFeeLimit))) + ") is exceeded"))
76- else if ((feeAssetSwapInterval > (lastBlock.timestamp - getLastFeeSwapTimestamp(pmtAssetId))))
77- then throw((("Swap is only possible once every " + toString((feeAssetSwapInterval / 3600000))) + " hours"))
83+ then throw((("Maximum fee (" + toString(value(txFeeLimit))) + ") is exceeded"))
84+ else if ((feeSwapInterval > (lastBlock.timestamp - getLastFeeSwapTimestamp(pmtAssetId))))
85+ then throw((("Swap is only possible once every " + toString((feeSwapInterval / 3600000))) + " hours"))
7886 else {
7987 let balanceBefore = assetBalance(this, feePriorityAssetId)
8088 if ((balanceBefore == balanceBefore))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func getStringOrThrow (address,key) = valueOrErrorMessage(getString(address, key), ((("Can't read '" + key) + "' at address ") + toString(address)))
55
66
77 func parseAddressOrThrow (maybeAddress) = valueOrErrorMessage(addressFromString(maybeAddress), (("Can't parse address from '" + maybeAddress) + "'"))
88
99
1010 func key_lastFeeSwapTimestamp (assetId) = (("Fee_" + assetId) + "_lastSwapTimestamp")
1111
1212
1313 let proxyAddress = parseAddressOrThrow(getStringOrThrow(this, "proxy-address"))
1414
1515 func getAssetId (asset) = if ((asset == "WAVES"))
1616 then unit
1717 else valueOrErrorMessage(assetInfo(fromBase58String(asset)), ("Can't find asset " + asset)).id
1818
1919
2020 let feePriorityAssetId = match getString(this, "Fee_priorityAsset") {
2121 case priorityAssetStr: String =>
2222 fromBase58String(priorityAssetStr)
2323 case _ =>
2424 throw("WAVES cannot be a priority asset")
2525 }
2626
2727 let feePriorityMinReceived = valueOrElse(getInteger(this, "Fee_priorityMinReceived"), 0)
2828
2929 let feeManager = match getString(this, "Fee_managerPublicKey") {
3030 case maybeFeeManager: String =>
3131 fromBase58String(maybeFeeManager)
3232 case _ =>
3333 unit
3434 }
3535
36-let swapFeeLimit = getInteger(this, "Fee_swapFeeLimit")
36+let txFeeLimit = getInteger(this, "Fee_txFeeLimit")
3737
38-let feeAssetSwapInterval = valueOrElse(getInteger(this, "Fee_assetSwapInterval"), 0)
38+let feeSwapInterval = valueOrElse(getInteger(this, "Fee_swapInterval"), 0)
39+
40+func getPriorityAssetInfo () = match assetInfo(feePriorityAssetId) {
41+ case feePriorityAsset: Asset =>
42+ $Tuple4(toBase58String(feePriorityAsset.id), feePriorityAsset.name, pow(10, 0, feePriorityAsset.decimals, 0, 0, DOWN), feePriorityMinReceived)
43+ case _ =>
44+ throw("Unexpected behaviour")
45+}
46+
3947
4048 func getLastFeeSwapTimestamp (assetId) = valueOrElse(getInteger(this, key_lastFeeSwapTimestamp(toBase58String(assetId))), 0)
4149
4250
4351 func setLastFeeSwapTimestamp (assetId,timestamp) = [IntegerEntry(key_lastFeeSwapTimestamp(toBase58String(assetId)), timestamp)]
4452
4553
4654 @Callable(inv)
4755 func claimReferrerReward (amount,assetId) = {
4856 let asset = getAssetId(assetId)
4957 if ((proxyAddress != inv.caller))
5058 then throw("only self calls or by collector are allowed")
5159 else if ((0 >= amount))
5260 then throw("Incorrect reward amount")
5361 else [ScriptTransfer(proxyAddress, amount, asset)]
5462 }
5563
5664
5765
5866 @Callable(inv)
5967 func PRIVATE_swap (amountsIn,addresses,assetsToReceive,estReceived,slippageTolerance,minReceived,options,pmtAmount,pmtAssetStr) = {
6068 let pmtAssetId = fromBase58String(pmtAssetStr)
6169 let pmt = if (if ((pmtAssetStr == "WAVES"))
6270 then true
6371 else (pmtAssetId == feePriorityAssetId))
6472 then throw("Unable to swap WAVES or priority asset")
6573 else if ((0 >= pmtAmount))
6674 then throw("Payment amount must be positive")
6775 else AttachedPayment(pmtAssetId, pmtAmount)
6876 if ((inv.caller != this))
6977 then throw("Only self calls are allowed")
7078 else if (isDefined(inv.feeAssetId))
7179 then throw("Only WAVES allowed for feeAssetId")
72- else if (if (isDefined(swapFeeLimit))
73- then (inv.fee > value(swapFeeLimit))
80+ else if (if (isDefined(txFeeLimit))
81+ then (inv.fee > value(txFeeLimit))
7482 else false)
75- then throw((("Maximum fee (" + toString(value(swapFeeLimit))) + ") is exceeded"))
76- else if ((feeAssetSwapInterval > (lastBlock.timestamp - getLastFeeSwapTimestamp(pmtAssetId))))
77- then throw((("Swap is only possible once every " + toString((feeAssetSwapInterval / 3600000))) + " hours"))
83+ then throw((("Maximum fee (" + toString(value(txFeeLimit))) + ") is exceeded"))
84+ else if ((feeSwapInterval > (lastBlock.timestamp - getLastFeeSwapTimestamp(pmtAssetId))))
85+ then throw((("Swap is only possible once every " + toString((feeSwapInterval / 3600000))) + " hours"))
7886 else {
7987 let balanceBefore = assetBalance(this, feePriorityAssetId)
8088 if ((balanceBefore == balanceBefore))
8189 then {
8290 let swap = invoke(proxyAddress, "swap", [amountsIn, addresses, assetsToReceive, estReceived, slippageTolerance, minReceived, options], [pmt])
8391 if ((swap == swap))
8492 then {
8593 let balanceAfter = assetBalance(this, feePriorityAssetId)
8694 if ((balanceAfter == balanceAfter))
8795 then {
8896 let received = (balanceAfter - balanceBefore)
8997 if ((0 >= received))
9098 then throw("Swap is only allowed to the priority asset")
9199 else if ((feePriorityMinReceived > received))
92100 then throw(("Swap result is less than " + toString(feePriorityMinReceived)))
93101 else setLastFeeSwapTimestamp(pmtAssetId, lastBlock.timestamp)
94102 }
95103 else throw("Strict value is not equal to itself.")
96104 }
97105 else throw("Strict value is not equal to itself.")
98106 }
99107 else throw("Strict value is not equal to itself.")
100108 }
101109 }
102110
103111
104112 @Verifier(tx)
105113 func verify () = {
106114 let maybeOracle = addressFromString(valueOrElse(getString(this, "Oracle"), ""))
107115 let maybeAdminKeys = if (isDefined(maybeOracle))
108116 then getString(value(maybeOracle), "AdminKeys")
109117 else unit
110118 let isFeeSwapInvoke = match tx {
111119 case tx: InvokeScriptTransaction =>
112120 if ((tx.dApp == this))
113121 then (tx.function == "PRIVATE_swap")
114122 else false
115123 case _ =>
116124 false
117125 }
118126 if (if (isDefined(feeManager))
119127 then isFeeSwapInvoke
120128 else false)
121129 then sigVerify(tx.bodyBytes, tx.proofs[0], value(feeManager))
122130 else match maybeAdminKeys {
123131 case adminKeysStr: String =>
124132 let adminKeys = {
125133 let stringKeys = split(adminKeysStr, ",")
126134 [fromBase58String(stringKeys[0]), fromBase58String(stringKeys[1]), fromBase58String(stringKeys[2])]
127135 }
128136 func verifyByAllKeys (proof) = if (sigVerify(tx.bodyBytes, proof, adminKeys[0]))
129137 then 1
130138 else if (sigVerify(tx.bodyBytes, proof, adminKeys[1]))
131139 then 10
132140 else if (sigVerify(tx.bodyBytes, proof, adminKeys[2]))
133141 then 100
134142 else 0
135143
136144 containsElement([110, 101, 11], (verifyByAllKeys(tx.proofs[0]) + verifyByAllKeys(tx.proofs[1])))
137145 case _ =>
138146 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
139147 }
140148 }
141149

github/deemru/w8io/3ef1775 
35.05 ms