tx · CbG2SFGC41RXzayu92DDGmMNxZmZYAeBVZp6xLcc1k4z

3Mz9ndf12uVKYMqYmwUr81wcNLYEgr82ei6:  -0.01400000 Waves

2019.11.16 21:41 [768042] smart account 3Mz9ndf12uVKYMqYmwUr81wcNLYEgr82ei6 > SELF 0.00000000 Waves

{ "type": 13, "id": "CbG2SFGC41RXzayu92DDGmMNxZmZYAeBVZp6xLcc1k4z", "fee": 1400000, "feeAssetId": null, "timestamp": 1573929703578, "version": 1, "sender": "3Mz9ndf12uVKYMqYmwUr81wcNLYEgr82ei6", "senderPublicKey": "8bmUdC19peGBa1TGeRZaZfpuDG6yKaGYBd8FQvcBLAXR", "proofs": [ "67Pe6FfECfb7nsyiMAbNEATRKTMbJjMjivA5Tt1Ar2rvJ8tFyM57dC2Htu6TKkkE5zRLn8Vya1W9AKzjzjiRNQkd" ], "script": "base64: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", "chainId": 84, "height": 768042, "spentComplexity": 0 } View: original | compacted Prev: 8H87rDQzUsSNTodPrT7ncKhVdCAo1oPipf2QqqTny7k2 Next: 4teELnsVnyY8cpsfBLt2qg8eMfmtr2E2mR8vToU2PMXP Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let NONE = "none"
55
6-func getKeyItemPrice (item) = (item + "_price")
6+let VOTERS = 3
77
8+let QUORUM = 2
89
9-func getKeyItemData (item) = (item + "_data")
10+let VOTING = "voting"
1011
12+let REVEAL = "reveal"
1113
12-func getKeyItemSupp (item) = (item + "_owner")
14+let FEATURED = "featured"
1315
16+let DELISTED = "delisted"
1417
1518 func getStrByKey (key) = {
1619 let str = match getString(this, key) {
2326 }
2427
2528
26-func getKeyItem (supp,title) = ("item_" + toBase58String(sha256(toBytes((supp + title)))))
27-
28-
29-func getValueItemSupp (item) = getStrByKey(getKeyItemSupp(item))
30-
31-
3229 func getNumberByKey (key) = {
3330 let num = match getInteger(this, key) {
3431 case a: Int =>
3835 }
3936 num
4037 }
38+
39+
40+func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
41+
42+
43+func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
44+
45+
46+func getKeyCommitsCount (item) = (item + "_comcnt")
47+
48+
49+func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
50+
51+
52+func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
53+
54+
55+func getValueReveal (item,user) = getStrByKey(getKeyReveal(item, user))
56+
57+
58+func getKeyItemStatus (item) = (item + "_status")
59+
60+
61+func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
62+
63+
64+func getKeyVoteCount (item,vote) = ((item + "_res:") + vote)
65+
66+
67+func getValueVoteCount (item,vote) = getNumberByKey(getKeyVoteCount(item, vote))
68+
69+
70+func getKeyItemPrice (item) = (item + "_price")
71+
72+
73+func getKeyItemData (item) = (item + "_data")
74+
75+
76+func getKeyItemSupp (item) = (item + "_owner")
77+
78+
79+func getKeyItem (supp,title) = ("item_" + toBase58String(sha256(toBytes((supp + title)))))
80+
81+
82+func getValueItemSupp (item) = getStrByKey(getKeyItemSupp(item))
4183
4284
4385 func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
5698
5799
58100 @Callable(i)
59-func withdraw () = {
60- let suppAdr = toBase58String(i.caller.bytes)
61- let balance = getValueSuppBalance(suppAdr)
62- if ((0 >= balance))
63- then throw("insufficient balance")
64- else ScriptResult(WriteSet([DataEntry(getKeySuppBalance(suppAdr), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(suppAdr), balance, unit)]))
101+func voteCommit (item,hash) = {
102+ let user = toBase58String(i.caller.bytes)
103+ let commits = getValueCommitsCount(item)
104+ let status = getValueItemStatus(item)
105+ if ((commits >= VOTERS))
106+ then throw("reahced max voters")
107+ else if ((getValueCommit(item, user) != NONE))
108+ then throw("user already voted")
109+ else if ((getKeyItemSupp(item) == NONE))
110+ then throw("item does not exist")
111+ else if (if ((status != NONE))
112+ then (status != VOTING)
113+ else false)
114+ then throw("vote is not possible")
115+ else WriteSet([DataEntry(getKeyCommit(item, user), hash), DataEntry(getKeyCommitsCount(item), (commits + 1)), DataEntry(getKeyItemStatus(item), if ((commits == VOTERS))
116+ then REVEAL
117+ else VOTING)])
65118 }
66119
67120
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let NONE = "none"
55
6-func getKeyItemPrice (item) = (item + "_price")
6+let VOTERS = 3
77
8+let QUORUM = 2
89
9-func getKeyItemData (item) = (item + "_data")
10+let VOTING = "voting"
1011
12+let REVEAL = "reveal"
1113
12-func getKeyItemSupp (item) = (item + "_owner")
14+let FEATURED = "featured"
1315
16+let DELISTED = "delisted"
1417
1518 func getStrByKey (key) = {
1619 let str = match getString(this, key) {
1720 case a: String =>
1821 a
1922 case _ =>
2023 NONE
2124 }
2225 str
2326 }
2427
2528
26-func getKeyItem (supp,title) = ("item_" + toBase58String(sha256(toBytes((supp + title)))))
27-
28-
29-func getValueItemSupp (item) = getStrByKey(getKeyItemSupp(item))
30-
31-
3229 func getNumberByKey (key) = {
3330 let num = match getInteger(this, key) {
3431 case a: Int =>
3532 a
3633 case _ =>
3734 0
3835 }
3936 num
4037 }
38+
39+
40+func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
41+
42+
43+func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
44+
45+
46+func getKeyCommitsCount (item) = (item + "_comcnt")
47+
48+
49+func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
50+
51+
52+func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
53+
54+
55+func getValueReveal (item,user) = getStrByKey(getKeyReveal(item, user))
56+
57+
58+func getKeyItemStatus (item) = (item + "_status")
59+
60+
61+func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
62+
63+
64+func getKeyVoteCount (item,vote) = ((item + "_res:") + vote)
65+
66+
67+func getValueVoteCount (item,vote) = getNumberByKey(getKeyVoteCount(item, vote))
68+
69+
70+func getKeyItemPrice (item) = (item + "_price")
71+
72+
73+func getKeyItemData (item) = (item + "_data")
74+
75+
76+func getKeyItemSupp (item) = (item + "_owner")
77+
78+
79+func getKeyItem (supp,title) = ("item_" + toBase58String(sha256(toBytes((supp + title)))))
80+
81+
82+func getValueItemSupp (item) = getStrByKey(getKeyItemSupp(item))
4183
4284
4385 func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
4486
4587
4688 func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
4789
4890
4991 func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
5092
5193
5294 func getKeySuppBalance (supp) = (supp + "_balance")
5395
5496
5597 func getValueSuppBalance (supp) = getNumberByKey(getKeySuppBalance(supp))
5698
5799
58100 @Callable(i)
59-func withdraw () = {
60- let suppAdr = toBase58String(i.caller.bytes)
61- let balance = getValueSuppBalance(suppAdr)
62- if ((0 >= balance))
63- then throw("insufficient balance")
64- else ScriptResult(WriteSet([DataEntry(getKeySuppBalance(suppAdr), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(suppAdr), balance, unit)]))
101+func voteCommit (item,hash) = {
102+ let user = toBase58String(i.caller.bytes)
103+ let commits = getValueCommitsCount(item)
104+ let status = getValueItemStatus(item)
105+ if ((commits >= VOTERS))
106+ then throw("reahced max voters")
107+ else if ((getValueCommit(item, user) != NONE))
108+ then throw("user already voted")
109+ else if ((getKeyItemSupp(item) == NONE))
110+ then throw("item does not exist")
111+ else if (if ((status != NONE))
112+ then (status != VOTING)
113+ else false)
114+ then throw("vote is not possible")
115+ else WriteSet([DataEntry(getKeyCommit(item, user), hash), DataEntry(getKeyCommitsCount(item), (commits + 1)), DataEntry(getKeyItemStatus(item), if ((commits == VOTERS))
116+ then REVEAL
117+ else VOTING)])
65118 }
66119
67120

github/deemru/w8io/873ac7e 
38.69 ms