tx · C29sZqbiKokMsyK3hgu9fiTajxeVFcZe9xA2khe2pFih

3N4boZRUJ2LxY5jLyp6hmxGktqnawQidu6H:  -0.01000000 Waves

2022.11.21 22:59 [2327339] smart account 3N4boZRUJ2LxY5jLyp6hmxGktqnawQidu6H > SELF 0.00000000 Waves

{ "type": 13, "id": "C29sZqbiKokMsyK3hgu9fiTajxeVFcZe9xA2khe2pFih", "fee": 1000000, "feeAssetId": null, "timestamp": 1669060849839, "version": 2, "chainId": 84, "sender": "3N4boZRUJ2LxY5jLyp6hmxGktqnawQidu6H", "senderPublicKey": "BDeCphaaC4MZvfmbJqQZ78EvuEBZTJ1VEW7fbxue8BUu", "proofs": [ "373uH8Z3TeNsKkCpNPfhi8KEnXMs2TJLbgPRycvMhpwyqPJGUhDaMm9RrbVrZcpAyQBvTe6AbJqGrxegTgyFzE8J" ], "script": "base64:BgIoCAISBQoDAQgIEgMKAQgSBQoDCAgIEgQKAggIEgUKAwgICBIECgIICBQACXNlcGFyYXRvcgIBXwAJa0N1c3RvbWVyAghjdXN0b21lcgAJa0V4ZWN1dG9yAghleGVjdXRvcgAHa1N0YXR1cwIGc3RhdHVzAAZrT3duZXICBW93bmVyAAZrUHJpY2UCBXByaWNlAAdrUmF0aW5nAgZyYXRpbmcADUNSRUFURV9TVEFUVVMCBmNyZWF0ZQAQQ09NUExFVEVEX1NUQVRVUwIJY29tcGxldGVkAAdJTl9XT1JLAgdpbl93b3JrAB9XQUlUSU5HX0ZPUl9DT05GSVJNQVRJT05fU1RBVFVTAhh3YWl0aW5nX2Zvcl9Db25maXJtYXRpb24AFkFOWVNfU1VHR0VTVElPTl9TVEFUVVMCD2FueV9zdWdnZXN0aW9ucwAFV0FWRVMAgMLXLwELZ2V0UHJpY2VLZXkCD2luY29taW5nQWRkcmVzcwRuYW1lCQC5CQIJAMwIAgkApQgBBQ9pbmNvbWluZ0FkZHJlc3MJAMwIAgUEbmFtZQkAzAgCBQZrUHJpY2UFA25pbAUJc2VwYXJhdG9yAQxnZXRTdGF0dXNLZXkDD2luY29taW5nQWRkcmVzcwRuYW1lBnNlbmRlcgkAuQkCCQDMCAIJAKUIAQUPaW5jb21pbmdBZGRyZXNzCQDMCAIFBG5hbWUJAMwIAgUGc2VuZGVyCQDMCAIFB2tTdGF0dXMFA25pbAUJc2VwYXJhdG9yARVnZXRFeGVjdXRvckFkZHJlc3NLZXkCD2luY29taW5nQWRkcmVzcwRuYW1lCQC5CQIJAMwIAgkApQgBBQ9pbmNvbWluZ0FkZHJlc3MJAMwIAgUEbmFtZQkAzAgCBQlrRXhlY3V0b3IFA25pbAUJc2VwYXJhdG9yAQtnZXRPd25lcktleQIPaW5jb21pbmdBZGRyZXNzBG5hbWUJALkJAgkAzAgCCQClCAEFD2luY29taW5nQWRkcmVzcwkAzAgCBQRuYW1lCQDMCAIFBmtPd25lcgUDbmlsBQlzZXBhcmF0b3IBCmdldERlc2NLZXkCD2luY29taW5nQWRkcmVzcwRuYW1lCQC5CQIJAMwIAgkApQgBBQ9pbmNvbWluZ0FkZHJlc3MJAMwIAgUEbmFtZQUDbmlsBQlzZXBhcmF0b3IBFWdldEN1c3RvbWVyUmFpdGluZ0tleQEPaW5jb21pbmdBZGRyZXNzCQC5CQIJAMwIAgkApQgBBQ9pbmNvbWluZ0FkZHJlc3MJAMwIAgUJa0N1c3RvbWVyCQDMCAIFB2tSYXRpbmcFA25pbAUJc2VwYXJhdG9yARVnZXRFeGVjdXRvclJhaXRpbmdLZXkBD2luY29taW5nQWRkcmVzcwkAuQkCCQDMCAIJAKUIAQUPaW5jb21pbmdBZGRyZXNzCQDMCAIFCWtFeGVjdXRvcgkAzAgCBQdrUmF0aW5nBQNuaWwFCXNlcGFyYXRvcgYBaQELY3JlYXRlT3JkZXIDBXByaWNlBGRlc2MEbmFtZQQLJHQwMTUxNTE1OTEJAJQKAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQFdG9rZW4IBQskdDAxNTE1MTU5MQJfMQQHYW1vdW50MAgFCyR0MDE1MTUxNTkxAl8yBAdkZXNjS2V5CQEKZ2V0RGVzY0tleQIIBQFpBmNhbGxlcgUEbmFtZQQIcHJpY2VLZXkJAQtnZXRQcmljZUtleQIIBQFpBmNhbGxlcgUEbmFtZQQJc3RhdHVzS2V5CQEMZ2V0U3RhdHVzS2V5AwgFAWkGY2FsbGVyBQRuYW1lBQlrQ3VzdG9tZXIECG93bmVyS2V5CQELZ2V0T3duZXJLZXkCCAUBaQZjYWxsZXIFBG5hbWUDCQECIT0CBQV0b2tlbgUEdW5pdAkAAgECDFBheSBpbiB3YXZlcwMJAGYCCQBkAgUFV0FWRVMFBXByaWNlBQdhbW91bnQwCQACAQItVGhlIGNvc3Qgb2YgcGxhY2luZyBhbiBvcmRlciAxIHdhdmVzICsgYW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFB2Rlc2NLZXkFBGRlc2MJAMwIAgkBC1N0cmluZ0VudHJ5AgUIb3duZXJLZXkJAKUIAQgFAWkGY2FsbGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQhwcmljZUtleQUFcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgUJc3RhdHVzS2V5BQ1DUkVBVEVfU1RBVFVTBQNuaWwBaQELY2FuY2VsT3JkZXIBBG5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCmdldERlc2NLZXkCCAUBaQZjYWxsZXIFBG5hbWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2dldFByaWNlS2V5AggFAWkGY2FsbGVyBQRuYW1lCQDMCAIJAQtEZWxldGVFbnRyeQEJAQxnZXRTdGF0dXNLZXkDCAUBaQZjYWxsZXIFBG5hbWUFCWtDdXN0b21lcgkAzAgCCQELRGVsZXRlRW50cnkBCQELZ2V0T3duZXJLZXkCCAUBaQZjYWxsZXIFBG5hbWUFA25pbAFpAQxjb25maXJtT2ZmZXIDBG5hbWUHYWRkcmVzcwRkZXNjBAdpc0V4aXN0CQCdCAIFBHRoaXMJARVnZXRFeGVjdXRvckFkZHJlc3NLZXkCCAUBaQZjYWxsZXIFBG5hbWUEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAQtnZXRPd25lcktleQIIBQFpBmNhbGxlcgUEbmFtZQIZVGhpcyBvcmRlciBkb2VzIG5vdCBleGlzdAMJAQIhPQIFBW93bmVyCQClCAEIBQFpBmNhbGxlcgkAAgECG1lvdSBhcmUgbm90IHRoZSBvcmRlciBvd25lcgMJAQlpc0RlZmluZWQBBQdpc0V4aXN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxnZXRTdGF0dXNLZXkDCAUBaQZjYWxsZXIFBG5hbWUFCWtDdXN0b21lcgUHSU5fV09SSwkAzAgCCQELU3RyaW5nRW50cnkCCQEMZ2V0U3RhdHVzS2V5AwkBBXZhbHVlAQkApggBBQdhZGRyZXNzBQRuYW1lBQlrRXhlY3V0b3IFB0lOX1dPUksFA25pbAkAAgECGVRoaXMgb2ZmZXIgZG9lcyBub3QgZXhpc3QBaQEQdGFza0RvbmVDdXN0b21lcgIEbmFtZQdhZGRyZXNzBA5jdXN0b21lclJhdGluZwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEVZ2V0Q3VzdG9tZXJSYWl0aW5nS2V5AQgFAWkGY2FsbGVyAAAEDmV4ZWN1dG9yUmF0aW5nCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARVnZXRFeGVjdXRvclJhaXRpbmdLZXkBCQEFdmFsdWUBCQCmCAEFB2FkZHJlc3MAAAQGYW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAQtnZXRQcmljZUtleQIIBQFpBmNhbGxlcgUEbmFtZQIOTm8gb3JkZXIgcHJpY2UEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAQtnZXRPd25lcktleQIIBQFpBmNhbGxlcgUEbmFtZQIZVGhpcyBvcmRlciBkb2VzIG5vdCBleGlzdAMJAQIhPQIFBW93bmVyCQClCAEIBQFpBmNhbGxlcgkAAgECG1lvdSBhcmUgbm90IHRoZSBvcmRlciBvd25lcgkAzAgCCQELU3RyaW5nRW50cnkCCQEMZ2V0U3RhdHVzS2V5AwkBBXZhbHVlAQkApggBBQdhZGRyZXNzBQRuYW1lBQlrRXhlY3V0b3IFEENPTVBMRVRFRF9TVEFUVVMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGdldFN0YXR1c0tleQMIBQFpBmNhbGxlcgUEbmFtZQUJa0N1c3RvbWVyBRBDT01QTEVURURfU1RBVFVTCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQV2YWx1ZQEJAKYIAQUHYWRkcmVzcwUGYW1vdW50BQR1bml0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEVZ2V0Q3VzdG9tZXJSYWl0aW5nS2V5AQgFAWkGY2FsbGVyCQBkAgUOY3VzdG9tZXJSYXRpbmcAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFWdldEV4ZWN1dG9yUmFpdGluZ0tleQEJAQV2YWx1ZQEJAKYIAQUHYWRkcmVzcwkAZAIFDmV4ZWN1dG9yUmF0aW5nAAEFA25pbAFpAQVvZmZlcgMEbmFtZQdhZGRyZXNzBGRlc2MEB2lzRXhpc3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQEKZ2V0RGVzY0tleQIJAQV2YWx1ZQEJAKYIAQUHYWRkcmVzcwUEbmFtZQIZVGhpcyBvcmRlciBkb2VzIG5vdCBleGlzdAMJAAACBQdpc0V4aXN0BQdpc0V4aXN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJARVnZXRFeGVjdXRvckFkZHJlc3NLZXkCCQEFdmFsdWUBCQCmCAEFB2FkZHJlc3MFBG5hbWUJAKUIAQgFAWkGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQpnZXREZXNjS2V5AggFAWkGY2FsbGVyBQRuYW1lBQRkZXNjCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxnZXRTdGF0dXNLZXkDCQEFdmFsdWUBCQCmCAEFB2FkZHJlc3MFBG5hbWUFCWtDdXN0b21lcgUWQU5ZU19TVUdHRVNUSU9OX1NUQVRVUwkAzAgCCQELU3RyaW5nRW50cnkCCQEMZ2V0U3RhdHVzS2V5AwgFAWkGY2FsbGVyBQRuYW1lBQlrRXhlY3V0b3IFDUNSRUFURV9TVEFUVVMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQh0YXNrRG9uZQIEbmFtZQdhZGRyZXNzBARkZXNjCQCdCAIFBHRoaXMJAQpnZXREZXNjS2V5AgkBBXZhbHVlAQkApggBBQdhZGRyZXNzBQRuYW1lBAxjdXN0b21lclRhc2sJAQt2YWx1ZU9yRWxzZQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJARVnZXRFeGVjdXRvckFkZHJlc3NLZXkCCQEFdmFsdWUBCQCmCAEFB2FkZHJlc3MFBG5hbWUCBG51bGwDCQECIT0CCQClCAEIBQFpBmNhbGxlcgUMY3VzdG9tZXJUYXNrCQACAQImWW91IGFyZSBub3QgdGhlIHBlcmZvcm1lciBvZiB0aGlzIHRhc2sDCQEJaXNEZWZpbmVkAQUEZGVzYwkAzAgCCQELU3RyaW5nRW50cnkCCQEMZ2V0U3RhdHVzS2V5AwkBBXZhbHVlAQkApggBBQdhZGRyZXNzBQRuYW1lBQlrQ3VzdG9tZXIFH1dBSVRJTkdfRk9SX0NPTkZJUk1BVElPTl9TVEFUVVMFA25pbAkAAgECGVRoaXMgb3JkZXIgZG9lcyBub3QgZXhpc3QASyiHtA==", "height": 2327339, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4g7CY8dG2NkDJS1Cj8Rsc7zTs2M96QsxiSSRMGhzjkPv Next: ENQ2ao1hJpNA9UypZA39y8r1mRUPUnPzAXoom4iMoWro Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let separator = "_"
55
6-let kAuction = "auction"
6+let kCustomer = "customer"
77
8-let kSell = "sell"
8+let kExecutor = "executor"
99
10-let kTrusted = "trusted"
10+let kStatus = "status"
11+
12+let kOwner = "owner"
1113
1214 let kPrice = "price"
1315
14-func getSlotKey (prefix,nftId) = ((prefix + separator) + toBase58String(nftId))
16+let kRating = "rating"
17+
18+let CREATE_STATUS = "create"
19+
20+let COMPLETED_STATUS = "completed"
21+
22+let IN_WORK = "in_work"
23+
24+let WAITING_FOR_CONFIRMATION_STATUS = "waiting_for_Confirmation"
25+
26+let ANYS_SUGGESTION_STATUS = "any_suggestions"
27+
28+let WAVES = 100000000
29+
30+func getPriceKey (incomingAddress,name) = makeString([toString(incomingAddress), name, kPrice], separator)
1531
1632
17-func getPriceKey (nftId) = ((kPrice + separator) + toBase58String(nftId))
33+func getStatusKey (incomingAddress,name,sender) = makeString([toString(incomingAddress), name, sender, kStatus], separator)
1834
1935
20-func getSellKey (nftId) = ((kSell + separator) + toBase58String(nftId))
36+func getExecutorAddressKey (incomingAddress,name) = makeString([toString(incomingAddress), name, kExecutor], separator)
2137
2238
23-func getAuctionKey (nftId) = ((kAuction + separator) + toBase58String(nftId))
39+func getOwnerKey (incomingAddress,name) = makeString([toString(incomingAddress), name, kOwner], separator)
2440
2541
26-func getTrustedKey (issuer) = ((kTrusted + separator) + toString(issuer))
42+func getDescKey (incomingAddress,name) = makeString([toString(incomingAddress), name], separator)
2743
2844
29-func addToList (accum,nextValue) = (accum ++ [nextValue])
45+func getCustomerRaitingKey (incomingAddress) = makeString([toString(incomingAddress), kCustomer, kRating], separator)
3046
3147
32-func joinString (params) = {
33- let length = size(params)
34- if ((length == 0))
35- then throw("Empty params")
36- else if ((length == 1))
37- then makeString({
38- let $l = params
39- let $s = size($l)
40- let $acc0 = nil
41- func $f0_1 ($a,$i) = if (($i >= $s))
42- then $a
43- else addToList($a, $l[$i])
44-
45- func $f0_2 ($a,$i) = if (($i >= $s))
46- then $a
47- else throw("List size exceeds 1")
48-
49- $f0_2($f0_1($acc0, 0), 1)
50- }, separator)
51- else if ((length == 2))
52- then makeString({
53- let $l = params
54- let $s = size($l)
55- let $acc0 = nil
56- func $f0_1 ($a,$i) = if (($i >= $s))
57- then $a
58- else addToList($a, $l[$i])
59-
60- func $f0_2 ($a,$i) = if (($i >= $s))
61- then $a
62- else throw("List size exceeds 2")
63-
64- $f0_2($f0_1($f0_1($acc0, 0), 1), 2)
65- }, separator)
66- else if ((length == 3))
67- then makeString({
68- let $l = params
69- let $s = size($l)
70- let $acc0 = nil
71- func $f0_1 ($a,$i) = if (($i >= $s))
72- then $a
73- else addToList($a, $l[$i])
74-
75- func $f0_2 ($a,$i) = if (($i >= $s))
76- then $a
77- else throw("List size exceeds 3")
78-
79- $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
80- }, separator)
81- else if ((length == 4))
82- then makeString({
83- let $l = params
84- let $s = size($l)
85- let $acc0 = nil
86- func $f0_1 ($a,$i) = if (($i >= $s))
87- then $a
88- else addToList($a, $l[$i])
89-
90- func $f0_2 ($a,$i) = if (($i >= $s))
91- then $a
92- else throw("List size exceeds 4")
93-
94- $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
95- }, separator)
96- else if ((length == 5))
97- then makeString({
98- let $l = params
99- let $s = size($l)
100- let $acc0 = nil
101- func $f0_1 ($a,$i) = if (($i >= $s))
102- then $a
103- else addToList($a, $l[$i])
104-
105- func $f0_2 ($a,$i) = if (($i >= $s))
106- then $a
107- else throw("List size exceeds 5")
108-
109- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
110- }, separator)
111- else throw("Max number of parameters exceeded")
112- }
113-
114-
115-func parseAsAuction (details) = {
116- let res = split(details, separator)
117- $Tuple5(addressFromStringValue(res[0]), parseIntValue(res[1]), parseIntValue(res[2]), parseIntValue(res[3]), parseIntValue(res[4]))
118- }
119-
120-
121-func parseAsSell (details) = {
122- let res = split(details, separator)
123- $Tuple2(addressFromStringValue(res[0]), parseIntValue(res[1]))
124- }
125-
126-
127-func joinStruct (params) = match params {
128- case auction: (Address, Int, Int, Int, Int) =>
129- joinString([toString(auction._1), toString(auction._2), toString(auction._3), toString(auction._4), toString(auction._5)])
130- case sell: (Address, Int) =>
131- joinString([toString(sell._1), toString(sell._2)])
132- case _ =>
133- throw("Wrong params tupple")
134-}
135-
136-
137-func setAuction (seller,nftId,startPrice,endPrice,start,end) = StringEntry(getAuctionKey(nftId), joinStruct($Tuple5(seller, startPrice, endPrice, start, end)))
138-
139-
140-func setSell (nftId,celler,price) = StringEntry(getSellKey(nftId), joinStruct($Tuple2(celler, price)))
141-
142-
143-func getAuction (nftId) = value(getString(this, getAuctionKey(nftId)))
144-
145-
146-func getSell (nftId) = value(getString(this, getSellKey(nftId)))
147-
148-
149-func calcPriceAtCurrentMoment (assetId,moment) = {
150- let details = getAuction(assetId)
151- let $t028172921 = parseAsAuction(details)
152- let seller = $t028172921._1
153- let startPriceValue = $t028172921._2
154- let endPriceValue = $t028172921._3
155- let startPeriodValue = $t028172921._4
156- let endPeriodValue = $t028172921._5
157- if ((moment >= endPeriodValue))
158- then $Tuple2(seller, endPriceValue)
159- else {
160- let deltaPrice = (startPriceValue - endPriceValue)
161- let period = (endPeriodValue - startPeriodValue)
162- let spended = (moment - startPeriodValue)
163- $Tuple2(seller, (startPriceValue - fraction(spended, deltaPrice, period)))
164- }
165- }
166-
167-
168-func isNft (assetId) = match assetInfo(assetId) {
169- case token: Asset =>
170- if (if ((token.decimals == 0))
171- then (token.quantity == 1)
172- else false)
173- then (token.reissuable == false)
174- else false
175- case _ =>
176- false
177-}
178-
179-
180-func isTrustedNft (assetId) = {
181- let issuer = value(assetInfo(assetId)).issuer
182- valueOrElse(getBoolean(this, getTrustedKey(issuer)), false)
183- }
184-
185-
186-func isSellExist (assetId) = isDefined(getString(this, getSellKey(assetId)))
187-
188-
189-func isAuctionExist (assetId) = isDefined(getString(this, getAuctionKey(assetId)))
190-
191-
192-func isCorrectSellPrice (price) = (price > 0)
193-
194-
195-func isCorrectAuctionPeriod (start,end) = (end > start)
196-
197-
198-func isCorrectAuctionPrices (startPrice,endPrice) = (startPrice > endPrice)
199-
200-
201-func isAdmin (caller) = (caller == this)
202-
203-
204-func isValidCaller (caller,seller) = if ((caller == this))
205- then true
206- else (caller == seller)
207-
208-
209-func isAuctionEnded (now,end) = (now > end)
210-
211-
212-func isEnoughFunds (payment,currentMomentPrice) = (payment >= currentMomentPrice)
213-
214-
215-func isWawes (assetId) = (assetId == unit)
216-
217-
218-func isCorrectNft (nftId) = if (!(isNft(nftId)))
219- then throw("Token is not Nft")
220- else if (isSellExist(nftId))
221- then throw("Sell already exists")
222- else if (isAuctionExist(nftId))
223- then throw("Auction already exists")
224- else unit
225-
226-
227-func isCorrectPayments (paymentAsset,paymentAmount,price) = if (!(isWawes(paymentAsset)))
228- then throw("Payment must be at WAVES")
229- else if (!(isEnoughFunds(paymentAmount, price)))
230- then throw("Not enough funds")
231- else unit
232-
233-
234-func calcFee () = 0
235-
236-
237-func calcTrustedFee () = 0
238-
239-
240-func resultFundsAmounts (isTrusted,paymentAmount,actualPrice) = if (isTrusted)
241- then $Tuple2((actualPrice - calcTrustedFee()), (paymentAmount - actualPrice))
242- else $Tuple2((actualPrice - calcFee()), (paymentAmount - actualPrice))
243-
244-
245-func getSlot (nftId) = if (isSellExist(nftId))
246- then $Tuple2(kSell, getSell(nftId))
247- else if (isAuctionExist(nftId))
248- then $Tuple2(kAuction, getAuction(nftId))
249- else throw("Slot doesn`t exist")
48+func getExecutorRaitingKey (incomingAddress) = makeString([toString(incomingAddress), kExecutor, kRating], separator)
25049
25150
25251 @Callable(i)
253-func addSell (price) = {
254- let nftId = value(i.payments[0].assetId)
255- valueOrElse(isCorrectNft(nftId), if (!(isCorrectSellPrice(price)))
256- then throw("Price must be > 0")
257- else [setSell(nftId, i.caller, price)])
52+func createOrder (price,desc,name) = {
53+ let $t015151591 = $Tuple2(i.payments[0].assetId, value(i.payments[0].amount))
54+ let token = $t015151591._1
55+ let amount0 = $t015151591._2
56+ let descKey = getDescKey(i.caller, name)
57+ let priceKey = getPriceKey(i.caller, name)
58+ let statusKey = getStatusKey(i.caller, name, kCustomer)
59+ let ownerKey = getOwnerKey(i.caller, name)
60+ if ((token != unit))
61+ then throw("Pay in waves")
62+ else if (((WAVES + price) > amount0))
63+ then throw("The cost of placing an order 1 waves + amount")
64+ else [StringEntry(descKey, desc), StringEntry(ownerKey, toString(i.caller)), IntegerEntry(priceKey, price), StringEntry(statusKey, CREATE_STATUS)]
25865 }
25966
26067
26168
26269 @Callable(i)
263-func addAuction (startPrice,endPrice,start,end,nft_name,nft_owner,nft_dAppAddress,nft_type,nft_tags,nft_selling_price,nft_description,nft_onSell,nft_data) = {
264- let nftId = value(i.payments[0].assetId)
265- valueOrElse(isCorrectNft(nftId), if (!(isCorrectAuctionPeriod(start, end)))
266- then throw("Period is not correct")
267- else if (!(isCorrectAuctionPrices(startPrice, endPrice)))
268- then throw("Start price must be > endPrice")
269- else [setAuction(i.caller, nftId, startPrice, endPrice, start, end), StringEntry(((toBase58String(nftId) + separator) + "nft_owner"), toString(i.caller)), StringEntry(((toBase58String(nftId) + separator) + "nft_type"), nft_type), StringEntry(((toBase58String(nftId) + separator) + "nft_tags"), nft_tags), StringEntry(((toBase58String(nftId) + separator) + "nft_dAppAddress"), nft_dAppAddress), IntegerEntry(((toBase58String(nftId) + separator) + "nft_selling_price"), nft_selling_price), StringEntry(((toBase58String(nftId) + separator) + "nft_onSell"), nft_onSell), StringEntry(((toBase58String(nftId) + separator) + "nft_data"), nft_data)])
70+func cancelOrder (name) = [DeleteEntry(getDescKey(i.caller, name)), DeleteEntry(getPriceKey(i.caller, name)), DeleteEntry(getStatusKey(i.caller, name, kCustomer)), DeleteEntry(getOwnerKey(i.caller, name))]
71+
72+
73+
74+@Callable(i)
75+func confirmOffer (name,address,desc) = {
76+ let isExist = getString(this, getExecutorAddressKey(i.caller, name))
77+ let owner = valueOrErrorMessage(getStringValue(this, getOwnerKey(i.caller, name)), "This order does not exist")
78+ if ((owner != toString(i.caller)))
79+ then throw("You are not the order owner")
80+ else if (isDefined(isExist))
81+ then [StringEntry(getStatusKey(i.caller, name, kCustomer), IN_WORK), StringEntry(getStatusKey(value(addressFromString(address)), name, kExecutor), IN_WORK)]
82+ else throw("This offer does not exist")
27083 }
27184
27285
27386
27487 @Callable(i)
275-func buyFromSlot (nftId) = {
276- let $t067826871 = $Tuple2(i.payments[0].assetId, value(i.payments[0].amount))
277- let paymentAsset = $t067826871._1
278- let paymentAmount = $t067826871._2
279- let assetId = fromBase58String(nftId)
280- let $t069156953 = getSlot(assetId)
281- let type = $t069156953._1
282- let details = $t069156953._2
283- let baseRes = [ScriptTransfer(i.caller, 1, assetId), DeleteEntry(getSlotKey(type, assetId))]
284- if ((type == kSell))
285- then {
286- let $t070957142 = parseAsSell(details)
287- let seller = $t070957142._1
288- let priceValue = $t070957142._2
289- valueOrElse(isCorrectPayments(paymentAsset, paymentAmount, priceValue), {
290- let $t072277329 = resultFundsAmounts(isTrustedNft(assetId), paymentAmount, priceValue)
291- let sellerAmount = $t072277329._1
292- let buyerAmount = $t072277329._2
293- let updatedRes = (baseRes ++ [ScriptTransfer(seller, sellerAmount, unit)])
294- if ((buyerAmount > 0))
295- then (updatedRes ++ [ScriptTransfer(i.caller, buyerAmount, unit)])
296- else updatedRes
297- })
298- }
299- else {
300- let $t075467615 = calcPriceAtCurrentMoment(assetId, height)
301- let seller = $t075467615._1
302- let actualPrice = $t075467615._2
303- valueOrElse(isCorrectPayments(paymentAsset, paymentAmount, actualPrice), {
304- let $t077017804 = resultFundsAmounts(isTrustedNft(assetId), paymentAmount, actualPrice)
305- let sellerAmount = $t077017804._1
306- let buyerAmount = $t077017804._2
307- let updatedRes = (baseRes ++ [ScriptTransfer(seller, sellerAmount, unit)])
308- if ((buyerAmount > 0))
309- then (updatedRes ++ [ScriptTransfer(i.caller, buyerAmount, unit)])
310- else updatedRes
311- })
312- }
88+func taskDoneCustomer (name,address) = {
89+ let customerRating = valueOrElse(getInteger(this, getCustomerRaitingKey(i.caller)), 0)
90+ let executorRating = valueOrElse(getInteger(this, getExecutorRaitingKey(value(addressFromString(address)))), 0)
91+ let amount = valueOrErrorMessage(getIntegerValue(this, getPriceKey(i.caller, name)), "No order price")
92+ let owner = valueOrErrorMessage(getStringValue(this, getOwnerKey(i.caller, name)), "This order does not exist")
93+ if ((owner != toString(i.caller)))
94+ then throw("You are not the order owner")
95+ else [StringEntry(getStatusKey(value(addressFromString(address)), name, kExecutor), COMPLETED_STATUS), StringEntry(getStatusKey(i.caller, name, kCustomer), COMPLETED_STATUS), ScriptTransfer(value(addressFromString(address)), amount, unit), IntegerEntry(getCustomerRaitingKey(i.caller), (customerRating + 1)), IntegerEntry(getExecutorRaitingKey(value(addressFromString(address))), (executorRating + 1))]
31396 }
31497
31598
31699
317100 @Callable(i)
318-func declineSlot (nftId) = {
319- let assetId = fromBase58String(nftId)
320- let $t081058143 = getSlot(assetId)
321- let type = $t081058143._1
322- let details = $t081058143._2
323- let baseRes = [DeleteEntry(getSlotKey(type, assetId))]
324- if ((type == kSell))
325- then {
326- let $t082358282 = parseAsSell(details)
327- let seller = $t082358282._1
328- let priceValue = $t082358282._2
329- if (!(isValidCaller(i.caller, seller)))
330- then throw("Invalid caller")
331- else (baseRes ++ [ScriptTransfer(seller, 1, assetId)])
332- }
333- else {
334- let $t084278531 = parseAsAuction(details)
335- let seller = $t084278531._1
336- let startPriceValue = $t084278531._2
337- let endPriceValue = $t084278531._3
338- let startPeriodValue = $t084278531._4
339- let endPeriodValue = $t084278531._5
340- if (!(isValidCaller(i.caller, seller)))
341- then throw("Invalid caller")
342- else if (!(isAuctionEnded(height, endPeriodValue)))
343- then throw("Wait for end of auction")
344- else (baseRes ++ [ScriptTransfer(seller, 1, assetId)])
345- }
101+func offer (name,address,desc) = {
102+ let isExist = valueOrErrorMessage(getString(this, getDescKey(value(addressFromString(address)), name)), "This order does not exist")
103+ if ((isExist == isExist))
104+ then [StringEntry(getExecutorAddressKey(value(addressFromString(address)), name), toString(i.caller)), StringEntry(getDescKey(i.caller, name), desc), StringEntry(getStatusKey(value(addressFromString(address)), name, kCustomer), ANYS_SUGGESTION_STATUS), StringEntry(getStatusKey(i.caller, name, kExecutor), CREATE_STATUS)]
105+ else throw("Strict value is not equal to itself.")
346106 }
347107
348108
349109
350110 @Callable(i)
351-func setTrustedIssuer (trustedAddr) = if (!(isAdmin(i.caller)))
352- then throw("Only admin")
353- else [BooleanEntry(getTrustedKey(addressFromStringValue(trustedAddr)), true)]
354-
355-
356-
357-@Callable(i)
358-func getPriceAtCurrentMoment (nftId,moment) = {
359- let assetId = fromBase58String(nftId)
360- let $t090729135 = calcPriceAtCurrentMoment(assetId, moment)
361- let seller = $t090729135._1
362- let price = $t090729135._2
363-[IntegerEntry(getPriceKey(assetId), price)]
111+func taskDone (name,address) = {
112+ let desc = getString(this, getDescKey(value(addressFromString(address)), name))
113+ let customerTask = valueOrElse(getStringValue(this, getExecutorAddressKey(value(addressFromString(address)), name)), "null")
114+ if ((toString(i.caller) != customerTask))
115+ then throw("You are not the performer of this task")
116+ else if (isDefined(desc))
117+ then [StringEntry(getStatusKey(value(addressFromString(address)), name, kCustomer), WAITING_FOR_CONFIRMATION_STATUS)]
118+ else throw("This order does not exist")
364119 }
365120
366121

github/deemru/w8io/169f3d6 
51.79 ms