tx · DmLFNihyMpgvSAWZ6DmcB7rTfmUPMjMne4cZi7oStGC7

3MtjjEoEs6Rcqkh8tYjPmBxZND58FuMtRWN:  -0.05000000 Waves

2022.09.08 15:20 [2220120] smart account 3MtjjEoEs6Rcqkh8tYjPmBxZND58FuMtRWN > SELF 0.00000000 Waves

{ "type": 13, "id": "DmLFNihyMpgvSAWZ6DmcB7rTfmUPMjMne4cZi7oStGC7", "fee": 5000000, "feeAssetId": null, "timestamp": 1662639644250, "version": 2, "chainId": 84, "sender": "3MtjjEoEs6Rcqkh8tYjPmBxZND58FuMtRWN", "senderPublicKey": "GR35NTmt1JUgBMwuwSK6aFSmLN7g6eZKbYvfSV3ThdWR", "proofs": [ "2avY2vzXbVGqQX28biJ4k8sXMB9h1XKCNLmS7FWB3ZX1xTvYKFZGbHjwuhWmGAPPcJfGZkBtBZc8Q3qEE8DDizey" ], "script": "base64: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bGxlZDAJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB8AAAABCQABLAAAAAIJAAEsAAAAAgIAAAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAtfZnVsZmlsbGVkMAIAAAAWQ2Fubm90IGZpbmQgZnVsZmlsbGVkMAQAAAAQb3JkZXJBbW91bnQwTGVmdAkAAGUAAAACBQAAAAxvcmRlckFtb3VudDAFAAAAD29yZGVyRnVsZmlsbGVkMAQAAAALb3JkZXJBc3NldDEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAdfdG9rZW4xAgAAABJDYW5ub3QgZmluZCB0b2tlbjEEAAAADG9yZGVyQW1vdW50MQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHwAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAACF9hbW91bnQxAgAAABNDYW5ub3QgZmluZCBhbW91bnQxBAAAAA9vcmRlckZ1bGZpbGxlZDEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB8AAAABCQABLAAAAAIJAAEsAAAAAgIAAAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAtfZnVsZmlsbGVkMQIAAAAWQ2Fubm90IGZpbmQgZnVsZmlsbGVkMQQAAAAQb3JkZXJBbW91bnQxTGVmdAkAAGUAAAACBQAAAAxvcmRlckFtb3VudDEFAAAAD29yZGVyRnVsZmlsbGVkMQMJAQAAAAIhPQAAAAIFAAAAC29yZGVyU3RhdHVzAgAAAAZhY3RpdmUJAAACAAAAAQIAAAAgT3JkZXIgYWxyZWFkeSBjbG9zZWQgb3IgY2FuY2VsZWQDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAHVlvdSBzaG91bGQgdG8gcHJvdmlkZSBwYXltZW50BAAAAA1jYWxsZXJBZGRyZXNzCAUAAAABaQAAAAZjYWxsZXIEAAAADG93bmVyQWRkcmVzcwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAKb3JkZXJPd25lcgQAAAANcGF5bWVudEFzc2V0MQkBAAAADmdldEFzc2V0U3RyaW5nAAAAAQgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAOcGF5bWVudEFtb3VudDEICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAMJAQAAAAIhPQAAAAIFAAAADXBheW1lbnRBc3NldDEFAAAAC29yZGVyQXNzZXQxCQAAAgAAAAECAAAAE1dyb25nIHBheW1lbnQgYXNzZXQDCQAAZwAAAAIFAAAADnBheW1lbnRBbW91bnQxBQAAABBvcmRlckFtb3VudDFMZWZ0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADWNhbGxlckFkZHJlc3MJAABlAAAAAgUAAAAOcGF5bWVudEFtb3VudDEFAAAAEG9yZGVyQW1vdW50MUxlZnQJAQAAAA1nZXRBc3NldEJ5dGVzAAAAAQUAAAALb3JkZXJBc3NldDEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAANY2FsbGVyQWRkcmVzcwUAAAAQb3JkZXJBbW91bnQwTGVmdAkBAAAADWdldEFzc2V0Qnl0ZXMAAAABBQAAAAtvcmRlckFzc2V0MAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAxvd25lckFkZHJlc3MFAAAAEG9yZGVyQW1vdW50MUxlZnQJAQAAAA1nZXRBc3NldEJ5dGVzAAAAAQUAAAANcGF5bWVudEFzc2V0MQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAALX2Z1bGZpbGxlZDAJAABkAAAAAgUAAAAPb3JkZXJGdWxmaWxsZWQwBQAAABBvcmRlckFtb3VudDBMZWZ0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAtfZnVsZmlsbGVkMQkAAGQAAAACBQAAAA9vcmRlckZ1bGZpbGxlZDEFAAAAEG9yZGVyQW1vdW50MUxlZnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAAHX3N0YXR1cwIAAAAGY2xvc2VkBQAAAANuaWwEAAAAB2Ftb3VudDAJAQAAAAhmcmFjdGlvbgAAAAQFAAAADG9yZGVyQW1vdW50MAUAAAAOcGF5bWVudEFtb3VudDEFAAAADG9yZGVyQW1vdW50MQUAAAAFRkxPT1IJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAMb3duZXJBZGRyZXNzBQAAAA5wYXltZW50QW1vdW50MQkBAAAADWdldEFzc2V0Qnl0ZXMAAAABBQAAAA1wYXltZW50QXNzZXQxCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADWNhbGxlckFkZHJlc3MFAAAAB2Ftb3VudDAJAQAAAA1nZXRBc3NldEJ5dGVzAAAAAQUAAAALb3JkZXJBc3NldDAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAAC19mdWxmaWxsZWQwCQAAZAAAAAIFAAAAD29yZGVyRnVsZmlsbGVkMAUAAAAHYW1vdW50MAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAALX2Z1bGZpbGxlZDEJAABkAAAAAgUAAAAPb3JkZXJGdWxmaWxsZWQxBQAAAA5wYXltZW50QW1vdW50MQUAAAADbmlsAAAAAWkBAAAAC2NhbmNlbE9yZGVyAAAAAQAAAAdvcmRlcklkBAAAAApvcmRlck93bmVyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQiAAAAAQkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAAGX293bmVyAgAAABdDYW5ub3QgZmluZCBvcmRlciBvd25lcgQAAAALb3JkZXJTdGF0dXMJAAQiAAAAAQkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAAHX3N0YXR1cwQAAAALb3JkZXJBc3NldDAJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAdfdG9rZW4wAgAAABJDYW5ub3QgZmluZCB0b2tlbjAEAAAADG9yZGVyQW1vdW50MAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHwAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAZvcmRlcl8FAAAAB29yZGVySWQCAAAACF9hbW91bnQwAgAAABNDYW5ub3QgZmluZCBhbW91bnQwBAAAAA9vcmRlckZ1bGZpbGxlZDAJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB8AAAABCQABLAAAAAIJAAEsAAAAAgIAAAAGb3JkZXJfBQAAAAdvcmRlcklkAgAAAAtfZnVsZmlsbGVkMAIAAAAWQ2Fubm90IGZpbmQgZnVsZmlsbGVkMAQAAAAQb3JkZXJBbW91bnQwTGVmdAkAAGUAAAACBQAAAAxvcmRlckFtb3VudDAFAAAAD29yZGVyRnVsZmlsbGVkMAMJAQAAAAIhPQAAAAIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwUAAAAKb3JkZXJPd25lcgkAAAIAAAABAgAAABdZb3UgY2Fubm90IGNhbmNlbCBvcmRlcgMJAQAAAAIhPQAAAAIFAAAAC29yZGVyU3RhdHVzAgAAAAZhY3RpdmUJAAACAAAAAQIAAAAbb3JkZXIgaXMgY2xvc2VkIG9yIGNhbmNlbGVkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAACm9yZGVyT3duZXIFAAAAEG9yZGVyQW1vdW50MExlZnQJAQAAAA1nZXRBc3NldEJ5dGVzAAAAAQUAAAALb3JkZXJBc3NldDAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABm9yZGVyXwUAAAAHb3JkZXJJZAIAAAAHX3N0YXR1cwIAAAAIY2FuY2VsZWQFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V54W7cDA==", "height": 2220120, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GugKcVbvfuYHjANwLsKfoXSYxNU56WaXLA46QmgHkD5H Next: 6Mg8yw3pcR9ACUaWfYJmtemXxjVtzEFijULHqBHi8Tn1 Diff:
OldNewDifferences
2828 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
2929 then unit
3030 else fromBase58String(assetIdStr)
31-
32-
33-func _cancelOrder (orderId,caller) = {
34- let orderOwner = valueOrErrorMessage(getString((("order_" + orderId) + "_owner")), "Cannot find order owner")
35- let orderStatus = getString((("order_" + orderId) + "_status"))
36- let orderAsset0 = valueOrErrorMessage(getString((("order_" + orderId) + "_token0")), "Cannot find token0")
37- let orderAmount0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount0")), "Cannot find amount0")
38- let orderFulfilled0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
39- let orderAmount0Left = (orderAmount0 - orderFulfilled0)
40- if ((caller != orderOwner))
41- then throw("You cannot cancel order")
42- else if ((orderStatus != "active"))
43- then throw("order is closed or canceled")
44- else [ScriptTransfer(addressFromStringValue(orderOwner), orderAmount0Left, getAssetBytes(orderAsset0)), StringEntry((("order_" + orderId) + "_status"), "canceled")]
45- }
4631
4732
4833 @Callable(i)
10489
10590
10691 @Callable(i)
107-func cancelOrder (orders) = {
108- let orderIdList = split(orders, ",")
109- func doCancel (accum,orderId) = (accum ++ _cancelOrder(orderId, toBase58String(i.caller.bytes)))
110-
111- let canceledOrders = {
112- let $l = orderIdList
113- let $s = size($l)
114- let $acc0 = nil
115- func $f0_1 ($a,$i) = if (($i >= $s))
116- then $a
117- else doCancel($a, $l[$i])
118-
119- func $f0_2 ($a,$i) = if (($i >= $s))
120- then $a
121- else throw("List size exceeds 26")
122-
123- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26)
124- }
125- canceledOrders
92+func cancelOrder (orderId) = {
93+ let orderOwner = valueOrErrorMessage(getString((("order_" + orderId) + "_owner")), "Cannot find order owner")
94+ let orderStatus = getString((("order_" + orderId) + "_status"))
95+ let orderAsset0 = valueOrErrorMessage(getString((("order_" + orderId) + "_token0")), "Cannot find token0")
96+ let orderAmount0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount0")), "Cannot find amount0")
97+ let orderFulfilled0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
98+ let orderAmount0Left = (orderAmount0 - orderFulfilled0)
99+ if ((toBase58String(i.caller.bytes) != orderOwner))
100+ then throw("You cannot cancel order")
101+ else if ((orderStatus != "active"))
102+ then throw("order is closed or canceled")
103+ else [ScriptTransfer(addressFromStringValue(orderOwner), orderAmount0Left, getAssetBytes(orderAsset0)), StringEntry((("order_" + orderId) + "_status"), "canceled")]
126104 }
127105
128106
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetString (key) = match getString(this, key) {
55 case b: String =>
66 b
77 case _ =>
88 ""
99 }
1010
1111
1212 func tryGetInteger (key) = match getInteger(this, key) {
1313 case b: Int =>
1414 b
1515 case _ =>
1616 0
1717 }
1818
1919
2020 func getAssetString (assetId) = match assetId {
2121 case b: ByteVector =>
2222 toBase58String(b)
2323 case _ =>
2424 "WAVES"
2525 }
2626
2727
2828 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
2929 then unit
3030 else fromBase58String(assetIdStr)
31-
32-
33-func _cancelOrder (orderId,caller) = {
34- let orderOwner = valueOrErrorMessage(getString((("order_" + orderId) + "_owner")), "Cannot find order owner")
35- let orderStatus = getString((("order_" + orderId) + "_status"))
36- let orderAsset0 = valueOrErrorMessage(getString((("order_" + orderId) + "_token0")), "Cannot find token0")
37- let orderAmount0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount0")), "Cannot find amount0")
38- let orderFulfilled0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
39- let orderAmount0Left = (orderAmount0 - orderFulfilled0)
40- if ((caller != orderOwner))
41- then throw("You cannot cancel order")
42- else if ((orderStatus != "active"))
43- then throw("order is closed or canceled")
44- else [ScriptTransfer(addressFromStringValue(orderOwner), orderAmount0Left, getAssetBytes(orderAsset0)), StringEntry((("order_" + orderId) + "_status"), "canceled")]
45- }
4631
4732
4833 @Callable(i)
4934 func createOrder (asset1,amount1) = {
5035 let newOrdersAmount = (tryGetInteger("global_ordersAmount") + 1)
5136 let orderId = toString(newOrdersAmount)
5237 if ((size(i.payments) != 1))
5338 then throw("You should to provide payment")
5439 else if ((0 >= amount1))
5540 then throw("Amount1 cannot be less or equals 0")
5641 else {
5742 let asset0 = getAssetString(i.payments[0].assetId)
5843 let amount0 = i.payments[0].amount
5944 let userOrders = tryGetString((("user_" + toString(i.caller)) + "_orders"))
6045 let newUserOrders = match userOrders {
6146 case _ =>
6247 if (("" == $match0))
6348 then orderId
6449 else ((userOrders + ",") + orderId)
6550 }
6651 [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"), StringEntry((("user_" + toString(i.caller)) + "_orders"), newUserOrders)]
6752 }
6853 }
6954
7055
7156
7257 @Callable(i)
7358 func fulfillOrder (orderId) = {
7459 let orderOwner = valueOrErrorMessage(getString((("order_" + orderId) + "_owner")), "Cannot find order owner")
7560 let orderStatus = getString((("order_" + orderId) + "_status"))
7661 let orderAsset0 = valueOrErrorMessage(getString((("order_" + orderId) + "_token0")), "Cannot find token0")
7762 let orderAmount0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount0")), "Cannot find amount0")
7863 let orderFulfilled0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
7964 let orderAmount0Left = (orderAmount0 - orderFulfilled0)
8065 let orderAsset1 = valueOrErrorMessage(getString((("order_" + orderId) + "_token1")), "Cannot find token1")
8166 let orderAmount1 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount1")), "Cannot find amount1")
8267 let orderFulfilled1 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled1")), "Cannot find fulfilled1")
8368 let orderAmount1Left = (orderAmount1 - orderFulfilled1)
8469 if ((orderStatus != "active"))
8570 then throw("Order already closed or canceled")
8671 else if ((size(i.payments) != 1))
8772 then throw("You should to provide payment")
8873 else {
8974 let callerAddress = i.caller
9075 let ownerAddress = addressFromStringValue(orderOwner)
9176 let paymentAsset1 = getAssetString(i.payments[0].assetId)
9277 let paymentAmount1 = i.payments[0].amount
9378 if ((paymentAsset1 != orderAsset1))
9479 then throw("Wrong payment asset")
9580 else if ((paymentAmount1 >= orderAmount1Left))
9681 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")]
9782 else {
9883 let amount0 = fraction(orderAmount0, paymentAmount1, orderAmount1, FLOOR)
9984 [ScriptTransfer(ownerAddress, paymentAmount1, getAssetBytes(paymentAsset1)), ScriptTransfer(callerAddress, amount0, getAssetBytes(orderAsset0)), IntegerEntry((("order_" + orderId) + "_fulfilled0"), (orderFulfilled0 + amount0)), IntegerEntry((("order_" + orderId) + "_fulfilled1"), (orderFulfilled1 + paymentAmount1))]
10085 }
10186 }
10287 }
10388
10489
10590
10691 @Callable(i)
107-func cancelOrder (orders) = {
108- let orderIdList = split(orders, ",")
109- func doCancel (accum,orderId) = (accum ++ _cancelOrder(orderId, toBase58String(i.caller.bytes)))
110-
111- let canceledOrders = {
112- let $l = orderIdList
113- let $s = size($l)
114- let $acc0 = nil
115- func $f0_1 ($a,$i) = if (($i >= $s))
116- then $a
117- else doCancel($a, $l[$i])
118-
119- func $f0_2 ($a,$i) = if (($i >= $s))
120- then $a
121- else throw("List size exceeds 26")
122-
123- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26)
124- }
125- canceledOrders
92+func cancelOrder (orderId) = {
93+ let orderOwner = valueOrErrorMessage(getString((("order_" + orderId) + "_owner")), "Cannot find order owner")
94+ let orderStatus = getString((("order_" + orderId) + "_status"))
95+ let orderAsset0 = valueOrErrorMessage(getString((("order_" + orderId) + "_token0")), "Cannot find token0")
96+ let orderAmount0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount0")), "Cannot find amount0")
97+ let orderFulfilled0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
98+ let orderAmount0Left = (orderAmount0 - orderFulfilled0)
99+ if ((toBase58String(i.caller.bytes) != orderOwner))
100+ then throw("You cannot cancel order")
101+ else if ((orderStatus != "active"))
102+ then throw("order is closed or canceled")
103+ else [ScriptTransfer(addressFromStringValue(orderOwner), orderAmount0Left, getAssetBytes(orderAsset0)), StringEntry((("order_" + orderId) + "_status"), "canceled")]
126104 }
127105
128106
129107 @Verifier(tx)
130108 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
131109

github/deemru/w8io/169f3d6 
32.75 ms