tx · GYrvjGQfZqpixX2JCmDbaVp9UhGo95otsZsbbvgLHLTS 3N9cKCHp6ZLMgz7rRgF8Q8DEt8zbtd1Ht7F: -0.01000000 Waves 2023.01.25 09:56 [2420172] smart account 3N9cKCHp6ZLMgz7rRgF8Q8DEt8zbtd1Ht7F > SELF 0.00000000 Waves
{ "type": 13, "id": "GYrvjGQfZqpixX2JCmDbaVp9UhGo95otsZsbbvgLHLTS", "fee": 1000000, "feeAssetId": null, "timestamp": 1674629980446, "version": 2, "chainId": 84, "sender": "3N9cKCHp6ZLMgz7rRgF8Q8DEt8zbtd1Ht7F", "senderPublicKey": "3V22YUj3GF4AeBxdWx8rgGdG4groE4W6P2s4sAkshe7R", "proofs": [ "mc5TUUXKN9SpLprWhCBK6T34x4uzKYNXvfBe4Fqq26TFu1VNZWRyGtx6JE4NHQLhav3dCKHCr31JXM59gtVssSY" ], "script": "base64:BgIICAISBAoCCAgLAAlzZXBhcmF0b3ICAV8ABGtCdXkCA2J1eQAGa1ByaWNlAgVwcmljZQAFa1NlbGwCBHNlbGwABXRlYW1zASCFY5Wj84iOsN4MF44ITr+aP5K7Jts66HaOFtwUIipIfgAFV0FWRVMBAAASbWF4QXVjdGlvbkR1cmF0aW9uAAcABGtCaWQCA2JpZAAMc3RhdHVzRm9yTkZUCQCWCgQCBE9QRU4CBkNMT1NFRAIIUkVXQVJERUQCCENBTkNFTEVEAAtkQXBwQWRkcmVzcwEaAVRKuE9s3sLak+30julKNvjVT3+V1VVbXaABBWlzTmZ0AQdhc3NldElkBAckbWF0Y2gwCQDsBwEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIFQXNzZXQEBXRva2VuBQckbWF0Y2gwAwMJAAACCAUFdG9rZW4IZGVjaW1hbHMAAAkAAAIIBQV0b2tlbghxdWFudGl0eQABBwkAAAIIBQV0b2tlbgpyZWlzc3VhYmxlBwcHAQFpARJtYW51YWxGdW5kVHJhbnNmZXICDXJlY2VwaWVudEFkZHIHbWVzc2FnZQQGY2FsbGVyCAgFAWkGY2FsbGVyBWJ5dGVzBAdyZWNpdmVyCQDZBAEFDXJlY2VwaWVudEFkZHIEBmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQDCQAAAgkApAMBBQZhbW91bnQCBXRlYW1zCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJANgEAQUGY2FsbGVyAglfdHJhbnNmZXIFBmFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJANgEAQUGY2FsbGVyAgxfdHJhbnNmZXJfdG8FDXJlY2VwaWVudEFkZHIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQdyZWNpdmVyBQZhbW91bnQFBXRlYW1zBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkA2AQBBQZjYWxsZXICCV90cmFuc2ZlcgUGYW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkA2AQBBQZjYWxsZXICDF90cmFuc2Zlcl90bwUNcmVjZXBpZW50QWRkcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFB3JlY2l2ZXIFBmFtb3VudAUEdW5pdAUDbmlsAIut3UY=", "height": 2420172, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5LZ628D5Q1iVZMxSuanRhn4KKL3M4E5mPWTqf84KekUp Next: UgDYv1qGa33swxK71FZzA6RAQkk9uhKxBgtXJ9spew4 Diff:
Old | New | Differences | |
---|---|---|---|
9 | 9 | ||
10 | 10 | let d = "sell" | |
11 | 11 | ||
12 | - | let e = | |
12 | + | let e = base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq' | |
13 | 13 | ||
14 | - | let f = base58' | |
14 | + | let f = base58'' | |
15 | 15 | ||
16 | - | let g = | |
16 | + | let g = 7 | |
17 | 17 | ||
18 | 18 | let h = "bid" | |
19 | 19 | ||
37 | 37 | ||
38 | 38 | ||
39 | 39 | @Callable(o) | |
40 | - | func createNft (p,q,r,s,t,u,v,w,x) = { | |
41 | - | let y = Issue(p, v, 1, 0, false) | |
42 | - | let z = calculateAssetId(y) | |
43 | - | let A = o.transactionId | |
44 | - | [y, ScriptTransfer(o.caller, 1, z), StringEntry(((toBase58String(z) + a) + "Owner"), toString(o.caller)), StringEntry(((toBase58String(z) + a) + "nft_type"), s), StringEntry(((toBase58String(z) + a) + "nft_tags"), t), StringEntry(((toBase58String(z) + a) + "nft_dAppAddress"), r), IntegerEntry(((toBase58String(z) + a) + "nft_selling_price"), u), StringEntry(((toBase58String(z) + a) + "nft_onSell"), w), StringEntry(((toBase58String(z) + a) + "nft_data"), x), StringEntry(((toBase58String(A) + a) + "issue_nft"), toBase58String(z))] | |
40 | + | func manualFundTransfer (p,q) = { | |
41 | + | let r = o.caller.bytes | |
42 | + | let s = fromBase58String(p) | |
43 | + | let t = o.payments[0].amount | |
44 | + | if ((toString(t) == "teams")) | |
45 | + | then [IntegerEntry((toBase58String(r) + "_transfer"), t), StringEntry((toBase58String(r) + "_transfer_to"), p), ScriptTransfer(Address(s), t, e)] | |
46 | + | else [IntegerEntry((toBase58String(r) + "_transfer"), t), StringEntry((toBase58String(r) + "_transfer_to"), p), ScriptTransfer(Address(s), t, unit)] | |
45 | 47 | } | |
46 | - | ||
47 | - | ||
48 | - | ||
49 | - | @Callable(o) | |
50 | - | func sellNFT (B) = { | |
51 | - | let A = o.transactionId | |
52 | - | let C = o.caller.bytes | |
53 | - | let D = $Tuple2(value(o.payments[0].assetId), value(o.payments[0].amount)) | |
54 | - | let E = D._1 | |
55 | - | let F = D._2 | |
56 | - | if (!(k(E))) | |
57 | - | then throw("Token is not NFT") | |
58 | - | else [StringEntry(((c + a) + toBase58String(value(o.payments[0].assetId))), B), StringEntry(((toString(o.caller) + a) + d), ((toBase58String(E) + a) + toString(F)))] | |
59 | - | } | |
60 | - | ||
61 | - | ||
62 | - | ||
63 | - | @Callable(o) | |
64 | - | func buyNFT (G,H) = { | |
65 | - | let l = fromBase58String(G) | |
66 | - | let I = value(o.payments[0].amount) | |
67 | - | let J = { | |
68 | - | let m = getString(this, (("nft_" + H) + "_owner")) | |
69 | - | if ($isInstanceOf(m, "String")) | |
70 | - | then { | |
71 | - | let K = m | |
72 | - | K | |
73 | - | } | |
74 | - | else false | |
75 | - | } | |
76 | - | let B = getStringValue(((((c + a) + G) + "_") + H)) | |
77 | - | if ((H == toString(o.caller))) | |
78 | - | then throw("current Owner of NFT not able to purchase") | |
79 | - | else if ((o.payments[0].assetId == f)) | |
80 | - | then [ScriptTransfer(o.caller, 1, l), ScriptTransfer(Address(fromBase58String(H)), I, f), StringEntry(((toString(o.caller) + a) + b), ((G + a) + toString(I))), DeleteEntry((("nft_" + H) + "_owner")), StringEntry((("nft_" + H) + "_owner"), toString(o.caller)), StringEntry(((G + a) + "_owner"), toString(o.caller))] | |
81 | - | else [ScriptTransfer(o.caller, 1, l), ScriptTransfer(Address(fromBase58String(H)), I, unit), StringEntry(((toString(o.caller) + a) + b), ((G + a) + toString(I))), DeleteEntry((("nft_" + H) + "_owner")), StringEntry((("nft_" + H) + "_owner"), toString(o.caller)), StringEntry(((G + a) + "_owner"), toString(o.caller))] | |
82 | - | } | |
83 | - | ||
84 | - | ||
85 | - | ||
86 | - | @Callable(o) | |
87 | - | func cancelSell (L) = { | |
88 | - | let A = toBase58String(o.transactionId) | |
89 | - | let C = o.caller.bytes | |
90 | - | [StringEntry(((A + L) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(C), 1, fromBase58String(L))] | |
91 | - | } | |
92 | - | ||
93 | - | ||
94 | - | ||
95 | - | @Callable(o) | |
96 | - | func addAuction (M,N,O,P) = { | |
97 | - | let A = toBase58String(o.transactionId) | |
98 | - | let L = value(o.payments[0].assetId) | |
99 | - | let B = value(O) | |
100 | - | let Q = (lastBlock.height + P) | |
101 | - | let R = o.caller.bytes | |
102 | - | let S = { | |
103 | - | let m = getString(this, (((toBase58String(L) + a) + "nft_status_") + toBase58String(R))) | |
104 | - | if ($isInstanceOf(m, "String")) | |
105 | - | then { | |
106 | - | let K = m | |
107 | - | true | |
108 | - | } | |
109 | - | else false | |
110 | - | } | |
111 | - | if ((o.payments[0].assetId == unit)) | |
112 | - | then throw("NFT not attached") | |
113 | - | else if ((S == true)) | |
114 | - | then throw("Already in auction list") | |
115 | - | else if ((P > e)) | |
116 | - | then throw(("Duration is too long. Must be less than or equal to 7 " + toString(e))) | |
117 | - | else [StringEntry(((A + "_nft_start_auction_date_") + toBase58String(R)), M), StringEntry(((A + "_nft_end_auction_date_") + toBase58String(R)), N), StringEntry((A + "_nft_start_price"), O), StringEntry((A + "_nft_owner"), toString(o.caller)), StringEntry((A + "_nft_on_auction"), toBase58String(L)), StringEntry((A + "_previous_bidder"), "none"), StringEntry((A + "_highest_bid"), "0"), StringEntry((A + "_winner_of_nft"), "0"), StringEntry((A + "_bidder_count"), "0"), StringEntry((A + "_nft_status"), "OPEN")] | |
118 | - | } | |
119 | - | ||
120 | - | ||
121 | - | ||
122 | - | @Callable(o) | |
123 | - | func placeBid (T,L,q,U) = { | |
124 | - | let A = toBase58String(o.transactionId) | |
125 | - | let R = o.caller.bytes | |
126 | - | let l = fromBase58String(L) | |
127 | - | let V = o.payments[0].amount | |
128 | - | let W = getStringValue(this, (T + "_highest_bid")) | |
129 | - | let X = getString(this, (T + "_previous_bidder")) | |
130 | - | let Y = getStringValue(this, (T + "_bidder_count")) | |
131 | - | let Z = getStringValue(this, (T + "_winner_of_nft")) | |
132 | - | let S = getStringValue(this, (T + "_nft_status")) | |
133 | - | if ((o.payments[0].assetId != unit)) | |
134 | - | then throw("Pay in waves") | |
135 | - | else if ((S != "OPEN")) | |
136 | - | then throw("Not open for auction") | |
137 | - | else if ((parseIntValue(W) >= V)) | |
138 | - | then throw("Bid is less then starting/highest Bid") | |
139 | - | else if ((W == "0")) | |
140 | - | then [StringEntry((T + "_highest_bid"), toString(V)), StringEntry((T + "_winner_of_nft"), toBase58String(o.caller.bytes)), StringEntry((T + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((T + "_nft_id"), toBase58String(l)), StringEntry((T + "_nft_owner"), q), StringEntry((((A + "_") + T) + "_highest_bid"), toString(V)), StringEntry((((A + "_") + T) + "_winner"), toBase58String(o.caller.bytes)), StringEntry((((A + "_") + T) + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((((A + "_") + T) + "_nft_id"), toBase58String(l)), StringEntry((((A + "_") + T) + "_nft_owner"), q), StringEntry((A + "_bid_for_nft_by"), toBase58String(R)), StringEntry((A + "_bid_price_place"), U), StringEntry((A + "_previous_bid_amount_refund_to_address"), Z), StringEntry((A + "_prevoius_bid_amount_refund"), W)] | |
141 | - | else [StringEntry((T + "_highest_bid"), toString(V)), StringEntry((T + "_winner_of_nft"), toBase58String(o.caller.bytes)), StringEntry((T + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((T + "_nft_id"), toBase58String(l)), StringEntry((T + "_nft_owner"), q), StringEntry((((A + "_") + T) + "_highest_bid"), toString(V)), StringEntry((((A + "_") + T) + "_winner"), toBase58String(o.caller.bytes)), StringEntry((((A + "_") + T) + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((((A + "_") + T) + "_nft_id"), toBase58String(l)), StringEntry((((A + "_") + T) + "_nft_owner"), q), StringEntry((A + "_bid_for_nft_by"), toBase58String(R)), StringEntry((A + "_bid_price_place"), U), StringEntry((A + "_previous_bid_amount_refund_to_address"), Z), StringEntry((A + "_prevoius_bid_amount_refund"), W), ScriptTransfer(Address(fromBase58String(Z)), parseIntValue(W), unit)] | |
142 | - | } | |
143 | - | ||
144 | - | ||
145 | - | ||
146 | - | @Callable(o) | |
147 | - | func acceptBidOffer (T,L,aa) = { | |
148 | - | let A = toBase58String(o.transactionId) | |
149 | - | let R = o.caller.bytes | |
150 | - | let l = fromBase58String(L) | |
151 | - | let ab = getStringValue(this, (T + "_highest_bid")) | |
152 | - | let ac = getStringValue(this, (T + "_winner_of_nft")) | |
153 | - | [ScriptTransfer(Address(R), parseIntValue(ab), unit), ScriptTransfer(Address(fromBase58String(ac)), 1, l), StringEntry((A + "_amount_paid_to_owner"), ab), StringEntry((A + "_nft_transfer_to"), ac), StringEntry((A + "_nft_status"), "REWARDED"), StringEntry((T + "_amount_paid_to_owner"), ab), StringEntry((T + "_nft_transfer_to"), ac), StringEntry((T + "_nft_status"), "REWARDED")] | |
154 | - | } | |
155 | - | ||
156 | - | ||
157 | - | ||
158 | - | @Callable(o) | |
159 | - | func cancelAuction (T) = { | |
160 | - | let A = toBase58String(o.transactionId) | |
161 | - | let R = o.caller.bytes | |
162 | - | let ad = getStringValue(this, (T + "_nft_status")) | |
163 | - | let ae = getStringValue(this, (T + "_winner_of_nft")) | |
164 | - | let af = getStringValue(this, (T + "_nft_owner")) | |
165 | - | let L = getStringValue(this, (T + "_nft_on_auction")) | |
166 | - | let ag = getStringValue(this, (T + "_highest_bid")) | |
167 | - | if ((ae == "0")) | |
168 | - | then [StringEntry(((A + T) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(fromBase58String(af)), 1, fromBase58String(L))] | |
169 | - | else [StringEntry((T + "_nft_status"), "CANCELED"), StringEntry((T + "_previous_bid_amount_refund_to_address"), ae), StringEntry((T + "_prevoius_bid_amount_refund"), ag), StringEntry((A + "_nft_status"), "CANCELED"), StringEntry((A + "_previous_bid_amount_refund_to_address"), ae), StringEntry((A + "_prevoius_bid_amount_refund"), ag), ScriptTransfer(Address(fromBase58String(af)), 1, fromBase58String(L)), ScriptTransfer(Address(fromBase58String(ae)), parseIntValue(ag), unit)] | |
170 | - | } | |
171 | - | ||
172 | - | ||
173 | - | ||
174 | - | @Callable(o) | |
175 | - | func withdrawBid (ah) = { | |
176 | - | let R = o.caller.bytes | |
177 | - | let ai = getStringValue(this, (ah + "_highest_bid")) | |
178 | - | let aj = getStringValue(this, (ah + "_winner")) | |
179 | - | let ak = getStringValue(this, (ah + "_nft_id")) | |
180 | - | if ((toBase58String(R) != aj)) | |
181 | - | then throw("No bid") | |
182 | - | else [StringEntry((ah + "_nft_bid"), "WITHDRAW"), StringEntry((ah + "_nft_id"), ak), StringEntry((ah + "_bidding_price_refund_amount"), ai), ScriptTransfer(o.caller, parseIntValue(ai), unit)] | |
183 | - | } | |
184 | - | ||
185 | - | ||
186 | - | ||
187 | - | @Callable(o) | |
188 | - | func manualFundTransfer (al,am) = { | |
189 | - | let R = o.caller.bytes | |
190 | - | let an = fromBase58String(al) | |
191 | - | let I = o.payments[0].amount | |
192 | - | if ((toString(I) == "")) | |
193 | - | then throw("Payment is not attached or empty") | |
194 | - | else [IntegerEntry((toBase58String(R) + "_transfer"), I), StringEntry((toBase58String(R) + "_transfer_to"), al), ScriptTransfer(Address(an), I, f)] | |
195 | - | } | |
196 | - | ||
197 | - | ||
198 | - | ||
199 | - | @Callable(o) | |
200 | - | func testBid (ao) = [StringEntry("E8kkFBYCy44JJaq6pAZ6KizsuResi5UKNhbD1WNZwhhY_highest_bid", "0")] | |
201 | 48 | ||
202 | 49 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "_" | |
5 | 5 | ||
6 | 6 | let b = "buy" | |
7 | 7 | ||
8 | 8 | let c = "price" | |
9 | 9 | ||
10 | 10 | let d = "sell" | |
11 | 11 | ||
12 | - | let e = | |
12 | + | let e = base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq' | |
13 | 13 | ||
14 | - | let f = base58' | |
14 | + | let f = base58'' | |
15 | 15 | ||
16 | - | let g = | |
16 | + | let g = 7 | |
17 | 17 | ||
18 | 18 | let h = "bid" | |
19 | 19 | ||
20 | 20 | let i = $Tuple4("OPEN", "CLOSED", "REWARDED", "CANCELED") | |
21 | 21 | ||
22 | 22 | let j = base58'3MvjAaDYHpS4A5K4CV3kZMMEH9m9JdBSvbq' | |
23 | 23 | ||
24 | 24 | func k (l) = { | |
25 | 25 | let m = assetInfo(l) | |
26 | 26 | if ($isInstanceOf(m, "Asset")) | |
27 | 27 | then { | |
28 | 28 | let n = m | |
29 | 29 | if (if ((n.decimals == 0)) | |
30 | 30 | then (n.quantity == 1) | |
31 | 31 | else false) | |
32 | 32 | then (n.reissuable == false) | |
33 | 33 | else false | |
34 | 34 | } | |
35 | 35 | else false | |
36 | 36 | } | |
37 | 37 | ||
38 | 38 | ||
39 | 39 | @Callable(o) | |
40 | - | func createNft (p,q,r,s,t,u,v,w,x) = { | |
41 | - | let y = Issue(p, v, 1, 0, false) | |
42 | - | let z = calculateAssetId(y) | |
43 | - | let A = o.transactionId | |
44 | - | [y, ScriptTransfer(o.caller, 1, z), StringEntry(((toBase58String(z) + a) + "Owner"), toString(o.caller)), StringEntry(((toBase58String(z) + a) + "nft_type"), s), StringEntry(((toBase58String(z) + a) + "nft_tags"), t), StringEntry(((toBase58String(z) + a) + "nft_dAppAddress"), r), IntegerEntry(((toBase58String(z) + a) + "nft_selling_price"), u), StringEntry(((toBase58String(z) + a) + "nft_onSell"), w), StringEntry(((toBase58String(z) + a) + "nft_data"), x), StringEntry(((toBase58String(A) + a) + "issue_nft"), toBase58String(z))] | |
40 | + | func manualFundTransfer (p,q) = { | |
41 | + | let r = o.caller.bytes | |
42 | + | let s = fromBase58String(p) | |
43 | + | let t = o.payments[0].amount | |
44 | + | if ((toString(t) == "teams")) | |
45 | + | then [IntegerEntry((toBase58String(r) + "_transfer"), t), StringEntry((toBase58String(r) + "_transfer_to"), p), ScriptTransfer(Address(s), t, e)] | |
46 | + | else [IntegerEntry((toBase58String(r) + "_transfer"), t), StringEntry((toBase58String(r) + "_transfer_to"), p), ScriptTransfer(Address(s), t, unit)] | |
45 | 47 | } | |
46 | - | ||
47 | - | ||
48 | - | ||
49 | - | @Callable(o) | |
50 | - | func sellNFT (B) = { | |
51 | - | let A = o.transactionId | |
52 | - | let C = o.caller.bytes | |
53 | - | let D = $Tuple2(value(o.payments[0].assetId), value(o.payments[0].amount)) | |
54 | - | let E = D._1 | |
55 | - | let F = D._2 | |
56 | - | if (!(k(E))) | |
57 | - | then throw("Token is not NFT") | |
58 | - | else [StringEntry(((c + a) + toBase58String(value(o.payments[0].assetId))), B), StringEntry(((toString(o.caller) + a) + d), ((toBase58String(E) + a) + toString(F)))] | |
59 | - | } | |
60 | - | ||
61 | - | ||
62 | - | ||
63 | - | @Callable(o) | |
64 | - | func buyNFT (G,H) = { | |
65 | - | let l = fromBase58String(G) | |
66 | - | let I = value(o.payments[0].amount) | |
67 | - | let J = { | |
68 | - | let m = getString(this, (("nft_" + H) + "_owner")) | |
69 | - | if ($isInstanceOf(m, "String")) | |
70 | - | then { | |
71 | - | let K = m | |
72 | - | K | |
73 | - | } | |
74 | - | else false | |
75 | - | } | |
76 | - | let B = getStringValue(((((c + a) + G) + "_") + H)) | |
77 | - | if ((H == toString(o.caller))) | |
78 | - | then throw("current Owner of NFT not able to purchase") | |
79 | - | else if ((o.payments[0].assetId == f)) | |
80 | - | then [ScriptTransfer(o.caller, 1, l), ScriptTransfer(Address(fromBase58String(H)), I, f), StringEntry(((toString(o.caller) + a) + b), ((G + a) + toString(I))), DeleteEntry((("nft_" + H) + "_owner")), StringEntry((("nft_" + H) + "_owner"), toString(o.caller)), StringEntry(((G + a) + "_owner"), toString(o.caller))] | |
81 | - | else [ScriptTransfer(o.caller, 1, l), ScriptTransfer(Address(fromBase58String(H)), I, unit), StringEntry(((toString(o.caller) + a) + b), ((G + a) + toString(I))), DeleteEntry((("nft_" + H) + "_owner")), StringEntry((("nft_" + H) + "_owner"), toString(o.caller)), StringEntry(((G + a) + "_owner"), toString(o.caller))] | |
82 | - | } | |
83 | - | ||
84 | - | ||
85 | - | ||
86 | - | @Callable(o) | |
87 | - | func cancelSell (L) = { | |
88 | - | let A = toBase58String(o.transactionId) | |
89 | - | let C = o.caller.bytes | |
90 | - | [StringEntry(((A + L) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(C), 1, fromBase58String(L))] | |
91 | - | } | |
92 | - | ||
93 | - | ||
94 | - | ||
95 | - | @Callable(o) | |
96 | - | func addAuction (M,N,O,P) = { | |
97 | - | let A = toBase58String(o.transactionId) | |
98 | - | let L = value(o.payments[0].assetId) | |
99 | - | let B = value(O) | |
100 | - | let Q = (lastBlock.height + P) | |
101 | - | let R = o.caller.bytes | |
102 | - | let S = { | |
103 | - | let m = getString(this, (((toBase58String(L) + a) + "nft_status_") + toBase58String(R))) | |
104 | - | if ($isInstanceOf(m, "String")) | |
105 | - | then { | |
106 | - | let K = m | |
107 | - | true | |
108 | - | } | |
109 | - | else false | |
110 | - | } | |
111 | - | if ((o.payments[0].assetId == unit)) | |
112 | - | then throw("NFT not attached") | |
113 | - | else if ((S == true)) | |
114 | - | then throw("Already in auction list") | |
115 | - | else if ((P > e)) | |
116 | - | then throw(("Duration is too long. Must be less than or equal to 7 " + toString(e))) | |
117 | - | else [StringEntry(((A + "_nft_start_auction_date_") + toBase58String(R)), M), StringEntry(((A + "_nft_end_auction_date_") + toBase58String(R)), N), StringEntry((A + "_nft_start_price"), O), StringEntry((A + "_nft_owner"), toString(o.caller)), StringEntry((A + "_nft_on_auction"), toBase58String(L)), StringEntry((A + "_previous_bidder"), "none"), StringEntry((A + "_highest_bid"), "0"), StringEntry((A + "_winner_of_nft"), "0"), StringEntry((A + "_bidder_count"), "0"), StringEntry((A + "_nft_status"), "OPEN")] | |
118 | - | } | |
119 | - | ||
120 | - | ||
121 | - | ||
122 | - | @Callable(o) | |
123 | - | func placeBid (T,L,q,U) = { | |
124 | - | let A = toBase58String(o.transactionId) | |
125 | - | let R = o.caller.bytes | |
126 | - | let l = fromBase58String(L) | |
127 | - | let V = o.payments[0].amount | |
128 | - | let W = getStringValue(this, (T + "_highest_bid")) | |
129 | - | let X = getString(this, (T + "_previous_bidder")) | |
130 | - | let Y = getStringValue(this, (T + "_bidder_count")) | |
131 | - | let Z = getStringValue(this, (T + "_winner_of_nft")) | |
132 | - | let S = getStringValue(this, (T + "_nft_status")) | |
133 | - | if ((o.payments[0].assetId != unit)) | |
134 | - | then throw("Pay in waves") | |
135 | - | else if ((S != "OPEN")) | |
136 | - | then throw("Not open for auction") | |
137 | - | else if ((parseIntValue(W) >= V)) | |
138 | - | then throw("Bid is less then starting/highest Bid") | |
139 | - | else if ((W == "0")) | |
140 | - | then [StringEntry((T + "_highest_bid"), toString(V)), StringEntry((T + "_winner_of_nft"), toBase58String(o.caller.bytes)), StringEntry((T + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((T + "_nft_id"), toBase58String(l)), StringEntry((T + "_nft_owner"), q), StringEntry((((A + "_") + T) + "_highest_bid"), toString(V)), StringEntry((((A + "_") + T) + "_winner"), toBase58String(o.caller.bytes)), StringEntry((((A + "_") + T) + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((((A + "_") + T) + "_nft_id"), toBase58String(l)), StringEntry((((A + "_") + T) + "_nft_owner"), q), StringEntry((A + "_bid_for_nft_by"), toBase58String(R)), StringEntry((A + "_bid_price_place"), U), StringEntry((A + "_previous_bid_amount_refund_to_address"), Z), StringEntry((A + "_prevoius_bid_amount_refund"), W)] | |
141 | - | else [StringEntry((T + "_highest_bid"), toString(V)), StringEntry((T + "_winner_of_nft"), toBase58String(o.caller.bytes)), StringEntry((T + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((T + "_nft_id"), toBase58String(l)), StringEntry((T + "_nft_owner"), q), StringEntry((((A + "_") + T) + "_highest_bid"), toString(V)), StringEntry((((A + "_") + T) + "_winner"), toBase58String(o.caller.bytes)), StringEntry((((A + "_") + T) + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((((A + "_") + T) + "_nft_id"), toBase58String(l)), StringEntry((((A + "_") + T) + "_nft_owner"), q), StringEntry((A + "_bid_for_nft_by"), toBase58String(R)), StringEntry((A + "_bid_price_place"), U), StringEntry((A + "_previous_bid_amount_refund_to_address"), Z), StringEntry((A + "_prevoius_bid_amount_refund"), W), ScriptTransfer(Address(fromBase58String(Z)), parseIntValue(W), unit)] | |
142 | - | } | |
143 | - | ||
144 | - | ||
145 | - | ||
146 | - | @Callable(o) | |
147 | - | func acceptBidOffer (T,L,aa) = { | |
148 | - | let A = toBase58String(o.transactionId) | |
149 | - | let R = o.caller.bytes | |
150 | - | let l = fromBase58String(L) | |
151 | - | let ab = getStringValue(this, (T + "_highest_bid")) | |
152 | - | let ac = getStringValue(this, (T + "_winner_of_nft")) | |
153 | - | [ScriptTransfer(Address(R), parseIntValue(ab), unit), ScriptTransfer(Address(fromBase58String(ac)), 1, l), StringEntry((A + "_amount_paid_to_owner"), ab), StringEntry((A + "_nft_transfer_to"), ac), StringEntry((A + "_nft_status"), "REWARDED"), StringEntry((T + "_amount_paid_to_owner"), ab), StringEntry((T + "_nft_transfer_to"), ac), StringEntry((T + "_nft_status"), "REWARDED")] | |
154 | - | } | |
155 | - | ||
156 | - | ||
157 | - | ||
158 | - | @Callable(o) | |
159 | - | func cancelAuction (T) = { | |
160 | - | let A = toBase58String(o.transactionId) | |
161 | - | let R = o.caller.bytes | |
162 | - | let ad = getStringValue(this, (T + "_nft_status")) | |
163 | - | let ae = getStringValue(this, (T + "_winner_of_nft")) | |
164 | - | let af = getStringValue(this, (T + "_nft_owner")) | |
165 | - | let L = getStringValue(this, (T + "_nft_on_auction")) | |
166 | - | let ag = getStringValue(this, (T + "_highest_bid")) | |
167 | - | if ((ae == "0")) | |
168 | - | then [StringEntry(((A + T) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(fromBase58String(af)), 1, fromBase58String(L))] | |
169 | - | else [StringEntry((T + "_nft_status"), "CANCELED"), StringEntry((T + "_previous_bid_amount_refund_to_address"), ae), StringEntry((T + "_prevoius_bid_amount_refund"), ag), StringEntry((A + "_nft_status"), "CANCELED"), StringEntry((A + "_previous_bid_amount_refund_to_address"), ae), StringEntry((A + "_prevoius_bid_amount_refund"), ag), ScriptTransfer(Address(fromBase58String(af)), 1, fromBase58String(L)), ScriptTransfer(Address(fromBase58String(ae)), parseIntValue(ag), unit)] | |
170 | - | } | |
171 | - | ||
172 | - | ||
173 | - | ||
174 | - | @Callable(o) | |
175 | - | func withdrawBid (ah) = { | |
176 | - | let R = o.caller.bytes | |
177 | - | let ai = getStringValue(this, (ah + "_highest_bid")) | |
178 | - | let aj = getStringValue(this, (ah + "_winner")) | |
179 | - | let ak = getStringValue(this, (ah + "_nft_id")) | |
180 | - | if ((toBase58String(R) != aj)) | |
181 | - | then throw("No bid") | |
182 | - | else [StringEntry((ah + "_nft_bid"), "WITHDRAW"), StringEntry((ah + "_nft_id"), ak), StringEntry((ah + "_bidding_price_refund_amount"), ai), ScriptTransfer(o.caller, parseIntValue(ai), unit)] | |
183 | - | } | |
184 | - | ||
185 | - | ||
186 | - | ||
187 | - | @Callable(o) | |
188 | - | func manualFundTransfer (al,am) = { | |
189 | - | let R = o.caller.bytes | |
190 | - | let an = fromBase58String(al) | |
191 | - | let I = o.payments[0].amount | |
192 | - | if ((toString(I) == "")) | |
193 | - | then throw("Payment is not attached or empty") | |
194 | - | else [IntegerEntry((toBase58String(R) + "_transfer"), I), StringEntry((toBase58String(R) + "_transfer_to"), al), ScriptTransfer(Address(an), I, f)] | |
195 | - | } | |
196 | - | ||
197 | - | ||
198 | - | ||
199 | - | @Callable(o) | |
200 | - | func testBid (ao) = [StringEntry("E8kkFBYCy44JJaq6pAZ6KizsuResi5UKNhbD1WNZwhhY_highest_bid", "0")] | |
201 | 48 | ||
202 | 49 |
github/deemru/w8io/169f3d6 48.37 ms ◑![]()