tx · BcYFnD6sqhrjR6WKDdcJTuvbEvNZ8cCp6tUQVWLBgWcf

3PF8ihzUXp9QqvtcnpSveENQHqLDYGvbRvZ:  -0.01000000 Waves

2023.03.10 17:58 [3549626] smart account 3PF8ihzUXp9QqvtcnpSveENQHqLDYGvbRvZ > SELF 0.00000000 Waves

{ "type": 13, "id": "BcYFnD6sqhrjR6WKDdcJTuvbEvNZ8cCp6tUQVWLBgWcf", "fee": 1000000, "feeAssetId": null, "timestamp": 1678460276725, "version": 2, "chainId": 87, "sender": "3PF8ihzUXp9QqvtcnpSveENQHqLDYGvbRvZ", "senderPublicKey": "9kcEZHonGr2aoSBCDgKiB7nf7C6dYThx4YnvpDKNSD77", "proofs": [ "5mzQjZyLNogntiQ7riXVzqMogGfeU97ra1CSRmKhQHaqfGGJqgg4s7PMBPEnEMMDNSFmdPkjPoCC1c99sw8kema4", "4GcUvEmVJoEuERANnSrXCaBUZKYD86H7JwtdyW1uMExXiQaw6aj3rfkrHZ2NvVhpjBLiLJi7kZRRMMgpzdTHJ6LX" ], "script": "base64:AAIFAAAAAAAAABUIAhIECgIBCBILCgkRGBgYAQEYAQgAAAAMAQAAABBnZXRTdHJpbmdPclRocm93AAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAMQ2FuJ3QgcmVhZCAnBQAAAANrZXkCAAAADScgYXQgYWRkcmVzcyAJAAQlAAAAAQUAAAAHYWRkcmVzcwEAAAATcGFyc2VBZGRyZXNzT3JUaHJvdwAAAAEAAAAMbWF5YmVBZGRyZXNzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQUAAAAMbWF5YmVBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAAaQ2FuJ3QgcGFyc2UgYWRkcmVzcyBmcm9tICcFAAAADG1heWJlQWRkcmVzcwIAAAABJwEAAAAYa2V5X2xhc3RGZWVTd2FwVGltZXN0YW1wAAAAAQAAAAdhc3NldElkCQABLAAAAAIJAAEsAAAAAgIAAAAERmVlXwUAAAAHYXNzZXRJZAIAAAASX2xhc3RTd2FwVGltZXN0YW1wAAAAAAxwcm94eUFkZHJlc3MJAQAAABNwYXJzZUFkZHJlc3NPclRocm93AAAAAQkBAAAAEGdldFN0cmluZ09yVGhyb3cAAAACBQAAAAR0aGlzAgAAAA1wcm94eS1hZGRyZXNzAQAAAApnZXRBc3NldElkAAAAAQAAAAVhc3NldAMJAAAAAAAAAgUAAAAFYXNzZXQCAAAABVdBVkVTBQAAAAR1bml0CAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEJAAJZAAAAAQUAAAAFYXNzZXQJAAEsAAAAAgIAAAARQ2FuJ3QgZmluZCBhc3NldCAFAAAABWFzc2V0AAAAAmlkAAAAABJmZWVQcmlvcml0eUFzc2V0SWQEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwIAAAARRmVlX3ByaW9yaXR5QXNzZXQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAQcHJpb3JpdHlBc3NldFN0cgUAAAAHJG1hdGNoMAkAAlkAAAABBQAAABBwcmlvcml0eUFzc2V0U3RyCQAAAgAAAAECAAAAIFdBVkVTIGNhbm5vdCBiZSBhIHByaW9yaXR5IGFzc2V0AAAAABZmZWVQcmlvcml0eU1pblJlY2VpdmVkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMCAAAAF0ZlZV9wcmlvcml0eU1pblJlY2VpdmVkAAAAAAAAAAAAAAAAAApmZWVNYW5hZ2VyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMCAAAAFEZlZV9tYW5hZ2VyUHVibGljS2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAD21heWJlRmVlTWFuYWdlcgUAAAAHJG1hdGNoMAkAAlkAAAABBQAAAA9tYXliZUZlZU1hbmFnZXIFAAAABHVuaXQAAAAADHN3YXBGZWVMaW1pdAkABBoAAAACBQAAAAR0aGlzAgAAABBGZWVfc3dhcEZlZUxpbWl0AAAAABRmZWVBc3NldFN3YXBJbnRlcnZhbAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzAgAAABVGZWVfYXNzZXRTd2FwSW50ZXJ2YWwAAAAAAAAAAAABAAAAF2dldExhc3RGZWVTd2FwVGltZXN0YW1wAAAAAQAAAAdhc3NldElkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAABhrZXlfbGFzdEZlZVN3YXBUaW1lc3RhbXAAAAABCQACWAAAAAEFAAAAB2Fzc2V0SWQAAAAAAAAAAAABAAAAF3NldExhc3RGZWVTd2FwVGltZXN0YW1wAAAAAgAAAAdhc3NldElkAAAACXRpbWVzdGFtcAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGGtleV9sYXN0RmVlU3dhcFRpbWVzdGFtcAAAAAEJAAJYAAAAAQUAAAAHYXNzZXRJZAUAAAAJdGltZXN0YW1wBQAAAANuaWwAAAACAAAAA2ludgEAAAATY2xhaW1SZWZlcnJlclJld2FyZAAAAAIAAAAGYW1vdW50AAAAB2Fzc2V0SWQEAAAABWFzc2V0CQEAAAAKZ2V0QXNzZXRJZAAAAAEFAAAAB2Fzc2V0SWQDCQEAAAACIT0AAAACBQAAAAxwcm94eUFkZHJlc3MIBQAAAANpbnYAAAAGY2FsbGVyCQAAAgAAAAECAAAAK29ubHkgc2VsZiBjYWxscyBvciBieSBjb2xsZWN0b3IgYXJlIGFsbG93ZWQDCQAAZwAAAAIAAAAAAAAAAAAFAAAABmFtb3VudAkAAAIAAAABAgAAABdJbmNvcnJlY3QgcmV3YXJkIGFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAxwcm94eUFkZHJlc3MFAAAABmFtb3VudAUAAAAFYXNzZXQFAAAAA25pbAAAAANpbnYBAAAADFBSSVZBVEVfc3dhcAAAAAkAAAAJYW1vdW50c0luAAAACWFkZHJlc3NlcwAAAA9hc3NldHNUb1JlY2VpdmUAAAALZXN0UmVjZWl2ZWQAAAARc2xpcHBhZ2VUb2xlcmFuY2UAAAALbWluUmVjZWl2ZWQAAAAHb3B0aW9ucwAAAAlwbXRBbW91bnQAAAALcG10QXNzZXRTdHIEAAAACnBtdEFzc2V0SWQJAAJZAAAAAQUAAAALcG10QXNzZXRTdHIEAAAAA3BtdAMDCQAAAAAAAAIFAAAAC3BtdEFzc2V0U3RyAgAAAAVXQVZFUwYJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAASZmVlUHJpb3JpdHlBc3NldElkCQAAAgAAAAECAAAAJlVuYWJsZSB0byBzd2FwIFdBVkVTIG9yIHByaW9yaXR5IGFzc2V0AwkAAGcAAAACAAAAAAAAAAAABQAAAAlwbXRBbW91bnQJAAACAAAAAQIAAAAfUGF5bWVudCBhbW91bnQgbXVzdCBiZSBwb3NpdGl2ZQkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAACnBtdEFzc2V0SWQFAAAACXBtdEFtb3VudAMJAQAAAAIhPQAAAAIIBQAAAANpbnYAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAG09ubHkgc2VsZiBjYWxscyBhcmUgYWxsb3dlZAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAADaW52AAAACmZlZUFzc2V0SWQJAAACAAAAAQIAAAAhT25seSBXQVZFUyBhbGxvd2VkIGZvciBmZWVBc3NldElk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", "height": 3549626, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8QuLefVAT8YVkZsUzukK5XbrBdgk9jLqffkNBNVC5cdE Next: 2xGeHG3MYXDTeAgborR4LnPtXsBD82oHNPPFxEuGjtAp Diff:
OldNewDifferences
5656
5757
5858 @Callable(inv)
59-func PRIVATE_swap (amountsIn,addresses,assetsToReceive,estReceived,slippageTolerance,minReceived,options) = {
60- let pmt = if ((size(inv.payments) != 1))
61- then throw("Single payment required")
62- else if (if (!(isDefined(inv.payments[0].assetId)))
63- then true
64- else (inv.payments[0].assetId == feePriorityAssetId))
65- then throw("Unable to swap WAVES or priority asset")
66- else inv.payments[0]
67- let pmtAssetId = value(pmt.assetId)
59+func PRIVATE_swap (amountsIn,addresses,assetsToReceive,estReceived,slippageTolerance,minReceived,options,pmtAmount,pmtAssetStr) = {
60+ let pmtAssetId = fromBase58String(pmtAssetStr)
61+ let pmt = if (if ((pmtAssetStr == "WAVES"))
62+ then true
63+ else (pmtAssetId == feePriorityAssetId))
64+ then throw("Unable to swap WAVES or priority asset")
65+ else if ((0 >= pmtAmount))
66+ then throw("Payment amount must be positive")
67+ else AttachedPayment(pmtAssetId, pmtAmount)
6868 if ((inv.caller != this))
6969 then throw("Only self calls are allowed")
7070 else if (isDefined(inv.feeAssetId))
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
3636 let swapFeeLimit = getInteger(this, "Fee_swapFeeLimit")
3737
3838 let feeAssetSwapInterval = valueOrElse(getInteger(this, "Fee_assetSwapInterval"), 0)
3939
4040 func getLastFeeSwapTimestamp (assetId) = valueOrElse(getInteger(this, key_lastFeeSwapTimestamp(toBase58String(assetId))), 0)
4141
4242
4343 func setLastFeeSwapTimestamp (assetId,timestamp) = [IntegerEntry(key_lastFeeSwapTimestamp(toBase58String(assetId)), timestamp)]
4444
4545
4646 @Callable(inv)
4747 func claimReferrerReward (amount,assetId) = {
4848 let asset = getAssetId(assetId)
4949 if ((proxyAddress != inv.caller))
5050 then throw("only self calls or by collector are allowed")
5151 else if ((0 >= amount))
5252 then throw("Incorrect reward amount")
5353 else [ScriptTransfer(proxyAddress, amount, asset)]
5454 }
5555
5656
5757
5858 @Callable(inv)
59-func PRIVATE_swap (amountsIn,addresses,assetsToReceive,estReceived,slippageTolerance,minReceived,options) = {
60- let pmt = if ((size(inv.payments) != 1))
61- then throw("Single payment required")
62- else if (if (!(isDefined(inv.payments[0].assetId)))
63- then true
64- else (inv.payments[0].assetId == feePriorityAssetId))
65- then throw("Unable to swap WAVES or priority asset")
66- else inv.payments[0]
67- let pmtAssetId = value(pmt.assetId)
59+func PRIVATE_swap (amountsIn,addresses,assetsToReceive,estReceived,slippageTolerance,minReceived,options,pmtAmount,pmtAssetStr) = {
60+ let pmtAssetId = fromBase58String(pmtAssetStr)
61+ let pmt = if (if ((pmtAssetStr == "WAVES"))
62+ then true
63+ else (pmtAssetId == feePriorityAssetId))
64+ then throw("Unable to swap WAVES or priority asset")
65+ else if ((0 >= pmtAmount))
66+ then throw("Payment amount must be positive")
67+ else AttachedPayment(pmtAssetId, pmtAmount)
6868 if ((inv.caller != this))
6969 then throw("Only self calls are allowed")
7070 else if (isDefined(inv.feeAssetId))
7171 then throw("Only WAVES allowed for feeAssetId")
7272 else if (if (isDefined(swapFeeLimit))
7373 then (inv.fee > value(swapFeeLimit))
7474 else false)
7575 then throw((("Maximum fee (" + toString(value(swapFeeLimit))) + ") is exceeded"))
7676 else if ((feeAssetSwapInterval > (lastBlock.timestamp - getLastFeeSwapTimestamp(pmtAssetId))))
7777 then throw((("Swap is only possible once every " + toString((feeAssetSwapInterval / 3600000))) + " hours"))
7878 else {
7979 let balanceBefore = assetBalance(this, feePriorityAssetId)
8080 if ((balanceBefore == balanceBefore))
8181 then {
8282 let swap = invoke(proxyAddress, "swap", [amountsIn, addresses, assetsToReceive, estReceived, slippageTolerance, minReceived, options], [pmt])
8383 if ((swap == swap))
8484 then {
8585 let balanceAfter = assetBalance(this, feePriorityAssetId)
8686 if ((balanceAfter == balanceAfter))
8787 then {
8888 let received = (balanceAfter - balanceBefore)
8989 if ((0 >= received))
9090 then throw("Swap is only allowed to the priority asset")
9191 else if ((feePriorityMinReceived > received))
9292 then throw(("Swap result is less than " + toString(feePriorityMinReceived)))
9393 else setLastFeeSwapTimestamp(pmtAssetId, lastBlock.timestamp)
9494 }
9595 else throw("Strict value is not equal to itself.")
9696 }
9797 else throw("Strict value is not equal to itself.")
9898 }
9999 else throw("Strict value is not equal to itself.")
100100 }
101101 }
102102
103103
104104 @Verifier(tx)
105105 func verify () = {
106106 let maybeOracle = addressFromString(valueOrElse(getString(this, "Oracle"), ""))
107107 let maybeAdminKeys = if (isDefined(maybeOracle))
108108 then getString(value(maybeOracle), "AdminKeys")
109109 else unit
110110 let isFeeSwapInvoke = match tx {
111111 case tx: InvokeScriptTransaction =>
112112 if ((tx.dApp == this))
113113 then (tx.function == "PRIVATE_swap")
114114 else false
115115 case _ =>
116116 false
117117 }
118118 if (if (isDefined(feeManager))
119119 then isFeeSwapInvoke
120120 else false)
121121 then sigVerify(tx.bodyBytes, tx.proofs[0], value(feeManager))
122122 else match maybeAdminKeys {
123123 case adminKeysStr: String =>
124124 let adminKeys = {
125125 let stringKeys = split(adminKeysStr, ",")
126126 [fromBase58String(stringKeys[0]), fromBase58String(stringKeys[1]), fromBase58String(stringKeys[2])]
127127 }
128128 func verifyByAllKeys (proof) = if (sigVerify(tx.bodyBytes, proof, adminKeys[0]))
129129 then 1
130130 else if (sigVerify(tx.bodyBytes, proof, adminKeys[1]))
131131 then 10
132132 else if (sigVerify(tx.bodyBytes, proof, adminKeys[2]))
133133 then 100
134134 else 0
135135
136136 containsElement([110, 101, 11], (verifyByAllKeys(tx.proofs[0]) + verifyByAllKeys(tx.proofs[1])))
137137 case _ =>
138138 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
139139 }
140140 }
141141

github/deemru/w8io/3ef1775 
39.67 ms