tx · GnzruFwMa3XMUBLPDzrLSxitFfSh5HZhfTqfdMqUDfBP

3NAm3p62bo4q3yMzWjJ6M4eEDBRYXxqkXLQ:  -0.05000000 Waves

2022.09.06 23:31 [2217748] smart account 3NAm3p62bo4q3yMzWjJ6M4eEDBRYXxqkXLQ > SELF 0.00000000 Waves

{ "type": 13, "id": "GnzruFwMa3XMUBLPDzrLSxitFfSh5HZhfTqfdMqUDfBP", "fee": 5000000, "feeAssetId": null, "timestamp": 1662496369366, "version": 2, "chainId": 84, "sender": "3NAm3p62bo4q3yMzWjJ6M4eEDBRYXxqkXLQ", "senderPublicKey": "6ftcjfxzkWUUwSQuuRg45YwriXgjJ5RMUoG9etzbvvs3", "proofs": [ "ZfFGjC8ksCear7czoR3Nc21K4gVUbtcbRtyAUZUnFD6xkTuhx6SK13W8coYqRbgbNKzBo8ewGSiuNCfforBErNP" ], "script": "base64:AAIFAAAAAAAAABIIAhIECgIIARIDCgEIEgMKAQgAAAADAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIAAAAAAAAAAAABAAAADmdldEFzc2V0U3RyaW5nAAAAAQAAAAdhc3NldElkBAAAAAckbWF0Y2gwBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAFiBQAAAAckbWF0Y2gwCQACWAAAAAEFAAAAAWICAAAABVdBVkVTAQAAAA1nZXRBc3NldEJ5dGVzAAAAAQAAAAphc3NldElkU3RyAwkAAAAAAAACBQAAAAphc3NldElkU3RyAgAAAAVXQVZFUwUAAAAEdW5pdAkAAlkAAAABBQAAAAphc3NldElkU3RyAAAAAwAAAAFpAQAAAAtjcmVhdGVPcmRlcgAAAAIAAAAGYXNzZXQxAAAAB2Ftb3VudDEEAAAAD25ld09yZGVyc0Ftb3VudAkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAE2dsb2JhbF9vcmRlcnNBbW91bnQAAAAAAAAAAAEEAAAAB29yZGVySWQJAAGkAAAAAQUAAAAPbmV3T3JkZXJzQW1vdW50AwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1Zb3Ugc2hvdWxkIHRvIHByb3ZpZGUgcGF5bWVudAMJAABnAAAAAgAAAAAAAAAAAAUAAAAHYW1vdW50MQkAAAIAAAABAgAAACJBbW91bnQxIGNhbm5vdCBiZSBsZXNzIG9yIGVxdWFscyAwBAAAAAZhc3NldDAJAQAAAA5nZXRBc3NldFN0cmluZwAAAAEICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAAB2Ftb3VudDAICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAATZ2xvYmFsX29yZGVyc0Ftb3VudAUAAAAPbmV3T3JkZXJzQW1vdW50CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAAB190b2tlbjAFAAAABmFzc2V0MAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAAIX2Ftb3VudDAFAAAAB2Ftb3VudDAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAACF9hbW91bnQxBQAAAAdhbW91bnQxCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAAB190b2tlbjEFAAAABmFzc2V0MQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAALX2Z1bGZpbGxlZDAAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAAC19mdWxmaWxsZWQxAAAAAAAAAAAACQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAABl9vd25lcgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAAHX3N0YXR1cwIAAAAGYWN0aXZlCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXICAAAACV9vdm5lck9mXwUAAAAHb3JkZXJJZAYFAAAAA25pbAAAAAFpAQAAAAxmdWxmaWxsT3JkZXIAAAABAAAAB29yZGVySWQEAAAACm9yZGVyT3duZXIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAZfb3duZXICAAAAF0Nhbm5vdCBmaW5kIG9yZGVyIG93bmVyBAAAAAtvcmRlclN0YXR1cwkABCIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAdfc3RhdHVzBAAAAAtvcmRlckFzc2V0MAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEIgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAAB190b2tlbjACAAAAEkNhbm5vdCBmaW5kIHRva2VuMAQAAAAMb3JkZXJBbW91bnQwCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQfAAAAAQkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAAIX2Ftb3VudDACAAAAE0Nhbm5vdCBmaW5kIGFtb3VudDAEAAAAD29yZGVyRnVsZmlsbGVkMAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHwAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAAC19mdWxmaWxsZWQwAgAAABZDYW5ub3QgZmluZCBmdWxmaWxsZWQwBAAAABBvcmRlckFtb3VudDBMZWZ0CQAAZQAAAAIFAAAADG9yZGVyQW1vdW50MAUAAAAPb3JkZXJGdWxmaWxsZWQwBAAAAAtvcmRlckFzc2V0MQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEIgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAAB190b2tlbjECAAAAEkNhbm5vdCBmaW5kIHRva2VuMQQAAAAMb3JkZXJBbW91bnQxCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQfAAAAAQkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAAIX2Ftb3VudDECAAAAE0Nhbm5vdCBmaW5kIGFtb3VudDEEAAAAD29yZGVyRnVsZmlsbGVkMQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHwAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAAC19mdWxmaWxsZWQxAgAAABZDYW5ub3QgZmluZCBmdWxmaWxsZWQxBAAAABBvcmRlckFtb3VudDFMZWZ0CQAAZQAAAAIFAAAADG9yZGVyQW1vdW50MQUAAAAPb3JkZXJGdWxmaWxsZWQxAwkBAAAAAiE9AAAAAgUAAAALb3JkZXJTdGF0dXMCAAAABmFjdGl2ZQkAAAIAAAABAgAAACBPcmRlciBhbHJlYWR5IGNsb3NlZCBvciBjYW5jZWxlZAMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAdWW91IHNob3VsZCB0byBwcm92aWRlIHBheW1lbnQEAAAADWNhbGxlckFkZHJlc3MIBQAAAAFpAAAABmNhbGxlcgQAAAAMb3duZXJBZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAApvcmRlck93bmVyBAAAAA1wYXltZW50QXNzZXQxCQEAAAAOZ2V0QXNzZXRTdHJpbmcAAAABCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAA5wYXltZW50QW1vdW50MQgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50AwkBAAAAAiE9AAAAAgUAAAANcGF5bWVudEFzc2V0MQUAAAALb3JkZXJBc3NldDEJAAACAAAAAQIAAAATV3JvbmcgcGF5bWVudCBhc3NldAMJAABnAAAAAgUAAAAOcGF5bWVudEFtb3VudDEFAAAAEG9yZGVyQW1vdW50MUxlZnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAANY2FsbGVyQWRkcmVzcwkAAGUAAAACBQAAAA5wYXltZW50QW1vdW50MQUAAAAQb3JkZXJBbW91bnQxTGVmdAkBAAAADWdldEFzc2V0Qnl0ZXMAAAABBQAAAAtvcmRlckFzc2V0MQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA1jYWxsZXJBZGRyZXNzBQAAABBvcmRlckFtb3VudDBMZWZ0CQEAAAANZ2V0QXNzZXRCeXRlcwAAAAEFAAAAC29yZGVyQXNzZXQwCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADG93bmVyQWRkcmVzcwUAAAAQb3JkZXJBbW91bnQxTGVmdAkBAAAADWdldEFzc2V0Qnl0ZXMAAAABBQAAAA1wYXltZW50QXNzZXQxCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAtfZnVsZmlsbGVkMAkAAGQAAAACBQAAAA9vcmRlckZ1bGZpbGxlZDAFAAAAEG9yZGVyQW1vdW50MExlZnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAAC19mdWxmaWxsZWQxCQAAZAAAAAIFAAAAD29yZGVyRnVsZmlsbGVkMQUAAAAQb3JkZXJBbW91bnQxTGVmdAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAdfc3RhdHVzAgAAAAZjbG9zZWQFAAAAA25pbAQAAAAHYW1vdW50MAkBAAAACGZyYWN0aW9uAAAABAUAAAAMb3JkZXJBbW91bnQwBQAAAA5wYXltZW50QW1vdW50MQUAAAAMb3JkZXJBbW91bnQxBQAAAAVGTE9PUgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAxvd25lckFkZHJlc3MFAAAADnBheW1lbnRBbW91bnQxCQEAAAANZ2V0QXNzZXRCeXRlcwAAAAEFAAAADXBheW1lbnRBc3NldDEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAANY2FsbGVyQWRkcmVzcwUAAAAHYW1vdW50MAkBAAAADWdldEFzc2V0Qnl0ZXMAAAABBQAAAAtvcmRlckFzc2V0MAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAALX2Z1bGZpbGxlZDAJAABkAAAAAgUAAAAPb3JkZXJGdWxmaWxsZWQwBQAAAAdhbW91bnQwCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAtfZnVsZmlsbGVkMQkAAGQAAAACBQAAAA9vcmRlckZ1bGZpbGxlZDEFAAAADnBheW1lbnRBbW91bnQxBQAAAANuaWwAAAABaQEAAAALY2FuY2VsT3JkZXIAAAABAAAAB29yZGVySWQEAAAACm9yZGVyT3duZXIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAZfb3duZXICAAAAF0Nhbm5vdCBmaW5kIG9yZGVyIG93bmVyBAAAAAtvcmRlclN0YXR1cwkABCIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAdfc3RhdHVzBAAAAAtvcmRlckFzc2V0MAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEIgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAAB190b2tlbjACAAAAEkNhbm5vdCBmaW5kIHRva2VuMAQAAAAMb3JkZXJBbW91bnQwCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQfAAAAAQkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAAIX2Ftb3VudDACAAAAE0Nhbm5vdCBmaW5kIGFtb3VudDAEAAAAD29yZGVyRnVsZmlsbGVkMAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHwAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAAC19mdWxmaWxsZWQwAgAAABZDYW5ub3QgZmluZCBmdWxmaWxsZWQwBAAAABBvcmRlckFtb3VudDBMZWZ0CQAAZQAAAAIFAAAADG9yZGVyQW1vdW50MAUAAAAPb3JkZXJGdWxmaWxsZWQwAwkBAAAAAiE9AAAAAgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBQAAAApvcmRlck93bmVyCQAAAgAAAAECAAAAF1lvdSBjYW5ub3QgY2FuY2VsIG9yZGVyAwkBAAAAAiE9AAAAAgUAAAALb3JkZXJTdGF0dXMCAAAABmFjdGl2ZQkAAAIAAAABAgAAABtvcmRlciBpcyBjbG9zZWQgb3IgY2FuY2VsZWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAKb3JkZXJPd25lcgUAAAAQb3JkZXJBbW91bnQwTGVmdAkBAAAADWdldEFzc2V0Qnl0ZXMAAAABBQAAAAtvcmRlckFzc2V0MAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAdfc3RhdHVzAgAAAAhjYW5jZWxlZAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXn4qo/g", "height": 2217748, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7WSrwdvU6UjVHNNbZPP5jUFAKBdr2FmBMwpkZ8GQuiom Next: 6qGpGLMFLYXF99uFEHToFi6dzNppP4gap4De5frZV5tu Diff:
OldNewDifferences
2424
2525 @Callable(i)
2626 func createOrder (asset1,amount1) = {
27- let newOrdersAmount = (tryGetInteger("global_furnacesAmount") + 1)
27+ let newOrdersAmount = (tryGetInteger("global_ordersAmount") + 1)
2828 let orderId = toString(newOrdersAmount)
2929 if ((size(i.payments) != 1))
3030 then throw("You should to provide payment")
3333 else {
3434 let asset0 = getAssetString(i.payments[0].assetId)
3535 let amount0 = i.payments[0].amount
36-[IntegerEntry("global_furnacesAmount", newOrdersAmount), StringEntry((("order_" + orderId) + "_token0"), asset0), IntegerEntry((("order_" + orderId) + "_amount0"), amount0), IntegerEntry((("order_" + orderId) + "_amount1"), amount1), StringEntry((("order_" + orderId) + "_token1"), asset1), IntegerEntry((("order_" + orderId) + "_fulfilled0"), 0), IntegerEntry((("order_" + orderId) + "_fulfilled1"), 0), StringEntry((("order_" + orderId) + "_owner"), toString(i.caller)), StringEntry((("order_" + orderId) + "_status"), "active")]
36+[IntegerEntry("global_ordersAmount", newOrdersAmount), StringEntry((("order_" + orderId) + "_token0"), asset0), IntegerEntry((("order_" + orderId) + "_amount0"), amount0), IntegerEntry((("order_" + orderId) + "_amount1"), amount1), StringEntry((("order_" + orderId) + "_token1"), asset1), IntegerEntry((("order_" + orderId) + "_fulfilled0"), 0), IntegerEntry((("order_" + orderId) + "_fulfilled1"), 0), StringEntry((("order_" + orderId) + "_owner"), toString(i.caller)), StringEntry((("order_" + orderId) + "_status"), "active"), BooleanEntry(((toString(i.caller) + "_ovnerOf_") + orderId), true)]
3737 }
3838 }
3939
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetInteger (key) = match getInteger(this, key) {
55 case b: Int =>
66 b
77 case _ =>
88 0
99 }
1010
1111
1212 func getAssetString (assetId) = match assetId {
1313 case b: ByteVector =>
1414 toBase58String(b)
1515 case _ =>
1616 "WAVES"
1717 }
1818
1919
2020 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
2121 then unit
2222 else fromBase58String(assetIdStr)
2323
2424
2525 @Callable(i)
2626 func createOrder (asset1,amount1) = {
27- let newOrdersAmount = (tryGetInteger("global_furnacesAmount") + 1)
27+ let newOrdersAmount = (tryGetInteger("global_ordersAmount") + 1)
2828 let orderId = toString(newOrdersAmount)
2929 if ((size(i.payments) != 1))
3030 then throw("You should to provide payment")
3131 else if ((0 >= amount1))
3232 then throw("Amount1 cannot be less or equals 0")
3333 else {
3434 let asset0 = getAssetString(i.payments[0].assetId)
3535 let amount0 = i.payments[0].amount
36-[IntegerEntry("global_furnacesAmount", newOrdersAmount), StringEntry((("order_" + orderId) + "_token0"), asset0), IntegerEntry((("order_" + orderId) + "_amount0"), amount0), IntegerEntry((("order_" + orderId) + "_amount1"), amount1), StringEntry((("order_" + orderId) + "_token1"), asset1), IntegerEntry((("order_" + orderId) + "_fulfilled0"), 0), IntegerEntry((("order_" + orderId) + "_fulfilled1"), 0), StringEntry((("order_" + orderId) + "_owner"), toString(i.caller)), StringEntry((("order_" + orderId) + "_status"), "active")]
36+[IntegerEntry("global_ordersAmount", newOrdersAmount), StringEntry((("order_" + orderId) + "_token0"), asset0), IntegerEntry((("order_" + orderId) + "_amount0"), amount0), IntegerEntry((("order_" + orderId) + "_amount1"), amount1), StringEntry((("order_" + orderId) + "_token1"), asset1), IntegerEntry((("order_" + orderId) + "_fulfilled0"), 0), IntegerEntry((("order_" + orderId) + "_fulfilled1"), 0), StringEntry((("order_" + orderId) + "_owner"), toString(i.caller)), StringEntry((("order_" + orderId) + "_status"), "active"), BooleanEntry(((toString(i.caller) + "_ovnerOf_") + orderId), true)]
3737 }
3838 }
3939
4040
4141
4242 @Callable(i)
4343 func fulfillOrder (orderId) = {
4444 let orderOwner = valueOrErrorMessage(getString((("order_" + orderId) + "_owner")), "Cannot find order owner")
4545 let orderStatus = getString((("order_" + orderId) + "_status"))
4646 let orderAsset0 = valueOrErrorMessage(getString((("order_" + orderId) + "_token0")), "Cannot find token0")
4747 let orderAmount0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount0")), "Cannot find amount0")
4848 let orderFulfilled0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
4949 let orderAmount0Left = (orderAmount0 - orderFulfilled0)
5050 let orderAsset1 = valueOrErrorMessage(getString((("order_" + orderId) + "_token1")), "Cannot find token1")
5151 let orderAmount1 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount1")), "Cannot find amount1")
5252 let orderFulfilled1 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled1")), "Cannot find fulfilled1")
5353 let orderAmount1Left = (orderAmount1 - orderFulfilled1)
5454 if ((orderStatus != "active"))
5555 then throw("Order already closed or canceled")
5656 else if ((size(i.payments) != 1))
5757 then throw("You should to provide payment")
5858 else {
5959 let callerAddress = i.caller
6060 let ownerAddress = addressFromStringValue(orderOwner)
6161 let paymentAsset1 = getAssetString(i.payments[0].assetId)
6262 let paymentAmount1 = i.payments[0].amount
6363 if ((paymentAsset1 != orderAsset1))
6464 then throw("Wrong payment asset")
6565 else if ((paymentAmount1 >= orderAmount1Left))
6666 then [ScriptTransfer(callerAddress, (paymentAmount1 - orderAmount1Left), getAssetBytes(orderAsset1)), ScriptTransfer(callerAddress, orderAmount0Left, getAssetBytes(orderAsset0)), ScriptTransfer(ownerAddress, orderAmount1Left, getAssetBytes(paymentAsset1)), IntegerEntry((("order_" + orderId) + "_fulfilled0"), (orderFulfilled0 + orderAmount0Left)), IntegerEntry((("order_" + orderId) + "_fulfilled1"), (orderFulfilled1 + orderAmount1Left)), StringEntry((("order_" + orderId) + "_status"), "closed")]
6767 else {
6868 let amount0 = fraction(orderAmount0, paymentAmount1, orderAmount1, FLOOR)
6969 [ScriptTransfer(ownerAddress, paymentAmount1, getAssetBytes(paymentAsset1)), ScriptTransfer(callerAddress, amount0, getAssetBytes(orderAsset0)), IntegerEntry((("order_" + orderId) + "_fulfilled0"), (orderFulfilled0 + amount0)), IntegerEntry((("order_" + orderId) + "_fulfilled1"), (orderFulfilled1 + paymentAmount1))]
7070 }
7171 }
7272 }
7373
7474
7575
7676 @Callable(i)
7777 func cancelOrder (orderId) = {
7878 let orderOwner = valueOrErrorMessage(getString((("order_" + orderId) + "_owner")), "Cannot find order owner")
7979 let orderStatus = getString((("order_" + orderId) + "_status"))
8080 let orderAsset0 = valueOrErrorMessage(getString((("order_" + orderId) + "_token0")), "Cannot find token0")
8181 let orderAmount0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount0")), "Cannot find amount0")
8282 let orderFulfilled0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
8383 let orderAmount0Left = (orderAmount0 - orderFulfilled0)
8484 if ((toBase58String(i.caller.bytes) != orderOwner))
8585 then throw("You cannot cancel order")
8686 else if ((orderStatus != "active"))
8787 then throw("order is closed or canceled")
8888 else [ScriptTransfer(addressFromStringValue(orderOwner), orderAmount0Left, getAssetBytes(orderAsset0)), StringEntry((("order_" + orderId) + "_status"), "canceled")]
8989 }
9090
9191
9292 @Verifier(tx)
9393 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
9494

github/deemru/w8io/873ac7e 
27.19 ms