tx · FFussmiXCP32vc5JEDnmwpGyEDiAk693JGb1wkkykxkM

3MxJx6npysQdoyyxLsCCb3Yg8fTeH3gEQQd:  -0.01000000 Waves

2023.12.05 01:50 [2872536] smart account 3MxJx6npysQdoyyxLsCCb3Yg8fTeH3gEQQd > SELF 0.00000000 Waves

{ "type": 13, "id": "FFussmiXCP32vc5JEDnmwpGyEDiAk693JGb1wkkykxkM", "fee": 1000000, "feeAssetId": null, "timestamp": 1701730284406, "version": 2, "chainId": 84, "sender": "3MxJx6npysQdoyyxLsCCb3Yg8fTeH3gEQQd", "senderPublicKey": "EEhsp9Jd5MwVmYJMGAZJL3tTb5KcurTz8Aw7wksZuw3e", "proofs": [ "3estwfuEQvB594ASzSpGyXxLQKRPtKT1XzrzvJqW3BuhBSK7uLWKqfurTUi6Tft7jaBMGAs4NZ6shbSWD6wZmSf4" ], "script": "base64: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", "height": 2872536, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DqHHY8vEMm5fcSW3AjGtfdWv6BG6ewmxNwp7F6Gaq7Kx Next: 2QXgFquoUeys2yAVxGyHtkNcJnV64aTUKopy7cp3JwiS Diff:
OldNewDifferences
6464
6565
6666 @Callable(i)
67-func purchase () = {
67+func purchase (item) = {
68+ let pmt = extract(i.payment)
69+ if (isDefined(pmt.assetId))
70+ then throw("WAVES tokens only at the moment")
71+ else {
72+ let userAddress = toBase58String(i.caller.bytes)
73+ let price = getValueItemPrice(item)
74+ let supplierAddrss = getValueItemSupplier(item)
75+ if ((price > pmt.amount))
76+ then throw("purchase amount cannot be less than item price")
77+ else if ((pmt.amount > price))
78+ then throw("purchase amount cannot be higher than item price")
79+ else if ((supplierAddrss == NONE))
80+ then throw("supplier does not exist")
81+ else WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyBalanceSupplier(supplierAddrss), (getValueBalanceSupplier(supplierAddrss) + pmt.amount))])
82+ }
83+ }
84+
85+
86+
87+@Callable(i)
88+func x_purchase () = {
6889 let pmt = extract(i.payment)
6990 if (isDefined(pmt.assetId))
7091 then throw("can use WAVES only at the moment")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let acc1PubKey = base58'FgdjGJ4tLFiavKEKf4WkWwkgvU8ARWP1WYZfmUrXo4CY'
55
66 let acc2PubKey = base58'EEhsp9Jd5MwVmYJMGAZJL3tTb5KcurTz8Aw7wksZuw3e'
77
88 let acc3PubKey = base58'6SdykacJeMCbeNvVJY71gWMJeXt9ZT44X4KexwZxHEYz'
99
1010 let NONE = "none"
1111
1212 let BALANCE = "balance_"
1313
1414 func getNumberByKey (key) = {
1515 let num = match getInteger(this, key) {
1616 case a: Int =>
1717 a
1818 case _ =>
1919 0
2020 }
2121 num
2222 }
2323
2424
2525 func getStrByKey (key) = {
2626 let str = match getString(this, key) {
2727 case a: String =>
2828 a
2929 case _ =>
3030 NONE
3131 }
3232 str
3333 }
3434
3535
3636 func getKeyItemPrice (item) = (item + "_price")
3737
3838
3939 func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
4040
4141
4242 func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
4343
4444
4545 func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
4646
4747
4848 func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
4949
5050
5151 func getKeyItemData (item) = (item + "_data")
5252
5353
5454 func getKeyItemSupplier (item) = (item + "_owner")
5555
5656
5757 func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
5858
5959
6060 func getKeyBalanceSupplier (account) = (account + "_balance")
6161
6262
6363 func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
6464
6565
6666 @Callable(i)
67-func purchase () = {
67+func purchase (item) = {
68+ let pmt = extract(i.payment)
69+ if (isDefined(pmt.assetId))
70+ then throw("WAVES tokens only at the moment")
71+ else {
72+ let userAddress = toBase58String(i.caller.bytes)
73+ let price = getValueItemPrice(item)
74+ let supplierAddrss = getValueItemSupplier(item)
75+ if ((price > pmt.amount))
76+ then throw("purchase amount cannot be less than item price")
77+ else if ((pmt.amount > price))
78+ then throw("purchase amount cannot be higher than item price")
79+ else if ((supplierAddrss == NONE))
80+ then throw("supplier does not exist")
81+ else WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyBalanceSupplier(supplierAddrss), (getValueBalanceSupplier(supplierAddrss) + pmt.amount))])
82+ }
83+ }
84+
85+
86+
87+@Callable(i)
88+func x_purchase () = {
6889 let pmt = extract(i.payment)
6990 if (isDefined(pmt.assetId))
7091 then throw("can use WAVES only at the moment")
7192 else {
7293 let customerAddress = toBase58String(i.caller.bytes)
7394 let price = match getInteger(this, "item_A_coupon_price") {
7495 case a: Int =>
7596 a
7697 case _ =>
7798 0
7899 }
79100 if ((price > pmt.amount))
80101 then throw("purchase amount cannot be less than item price")
81102 else if ((pmt.amount > price))
82103 then throw("purchase amount cannot be higher than item price")
83104 else WriteSet([DataEntry(("status:purchase_item_A_customer_" + customerAddress), "confirmed"), DataEntry(("price:purchase_item_A_customer_" + customerAddress), price)])
84105 }
85106 }
86107
87108
88109
89110 @Callable(i)
90111 func deposit () = {
91112 let pmt = extract(i.payment)
92113 if (isDefined(pmt.assetId))
93114 then throw("can hodl waves only at the moment")
94115 else {
95116 let currentKey = toBase58String(i.caller.bytes)
96117 let currentAmount = match getInteger(this, currentKey) {
97118 case a: Int =>
98119 a
99120 case _ =>
100121 0
101122 }
102123 let wlStsCurr = match getString(this, ("wl_sts_" + currentKey)) {
103124 case a: String =>
104125 a
105126 case _ =>
106127 throw("User has not deen waitlisted")
107128 }
108129 let newAmount = (currentAmount + pmt.amount)
109130 WriteSet([DataEntry((BALANCE + currentKey), newAmount)])
110131 }
111132 }
112133
113134
114135
115136 @Callable(i)
116137 func withdraw (amount) = {
117138 let currentKey = toBase58String(i.caller.bytes)
118139 let currentAmount = match getInteger(this, (BALANCE + currentKey)) {
119140 case a: Int =>
120141 a
121142 case _ =>
122143 0
123144 }
124145 let newAmount = (currentAmount - amount)
125146 if ((0 > amount))
126147 then throw("Can't withdraw negative amount")
127148 else if ((0 > newAmount))
128149 then throw("Not enough balance")
129150 else ScriptResult(WriteSet([DataEntry((BALANCE + currentKey), newAmount)]), TransferSet([ScriptTransfer(i.caller, amount, unit)]))
130151 }
131152
132153
133154
134155 @Callable(i)
135156 func addItem (title,price,data) = {
136157 let supplierAddress = toBase58String(i.caller.bytes)
137158 let item = getKeyItem(supplierAddress, title)
138159 if ((0 >= price))
139160 then throw("purchase amount cannot be less than item price")
140161 else if ((getValueItemSupplier(item) != NONE))
141162 then throw("an item is already exist")
142163 else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
143164 }
144165
145166
146167 @Verifier(tx)
147168 func verify () = {
148169 let acc1_1 = sigVerify(tx.bodyBytes, tx.proofs[0], acc1PubKey)
149170 let acc1_2 = sigVerify(tx.bodyBytes, tx.proofs[1], acc1PubKey)
150171 let acc1_3 = sigVerify(tx.bodyBytes, tx.proofs[2], acc1PubKey)
151172 let acc2_1 = sigVerify(tx.bodyBytes, tx.proofs[0], acc2PubKey)
152173 let acc2_2 = sigVerify(tx.bodyBytes, tx.proofs[1], acc2PubKey)
153174 let acc2_3 = sigVerify(tx.bodyBytes, tx.proofs[2], acc2PubKey)
154175 let acc3_1 = sigVerify(tx.bodyBytes, tx.proofs[0], acc3PubKey)
155176 let acc3_2 = sigVerify(tx.bodyBytes, tx.proofs[1], acc3PubKey)
156177 let acc3_3 = sigVerify(tx.bodyBytes, tx.proofs[2], acc3PubKey)
157178 let acc1acc2 = if (if (if (if (if (if (acc1_1)
158179 then acc2_2
159180 else false)
160181 then true
161182 else if (acc1_1)
162183 then acc2_3
163184 else false)
164185 then true
165186 else if (acc1_2)
166187 then acc2_1
167188 else false)
168189 then true
169190 else if (acc1_2)
170191 then acc2_3
171192 else false)
172193 then true
173194 else if (acc1_3)
174195 then acc2_1
175196 else false)
176197 then true
177198 else if (acc1_3)
178199 then acc2_2
179200 else false
180201 let acc1acc3 = if (if (if (if (if (if (acc1_1)
181202 then acc3_2
182203 else false)
183204 then true
184205 else if (acc1_1)
185206 then acc3_3
186207 else false)
187208 then true
188209 else if (acc1_2)
189210 then acc3_1
190211 else false)
191212 then true
192213 else if (acc1_2)
193214 then acc3_3
194215 else false)
195216 then true
196217 else if (acc1_3)
197218 then acc3_1
198219 else false)
199220 then true
200221 else if (acc1_3)
201222 then acc3_2
202223 else false
203224 let acc2acc3 = if (if (if (if (if (if (acc3_1)
204225 then acc2_2
205226 else false)
206227 then true
207228 else if (acc3_1)
208229 then acc2_3
209230 else false)
210231 then true
211232 else if (acc3_2)
212233 then acc2_1
213234 else false)
214235 then true
215236 else if (acc3_2)
216237 then acc2_3
217238 else false)
218239 then true
219240 else if (acc3_3)
220241 then acc2_1
221242 else false)
222243 then true
223244 else if (acc3_3)
224245 then acc2_2
225246 else false
226247 match tx {
227248 case d: SetScriptTransaction =>
228249 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
229250 case d: DataTransaction =>
230251 true
231252 case d: TransferTransaction =>
232253 true
233254 case d: InvokeScriptTransaction =>
234255 true
235256 case _ =>
236257 false
237258 }
238259 }
239260

github/deemru/w8io/6500d08 
41.29 ms