tx · 5CS4eM1M7cfWDspVZ8ejSeqB1msHNsDmdQhryw7Wem5n

3N1dByHUoXjvxXXmRo1NsS9Z52TkVTMbMfE:  -0.01000000 Waves

2021.07.07 13:28 [1603068] smart account 3N1dByHUoXjvxXXmRo1NsS9Z52TkVTMbMfE > SELF 0.00000000 Waves

{ "type": 13, "id": "5CS4eM1M7cfWDspVZ8ejSeqB1msHNsDmdQhryw7Wem5n", "fee": 1000000, "feeAssetId": null, "timestamp": 1625653694273, "version": 2, "chainId": 84, "sender": "3N1dByHUoXjvxXXmRo1NsS9Z52TkVTMbMfE", "senderPublicKey": "xb4uHqMmBpMNrqAdGQyGQKu8BXJxp57LqWAjybjT9um", "proofs": [ "5C5sLwkFvJy4hDaT87snw9CsJeXUgwxCwoeWJCNpyY87BJpxrfVDGCbqQxRBdTWSZm4PMcQ1qPHpC5vDTAxuouMR" ], "script": "base64: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", "height": 1603068, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FRoXVp68rUpw3xScJxRUs8AY2DuvkcJ9F1it15qQ5ng6 Next: 7JET15KisCVbnVUXBxQB8TxkWRmQK2jzbxY84A3HaFS1 Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let VOTERS = 3
55
66 let VOTING = "voting"
77
88 let REVEAL = "reveal"
99
1010 let NONE = "none"
1111
1212 func getNumberByKey (key) = {
1313 let num = match getInteger(this, key) {
1414 case a: Int =>
1515 a
1616 case _ =>
1717 0
1818 }
1919 num
2020 }
2121
2222
2323 func getStrByKey (key) = {
2424 let str = match getString(this, key) {
2525 case a: String =>
2626 a
2727 case _ =>
2828 NONE
2929 }
3030 str
3131 }
3232
3333
3434 func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
3535
3636
3737 func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
3838
3939
4040 func getKeyCommitsCount (item) = (item + "_comcnt")
4141
4242
4343 func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
4444
4545
4646 func getKeyItemStatus (item) = (item + "_status")
4747
4848
4949 func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
5050
5151
5252 func getKeyItemPrice (item) = (item + "_price")
5353
5454
5555 func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
5656
5757
5858 func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
5959
6060
6161 func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
6262
6363
6464 func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
6565
6666
6767 func getKeyItemData (item) = (item + "_data")
6868
6969
7070 func getKeyItemSupplier (item) = (item + "_owner")
7171
7272
7373 func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
7474
7575
7676 func getKeyBalanceSupplier (account) = (account + "_balance")
7777
7878
7979 func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
8080
8181
8282 @Callable(i)
8383 func addItem (title,price,data) = {
8484 let supplierAddress = toBase58String(i.caller.bytes)
8585 let item = getKeyItem(supplierAddress, title)
8686 if ((0 >= price))
8787 then throw("Purchase amount cannot be less than item price")
8888 else if ((getValueItemSupplier(item) != NONE))
8989 then throw("an item already exists")
9090 else [StringEntry(getKeyItemSupplier(item), supplierAddress), IntegerEntry(getKeyItemPrice(item), price), StringEntry(getKeyItemData(item), data)]
9191 }
9292
9393
9494
9595 @Callable(i)
9696 func purchase (item) = {
9797 let pmt = i.payments[0]
9898 if (isDefined(pmt.assetId))
9999 then throw("WAVES tokens only at moment")
100100 else {
101101 let userAddress = toBase58String(i.caller.bytes)
102102 let price = getValueItemPrice(item)
103103 let supplierAddress = getValueItemSupplier(item)
104104 if ((price > pmt.amount))
105105 then throw("Purchase amount cannot be less than item price")
106106 else if ((supplierAddress == NONE))
107107 then throw("Supplier does not exist")
108108 else [IntegerEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), IntegerEntry(getKeyBalanceSupplier(supplierAddress), (getValueBalanceSupplier(supplierAddress) + pmt.amount))]
109109 }
110110 }
111111
112112
113113
114114 @Callable(i)
115115 func withdraw () = {
116116 let supplierAddress = toBase58String(i.caller.bytes)
117117 let balance = getValueBalanceSupplier(supplierAddress)
118118 if ((0 >= balance))
119119 then throw("insuficient balance")
120120 else [IntegerEntry(getKeyBalanceSupplier(supplierAddress), 0), ScriptTransfer(addressFromStringValue(supplierAddress), balance, unit)]
121121 }
122122
123123
124124
125125 @Callable(i)
126126 func voteCommit (item,hash) = {
127127 let user = toBase58String(i.caller.bytes)
128128 let commits = getValueCommitsCount(item)
129129 let status = getValueItemStatus(item)
130130 if ((commits >= VOTERS))
131131 then throw("reached max num of voters")
132132 else if ((getValueCommit(item, user) != NONE))
133133 then throw("user has already participated")
134134 else if ((getKeyItemSupplier(item) == NONE))
135135 then throw("item does not exist")
136136 else if (if ((status != NONE))
137137 then (status != VOTING)
138138 else false)
139139 then throw("voting is not possible")
140140 else [StringEntry(getKeyCommit(item, user), hash), IntegerEntry(getKeyCommitsCount(item), (commits + 1)), StringEntry(getKeyItemStatus(item), if ((commits == VOTERS))
141141 then REVEAL
142142 else VOTING)]
143143 }
144144
145145

github/deemru/w8io/873ac7e 
28.69 ms