tx · CUTz7FtCymd35Mp9jfNT9NxA8a2T2A8WVDJdQgSa4nc1

3N5hvxB2quqLovdPCVjyXdJmJ73nmmYK35d:  -0.01400000 Waves

2019.08.30 17:19 [654106] smart account 3N5hvxB2quqLovdPCVjyXdJmJ73nmmYK35d > SELF 0.00000000 Waves

{ "type": 13, "id": "CUTz7FtCymd35Mp9jfNT9NxA8a2T2A8WVDJdQgSa4nc1", "fee": 1400000, "feeAssetId": null, "timestamp": 1567174798368, "version": 1, "sender": "3N5hvxB2quqLovdPCVjyXdJmJ73nmmYK35d", "senderPublicKey": "6E6ogeeCpxu9SkEFhggJqUD7fCCQrW8rmAaCLNKzNiXK", "proofs": [ "227YNP1WCNQTrrNkG56vpGi2sbzgTetfDUWjbUvwxBdsw9Nmntf3wob1WcNKfTd11ZKjxcqXivy4NZMh7SmX4Qmv" ], "script": "base64:AAIDAAAAAAAAAAAAAAAdAAAAAAZWT1RFUlMAAAAAAAAAAAMAAAAABVFPUlVNAAAAAAAAAAACAAAAAAZWT1RJTkcCAAAABnZvdGluZwAAAAAGUkVWRUFMAgAAAAZyZXZlYWwAAAAACEZFQVRVUkVEAgAAAAhmZWF0dXJlZAAAAAAIREVMSVNURUQCAAAACGRlbGlzdGVkAAAAAAROT05FAgAAAARub25lAQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5BAAAAANudW0EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAFAAAAA251bQEAAAALZ2V0U3RyQnlLZXkAAAABAAAAA2tleQQAAAADc3RyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAROT05FBQAAAANzdHIBAAAADGdldEtleUNvbW1pdAAAAAIAAAAEaXRlbQAAAAR1c2VyCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtAgAAAAFfBQAAAAR1c2VyAgAAAAdfY29tbWl0AQAAAA5nZXRWYWx1ZUNvbW1pdAAAAAIAAAAEaXRlbQAAAAR1c2VyCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAMZ2V0S2V5Q29tbWl0AAAAAgUAAAAEaXRlbQUAAAAEdXNlcgEAAAASZ2V0S2V5Q29tbWl0c0NvdW50AAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAAB19jb21jbnQBAAAAFGdldFZhbHVlQ29tbWl0c0NvdW50AAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0S2V5Q29tbWl0c0NvdW50AAAAAQUAAAAEaXRlbQEAAAAMZ2V0S2V5UmV2ZWFsAAAAAgAAAARpdGVtAAAABHVzZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABGl0ZW0CAAAAAV8FAAAABHVzZXICAAAAB19yZXZlYWwBAAAADmdldFZhbHVlUmV2ZWFsAAAAAgAAAARpdGVtAAAABHVzZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAAxnZXRLZXlSZXZlYWwAAAACBQAAAARpdGVtBQAAAAR1c2VyAQAAABBnZXRLZXlJdGVtU3RhdHVzAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAAB19zdGF0dXMBAAAAEmdldFZhbHVlSXRlbVN0YXR1cwAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEGdldEtleUl0ZW1TdGF0dXMAAAABBQAAAARpdGVtAQAAAA9nZXRLZXlWb3RlQ291bnQAAAACAAAABGl0ZW0AAAAEdm90ZQkAASwAAAACCQABLAAAAAIFAAAABGl0ZW0CAAAABV9yZXM6BQAAAAR2b3RlAQAAAA1nZXRWYWx1ZUNvdW50AAAAAgAAAARpdGVtAAAABHZvdGUJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA9nZXRLZXlWb3RlQ291bnQAAAACBQAAAARpdGVtBQAAAAR2b3RlAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABAAAABGl0ZW0JAAEsAAAAAgUAAAAEaXRlbQIAAAAGX3ByaWNlAQAAABFnZXRWYWx1ZUl0ZW1QcmljZQAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAD2dldEtleUl0ZW1QcmljZQAAAAEFAAAABGl0ZW0BAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIAAAAEdXNlcgAAAARpdGVtCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtAgAAAAFfBQAAAAR1c2VyAgAAAARfY250AQAAABdnZXRWYWx1ZVVzZXJJdGVtQ291bnRlcgAAAAIAAAAEdXNlcgAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0S2V5VXNlckl0ZW1Db3VudGVyAAAAAgUAAAAEdXNlcgUAAAAEaXRlbQEAAAAKZ2V0S2V5SXRlbQAAAAIAAAAIc3VwcGxpZXIAAAAFdGl0bGUJAAEsAAAAAgIAAAAFaXRlbV8JAAJYAAAAAQkA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cHVyY2hhc2UAAAABAAAABGl0ZW0EAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50AwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAkAAAIAAAABAgAAAB9XQVZFUyB0b2tlbnMgb25seSBhdCB0aGUgbW9tZW50BAAAAAt1c2VyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAVwcmljZQkBAAAAEWdldFZhbHVlSXRlbVByaWNlAAAAAQUAAAAEaXRlbQQAAAAPc3VwcGxpZXJBZGRyZXNzCQEAAAAUZ2V0VmFsdWVJdGVtU3VwcGxpZXIAAAABBQAAAARpdGVtAwkAAGYAAAACBQAAAAVwcmljZQgFAAAAA3BtdAAAAAZhbW91bnQJAAACAAAAAQIAAAAucHVyY2hhc2UgYW1vdW50IGNhbm5vdCBiZSBsZXNzIHRoYW4gaXRlbSBwcmljZQMJAABmAAAAAggFAAAAA3BtdAAAAAZhbW91bnQFAAAABXByaWNlCQAAAgAAAAECAAAAMHB1cmNoYXNlIGFtb3VudCBjYW5ub3QgYmUgaGlnaGVyIHRoYW4gaXRlbSBwcmljZQMJAAAAAAAAAgUAAAAPc3VwcGxpZXJBZGRyZXNzBQAAAAROT05FCQAAAgAAAAECAAAAF3N1cHBsaWVyIGRvZXMgbm90IGV4aXN0CQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0S2V5VXNlckl0ZW1Db3VudGVyAAAAAgUAAAALdXNlckFkZHJlc3MFAAAABGl0ZW0JAABkAAAAAgkBAAAAF2dldFZhbHVlVXNlckl0ZW1Db3VudGVyAAAAAgUAAAALdXNlckFkZHJlc3MFAAAABGl0ZW0AAAAAAAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABVnZXRLZXlCYWxhbmNlU3VwcGxpZXIAAAABBQAAAA9zdXBwbGllckFkZHJlc3MJAABkAAAAAgkBAAAAF2dldFZhbHVlQmFsYW5jZVN1cHBsaWVyAAAAAQUAAAAPc3VwcGxpZXJBZGRyZXNzCAUAAAADcG10AAAABmFtb3VudAUAAAADbmlsAAAAAWkBAAAAB2FkZEl0ZW0AAAADAAAABXRpdGxlAAAABXByaWNlAAAABGRhdGEEAAAAD3N1cHBsaWVyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAARpdGVtCQEAAAAKZ2V0S2V5SXRlbQAAAAIFAAAAD3N1cHBsaWVyQWRkcmVzcwUAAAAFdGl0bGUDCQAAZwAAAAIAAAAAAAAAAAAFAAAABXByaWNlCQAAAgAAAAECAAAALnB1cmNoYXNlIGFtb3VudCBjYW5ub3QgYmUgbGVzcyB0aGFuIGl0ZW0gcHJpY2UDCQEAAAACIT0AAAACCQEAAAAUZ2V0VmFsdWVJdGVtU3VwcGxpZXIAAAABBQAAAARpdGVtBQAAAAROT05FCQAAAgAAAAECAAAAGGFuIGl0ZW0gaXMgYWxyZWFkeSBleGlzdAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldEtleUl0ZW1TdXBwbGllcgAAAAEFAAAABGl0ZW0FAAAAD3N1cHBsaWVyQWRkcmVzcwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAD2dldEtleUl0ZW1QcmljZQAAAAEFAAAABGl0ZW0FAAAABXByaWNlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAOZ2V0S2V5SXRlbURhdGEAAAABBQAAAARpdGVtBQAAAARkYXRhBQAAAANuaWwAAAAAagNZSA==", "chainId": 84, "height": 654106, "spentComplexity": 0 } View: original | compacted Prev: 83rqZjx8yJHwJrjtTTstVTCiw8DT5CcKAmajPTifAaCA Next: B7QBUvet1tCjThb6zDg44LpavRtqS7HnCsa2K6TjYyH7 Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let VOTERS = 3
5+
6+let QORUM = 2
7+
8+let VOTING = "voting"
9+
10+let REVEAL = "reveal"
11+
12+let FEATURED = "featured"
13+
14+let DELISTED = "delisted"
15+
416 let NONE = "none"
517
618 func getNumberByKey (key) = {
2335 }
2436 str
2537 }
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 getValueCount (item,vote) = getNumberByKey(getKeyVoteCount(item, vote))
2668
2769
2870 func getKeyItemPrice (item) = (item + "_price")
5395
5496
5597 func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
98+
99+
100+@Callable(i)
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("reached max num of voters")
107+ else if ((getValueCommit(item, user) != NONE))
108+ then throw("user has already participated")
109+ else if ((getKeyItemSupplier(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("voting 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)])
118+ }
119+
56120
57121
58122 @Callable(i)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let VOTERS = 3
5+
6+let QORUM = 2
7+
8+let VOTING = "voting"
9+
10+let REVEAL = "reveal"
11+
12+let FEATURED = "featured"
13+
14+let DELISTED = "delisted"
15+
416 let NONE = "none"
517
618 func getNumberByKey (key) = {
719 let num = match getInteger(this, key) {
820 case a: Int =>
921 a
1022 case _ =>
1123 0
1224 }
1325 num
1426 }
1527
1628
1729 func getStrByKey (key) = {
1830 let str = match getString(this, key) {
1931 case a: String =>
2032 a
2133 case _ =>
2234 NONE
2335 }
2436 str
2537 }
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 getValueCount (item,vote) = getNumberByKey(getKeyVoteCount(item, vote))
2668
2769
2870 func getKeyItemPrice (item) = (item + "_price")
2971
3072
3173 func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
3274
3375
3476 func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
3577
3678
3779 func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
3880
3981
4082 func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
4183
4284
4385 func getKeyItemData (item) = (item + "_data")
4486
4587
4688 func getKeyItemSupplier (item) = (item + "_owner")
4789
4890
4991 func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
5092
5193
5294 func getKeyBalanceSupplier (account) = (account + "_balance")
5395
5496
5597 func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
98+
99+
100+@Callable(i)
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("reached max num of voters")
107+ else if ((getValueCommit(item, user) != NONE))
108+ then throw("user has already participated")
109+ else if ((getKeyItemSupplier(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("voting 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)])
118+ }
119+
56120
57121
58122 @Callable(i)
59123 func withdraw () = {
60124 let supplierAddress = toBase58String(i.caller.bytes)
61125 let balance = getValueBalanceSupplier(supplierAddress)
62126 if ((0 >= balance))
63127 then throw("insufficient balance")
64128 else ScriptResult(WriteSet([DataEntry(getKeyBalanceSupplier(supplierAddress), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(supplierAddress), balance, unit)]))
65129 }
66130
67131
68132
69133 @Callable(i)
70134 func purchase (item) = {
71135 let pmt = extract(i.payment)
72136 if (isDefined(pmt.assetId))
73137 then throw("WAVES tokens only at the moment")
74138 else {
75139 let userAddress = toBase58String(i.caller.bytes)
76140 let price = getValueItemPrice(item)
77141 let supplierAddress = getValueItemSupplier(item)
78142 if ((price > pmt.amount))
79143 then throw("purchase amount cannot be less than item price")
80144 else if ((pmt.amount > price))
81145 then throw("purchase amount cannot be higher than item price")
82146 else if ((supplierAddress == NONE))
83147 then throw("supplier does not exist")
84148 else WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyBalanceSupplier(supplierAddress), (getValueBalanceSupplier(supplierAddress) + pmt.amount))])
85149 }
86150 }
87151
88152
89153
90154 @Callable(i)
91155 func addItem (title,price,data) = {
92156 let supplierAddress = toBase58String(i.caller.bytes)
93157 let item = getKeyItem(supplierAddress, title)
94158 if ((0 >= price))
95159 then throw("purchase amount cannot be less than item price")
96160 else if ((getValueItemSupplier(item) != NONE))
97161 then throw("an item is already exist")
98162 else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
99163 }
100164
101165

github/deemru/w8io/873ac7e 
30.10 ms