tx · J4EDEYhGGN5u8Sn2Hd3Bv1bjtUvXgQdt2nC3zFc2Zii1

3MxJx6npysQdoyyxLsCCb3Yg8fTeH3gEQQd:  -0.01000000 Waves

2023.12.05 17:01 [2873434] smart account 3MxJx6npysQdoyyxLsCCb3Yg8fTeH3gEQQd > SELF 0.00000000 Waves

{ "type": 13, "id": "J4EDEYhGGN5u8Sn2Hd3Bv1bjtUvXgQdt2nC3zFc2Zii1", "fee": 1000000, "feeAssetId": null, "timestamp": 1701784941551, "version": 2, "chainId": 84, "sender": "3MxJx6npysQdoyyxLsCCb3Yg8fTeH3gEQQd", "senderPublicKey": "EEhsp9Jd5MwVmYJMGAZJL3tTb5KcurTz8Aw7wksZuw3e", "proofs": [ "41o5Ax1jEeNifbCCjn5rUo8hRrRnGXcyaKysJQqh9Wv6ZWNGm2cM2v5qz8wJwAUi9ricQUpHrTYE9qw4s5kk1nKH" ], "script": "base64:AAIDAAAAAAAAAB8IARIDCgEIEgASBQoDCAEIEgQKAggIEgASABIDCgEBAAAAIQAAAAAKYWNjMVB1YktleQEAAAAg2irMOzlalWFgNNS9QMUy6cEehi2joN8Zo/Qpp0MViXkAAAAACmFjYzJQdWJLZXkBAAAAIMSqswT+OMEazgyvFy9/atiKaUunqfh78kU9kY2nFINRAAAAAAphY2MzUHViS2V5AQAAACBQ28Q8oMIKGnT3P2foXU1s9eV1JsT37muuYwGpNO7vAwAAAAAETk9ORQIAAAAEbm9uZQAAAAAHQkFMQU5DRQIAAAAIYmFsYW5jZV8AAAAABlZPVEVSUwAAAAAAAAAAAwAAAAAGUVVPUlVNAAAAAAAAAAACAAAAAAZWT1RJTkcCAAAABnZvdGluZwAAAAAGUkVWRUFMAgAAAAZyZXZlYWwAAAAACEZFQVRVUkVEAgAAAAhmZWF0dXJlZAAAAAAIREVMSVNURUQCAAAACGRlbGlzdGVkAQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5BAAAAANudW0EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAFAAAAA251bQEAAAALZ2V0U3RyQnlLZXkAAAABAAAAA2tleQQAAAADc3RyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAROT05FBQAAAANzdHIBAAAAD2dldEtleUl0ZW1QcmljZQAAAAEAAAAEaXRlbQkAASwAAAACBQAAAARpdGVtAgAAAAZfcHJpY2UBAAAAEWdldFZhbHVlSXRlbVByaWNlAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAPZ2V0S2V5SXRlbVByaWNlAAAAAQUAAAAEaXRlbQEAAAAVZ2V0S2V5VXNlckl0ZW1Db3VudGVyAAAAAgAAAAR1c2VyAAAABGl0ZW0JAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABGl0ZW0CAAAAAV8FAAAABHVzZXICAAAABF9jbnQBAAAAF2dldFZhbHVlVXNlckl0ZW1Db3VudGVyAAAAAgAAAAR1c2VyAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABVnZXRLZXlVc2VySXRlbUNvdW50ZXIAAAACBQAAAAR1c2VyBQAAAARpdGVtAQAAAApnZXRLZXlJdGVtAAAAAgAAAAhzdXBwbGllcgAAAAV0aXRsZQkAASwAAAACAgAAAAVpdGVtXwkAAlgAAAABCQAB9wAAAAEJAAGbAAAAAQkAASwAAAACBQAAAAhzdXBwbGllcgUAAAAFdGl0bGUBAAAADmdldEtleUl0ZW1EYXRhAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAABV9kYXRhAQAAABJnZXRLZXlJdGVtU3VwcGxpZXIAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAGX293bmVyAQAAABRnZXRWYWx1ZUl0ZW1TdXBwbGllcgAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEmdldEtleUl0ZW1TdXBwbGllcgAAAAEFAAAABGl0ZW0BAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEAAAAHYWNjb3VudAkAASwAAAACBQAAAAdhY2NvdW50AgAAAAhfYmFsYW5jZQEAAAAXZ2V0VmFsdWVCYWxhbmNlU3VwcGxpZXIAAAABAAAAB2FjY291bnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABVnZXRLZXlCYWxhbmNlU3VwcGxpZXIAAAABBQAAAAdhY2NvdW50AQAAAAxnZXRLZXlDb21taXQAAAACAAAABGl0ZW0AAAAEdXNlcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEaXRlbQIAAAABXwUAAAAEdXNlcgIAAAAHX2NvbW1pdAEAAAAOZ2V0VmFsdWVDb21taXQAAAACAAAABGl0ZW0AAAAEdXNlcgkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAADGdldEtleUNvbW1pdAAAAAIFAAAABGl0ZW0FAAAABHVzZXIBAAAAEmdldEtleUNvbW1pdHNDb3VudAAAAAEAAAAEaXRlbQkAASwAAAACBQAAAARpdGVtAgAAAAdfY29tY250AQAAABRnZXRWYWx1ZUNvbW1pdHNDb3VudAAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEmdldEtleUNvbW1pdHNDb3VudAAAAAEFAAAABGl0ZW0BAAAADGdldEtleVJldmVhbAAAAAIAAAAEaXRlbQAAAAR1c2VyCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtAgAAAAFfBQAAAAR1c2VyAgAAAAdfcmV2ZWFsAQAAAA5nZXRWYWx1ZVJldmVhbAAAAAIAAAAEaXRlbQAAAAR1c2VyCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAMZ2V0S2V5UmV2ZWFsAAAAAgUAAAAEaXRlbQUAAAAEdXNlcgEAAAAQZ2V0S2V5SXRlbVN0YXR1cwAAAAEAAAAEaXRlbQkAASwAAAACBQAAAARpdGVtAgAAAAdfc3RhdHVzAQAAABJnZXRWYWx1ZUl0ZW1TdGF0dXMAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABBnZXRLZXlJdGVtU3RhdHVzAAAAAQUAAAAEaXRlbQEAAAAPZ2V0S2V5Vm90ZUNvdW50AAAAAgAAAARpdGVtAAAABHZvdGUJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtAgAAAAVfcmVzOgUAAAAEdm90ZQEAAAARZ2V0VmFsdWVWb3RlQ291bnQAAAACAAAABGl0ZW0AAAAEdm90ZQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAD2dldEtleVZvdGVDb3VudAAAAAIFAAAABGl0ZW0FAAAABHZvdGUAAAAHAAAAAWkBAAAACHB1cmNoYXNlAAAAAQAAAARpdGVtBAAAAANwbXQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAfV0FWRVMgdG9rZW5zIG9ubHkgYXQgdGhlIG1vbWVudAQAAAALdXNlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAFcHJpY2UJAQAAABFnZXRWYWx1ZUl0ZW1QcmljZQAAAAEFAAAABGl0ZW0EAAAADnN1cHBsaWVyQWRkcnNzCQEAAAAUZ2V0VmFsdWVJdGVtU3VwcGxpZXIAAAABBQAAAARpdGVtAwkAAGYAAAACBQAAAAVwcmljZQgFAAAAA3BtdAAAAAZhbW91bnQJAAACAAAAAQIAAAAucHVyY2hhc2UgYW1vdW50IGNhbm5vdCBiZSBsZXNzIHRoYW4gaXRlbSBwcmljZQMJAABmAAAAAggFAAAAA3BtdAAAAAZhbW91bnQFAAAABXByaWNlCQAAAgAAAAECAAAAMHB1cmNoYXNlIGFtb3VudCBjYW5ub3QgYmUgaGlnaGVyIHRoYW4gaXRlbSBwcmljZQMJAAAAAAAAAgUAAAAOc3VwcGxpZXJBZGRyc3MFAAAABE5PTkUJAAACAAAAAQIAAAAXc3VwcGxpZXIgZG9lcyBub3QgZXhpc3QJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABVnZXRLZXlVc2VySXRlbUNvdW50ZXIAAAACBQAAAAt1c2VyQWRkcmVzcwUAAAAEaXRlbQkAAGQAAAACCQEAAAAXZ2V0VmFsdWVVc2VySXRlbUNvdW50ZXIAAAACBQAAAAt1c2VyQWRkcmVzcwUAAAAEaXRlbQAAAAAAAAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEFAAAADnN1cHBsaWVyQWRkcnNzCQAAZAAAAAIJAQAAABdnZXRWYWx1ZUJhbGFuY2VTdXBwbGllcgAAAAEFAAAADnN1cHBsaWVyQWRkcnNzCAUAAAADcG10AAAABmFtb3VudAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAAQAAAAPc3VwcGxpZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAB2JhbGFuY2UJAQAAABdnZXRWYWx1ZUJhbGFuY2VTdXBwbGllcgAAAAEFAAAAD3N1cHBsaWVyQWRkcmVzcwMJAABnAAAAAgAAAAAAAAAAAAUAAAAHYmFsYW5jZQkAAAIAAAABAgAAABRpbnN1ZmZpY2llbnQgYmFsYW5jZQkBAAAADFNj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", "height": 2873434, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3a4gE6GrCBAjUoGRSmfB6eMJonDPYXzzHaGny4bCrpWh Next: Ha4vDxwtG5Y7yxHHHVfnZ4nwLQdxCQheQe5CWQzy1ZMw Diff:
OldNewDifferences
1010 let NONE = "none"
1111
1212 let BALANCE = "balance_"
13+
14+let VOTERS = 3
15+
16+let QUORUM = 2
17+
18+let VOTING = "voting"
19+
20+let REVEAL = "reveal"
21+
22+let FEATURED = "featured"
23+
24+let DELISTED = "delisted"
1325
1426 func getNumberByKey (key) = {
1527 let num = match getInteger(this, key) {
6375 func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
6476
6577
78+func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
79+
80+
81+func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
82+
83+
84+func getKeyCommitsCount (item) = (item + "_comcnt")
85+
86+
87+func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
88+
89+
90+func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
91+
92+
93+func getValueReveal (item,user) = getStrByKey(getKeyReveal(item, user))
94+
95+
96+func getKeyItemStatus (item) = (item + "_status")
97+
98+
99+func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
100+
101+
102+func getKeyVoteCount (item,vote) = ((item + "_res:") + vote)
103+
104+
105+func getValueVoteCount (item,vote) = getNumberByKey(getKeyVoteCount(item, vote))
106+
107+
66108 @Callable(i)
67109 func purchase (item) = {
68110 let pmt = extract(i.payment)
91133 if ((0 >= balance))
92134 then throw("insufficient balance")
93135 else ScriptResult(WriteSet([DataEntry(getKeyBalanceSupplier(supplierAddress), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(supplierAddress), balance, unit)]))
136+ }
137+
138+
139+
140+@Callable(i)
141+func addItem (title,price,data) = {
142+ let supplierAddress = toBase58String(i.caller.bytes)
143+ let item = getKeyItem(supplierAddress, title)
144+ if ((0 >= price))
145+ then throw("purchase amount cannot be less than item price")
146+ else if ((getValueItemSupplier(item) != NONE))
147+ then throw("an item is already exist")
148+ else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
149+ }
150+
151+
152+
153+@Callable(i)
154+func voteCommit (item,hash) = {
155+ let user = toBase58String(i.caller.bytes)
156+ let commits = getValueCommitsCount(item)
157+ let status = getValueItemStatus(item)
158+ if ((commits >= VOTERS))
159+ then throw("reached max num of voters")
160+ else if ((getValueCommit(item, user) != NONE))
161+ then throw("user has already uch")
162+ else if ((getKeyItemSupplier(item) == NONE))
163+ then throw("item does not exist")
164+ else if (if ((status != NONE))
165+ then (status != VOTING)
166+ else false)
167+ then throw("voting is not possible")
168+ else WriteSet([DataEntry(getKeyCommit(item, user), hash), DataEntry(getKeyCommitsCount(item), (commits + 1)), DataEntry(getKeyItemStatus(item), if ((commits == VOTERS))
169+ then REVEAL
170+ else VOTING)])
94171 }
95172
96173
159236 else if ((0 > newAmount))
160237 then throw("Not enough balance")
161238 else ScriptResult(WriteSet([DataEntry((BALANCE + currentKey), newAmount)]), TransferSet([ScriptTransfer(i.caller, amount, unit)]))
162- }
163-
164-
165-
166-@Callable(i)
167-func addItem (title,price,data) = {
168- let supplierAddress = toBase58String(i.caller.bytes)
169- let item = getKeyItem(supplierAddress, title)
170- if ((0 >= price))
171- then throw("purchase amount cannot be less than item price")
172- else if ((getValueItemSupplier(item) != NONE))
173- then throw("an item is already exist")
174- else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
175239 }
176240
177241
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_"
13+
14+let VOTERS = 3
15+
16+let QUORUM = 2
17+
18+let VOTING = "voting"
19+
20+let REVEAL = "reveal"
21+
22+let FEATURED = "featured"
23+
24+let DELISTED = "delisted"
1325
1426 func getNumberByKey (key) = {
1527 let num = match getInteger(this, key) {
1628 case a: Int =>
1729 a
1830 case _ =>
1931 0
2032 }
2133 num
2234 }
2335
2436
2537 func getStrByKey (key) = {
2638 let str = match getString(this, key) {
2739 case a: String =>
2840 a
2941 case _ =>
3042 NONE
3143 }
3244 str
3345 }
3446
3547
3648 func getKeyItemPrice (item) = (item + "_price")
3749
3850
3951 func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
4052
4153
4254 func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
4355
4456
4557 func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
4658
4759
4860 func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
4961
5062
5163 func getKeyItemData (item) = (item + "_data")
5264
5365
5466 func getKeyItemSupplier (item) = (item + "_owner")
5567
5668
5769 func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
5870
5971
6072 func getKeyBalanceSupplier (account) = (account + "_balance")
6173
6274
6375 func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
6476
6577
78+func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
79+
80+
81+func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
82+
83+
84+func getKeyCommitsCount (item) = (item + "_comcnt")
85+
86+
87+func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
88+
89+
90+func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
91+
92+
93+func getValueReveal (item,user) = getStrByKey(getKeyReveal(item, user))
94+
95+
96+func getKeyItemStatus (item) = (item + "_status")
97+
98+
99+func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
100+
101+
102+func getKeyVoteCount (item,vote) = ((item + "_res:") + vote)
103+
104+
105+func getValueVoteCount (item,vote) = getNumberByKey(getKeyVoteCount(item, vote))
106+
107+
66108 @Callable(i)
67109 func purchase (item) = {
68110 let pmt = extract(i.payment)
69111 if (isDefined(pmt.assetId))
70112 then throw("WAVES tokens only at the moment")
71113 else {
72114 let userAddress = toBase58String(i.caller.bytes)
73115 let price = getValueItemPrice(item)
74116 let supplierAddrss = getValueItemSupplier(item)
75117 if ((price > pmt.amount))
76118 then throw("purchase amount cannot be less than item price")
77119 else if ((pmt.amount > price))
78120 then throw("purchase amount cannot be higher than item price")
79121 else if ((supplierAddrss == NONE))
80122 then throw("supplier does not exist")
81123 else WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyBalanceSupplier(supplierAddrss), (getValueBalanceSupplier(supplierAddrss) + pmt.amount))])
82124 }
83125 }
84126
85127
86128
87129 @Callable(i)
88130 func withdraw () = {
89131 let supplierAddress = toBase58String(i.caller.bytes)
90132 let balance = getValueBalanceSupplier(supplierAddress)
91133 if ((0 >= balance))
92134 then throw("insufficient balance")
93135 else ScriptResult(WriteSet([DataEntry(getKeyBalanceSupplier(supplierAddress), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(supplierAddress), balance, unit)]))
136+ }
137+
138+
139+
140+@Callable(i)
141+func addItem (title,price,data) = {
142+ let supplierAddress = toBase58String(i.caller.bytes)
143+ let item = getKeyItem(supplierAddress, title)
144+ if ((0 >= price))
145+ then throw("purchase amount cannot be less than item price")
146+ else if ((getValueItemSupplier(item) != NONE))
147+ then throw("an item is already exist")
148+ else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
149+ }
150+
151+
152+
153+@Callable(i)
154+func voteCommit (item,hash) = {
155+ let user = toBase58String(i.caller.bytes)
156+ let commits = getValueCommitsCount(item)
157+ let status = getValueItemStatus(item)
158+ if ((commits >= VOTERS))
159+ then throw("reached max num of voters")
160+ else if ((getValueCommit(item, user) != NONE))
161+ then throw("user has already uch")
162+ else if ((getKeyItemSupplier(item) == NONE))
163+ then throw("item does not exist")
164+ else if (if ((status != NONE))
165+ then (status != VOTING)
166+ else false)
167+ then throw("voting is not possible")
168+ else WriteSet([DataEntry(getKeyCommit(item, user), hash), DataEntry(getKeyCommitsCount(item), (commits + 1)), DataEntry(getKeyItemStatus(item), if ((commits == VOTERS))
169+ then REVEAL
170+ else VOTING)])
94171 }
95172
96173
97174
98175 @Callable(i)
99176 func x_purchase () = {
100177 let pmt = extract(i.payment)
101178 if (isDefined(pmt.assetId))
102179 then throw("can use WAVES only at the moment")
103180 else {
104181 let customerAddress = toBase58String(i.caller.bytes)
105182 let price = match getInteger(this, "item_A_coupon_price") {
106183 case a: Int =>
107184 a
108185 case _ =>
109186 0
110187 }
111188 if ((price > pmt.amount))
112189 then throw("purchase amount cannot be less than item price")
113190 else if ((pmt.amount > price))
114191 then throw("purchase amount cannot be higher than item price")
115192 else WriteSet([DataEntry(("status:purchase_item_A_customer_" + customerAddress), "confirmed"), DataEntry(("price:purchase_item_A_customer_" + customerAddress), price)])
116193 }
117194 }
118195
119196
120197
121198 @Callable(i)
122199 func deposit () = {
123200 let pmt = extract(i.payment)
124201 if (isDefined(pmt.assetId))
125202 then throw("can hodl waves only at the moment")
126203 else {
127204 let currentKey = toBase58String(i.caller.bytes)
128205 let currentAmount = match getInteger(this, currentKey) {
129206 case a: Int =>
130207 a
131208 case _ =>
132209 0
133210 }
134211 let wlStsCurr = match getString(this, ("wl_sts_" + currentKey)) {
135212 case a: String =>
136213 a
137214 case _ =>
138215 throw("User has not deen waitlisted")
139216 }
140217 let newAmount = (currentAmount + pmt.amount)
141218 WriteSet([DataEntry((BALANCE + currentKey), newAmount)])
142219 }
143220 }
144221
145222
146223
147224 @Callable(i)
148225 func x_withdraw (amount) = {
149226 let currentKey = toBase58String(i.caller.bytes)
150227 let currentAmount = match getInteger(this, (BALANCE + currentKey)) {
151228 case a: Int =>
152229 a
153230 case _ =>
154231 0
155232 }
156233 let newAmount = (currentAmount - amount)
157234 if ((0 > amount))
158235 then throw("Can't withdraw negative amount")
159236 else if ((0 > newAmount))
160237 then throw("Not enough balance")
161238 else ScriptResult(WriteSet([DataEntry((BALANCE + currentKey), newAmount)]), TransferSet([ScriptTransfer(i.caller, amount, unit)]))
162- }
163-
164-
165-
166-@Callable(i)
167-func addItem (title,price,data) = {
168- let supplierAddress = toBase58String(i.caller.bytes)
169- let item = getKeyItem(supplierAddress, title)
170- if ((0 >= price))
171- then throw("purchase amount cannot be less than item price")
172- else if ((getValueItemSupplier(item) != NONE))
173- then throw("an item is already exist")
174- else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
175239 }
176240
177241
178242 @Verifier(tx)
179243 func verify () = {
180244 let acc1_1 = sigVerify(tx.bodyBytes, tx.proofs[0], acc1PubKey)
181245 let acc1_2 = sigVerify(tx.bodyBytes, tx.proofs[1], acc1PubKey)
182246 let acc1_3 = sigVerify(tx.bodyBytes, tx.proofs[2], acc1PubKey)
183247 let acc2_1 = sigVerify(tx.bodyBytes, tx.proofs[0], acc2PubKey)
184248 let acc2_2 = sigVerify(tx.bodyBytes, tx.proofs[1], acc2PubKey)
185249 let acc2_3 = sigVerify(tx.bodyBytes, tx.proofs[2], acc2PubKey)
186250 let acc3_1 = sigVerify(tx.bodyBytes, tx.proofs[0], acc3PubKey)
187251 let acc3_2 = sigVerify(tx.bodyBytes, tx.proofs[1], acc3PubKey)
188252 let acc3_3 = sigVerify(tx.bodyBytes, tx.proofs[2], acc3PubKey)
189253 let acc1acc2 = if (if (if (if (if (if (acc1_1)
190254 then acc2_2
191255 else false)
192256 then true
193257 else if (acc1_1)
194258 then acc2_3
195259 else false)
196260 then true
197261 else if (acc1_2)
198262 then acc2_1
199263 else false)
200264 then true
201265 else if (acc1_2)
202266 then acc2_3
203267 else false)
204268 then true
205269 else if (acc1_3)
206270 then acc2_1
207271 else false)
208272 then true
209273 else if (acc1_3)
210274 then acc2_2
211275 else false
212276 let acc1acc3 = if (if (if (if (if (if (acc1_1)
213277 then acc3_2
214278 else false)
215279 then true
216280 else if (acc1_1)
217281 then acc3_3
218282 else false)
219283 then true
220284 else if (acc1_2)
221285 then acc3_1
222286 else false)
223287 then true
224288 else if (acc1_2)
225289 then acc3_3
226290 else false)
227291 then true
228292 else if (acc1_3)
229293 then acc3_1
230294 else false)
231295 then true
232296 else if (acc1_3)
233297 then acc3_2
234298 else false
235299 let acc2acc3 = if (if (if (if (if (if (acc3_1)
236300 then acc2_2
237301 else false)
238302 then true
239303 else if (acc3_1)
240304 then acc2_3
241305 else false)
242306 then true
243307 else if (acc3_2)
244308 then acc2_1
245309 else false)
246310 then true
247311 else if (acc3_2)
248312 then acc2_3
249313 else false)
250314 then true
251315 else if (acc3_3)
252316 then acc2_1
253317 else false)
254318 then true
255319 else if (acc3_3)
256320 then acc2_2
257321 else false
258322 match tx {
259323 case d: SetScriptTransaction =>
260324 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
261325 case d: DataTransaction =>
262326 true
263327 case d: TransferTransaction =>
264328 true
265329 case d: InvokeScriptTransaction =>
266330 true
267331 case _ =>
268332 false
269333 }
270334 }
271335

github/deemru/w8io/6500d08 
48.68 ms