tx · DdK46bkqFfeHn3a2D16R8bkEqHTMRZSe4CkjpXotRh1x

3Mwrp2qjU4mGuhz7LtQW9zgZNveSMaJpVjh:  -0.01000000 Waves

2019.06.22 11:58 [553014] smart account 3Mwrp2qjU4mGuhz7LtQW9zgZNveSMaJpVjh > SELF 0.00000000 Waves

{ "type": 13, "id": "DdK46bkqFfeHn3a2D16R8bkEqHTMRZSe4CkjpXotRh1x", "fee": 1000000, "feeAssetId": null, "timestamp": 1561193903078, "version": 1, "sender": "3Mwrp2qjU4mGuhz7LtQW9zgZNveSMaJpVjh", "senderPublicKey": "BPdgKmUQzY33CUMjBd4VCdJyvf5j1kqTdczhDG76H4bF", "proofs": [ "3k2HxVSP8hJQ8Kd5EJqSefch9VuKsT1nnPpajmvaPnspaV8y2xpDHvGcB35cxZRvpua5RAr2LoyF3KLE69f3LrB4" ], "script": "base64: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SWR4VHJhZGVQYWlyCQAAAgAAAAECAAAAM1RyeWluZyB0byBtYXRjaCBvcmRlcnMgZnJvbSBkaWZmZXJlbnQgdHJhZGluZyBwYWlycwMJAAAAAAAAAgkAAZEAAAACBQAAAAZvcmRlcjEFAAAADElkeE9yZGVyVHlwZQkAAZEAAAACBQAAAAZvcmRlcjIFAAAADElkeE9yZGVyVHlwZQkAAAIAAAABAgAAACdUcnlpbmcgdG8gbWF0Y2ggb3JkZXJzIG9mIHRoZSBzYW1lIHR5cGUEAAAADG9yZGVyMWlzU2VsbAkAAAAAAAACCQABkQAAAAIFAAAABm9yZGVyMQUAAAAMSWR4T3JkZXJUeXBlBQAAAARTRUxMBAAAAAlzZWxsT3JkZXIDBQAAAAxvcmRlcjFpc1NlbGwFAAAABm9yZGVyMQUAAAAGb3JkZXIyBAAAAAhidXlPcmRlcgMJAQAAAAEhAAAAAQUAAAAMb3JkZXIxaXNTZWxsBQAAAAZvcmRlcjEFAAAABm9yZGVyMgQAAAAJc2VsbFByaWNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAJc2VsbE9yZGVyBQAAAAhJZHhQcmljZQQAAAAIYnV5UHJpY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhidXlPcmRlcgUAAAAISWR4UHJpY2UEAAAAD3NlbGxPcmRlckFtb3VudAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACXNlbGxPcmRlcgUAAAAJSWR4QW1vdW50BAAAAA5idXlPcmRlckFtb3VudAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGJ1eU9yZGVyBQAAAAlJZHhBbW91bnQDCQAAZgAAAAIFAAAACXNlbGxQcmljZQUAAAAIYnV5UHJpY2UJAAACAAAAAQIAAAAdT3JkZXJzIGFyZSBub3QgbWF0Y2ggYnkgcHJpY2UEAAAADWV4Y2hhbmdlUHJpY2UFAAAACXNlbGxQcmljZQQAAAALYW1vdW50QXNzZXQJAQAAABFhc3NldElkRnJvbVN0cmluZwAAAAEJAAGRAAAAAgUAAAAIYnV5T3JkZXIFAAAACklkeEFzc2V0SWQEAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMDCQAAAAAAAAIJAAGRAAAAAgUAAAAIYnV5T3JkZXIFAAAACklkeEFzc2V0SWQCAAAABVdBVkVTAAAAAAAAAAAICAkBAAAABXZhbHVlAAAAAQkAA+wAAAABCQEAAAAFdmFsdWUAAAABBQAAAAthbW91bnRBc3NldAAAAAhkZWNpbWFscwQAAAAJYnV5QW1vdW50CQAAaQAAAAIJAABoAAAAAgUAAAAOYnV5T3JkZXJBbW91bnQJAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAUAAAATYW1vdW50QXNzZXREZWNpbWFscwAAAAAAAAAAAAAAAAAAAAAAAAkBAAAAB0NlaWxpbmcAAAAABQAAAA1leGNoYW5nZVByaWNlBAAAAApzZWxsQW1vdW50BQAAAA9zZWxsT3JkZXJBbW91bnQEAAAAEWFtb3VudEFzc2V0QW1vdW50AwkAAGcAAAACBQAAAAlidXlBbW91bnQFAAAACnNlbGxBbW91bnQFAAAACnNlbGxBbW91bnQFAAAACWJ1eUFtb3VudAQAAAAQcHJpY2VBc3NldEFtb3VudAkAAGgAAAACBQAAABFhbW91bnRBc3NldEFtb3VudAUAAAANZXhjaGFuZ2VQcmljZQQAAAANdXBkYXRlZEJ1eVN0cgkBAAAAEkZvcm1hdE9yZGVyRGF0YVN0cgAAAAYJAAGRAAAAAgUAAAAIYnV5T3JkZXIFAAAADElkeFRyYWRlUGFpcgkAAZEAAAACBQAAAAhidXlPcmRlcgUAAAAJSWR4U2VuZGVyCQABkQAAAAIFAAAACGJ1eU9yZGVyBQAAAAxJZHhPcmRlclR5cGUFAAAACGJ1eVByaWNlCQAAZQAAAAIFAAAADmJ1eU9yZGVyQW1vdW50BQAAABBwcmljZUFzc2V0QW1vdW50CQABkQAAAAIFAAAACGJ1eU9yZGVyBQAAAApJZHhBc3NldElkBAAAAA51cGRhdGVkU2VsbFN0cgkBAAAAEkZvcm1hdE9yZGVyRGF0YVN0cgAAAAYJAAGRAAAAAgUAAAAJc2VsbE9yZGVyBQAAAAxJZHhUcmFkZVBhaXIJAAGRAAAAAgUAAAAJc2VsbE9yZGVyBQAAAAlJZHhTZW5kZXIJAAGRAAAAAgUAAAAJc2VsbE9yZGVyBQAAAAxJZHhPcmRlclR5cGUFAAAACXNlbGxQcmljZQkAAGUAAAACBQAAAA9zZWxsT3JkZXJBbW91bnQFAAAAEWFtb3VudEFzc2V0QW1vdW50CQABkQAAAAIFAAAACXNlbGxPcmRlcgUAAAAKSWR4QXNzZXRJZAkAAAIAAAABCQABLAAAAAIFAAAADXVwZGF0ZWRCdXlTdHIFAAAADnVwZGF0ZWRTZWxsU3RyAAAAAWkBAAAAEXJlZ2lzdGVyVHJhaWRQYWlyAAAAAwAAAAZhc3NldDEAAAAKcHJpY2VBc3NldAAAAAl0cmFpZFBhaXIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZhc3NldDECAAAAAS8FAAAACnByaWNlQXNzZXQFAAAACXRyYWlkUGFpcgUAAAADbmlsAAAAAMY4eMI=", "chainId": 84, "height": 553014, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let IdxPrice = 0
5+
6+let IdxAmount = 1
7+
8+let IdxTradePair = 2
9+
10+let IdxOrderType = 3
11+
12+let IdxSender = 4
13+
14+let IdxAssetId = 5
15+
16+let BUY = "BUY"
17+
18+let SELL = "SELL"
19+
20+func RemoveUnderscoreIfPresent (remaining) = if ((size(remaining) > 0))
21+ then drop(remaining, 1)
22+ else remaining
23+
24+
25+func FormatDataParam (p) = {
26+ let s = size(p)
27+ if ((s == 0))
28+ then throw("Parameter size must be greater then 0")
29+ else if ((s > 99))
30+ then throw("Parameter size must be less then 100")
31+ else if ((10 > s))
32+ then (("0" + toString(s)) + p)
33+ else (toString(s) + p)
34+ }
35+
36+
37+func ParseNextAttribute (remaining) = {
38+ let s = size(remaining)
39+ if ((s > 0))
40+ then {
41+ let nn = parseIntValue(take(remaining, 2))
42+ let v = take(drop(remaining, 2), nn)
43+ let tmpRemaining = drop(remaining, (nn + 2))
44+ let remainingState = RemoveUnderscoreIfPresent(tmpRemaining)
45+[v, remainingState]
46+ }
47+ else throw("Empty string was passed into parseNextAttribute func")
48+ }
49+
50+
51+func FormatOrderDataStr (traidPair,sender,orderType,price,amount,assetId) = {
52+ let fullStateStr = ((((((((((FormatDataParam(traidPair) + "_") + FormatDataParam(sender)) + "_") + FormatDataParam(orderType)) + "_") + FormatDataParam(toString(price))) + "_") + FormatDataParam(toString(amount))) + "_") + FormatDataParam(assetId))
53+ fullStateStr
54+ }
55+
56+
57+func ParseOrderRawDataStr (rawStateStr) = {
58+ let tradePair = ParseNextAttribute(rawStateStr)
59+ let sender = ParseNextAttribute(tradePair[1])
60+ let orderType = ParseNextAttribute(sender[1])
61+ let price = ParseNextAttribute(orderType[1])
62+ let amount = ParseNextAttribute(price[1])
63+ let assetId = ParseNextAttribute(amount[1])
64+[price[0], amount[0], tradePair[0], orderType[0], sender[0], assetId[0]]
65+ }
66+
67+
68+func assetIdFromString (assetId) = if (if ((assetId == "WAVES"))
69+ then true
70+ else (assetId == ""))
71+ then unit
72+ else fromBase58String(assetId)
73+
74+
75+@Callable(i)
76+func order (assetId,price) = {
77+ let pmt = extract(i.payment)
78+ let pmtAssetIdStr = if (isDefined(pmt.assetId))
79+ then toBase58String(value(pmt.assetId))
80+ else "WAVES"
81+ let possibleTraidPair1 = getString(this, ((assetId + "/") + pmtAssetIdStr))
82+ let possibleTraidPair2 = getString(this, ((pmtAssetIdStr + "/") + assetId))
83+ let traidPair = if (isDefined(possibleTraidPair1))
84+ then value(possibleTraidPair1)
85+ else if (isDefined(possibleTraidPair2))
86+ then value(possibleTraidPair2)
87+ else throw("Traiding for that assets is not supported")
88+ let orderType = if (isDefined(possibleTraidPair1))
89+ then BUY
90+ else SELL
91+ let orderStr = FormatOrderDataStr(traidPair, toBase58String(i.caller.bytes), orderType, price, pmt.amount, assetId)
92+ WriteSet([DataEntry(toBase58String(i.transactionId), orderStr)])
93+ }
94+
95+
96+
97+@Callable(i)
98+func matchOrders (order1Id,order2Id) = {
99+ let o1 = getStringValue(this, order1Id)
100+ let o2 = getStringValue(this, order2Id)
101+ let order1 = ParseOrderRawDataStr(o1)
102+ let order2 = ParseOrderRawDataStr(o2)
103+ if ((order1[IdxTradePair] != order2[IdxTradePair]))
104+ then throw("Trying to match orders from different trading pairs")
105+ else if ((order1[IdxOrderType] == order2[IdxOrderType]))
106+ then throw("Trying to match orders of the same type")
107+ else {
108+ let order1isSell = (order1[IdxOrderType] == SELL)
109+ let sellOrder = if (order1isSell)
110+ then order1
111+ else order2
112+ let buyOrder = if (!(order1isSell))
113+ then order1
114+ else order2
115+ let sellPrice = parseIntValue(sellOrder[IdxPrice])
116+ let buyPrice = parseIntValue(buyOrder[IdxPrice])
117+ let sellOrderAmount = parseIntValue(sellOrder[IdxAmount])
118+ let buyOrderAmount = parseIntValue(buyOrder[IdxAmount])
119+ if ((sellPrice > buyPrice))
120+ then throw("Orders are not match by price")
121+ else {
122+ let exchangePrice = sellPrice
123+ let amountAsset = assetIdFromString(buyOrder[IdxAssetId])
124+ let amountAssetDecimals = if ((buyOrder[IdxAssetId] == "WAVES"))
125+ then 8
126+ else value(assetInfo(value(amountAsset))).decimals
127+ let buyAmount = ((buyOrderAmount * pow(10, 0, amountAssetDecimals, 0, 0, Ceiling())) / exchangePrice)
128+ let sellAmount = sellOrderAmount
129+ let amountAssetAmount = if ((buyAmount >= sellAmount))
130+ then sellAmount
131+ else buyAmount
132+ let priceAssetAmount = (amountAssetAmount * exchangePrice)
133+ let updatedBuyStr = FormatOrderDataStr(buyOrder[IdxTradePair], buyOrder[IdxSender], buyOrder[IdxOrderType], buyPrice, (buyOrderAmount - priceAssetAmount), buyOrder[IdxAssetId])
134+ let updatedSellStr = FormatOrderDataStr(sellOrder[IdxTradePair], sellOrder[IdxSender], sellOrder[IdxOrderType], sellPrice, (sellOrderAmount - amountAssetAmount), sellOrder[IdxAssetId])
135+ throw((updatedBuyStr + updatedSellStr))
136+ }
137+ }
138+ }
139+
140+
141+
142+@Callable(i)
143+func registerTraidPair (asset1,priceAsset,traidPair) = WriteSet([DataEntry(((asset1 + "/") + priceAsset), traidPair)])
144+
145+

github/deemru/w8io/873ac7e 
18.71 ms