tx · DwFK241mEgQAXuVhGhBdwJkQdwmeZ1X8F3iTQ4RvM2uu

3MpjwMAGCaNqNFRa34foE5sTfV6zb76bYja:  -0.01000010 Waves

2021.07.07 16:25 [1603236] smart account 3MpjwMAGCaNqNFRa34foE5sTfV6zb76bYja > SELF 0.00000000 Waves

{ "type": 13, "id": "DwFK241mEgQAXuVhGhBdwJkQdwmeZ1X8F3iTQ4RvM2uu", "fee": 1000010, "feeAssetId": null, "timestamp": 1625664396862, "version": 2, "chainId": 84, "sender": "3MpjwMAGCaNqNFRa34foE5sTfV6zb76bYja", "senderPublicKey": "7Cy4wXHvgCRHP6MMhu9tTdayLHr9P9Dc342DVcCoCPzm", "proofs": [ "2eubo4X9P3Y8SPKtkit4cX83XTknwLgLiGpP2tfeC5KdVf6VZtJRxmC7vkUZefV61ci7zHYE5AApZ2JHR2BhcDiT" ], "script": "base64:AAIFAAAAAAAAAZYIAhIECgIICBoMCgJhMRIGVk9URVJTGgwKAmEyEgZWT1RJTkcaDAoCYTMSBlJFVkVBTBoKCgJhNBIETk9ORRoUCgJhNRIOZ2V0TnVtYmVyQnlLZXkaCQoCYTYSA2tleRoJCgJhNxIDbnVtGg0KAmE4EgckbWF0Y2gwGgcKAmE5EgFhGhEKAmIxEgtnZXRTdHJCeUtleRoJCgJiMhIDc3RyGhgKAmIzEhJnZXRLZXlJdGVtU3VwcGxpZXIaCgoCYjQSBGl0ZW0aEgoCYjUSDGdldEtleUNvbW1pdBoKCgJiNhIEdXNlchoUCgJiNxIOZ2V0VmFsdWVDb21taXQaGAoCYjgSEmdldEtleUNvbW1pdHNDb3VudBoaCgJiORIUZ2V0VmFsdWVDb21taXRzQ291bnQaFgoCYzESEGdldEtleUl0ZW1TdGF0dXMaGAoCYzISEmdldFZhbHVlSXRlbVN0YXR1cxoHCgJjMxIBaRoKCgJjNBIEaGFzaBoNCgJjNRIHY29tbWl0cxoMCgJjNhIGc3RhdHVzAAAADQAAAAACYTEAAAAAAAAAAAMAAAAAAmEyAgAAAAZ2b3RpbmcAAAAAAmEzAgAAAAZyZXZlYWwAAAAAAmE0AgAAAARub25lAQAAAAJhNQAAAAEAAAACYTYEAAAAAmE3BAAAAAJhOAkABBoAAAACBQAAAAR0aGlzBQAAAAJhNgMJAAABAAAAAgUAAAACYTgCAAAAA0ludAQAAAACYTkFAAAAAmE4BQAAAAJhOQAAAAAAAAAAAAUAAAACYTcBAAAAAmIxAAAAAQAAAAJhNgQAAAACYjIEAAAAAmE4CQAEHQAAAAIFAAAABHRoaXMFAAAAAmE2AwkAAAEAAAACBQAAAAJhOAIAAAAGU3RyaW5nBAAAAAJhOQUAAAACYTgFAAAAAmE5BQAAAAJhNAUAAAACYjIBAAAAAmIzAAAAAQAAAAJiNAkAASwAAAACBQAAAAJiNAIAAAAFX2RhdGEBAAAAAmI1AAAAAgAAAAJiNAAAAAJiNgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAACYjQCAAAAAV8FAAAAAmI2AgAAAAdfY29tbWl0AQAAAAJiNwAAAAIAAAACYjQAAAACYjYJAQAAAAJiMQAAAAEJAQAAAAJiNQAAAAIFAAAAAmI0BQAAAAJiNgEAAAACYjgAAAABAAAAAmI0CQABLAAAAAIFAAAAAmI0AgAAAAdfY29tY250AQAAAAJiOQAAAAEAAAACYjQJAQAAAAJhNQAAAAEJAQAAAAJiOAAAAAEFAAAAAmI0AQAAAAJjMQAAAAEAAAACYjQJAAEsAAAAAgUAAAACYjQCAAAAB19zdGF0dXMBAAAAAmMyAAAAAQAAAAJiNAkBAAAAAmIxAAAAAQkBAAAAAmMxAAAAAQUAAAACYjQAAAABAAAAAmMzAQAAAAp2b3RlQ29tbWl0AAAAAgAAAAJiNAAAAAJjNAQAAAACYjYJAAJYAAAAAQgIBQAAAAJjMwAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAAmM1CQEAAAACYjkAAAABBQAAAAJiNAQAAAACYzYJAQAAAAJjMgAAAAEFAAAAAmI0AwkAAGcAAAACBQAAAAJjNQUAAAACYTEJAAACAAAAAQIAAAAtb3NpxIVnbmnEmXRvIG1ha3N5bWFuxIUgbGljemLEmSBnxYJvc3VqxIVjeWNoAwkBAAAAAiE9AAAAAgkBAAAAAmI3AAAAAgUAAAACYjQFAAAAAmI2BQAAAAJhNAkAAAIAAAABAgAAABl1xbx0eWtvd25payBqdcW8IGfFgm9zdWplAwkAAAAAAAACCQEAAAACYjMAAAABBQAAAAJiNAUAAAACYTQJAAACAAAAAQIAAAAbbmllIGlzdG5pZWplIHRha2kgcHJ6ZWRtaW90AwMJAQAAAAIhPQAAAAIFAAAAAmM2BQAAAAJhNAkBAAAAAiE9AAAAAgUAAAACYzYFAAAAAmEyBwkAAAIAAAABAgAAAB1nxYJvc293YW5pZSBuaWUgamVzdCBtb8W8bGl3ZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAACYjUAAAACBQAAAAJiNAUAAAACYjYFAAAAAmM0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAACYjgAAAABBQAAAAJiNAkAAGQAAAACBQAAAAJjNQAAAAAAAAAAAQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAACYzEAAAABBQAAAAJiNAMJAAAAAAAAAgUAAAACYzUFAAAAAmExBQAAAAJhMwUAAAACYTIFAAAAA25pbAAAAABVf4Sj", "height": 1603236, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4CjRN7imG9WC5doaVq3ZMiJGGHKcUTHEqNNRyp5Ve5yY Next: 8YVQTvj68zepSUv9UznKyuNaQGYJYwQPRxwvoDivMJA Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let VOTERS = 3
5+
6+let VOTING = "voting"
7+
8+let REVEAL = "reveal"
9+
410 let NONE = "none"
511
612 func getNumberByKey (key) = {
2531 }
2632
2733
28-func getKeyItemPrice (item) = (item + "_price")
29-
30-
31-func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
32-
33-
34-func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
35-
36-
37-func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
38-
39-
40-func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
41-
42-
43-func getKeyItemData (item) = (item + "_data")
44-
45-
4634 func getKeyItemSupplier (item) = (item + "_data")
4735
4836
49-func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
37+func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
5038
5139
52-func getKeyBalanceSupplier (account) = (account + "_balance")
40+func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
5341
5442
55-func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
43+func getKeyCommitsCount (item) = (item + "_comcnt")
44+
45+
46+func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
47+
48+
49+func getKeyItemStatus (item) = (item + "_status")
50+
51+
52+func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
5653
5754
5855 @Callable(i)
59-func addItem (title,price,data) = {
60- let supplierAddress = toBase58String(i.caller.bytes)
61- let item = getKeyItem(supplierAddress, title)
62- if ((0 >= price))
63- then throw("purchase amount cannot be less than item price")
64- else if ((getValueItemSupplier(item) != NONE))
65- then throw("an item is already exist")
66- else [StringEntry(getKeyItemSupplier(item), supplierAddress), IntegerEntry(getKeyItemPrice(item), price), StringEntry(getKeyItemData(item), data)]
67- }
68-
69-
70-
71-@Callable(i)
72-func purchase (item) = {
73- let pmt = i.payments[0]
74- if (isDefined(pmt.assetId))
75- then throw("WAVES token only at the moment")
76- else {
77- let userAddress = toBase58String(i.caller.bytes)
78- let price = getValueItemPrice(item)
79- let supplierAddres = getValueItemSupplier(item)
80- if ((price > pmt.amount))
81- then throw("purchase amunt cannot be less than item price")
82- else if ((pmt.amount > price))
83- then throw("purchase amount cannot be higher than item price")
84- else if ((supplierAddres == NONE))
85- then throw("Supplier address doesn't exist")
86- else [IntegerEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), IntegerEntry(getKeyBalanceSupplier(supplierAddres), (getValueBalanceSupplier(supplierAddres) + pmt.amount))]
87- }
88- }
89-
90-
91-
92-@Callable(i)
93-func withdraw () = {
94- let supplierAddress = toBase58String(i.caller.bytes)
95- let balance = getValueBalanceSupplier(supplierAddress)
96- if ((0 >= balance))
97- then throw("za mało środków")
98- else [IntegerEntry(getKeyBalanceSupplier(supplierAddress), 0), ScriptTransfer(addressFromStringValue(supplierAddress), balance, unit)]
56+func voteCommit (item,hash) = {
57+ let user = toBase58String(i.caller.bytes)
58+ let commits = getValueCommitsCount(item)
59+ let status = getValueItemStatus(item)
60+ if ((commits >= VOTERS))
61+ then throw("osiągnięto maksymaną liczbę głosujących")
62+ else if ((getValueCommit(item, user) != NONE))
63+ then throw("użtykownik już głosuje")
64+ else if ((getKeyItemSupplier(item) == NONE))
65+ then throw("nie istnieje taki przedmiot")
66+ else if (if ((status != NONE))
67+ then (status != VOTING)
68+ else false)
69+ then throw("głosowanie nie jest możliwe")
70+ else [StringEntry(getKeyCommit(item, user), hash), IntegerEntry(getKeyCommitsCount(item), (commits + 1)), StringEntry(getKeyItemStatus(item), if ((commits == VOTERS))
71+ then REVEAL
72+ else VOTING)]
9973 }
10074
10175
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let VOTERS = 3
5+
6+let VOTING = "voting"
7+
8+let REVEAL = "reveal"
9+
410 let NONE = "none"
511
612 func getNumberByKey (key) = {
713 let num = match getInteger(this, key) {
814 case a: Int =>
915 a
1016 case _ =>
1117 0
1218 }
1319 num
1420 }
1521
1622
1723 func getStrByKey (key) = {
1824 let str = match getString(this, key) {
1925 case a: String =>
2026 a
2127 case _ =>
2228 NONE
2329 }
2430 str
2531 }
2632
2733
28-func getKeyItemPrice (item) = (item + "_price")
29-
30-
31-func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
32-
33-
34-func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
35-
36-
37-func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
38-
39-
40-func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
41-
42-
43-func getKeyItemData (item) = (item + "_data")
44-
45-
4634 func getKeyItemSupplier (item) = (item + "_data")
4735
4836
49-func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
37+func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
5038
5139
52-func getKeyBalanceSupplier (account) = (account + "_balance")
40+func getValueCommit (item,user) = getStrByKey(getKeyCommit(item, user))
5341
5442
55-func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
43+func getKeyCommitsCount (item) = (item + "_comcnt")
44+
45+
46+func getValueCommitsCount (item) = getNumberByKey(getKeyCommitsCount(item))
47+
48+
49+func getKeyItemStatus (item) = (item + "_status")
50+
51+
52+func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
5653
5754
5855 @Callable(i)
59-func addItem (title,price,data) = {
60- let supplierAddress = toBase58String(i.caller.bytes)
61- let item = getKeyItem(supplierAddress, title)
62- if ((0 >= price))
63- then throw("purchase amount cannot be less than item price")
64- else if ((getValueItemSupplier(item) != NONE))
65- then throw("an item is already exist")
66- else [StringEntry(getKeyItemSupplier(item), supplierAddress), IntegerEntry(getKeyItemPrice(item), price), StringEntry(getKeyItemData(item), data)]
67- }
68-
69-
70-
71-@Callable(i)
72-func purchase (item) = {
73- let pmt = i.payments[0]
74- if (isDefined(pmt.assetId))
75- then throw("WAVES token only at the moment")
76- else {
77- let userAddress = toBase58String(i.caller.bytes)
78- let price = getValueItemPrice(item)
79- let supplierAddres = getValueItemSupplier(item)
80- if ((price > pmt.amount))
81- then throw("purchase amunt cannot be less than item price")
82- else if ((pmt.amount > price))
83- then throw("purchase amount cannot be higher than item price")
84- else if ((supplierAddres == NONE))
85- then throw("Supplier address doesn't exist")
86- else [IntegerEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), IntegerEntry(getKeyBalanceSupplier(supplierAddres), (getValueBalanceSupplier(supplierAddres) + pmt.amount))]
87- }
88- }
89-
90-
91-
92-@Callable(i)
93-func withdraw () = {
94- let supplierAddress = toBase58String(i.caller.bytes)
95- let balance = getValueBalanceSupplier(supplierAddress)
96- if ((0 >= balance))
97- then throw("za mało środków")
98- else [IntegerEntry(getKeyBalanceSupplier(supplierAddress), 0), ScriptTransfer(addressFromStringValue(supplierAddress), balance, unit)]
56+func voteCommit (item,hash) = {
57+ let user = toBase58String(i.caller.bytes)
58+ let commits = getValueCommitsCount(item)
59+ let status = getValueItemStatus(item)
60+ if ((commits >= VOTERS))
61+ then throw("osiągnięto maksymaną liczbę głosujących")
62+ else if ((getValueCommit(item, user) != NONE))
63+ then throw("użtykownik już głosuje")
64+ else if ((getKeyItemSupplier(item) == NONE))
65+ then throw("nie istnieje taki przedmiot")
66+ else if (if ((status != NONE))
67+ then (status != VOTING)
68+ else false)
69+ then throw("głosowanie nie jest możliwe")
70+ else [StringEntry(getKeyCommit(item, user), hash), IntegerEntry(getKeyCommitsCount(item), (commits + 1)), StringEntry(getKeyItemStatus(item), if ((commits == VOTERS))
71+ then REVEAL
72+ else VOTING)]
9973 }
10074
10175

github/deemru/w8io/c3f4982 
30.02 ms