tx · 6rjvrE5U9WAFFZYne2mFyT14NQFqoDR3yHhRgfizxFj5

3NAm3p62bo4q3yMzWjJ6M4eEDBRYXxqkXLQ:  -0.05000000 Waves

2022.09.08 16:53 [2220209] smart account 3NAm3p62bo4q3yMzWjJ6M4eEDBRYXxqkXLQ > SELF 0.00000000 Waves

{ "type": 13, "id": "6rjvrE5U9WAFFZYne2mFyT14NQFqoDR3yHhRgfizxFj5", "fee": 5000000, "feeAssetId": null, "timestamp": 1662645220879, "version": 2, "chainId": 84, "sender": "3NAm3p62bo4q3yMzWjJ6M4eEDBRYXxqkXLQ", "senderPublicKey": "6ftcjfxzkWUUwSQuuRg45YwriXgjJ5RMUoG9etzbvvs3", "proofs": [ "3occmck7wijSXkPWiB1JjQEPSj1QKy2n3VdDfgDkc3bz7cJfTHgRjRZeAHThxBwFLdbQUEKU9pqBJi7oVgcSurUu" ], "script": "base64:AAIFAAAAAAAAAAcIAhIDCgEIAAAAAQAAAAALZGFwcEFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVQ041OC0p7W7D2Iyr8zd5vjW8rmpfFgor8AAAABAAAAAWkBAAAACmNhbmNlbE1hbnkAAAABAAAAEW9yZGVySWRMaXN0U3RyaW5nBAAAAAtvcmRlcklkTGlzdAkABLUAAAACBQAAABFvcmRlcklkTGlzdFN0cmluZwIAAAABLAoBAAAAAmRvAAAAAgAAAANhY2MAAAADYXJnBAAAAANpbnYJAAP8AAAABAUAAAALZGFwcEFkZHJlc3MCAAAAC2NhbmNlbE9yZGVyCQAETAAAAAIFAAAAA2FyZwkABEwAAAACCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAANpbnYFAAAAA2ludgUAAAADYWNjCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQAAAAHaW52b2tlcwoAAAAAAiRsBQAAAAtvcmRlcklkTGlzdAoAAAAAAiRzCQABkAAAAAEFAAAAAiRsCgAAAAAFJGFjYzAAAAAAAAAAAAAKAQAAAAUkZjBfMQAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAQAAAAJkbwAAAAIFAAAAAiRhCQABkQAAAAIFAAAAAiRsBQAAAAIkaQoBAAAABSRmMF8yAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkAAAIAAAABAgAAABRMaXN0IHNpemUgZXhjZWVkcyA5NQkBAAAABSRmMF8yAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgkBAAAABSRmMF8xAAAAAgUAAAAFJGFjYzAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAMAAAAAAAAAAAQAAAAAAAAAAAUAAAAAAAAAAAYAAAAAAAAAAAcAAAAAAAAAAAgAAAAAAAAAAAkAAAAAAAAAAAoAAAAAAAAAAAsAAAAAAAAAAAwAAAAAAAAAAA0AAAAAAAAAAA4AAAAAAAAAAA8AAAAAAAAAABAAAAAAAAAAABEAAAAAAAAAABIAAAAAAAAAABMAAAAAAAAAABQAAAAAAAAAABUAAAAAAAAAABYAAAAAAAAAABcAAAAAAAAAABgAAAAAAAAAABkAAAAAAAAAABoAAAAAAAAAABsAAAAAAAAAABwAAAAAAAAAAB0AAAAAAAAAAB4AAAAAAAAAAB8AAAAAAAAAACAAAAAAAAAAACEAAAAAAAAAACIAAAAAAAAAACMAAAAAAAAAACQAAAAAAAAAACUAAAAAAAAAACYAAAAAAAAAACcAAAAAAAAAACgAAAAAAAAAACkAAAAAAAAAACoAAAAAAAAAACsAAAAAAAAAACwAAAAAAAAAAC0AAAAAAAAAAC4AAAAAAAAAAC8AAAAAAAAAADAAAAAAAAAAADEAAAAAAAAAADIAAAAAAAAAADMAAAAAAAAAADQAAAAAAAAAADUAAAAAAAAAADYAAAAAAAAAADcAAAAAAAAAADgAAAAAAAAAADkAAAAAAAAAADoAAAAAAAAAADsAAAAAAAAAADwAAAAAAAAAAD0AAAAAAAAAAD4AAAAAAAAAAD8AAAAAAAAAAEAAAAAAAAAAAEEAAAAAAAAAAEIAAAAAAAAAAEMAAAAAAAAAAEQAAAAAAAAAAEUAAAAAAAAAAEYAAAAAAAAAAEcAAAAAAAAAAEgAAAAAAAAAAEkAAAAAAAAAAEoAAAAAAAAAAEsAAAAAAAAAAEwAAAAAAAAAAE0AAAAAAAAAAE4AAAAAAAAAAE8AAAAAAAAAAFAAAAAAAAAAAFEAAAAAAAAAAFIAAAAAAAAAAFMAAAAAAAAAAFQAAAAAAAAAAFUAAAAAAAAAAFYAAAAAAAAAAFcAAAAAAAAAAFgAAAAAAAAAAFkAAAAAAAAAAFoAAAAAAAAAAFsAAAAAAAAAAFwAAAAAAAAAAF0AAAAAAAAAAF4AAAAAAAAAAF8DCQAAAAAAAAIFAAAAB2ludm9rZXMFAAAAB2ludm9rZXMFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleRJ5z8Q=", "height": 2220209, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AxPA6XexokBcRkqnp2ty9rQDsqYcjZmBxEmHNUcALPHL Next: none Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let proxyAddressStr = "3NAm3p62bo4q3yMzWjJ6M4eEDBRYXxqkXLQ"
5-
6-func tryGetString (key) = match getString(this, key) {
7- case b: String =>
8- b
9- case _ =>
10- ""
11-}
12-
13-
14-func tryGetInteger (key) = match getInteger(this, key) {
15- case b: Int =>
16- b
17- case _ =>
18- 0
19-}
20-
21-
22-func getAssetString (assetId) = match assetId {
23- case b: ByteVector =>
24- toBase58String(b)
25- case _ =>
26- "WAVES"
27-}
28-
29-
30-func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
31- then unit
32- else fromBase58String(assetIdStr)
33-
4+let dappAddress = Address(base58'3MtjjEoEs6Rcqkh8tYjPmBxZND58FuMtRWN')
345
356 @Callable(i)
36-func createOrder (asset1,amount1) = {
37- let newOrdersAmount = (tryGetInteger("global_ordersAmount") + 1)
38- let orderId = toString(newOrdersAmount)
39- if ((size(i.payments) != 1))
40- then throw("You should to provide payment")
41- else if ((0 >= amount1))
42- then throw("Amount1 cannot be less or equals 0")
43- else {
44- let asset0 = getAssetString(i.payments[0].assetId)
45- let amount0 = i.payments[0].amount
46- let userOrders = tryGetString((("user_" + toString(i.caller)) + "_orders"))
47- let newUserOrders = match userOrders {
48- case _ =>
49- if (("" == $match0))
50- then orderId
51- else ((userOrders + ",") + orderId)
52- }
53-[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)]
54- }
55- }
7+func cancelMany (orderIdListString) = {
8+ let orderIdList = split(orderIdListString, ",")
9+ func do (acc,arg) = {
10+ let inv = invoke(dappAddress, "cancelOrder", [arg, toBase58String(i.caller.bytes)], nil)
11+ if ((inv == inv))
12+ then acc
13+ else throw("Strict value is not equal to itself.")
14+ }
5615
16+ let invokes = {
17+ let $l = orderIdList
18+ let $s = size($l)
19+ let $acc0 = 0
20+ func $f0_1 ($a,$i) = if (($i >= $s))
21+ then $a
22+ else do($a, $l[$i])
5723
24+ func $f0_2 ($a,$i) = if (($i >= $s))
25+ then $a
26+ else throw("List size exceeds 95")
5827
59-@Callable(i)
60-func fulfillOrder (orderId) = {
61- let orderOwner = valueOrErrorMessage(getString((("order_" + orderId) + "_owner")), "Cannot find order owner")
62- let orderStatus = getString((("order_" + orderId) + "_status"))
63- let orderAsset0 = valueOrErrorMessage(getString((("order_" + orderId) + "_token0")), "Cannot find token0")
64- let orderAmount0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount0")), "Cannot find amount0")
65- let orderFulfilled0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
66- let orderAmount0Left = (orderAmount0 - orderFulfilled0)
67- let orderAsset1 = valueOrErrorMessage(getString((("order_" + orderId) + "_token1")), "Cannot find token1")
68- let orderAmount1 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount1")), "Cannot find amount1")
69- let orderFulfilled1 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled1")), "Cannot find fulfilled1")
70- let orderAmount1Left = (orderAmount1 - orderFulfilled1)
71- if ((orderStatus != "active"))
72- then throw("Order already closed or canceled")
73- else if ((size(i.payments) != 1))
74- then throw("You should to provide payment")
75- else {
76- let callerAddress = i.caller
77- let ownerAddress = addressFromStringValue(orderOwner)
78- let paymentAsset1 = getAssetString(i.payments[0].assetId)
79- let paymentAmount1 = i.payments[0].amount
80- if ((paymentAsset1 != orderAsset1))
81- then throw("Wrong payment asset")
82- else if ((paymentAmount1 >= orderAmount1Left))
83- 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")]
84- else {
85- let amount0 = fraction(orderAmount0, paymentAmount1, orderAmount1, FLOOR)
86-[ScriptTransfer(ownerAddress, paymentAmount1, getAssetBytes(paymentAsset1)), ScriptTransfer(callerAddress, amount0, getAssetBytes(orderAsset0)), IntegerEntry((("order_" + orderId) + "_fulfilled0"), (orderFulfilled0 + amount0)), IntegerEntry((("order_" + orderId) + "_fulfilled1"), (orderFulfilled1 + paymentAmount1))]
87- }
88- }
89- }
90-
91-
92-
93-@Callable(i)
94-func cancelOrder (orderId,proxyCaller) = {
95- let orderOwner = valueOrErrorMessage(getString((("order_" + orderId) + "_owner")), "Cannot find order owner")
96- let orderStatus = getString((("order_" + orderId) + "_status"))
97- let orderAsset0 = valueOrErrorMessage(getString((("order_" + orderId) + "_token0")), "Cannot find token0")
98- let orderAmount0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount0")), "Cannot find amount0")
99- let orderFulfilled0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
100- let orderAmount0Left = (orderAmount0 - orderFulfilled0)
101- if (if ((toBase58String(i.caller.bytes) != orderOwner))
102- then (toBase58String(i.caller.bytes) != proxyAddressStr)
103- else false)
104- then throw("You cannot cancel order")
105- else if (if ((toBase58String(i.caller.bytes) == proxyAddressStr))
106- then (proxyCaller != orderOwner)
107- else false)
108- then throw("You cannot cancel order")
109- else if ((orderStatus != "active"))
110- then throw("order is closed or canceled")
111- else [ScriptTransfer(addressFromStringValue(orderOwner), orderAmount0Left, getAssetBytes(orderAsset0)), StringEntry((("order_" + orderId) + "_status"), "canceled")]
28+ $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($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($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($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), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95)
29+ }
30+ if ((invokes == invokes))
31+ then nil
32+ else throw("Strict value is not equal to itself.")
11233 }
11334
11435
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let proxyAddressStr = "3NAm3p62bo4q3yMzWjJ6M4eEDBRYXxqkXLQ"
5-
6-func tryGetString (key) = match getString(this, key) {
7- case b: String =>
8- b
9- case _ =>
10- ""
11-}
12-
13-
14-func tryGetInteger (key) = match getInteger(this, key) {
15- case b: Int =>
16- b
17- case _ =>
18- 0
19-}
20-
21-
22-func getAssetString (assetId) = match assetId {
23- case b: ByteVector =>
24- toBase58String(b)
25- case _ =>
26- "WAVES"
27-}
28-
29-
30-func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
31- then unit
32- else fromBase58String(assetIdStr)
33-
4+let dappAddress = Address(base58'3MtjjEoEs6Rcqkh8tYjPmBxZND58FuMtRWN')
345
356 @Callable(i)
36-func createOrder (asset1,amount1) = {
37- let newOrdersAmount = (tryGetInteger("global_ordersAmount") + 1)
38- let orderId = toString(newOrdersAmount)
39- if ((size(i.payments) != 1))
40- then throw("You should to provide payment")
41- else if ((0 >= amount1))
42- then throw("Amount1 cannot be less or equals 0")
43- else {
44- let asset0 = getAssetString(i.payments[0].assetId)
45- let amount0 = i.payments[0].amount
46- let userOrders = tryGetString((("user_" + toString(i.caller)) + "_orders"))
47- let newUserOrders = match userOrders {
48- case _ =>
49- if (("" == $match0))
50- then orderId
51- else ((userOrders + ",") + orderId)
52- }
53-[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)]
54- }
55- }
7+func cancelMany (orderIdListString) = {
8+ let orderIdList = split(orderIdListString, ",")
9+ func do (acc,arg) = {
10+ let inv = invoke(dappAddress, "cancelOrder", [arg, toBase58String(i.caller.bytes)], nil)
11+ if ((inv == inv))
12+ then acc
13+ else throw("Strict value is not equal to itself.")
14+ }
5615
16+ let invokes = {
17+ let $l = orderIdList
18+ let $s = size($l)
19+ let $acc0 = 0
20+ func $f0_1 ($a,$i) = if (($i >= $s))
21+ then $a
22+ else do($a, $l[$i])
5723
24+ func $f0_2 ($a,$i) = if (($i >= $s))
25+ then $a
26+ else throw("List size exceeds 95")
5827
59-@Callable(i)
60-func fulfillOrder (orderId) = {
61- let orderOwner = valueOrErrorMessage(getString((("order_" + orderId) + "_owner")), "Cannot find order owner")
62- let orderStatus = getString((("order_" + orderId) + "_status"))
63- let orderAsset0 = valueOrErrorMessage(getString((("order_" + orderId) + "_token0")), "Cannot find token0")
64- let orderAmount0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount0")), "Cannot find amount0")
65- let orderFulfilled0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
66- let orderAmount0Left = (orderAmount0 - orderFulfilled0)
67- let orderAsset1 = valueOrErrorMessage(getString((("order_" + orderId) + "_token1")), "Cannot find token1")
68- let orderAmount1 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount1")), "Cannot find amount1")
69- let orderFulfilled1 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled1")), "Cannot find fulfilled1")
70- let orderAmount1Left = (orderAmount1 - orderFulfilled1)
71- if ((orderStatus != "active"))
72- then throw("Order already closed or canceled")
73- else if ((size(i.payments) != 1))
74- then throw("You should to provide payment")
75- else {
76- let callerAddress = i.caller
77- let ownerAddress = addressFromStringValue(orderOwner)
78- let paymentAsset1 = getAssetString(i.payments[0].assetId)
79- let paymentAmount1 = i.payments[0].amount
80- if ((paymentAsset1 != orderAsset1))
81- then throw("Wrong payment asset")
82- else if ((paymentAmount1 >= orderAmount1Left))
83- 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")]
84- else {
85- let amount0 = fraction(orderAmount0, paymentAmount1, orderAmount1, FLOOR)
86-[ScriptTransfer(ownerAddress, paymentAmount1, getAssetBytes(paymentAsset1)), ScriptTransfer(callerAddress, amount0, getAssetBytes(orderAsset0)), IntegerEntry((("order_" + orderId) + "_fulfilled0"), (orderFulfilled0 + amount0)), IntegerEntry((("order_" + orderId) + "_fulfilled1"), (orderFulfilled1 + paymentAmount1))]
87- }
88- }
89- }
90-
91-
92-
93-@Callable(i)
94-func cancelOrder (orderId,proxyCaller) = {
95- let orderOwner = valueOrErrorMessage(getString((("order_" + orderId) + "_owner")), "Cannot find order owner")
96- let orderStatus = getString((("order_" + orderId) + "_status"))
97- let orderAsset0 = valueOrErrorMessage(getString((("order_" + orderId) + "_token0")), "Cannot find token0")
98- let orderAmount0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_amount0")), "Cannot find amount0")
99- let orderFulfilled0 = valueOrErrorMessage(getInteger((("order_" + orderId) + "_fulfilled0")), "Cannot find fulfilled0")
100- let orderAmount0Left = (orderAmount0 - orderFulfilled0)
101- if (if ((toBase58String(i.caller.bytes) != orderOwner))
102- then (toBase58String(i.caller.bytes) != proxyAddressStr)
103- else false)
104- then throw("You cannot cancel order")
105- else if (if ((toBase58String(i.caller.bytes) == proxyAddressStr))
106- then (proxyCaller != orderOwner)
107- else false)
108- then throw("You cannot cancel order")
109- else if ((orderStatus != "active"))
110- then throw("order is closed or canceled")
111- else [ScriptTransfer(addressFromStringValue(orderOwner), orderAmount0Left, getAssetBytes(orderAsset0)), StringEntry((("order_" + orderId) + "_status"), "canceled")]
28+ $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($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($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($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), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95)
29+ }
30+ if ((invokes == invokes))
31+ then nil
32+ else throw("Strict value is not equal to itself.")
11233 }
11334
11435
11536 @Verifier(tx)
11637 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
11738

github/deemru/w8io/873ac7e 
27.66 ms