tx · AhqCdYJGj5M76VHQCfNkCgyxxCu6ZD8vumbRAb36tRq5

3NC8pQxcnDTtDkhzv5Eje8qqW4qoFawLnAb:  -0.01400000 Waves

2019.09.09 23:21 [669025] smart account 3NC8pQxcnDTtDkhzv5Eje8qqW4qoFawLnAb > SELF 0.00000000 Waves

{ "type": 13, "id": "AhqCdYJGj5M76VHQCfNkCgyxxCu6ZD8vumbRAb36tRq5", "fee": 1400000, "feeAssetId": null, "timestamp": 1568060569860, "version": 1, "sender": "3NC8pQxcnDTtDkhzv5Eje8qqW4qoFawLnAb", "senderPublicKey": "5vyi92HdgdTabKCQzDHGrgQ4ASjtoT3XrCUXr459sWuc", "proofs": [ "3NcBMkb7fktdYrPRqU7115EB4P1T2vS1s4KpYDSSJKUpW5WwxHcRB2u6ntT7hbTVQqzRY954zBBsyY2PmCE85oPW" ], "script": "base64:AAIDAAAAAAAAAAAAAAAcAAAAAAROT05FAgAAAAABAAAADmdldE51bWJlckJ5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAABAAAADmdldFN0cmluZ0J5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEFAAAABE5PTkUAAAAADE9yZGVyQm9va0tleQIAAAAJb3JkZXJib29rAAAAAA1PcmRlclByaWNlS2V5AgAAAAxvcmRlcl9wcmljZV8AAAAADU9yZGVyVG90YWxLZXkCAAAADG9yZGVyX3RvdGFsXwAAAAATT3JkZXJGaWxsZWRUb3RhbEtleQIAAAATb3JkZXJfZmlsbGVkX3RvdGFsXwAAAAANT3JkZXJPd25lcktleQIAAAAMb3JkZXJfb3duZXJfAAAAAA5PcmRlckhlaWdodEtleQIAAAANb3JkZXJfaGVpZ2h0XwAAAAAOT3JkZXJTdGF0dXNLZXkCAAAADW9yZGVyX3N0YXR1c18AAAAADkJvbmRBc3NldElkS2V5AgAAAA1ib25kX2Fzc2V0X2lkAAAAABJOZXV0cmlub0Fzc2V0SWRLZXkCAAAAEW5ldXRyaW5vX2Fzc2V0X2lkAAAAABNOZXV0cmlub0NvbnRyYWN0S2V5AgAAABFuZXV0cmlub19jb250cmFjdAAAAAAJb3JkZXJib29rCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAAAxPcmRlckJvb2tLZXkBAAAADWdldE9yZGVyUHJpY2UAAAABAAAAAmlkCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQABLAAAAAIFAAAADU9yZGVyUHJpY2VLZXkFAAAAAmlkAQAAAA1nZXRPcmRlclRvdGFsAAAAAQAAAAJpZAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkAASwAAAACBQAAAA1PcmRlclRvdGFsS2V5BQAAAAJpZAEAAAANZ2V0T3JkZXJPd25lcgAAAAEAAAACaWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAAEsAAAAAgUAAAANT3JkZXJPd25lcktleQUAAAACaWQBAAAADmdldE9yZGVyU3RhdHVzAAAAAQAAAAJpZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkAASwAAAACBQAAAA5PcmRlclN0YXR1c0tleQUAAAACaWQBAAAAE2dldE9yZGVyRmlsbGVkVG90YWwAAAABAAAAAmlkCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQABLAAAAAIFAAAAE09yZGVyRmlsbGVkVG90YWxLZXkFAAAAAmlkAAAAABBPcmRlclNwbGl0U3ltYm9sAgAAAAFfAAAAAAtCb25kQXNzZXRJZAkAAlkAAAABCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAAA5Cb25kQXNzZXRJZEtleQAAAAAPTmV1dHJpbm9Bc3NldElkCQACWQAAAAEJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAAEk5ldXRyaW5vQXNzZXRJZEtleQAAAAAQTmV1dHJpbm9Db250cmFjdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAATTmV1dHJpbm9Db250cmFjdEtleQAAAAAHV2F2ZWxldAAAAAAABfXhAAAAAAAIQ0FOQ0VMRUQCAAAACGNhbmNlbGVkAAAAAANORVcCAAAAA25ldwAAAAAGRklMTEVEAgAAAAZmaWxsZWQBAAAAEmNhbGN1bGF0ZU9yZGVyYm9vawAAAAIAAAAHb3JkZXJJZAAAAAhwb3NpdGlvbgQAAAAGb3JkZXJzCQAEtQAAAAIFAAAACW9yZGVyYm9vawUAAAAQT3JkZXJTcGxpdFN5bWJvbAQAAAAIbmV3T3JkZXIJAAEsAAAAAgUAAAAHb3JkZXJJZAUAAAAQT3JkZXJTcGxpdFN5bWJvbAMJAAAAAAAAAgUAAAAIcG9zaXRpb24AAAAAAAAAAAAJAAEsAAAAAgUAAAAIbmV3T3JkZXIFAAAACW9yZGVyYm9vawMJAABnAAAAAgUAAAAIcG9zaXRpb24JAABlAAAAAgkAAZAAAAABBQAAAAZvcmRlcnMAAAAAAAAAAAEJAAEsAAAAAgUAAAAJb3JkZXJib29rBQAAAAhuZXdPcmRlcgQAAAAFcGFydHMJAAS1AAAAAgUAAAAJb3JkZXJib29rCQABLAAAAAIJAAGRAAAAAgUAAAAGb3JkZXJzBQAAAAhwb3NpdGlvbgUAAAAQT3JkZXJTcGxpdFN5bWJvbAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAAZEAAAACBQAAAAVwYXJ0cwAAAAAAAAAAAAUAAAAIbmV3T3JkZXIJAAEsAAAAAgkAAZEAAAACBQAAAAZvcmRlcnMFAAAACHBvc2l0aW9uBQAAABBPcmRlclNwbGl0U3ltYm9sCQABkQAAAAIFAAAABXBhcnRzAAAAAAAAAAABAAAAAwAAAAFpAQAAAAhzZXRPcmRlcgAAAAIAAAAFcHJpY2UAAAAIcG9zaXRpb24EAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAAApuZXdPcmRlcklkCQACWAAAAAEJAAH1AAAAAQkAAMsAAAACCQAAywAAAAIJAADLAAAAAgkAAZoAAAABBQAAAAVwcmljZQkAAZoAAAABCAUAAAADcG10AAAABmFtb3VudAgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwkAAZoAAAABBQAAAAZoZWlnaHQDCQEAAAACIT0AAAACCAUAAAADcG10AAAAB2Fzc2V0SWQFAAAAD05ldXRyaW5vQXNzZXRJZAkAAAIAAAABAgAAABVjYW4gdXNlIG5ldXRyaW5vIG9ubHkDCQAAZwAAAAIAAAAAAAAAAAAFAAAABXByaWNlCQAAAgAAAAECAAAAD3ByaWNlIGxlc3MgemVybwMJAQAAAAIhPQAAAAIJAQAAAA1nZXRPcmRlck93bmVyAAAAAQUAAAAKbmV3T3JkZXJJZAUAAAAETk9ORQkAAAIAAAABAgAAAAxvcmRlciBleGlzdHMEAAAABm9yZGVycwkABLUAAAACBQAAAAlvcmRlcmJvb2sFAAAAEE9yZGVyU3BsaXRTeW1ib2wEAAAAC25leHRPcmRlcklkAwkAAAAAAAACBQAAAAhwb3NpdGlvbgAAAAAAAAAAAAIAAAAACQABkQAAAAIFAAAABm9yZGVycwkAAGUAAAACBQAAAAhwb3NpdGlvbgAAAAAAAAAAAQQAAAAObmV4dE9yZGVyUHJpY2UJAQAAAA1nZXRPcmRlclByaWNlAAAAAQUAAAALbmV4dE9yZGVySWQEAAAAEGlzTmV4dE9yZGVyRXJyb3IDAwkBAAAAAiE9AAAAAgUAAAALbmV4dE9yZGVySWQCAAAAAAkAAGYAAAACBQAAAAVwcmljZQUAAAAObmV4dE9yZGVyUHJpY2UHBgcEAAAAC3ByZXZPcmRlcklkCQABkQAAAAIFAAAABm9yZGVycwUAAAAIcG9zaXRpb24EAAAADnByZXZPcmRlclByaWNlCQEAAAANZ2V0T3JkZXJQcmljZQAAAAEFAAAAC3ByZXZPcmRlcklkBAAAABBpc1ByZXZPcmRlckVycm9yAwkAAGcAAAACBQAAAA5wcmV2T3JkZXJQcmljZQUAAAAFcHJpY2UGBwMDBQAAABBpc05leHRPcmRlckVycm9yBgUAAAAQaXNQcmV2T3JkZXJFcnJvcgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAB9pbnZhbGlkIG9yZGVyIGlzUHJldk9yZGVyRXJyb3I6CQABpQAAAAEFAAAAEGlzUHJldk9yZGVyRXJyb3ICAAAAEiBpc05leHRPcmRlckVycm9yOgkAAaUAAAABBQAAABBpc05leHRPcmRlckVycm9yCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAxPcmRlckJvb2tLZXkJAQAAABJjYWxjdWxhdGVPcmRlcmJvb2sAAAACBQAAAApuZXdPcmRlcklkBQAAAAhwb3NpdGlvbgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAA1PcmRlclByaWNlS2V5BQAAAApuZXdPcmRlcklkBQAAAAVwcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAA1PcmRlclRvdGFsS2V5BQAAAApuZXdPcmRlcklkCAUAAAADcG10AAAABmFtb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAA1PcmRlck93bmVyS2V5BQAAAApuZXdPcmRlcklkCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAA5PcmRlckhlaWdodEtleQUAAAAKbmV3T3JkZXJJZAUAAAAGaGVpZ2h0BQAAAANuaWwAAAABaQEAAAALY2FuY2VsT3JkZXIAAAABAAAAB29yZGVySWQEAAAABW93bmVyCQEAAAANZ2V0T3JkZXJPd25lcgAAAAEFAAAAB29yZGVySWQEAAAABmFtb3VudAkAAGUAAAACCQEAAAANZ2V0T3JkZXJUb3RhbAAAAAEFAAAAB29yZGVySWQJAQAAABNnZXRPcmRlckZpbGxlZFRvdGFsAAAAAQUAAAAHb3JkZXJJZAMJAQAAAAIhPQAAAAIFAAAABW93bmVyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkAAAIAAAABAgAAABFwZXJtaXNzaW9uIGRlbmllZAQAAAAFcGFydHMJAAS1AAAAAgUAAAAJb3JkZXJib29rCQABLAAAAAIFAAAAB29yZGVySWQFAAAAEE9yZGVyU3BsaXRTeW1ib2wJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAxPcmRlckJvb2tLZXkJAAEsAAAAAgkAAZEAAAACBQAAAAVwYXJ0cwAAAAAAAAAAAAkAAZEAAAACBQAAAAVwYXJ0cwAAAAAAAAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAA5PcmRlclN0YXR1c0tleQUAAAAHb3JkZXJJZAUAAAAIQ0FOQ0VMRUQFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAABmFtb3VudAUAAAAPTmV1dHJpbm9Bc3NldElkBQAAAANuaWwAAAABaQEAAAAHZXhlY3V0ZQAAAAAEAAAAB29yZGVySWQJAAGRAAAAAgkABLUAAAACBQAAAAlvcmRlcmJvb2sFAAAAEE9yZGVyU3BsaXRTeW1ib2wAAAAAAAAAAAAEAAAACmJvbmRBbW91bnQJAAPrAAAAAgUAAAAEdGhpcwUAAAALQm9uZEFzc2V0SWQEAAAAC2ZpbGxlZFRvdGFsCQEAAAATZ2V0T3JkZXJGaWxsZWRUb3RhbAAAAAEFAAAAB29yZGVySWQEAAAACm9yZGVyVG90YWwJAQAAAA1nZXRPcmRlclRvdGFsAAAAAQUAAAAHb3JkZXJJZAQAAAAKb3JkZXJQcmljZQkBAAAADWdldE9yZGVyUHJpY2UAAAABBQAAAAdvcmRlcklkBAAAAAZhbW91bnQJAABpAAAAAgkAAGkAAAACCQAAaAAAAAIJAABlAAAAAgUAAAAKb3JkZXJUb3RhbAUAAAALZmlsbGVkVG90YWwAAAAAAAAAAGQFAAAACm9yZGVyUHJpY2UFAAAAB1dhdmVsZXQEAAAADG5ld09yZGVyYm9vawMJAABnAAAAAgUAAAAKYm9uZEFtb3VudAUAAAAGYW1vdW50CQABkQAAAAIJAAS1AAAAAgUAAAAJb3JkZXJib29rCQABLAAAAAIFAAAAB29yZGVySWQFAAAAEE9yZGVyU3BsaXRTeW1ib2wAAAAAAAAAAAEFAAAACW9yZGVyYm9vawQAAAAMZmlsbGVkQW1vdW50AwkAAGcAAAACBQAAAApib25kQW1vdW50BQAAAAZhbW91bnQFAAAABmFtb3VudAUAAAAKYm9uZEFtb3VudAQAAAAFdG90YWwJAABoAAAAAgkAAGkAAAACCQAAaAAAAAIFAAAADGZpbGxlZEFtb3VudAUAAAAKb3JkZXJQcmljZQAAAAAAAAAAZAUAAAAHV2F2ZWxldAQAAAAGc3RhdHVzAwkAAGcAAAACBQAAAApib25kQW1vdW50BQAAAAZhbW91bnQFAAAABkZJTExFRAUAAAADTkVXCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAMT3JkZXJCb29rS2V5BQAAAAxuZXdPcmRlcmJvb2sJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAATT3JkZXJGaWxsZWRUb3RhbEtleQUAAAAHb3JkZXJJZAkAAGQAAAACBQAAAAtmaWxsZWRUb3RhbAUAAAAFdG90YWwJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAOT3JkZXJTdGF0dXNLZXkFAAAAB29yZGVySWQFAAAABnN0YXR1cwUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAMZmlsbGVkQW1vdW50BQAAAAtCb25kQXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAAEE5ldXRyaW5vQ29udHJhY3QFAAAABXRvdGFsBQAAAA9OZXV0cmlub0Fzc2V0SWQFAAAAA25pbAAAAABjYBCH", "chainId": 84, "height": 669025, "spentComplexity": 0 } View: original | compacted Prev: CnVrLVgQSG6j3LmTR6d2V2rqPJQU5LPHxhWyzd1Gfdfk Next: BvU2cCzFwGHCWFpdQSzgmBQBpzuJumCe48wb9tqMKNLP Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let NONE = ""
55
66 func getNumberByKey (key) = match getInteger(this, key) {
77 case a: Int =>
88 a
99 case _ =>
1010 0
1111 }
1212
1313
1414 func getStringByKey (key) = match getString(this, key) {
1515 case a: String =>
1616 a
1717 case _ =>
1818 NONE
1919 }
2020
2121
2222 let OrderBookKey = "orderbook"
2323
2424 let OrderPriceKey = "order_price_"
2525
2626 let OrderTotalKey = "order_total_"
2727
2828 let OrderFilledTotalKey = "order_filled_total_"
2929
3030 let OrderOwnerKey = "order_owner_"
3131
3232 let OrderHeightKey = "order_height_"
3333
3434 let OrderStatusKey = "order_status_"
3535
3636 let BondAssetIdKey = "bond_asset_id"
3737
3838 let NeutrinoAssetIdKey = "neutrino_asset_id"
3939
4040 let NeutrinoContractKey = "neutrino_contract"
4141
4242 let orderbook = getStringByKey(OrderBookKey)
4343
4444 func getOrderPrice (id) = getNumberByKey((OrderPriceKey + id))
4545
4646
4747 func getOrderTotal (id) = getNumberByKey((OrderTotalKey + id))
4848
4949
5050 func getOrderOwner (id) = getStringByKey((OrderOwnerKey + id))
5151
5252
5353 func getOrderStatus (id) = getStringByKey((OrderStatusKey + id))
5454
5555
5656 func getOrderFilledTotal (id) = getNumberByKey((OrderFilledTotalKey + id))
5757
5858
5959 let OrderSplitSymbol = "_"
6060
6161 let BondAssetId = fromBase58String(getStringByKey(BondAssetIdKey))
6262
6363 let NeutrinoAssetId = fromBase58String(getStringByKey(NeutrinoAssetIdKey))
6464
6565 let NeutrinoContract = getStringByKey(NeutrinoContractKey)
6666
6767 let Wavelet = 100000000
6868
6969 let CANCELED = "canceled"
7070
7171 let NEW = "new"
7272
7373 let FILLED = "filled"
7474
7575 func calculateOrderbook (orderId,position) = {
7676 let orders = split(orderbook, OrderSplitSymbol)
7777 let newOrder = (orderId + OrderSplitSymbol)
7878 if ((position == 0))
7979 then (newOrder + orderbook)
8080 else if ((position >= (size(orders) - 1)))
8181 then (orderbook + newOrder)
8282 else {
8383 let parts = split(orderbook, (orders[position] + OrderSplitSymbol))
8484 (((parts[0] + newOrder) + (orders[position] + OrderSplitSymbol)) + parts[1])
8585 }
8686 }
8787
8888
8989 @Callable(i)
9090 func setOrder (price,position) = {
9191 let pmt = extract(i.payment)
9292 let newOrderId = toBase58String(keccak256((((toBytes(price) + toBytes(pmt.amount)) + i.caller.bytes) + toBytes(height))))
9393 if ((pmt.assetId != NeutrinoAssetId))
9494 then throw("can use neutrino only")
9595 else if ((0 >= price))
9696 then throw("price less zero")
9797 else if ((getOrderOwner(newOrderId) != NONE))
9898 then throw("order exists")
9999 else {
100100 let orders = split(orderbook, OrderSplitSymbol)
101101 let nextOrderId = if ((position == 0))
102102 then ""
103103 else orders[(position - 1)]
104104 let nextOrderPrice = getOrderPrice(nextOrderId)
105105 let isNextOrderError = if (if ((nextOrderId != ""))
106106 then (price > nextOrderPrice)
107107 else false)
108108 then true
109109 else false
110110 let prevOrderId = orders[position]
111111 let prevOrderPrice = getOrderPrice(prevOrderId)
112112 let isPrevOrderError = if ((prevOrderPrice >= price))
113113 then true
114114 else false
115115 if (if (isNextOrderError)
116116 then true
117117 else isPrevOrderError)
118118 then throw(((("invalid order isPrevOrderError:" + toString(isPrevOrderError)) + " isNextOrderError:") + toString(isNextOrderError)))
119119 else WriteSet([DataEntry(OrderBookKey, calculateOrderbook(newOrderId, position)), DataEntry((OrderPriceKey + newOrderId), price), DataEntry((OrderTotalKey + newOrderId), pmt.amount), DataEntry((OrderOwnerKey + newOrderId), toString(i.caller)), DataEntry((OrderHeightKey + newOrderId), height)])
120120 }
121121 }
122122
123123
124124
125125 @Callable(i)
126126 func cancelOrder (orderId) = {
127127 let owner = getOrderOwner(orderId)
128128 let amount = (getOrderTotal(orderId) - getOrderFilledTotal(orderId))
129129 if ((owner != toString(i.caller)))
130130 then throw("permission denied")
131131 else {
132132 let parts = split(orderbook, (orderId + OrderSplitSymbol))
133133 ScriptResult(WriteSet([DataEntry(OrderBookKey, (parts[0] + parts[1])), DataEntry((OrderStatusKey + orderId), CANCELED)]), TransferSet([ScriptTransfer(i.caller, amount, NeutrinoAssetId)]))
134134 }
135135 }
136136
137137
138138
139139 @Callable(i)
140140 func execute () = {
141141 let orderId = split(orderbook, OrderSplitSymbol)[0]
142142 let bondAmount = assetBalance(this, BondAssetId)
143143 let filledTotal = getOrderFilledTotal(orderId)
144144 let orderTotal = getOrderTotal(orderId)
145145 let orderPrice = getOrderPrice(orderId)
146146 let amount = ((((orderTotal - filledTotal) * 100) / orderPrice) / Wavelet)
147147 let newOrderbook = if ((bondAmount >= amount))
148148 then split(orderbook, (orderId + OrderSplitSymbol))[1]
149149 else orderbook
150150 let filledAmount = if ((bondAmount >= amount))
151151 then amount
152152 else bondAmount
153153 let total = (((filledAmount * orderPrice) / 100) * Wavelet)
154154 let status = if ((bondAmount >= amount))
155155 then FILLED
156156 else NEW
157157 ScriptResult(WriteSet([DataEntry(OrderBookKey, newOrderbook), DataEntry((OrderFilledTotalKey + orderId), (filledTotal + total)), DataEntry((OrderStatusKey + orderId), status)]), TransferSet([ScriptTransfer(i.caller, filledAmount, BondAssetId), ScriptTransfer(addressFromStringValue(NeutrinoContract), total, NeutrinoAssetId)]))
158158 }
159159
160160

github/deemru/w8io/026f985 
70.10 ms