tx · 32dbm9fiYv3C1jPFwGeMfTGsWZmCRhTE3nk8bHdKAeEz

3MuwmoHDxZZP9bGwExfL3L8JpMU5r95oBr8:  -0.01400000 Waves

2021.12.22 09:51 [1845138] smart account 3MuwmoHDxZZP9bGwExfL3L8JpMU5r95oBr8 > SELF 0.00000000 Waves

{ "type": 13, "id": "32dbm9fiYv3C1jPFwGeMfTGsWZmCRhTE3nk8bHdKAeEz", "fee": 1400000, "feeAssetId": null, "timestamp": 1640155897853, "version": 2, "chainId": 84, "sender": "3MuwmoHDxZZP9bGwExfL3L8JpMU5r95oBr8", "senderPublicKey": "B8mXne2bErXPSLJvpntKVoudEBjypi3Ag6RfxqTr5pEg", "proofs": [ "4CM8Waqj9FNdxP6e6V4cuS4K8zus1sxRfAJTv4pNPRujS3L9gngtFfUEUQtVQAAFzPnR8vpcEVQhfhvGAS1kDth1" ], "script": "base64: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", "height": 1845138, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EjJLGWBDZBNEVvytXRqsQ4q2YjLnfeAX6QBL6NGZ6geX Next: 3oUVa3Pdogy5SqQ7JQ7zFxy6MsYisWk2XzoZQf5MbyrY Diff:
OldNewDifferences
2727 @Callable(inv)
2828 func verifyCollection (nameUrl,name,description,hash) = if (isDefined(getString(nameKey(nameUrl))))
2929 then throw("This collection was create")
30- else [StringEntry(nameKey(nameUrl), name), StringEntry(descriptionKey(nameUrl), description), StringEntry(addressKey(nameUrl), toBase58String(inv.caller.bytes)), StringEntry(ipfsHashKey(nameUrl), hash), StringEntry(statusKey(nameUrl), "VOTING"), IntegerEntry(voteKey(nameUrl), 0)]
30+ else [StringEntry(nameKey(nameUrl), name), StringEntry(descriptionKey(nameUrl), description), StringEntry(addressKey(nameUrl), toBase58String(inv.caller.bytes)), StringEntry(ipfsHashKey(nameUrl), hash), StringEntry(statusKey(nameUrl), "VOTING"), StringEntry(voteKey(nameUrl), "")]
3131
3232
3333
3434 @Callable(inv)
3535 func vote (nameUrl) = {
36- let listVoting = split(getStringValue("voting_member"), ",")
37- if (!(containsElement(listVoting, toBase58String(inv.caller.bytes))))
36+ let votingMember = split(getStringValue("voting_member"), ",")
37+ let listVoted = split(getStringValue(voteKey(nameUrl)), ",")
38+ if (!(containsElement(votingMember, toBase58String(inv.caller.bytes))))
3839 then throw("You can't vote")
39- else if ((statusKey(nameUrl) == "VERIFY"))
40- then throw("Voting was ended")
41- else {
42- let voices = (getIntegerValue(voteKey(nameUrl)) + 1)
43-[IntegerEntry(voteKey(nameUrl), voices), StringEntry(statusKey(nameUrl), checkVote(size(listVoting), voices))]
44- }
40+ else if (containsElement(listVoted, toBase58String(inv.caller.bytes)))
41+ then throw("You voted already")
42+ else if ((statusKey(nameUrl) == "VERIFY"))
43+ then throw("Voting was ended")
44+ else {
45+ let list = toBase58String(inv.caller.bytes) :: listVoted
46+ let voices = size(listVoted)
47+[StringEntry(voteKey(nameUrl), makeString(list, ",")), StringEntry(statusKey(nameUrl), checkVote(size(votingMember), voices))]
48+ }
4549 }
4650
4751
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func nameKey (nameUrl) = (nameUrl + "_name")
55
66
77 func descriptionKey (nameUrl) = (nameUrl + "_description")
88
99
1010 func ipfsHashKey (nameUrl) = (nameUrl + "_hash")
1111
1212
1313 func addressKey (nameUrl) = (nameUrl + "_address")
1414
1515
1616 func statusKey (nameUrl) = (nameUrl + "_status")
1717
1818
1919 func voteKey (nameUrl) = (nameUrl + "_vote")
2020
2121
2222 func checkVote (numberVote,voices) = if ((voices > (numberVote / 2)))
2323 then "VERIFY"
2424 else "VOTING"
2525
2626
2727 @Callable(inv)
2828 func verifyCollection (nameUrl,name,description,hash) = if (isDefined(getString(nameKey(nameUrl))))
2929 then throw("This collection was create")
30- else [StringEntry(nameKey(nameUrl), name), StringEntry(descriptionKey(nameUrl), description), StringEntry(addressKey(nameUrl), toBase58String(inv.caller.bytes)), StringEntry(ipfsHashKey(nameUrl), hash), StringEntry(statusKey(nameUrl), "VOTING"), IntegerEntry(voteKey(nameUrl), 0)]
30+ else [StringEntry(nameKey(nameUrl), name), StringEntry(descriptionKey(nameUrl), description), StringEntry(addressKey(nameUrl), toBase58String(inv.caller.bytes)), StringEntry(ipfsHashKey(nameUrl), hash), StringEntry(statusKey(nameUrl), "VOTING"), StringEntry(voteKey(nameUrl), "")]
3131
3232
3333
3434 @Callable(inv)
3535 func vote (nameUrl) = {
36- let listVoting = split(getStringValue("voting_member"), ",")
37- if (!(containsElement(listVoting, toBase58String(inv.caller.bytes))))
36+ let votingMember = split(getStringValue("voting_member"), ",")
37+ let listVoted = split(getStringValue(voteKey(nameUrl)), ",")
38+ if (!(containsElement(votingMember, toBase58String(inv.caller.bytes))))
3839 then throw("You can't vote")
39- else if ((statusKey(nameUrl) == "VERIFY"))
40- then throw("Voting was ended")
41- else {
42- let voices = (getIntegerValue(voteKey(nameUrl)) + 1)
43-[IntegerEntry(voteKey(nameUrl), voices), StringEntry(statusKey(nameUrl), checkVote(size(listVoting), voices))]
44- }
40+ else if (containsElement(listVoted, toBase58String(inv.caller.bytes)))
41+ then throw("You voted already")
42+ else if ((statusKey(nameUrl) == "VERIFY"))
43+ then throw("Voting was ended")
44+ else {
45+ let list = toBase58String(inv.caller.bytes) :: listVoted
46+ let voices = size(listVoted)
47+[StringEntry(voteKey(nameUrl), makeString(list, ",")), StringEntry(statusKey(nameUrl), checkVote(size(votingMember), voices))]
48+ }
4549 }
4650
4751
4852
4953 @Callable(inv)
5054 func addVoting (address) = {
5155 let listVoting = split(getStringValue("voting_member"), ",")
5256 if ((toBase58String(inv.caller.bytes) != toBase58String(this.bytes)))
5357 then throw("You don't owner")
5458 else if (containsElement(listVoting, address))
5559 then throw("This address was added")
5660 else {
5761 let list = address :: listVoting
5862 [StringEntry("voting_member", makeString(list, ","))]
5963 }
6064 }
6165
6266
6367
6468 @Callable(inv)
6569 func removeVoting (address) = {
6670 let listVoting = split(getStringValue("voting_member"), ",")
6771 if ((toBase58String(inv.caller.bytes) != toBase58String(this.bytes)))
6872 then throw("You don't owner")
6973 else if (!(containsElement(listVoting, address)))
7074 then throw("This address wasn't added")
7175 else {
7276 let index = match indexOf(listVoting, address) {
7377 case t: Int =>
7478 t
7579 case _ =>
7680 0
7781 }
7882 let list = removeByIndex(listVoting, index)
7983 [StringEntry("voting_member", makeString(list, ","))]
8084 }
8185 }
8286
8387
8488 @Verifier(tx)
8589 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
8690

github/deemru/w8io/169f3d6 
27.40 ms