tx · 4HZjtvaMENwFH19vGTNSsuCKtnkVwAytaVmsmFaJ28gR

3MuBASwpgfJm92SpDkyLsdPQPD2tMSoj2WA:  -0.10000000 Waves

2021.05.18 11:40 [1530893] smart account 3MuBASwpgfJm92SpDkyLsdPQPD2tMSoj2WA > SELF 0.00000000 Waves

{ "type": 13, "id": "4HZjtvaMENwFH19vGTNSsuCKtnkVwAytaVmsmFaJ28gR", "fee": 10000000, "feeAssetId": null, "timestamp": 1621327213985, "version": 2, "chainId": 84, "sender": "3MuBASwpgfJm92SpDkyLsdPQPD2tMSoj2WA", "senderPublicKey": "AvBfKvojixmeNDg4JjhMyQVM56iwkf7z6TXUzXcbSJ5L", "proofs": [ "3FSyyTcuauHWevNgunQ978x77twBKzMkFH16J6ju3irM1J9G6uakDKQtrym83btcWNJEHrRMTYLnW1hY7eh3jtXb" ], "script": "base64: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CFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAAC2Rhb19tZW1iZXJfBQAAAA1tZW1iZXJBZGRyZXNzAgAAAAdfc3RhdHVzBQAAAA1kZWNpc2lvblZhbHVlBQAAAANuaWwAAAABaQEAAAAjbWVtYmVyc2hpcFZvdGVGb3JEQU9NZW1iZXJDYW5kaWRhdGUAAAABAAAAEGNhbmRpZGF0ZUFkZHJlc3MEAAAAEW1lbWJlcnNoaXBBZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgMJAQAAABhpc01lbWJlcnNoaXBXb3JraW5nR3JvdXAAAAABCAUAAAABaQAAAAZjYWxsZXIDCQEAAAAdaXNNZW1iZXJzaGlwVm90ZWRGb3JDYW5kaWRhdGUAAAACBQAAABFtZW1iZXJzaGlwQWRkcmVzcwUAAAAQY2FuZGlkYXRlQWRkcmVzcwkAAAIAAAABAgAAABZZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkCQEAAAAabWVtYmVyc2hpcFZvdGVGb3JDYW5kaWRhdGUAAAACBQAAABFtZW1iZXJzaGlwQWRkcmVzcwUAAAAQY2FuZGlkYXRlQWRkcmVzcwkAAAIAAAABAgAAABJZb3UgaGF2ZSBubyByaWdodHMAAAAAu+XlRw==", "height": 1530893, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: Hzs92g88V7EKvippDTJPngRzmQTezifAVUhNYMguTey8 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func isOwner (address) = (address == this)
5+
6+
7+func tryGetInteger (key) = {
8+ let val = match getInteger(this, key) {
9+ case b: Int =>
10+ b
11+ case _ =>
12+ 0
13+ }
14+ val
15+ }
16+
17+
18+func isMembershipWorkingGroup (a) = (tryGetInteger((("membership_" + toString(a)) + "_status")) > 0)
19+
20+
21+func isWorkingGroup (a) = (tryGetInteger((("working_group_" + toString(a)) + "_status")) > 0)
22+
23+
24+func isDAOMember (a) = if ((tryGetInteger((("dao_member_" + toString(a)) + "_status")) > 0))
25+ then (2 > tryGetInteger((("dao_member_" + toString(a)) + "_status")))
26+ else false
27+
28+
29+func isMembershipVotedForCandidate (membershipAddress,candidateAddress) = (tryGetInteger(((membershipAddress + "_voted_") + candidateAddress)) > 0)
30+
31+
32+func membershipVoteForCandidate (membershipAddress,candidateAddress) = WriteSet([DataEntry(((membershipAddress + "_voted_") + candidateAddress), 1)])
33+
34+
35+func tryGetString (key) = {
36+ let val = match getString(this, key) {
37+ case b: String =>
38+ b
39+ case _ =>
40+ ""
41+ }
42+ val
43+ }
44+
45+
46+func getWorkingGroup () = {
47+ let val = match getString(this, "working_group_members") {
48+ case b: String =>
49+ b
50+ case _ =>
51+ ""
52+ }
53+ val
54+ }
55+
56+
57+func addToWorkingGroup (address) = {
58+ let group = getWorkingGroup()
59+ let newGroup = ((group + ";") + address)
60+ let groupSize = tryGetInteger("working_group_size")
61+ let newGroupSize = (groupSize + 1)
62+ WriteSet([DataEntry((("dao_member_" + address) + "_status"), 1), DataEntry("working_group_members", newGroup), DataEntry("working_group_size", newGroupSize)])
63+ }
64+
65+
66+func getDAOMember () = {
67+ let val = match getString(this, "dao_members") {
68+ case b: String =>
69+ b
70+ case _ =>
71+ ""
72+ }
73+ val
74+ }
75+
76+
77+func addToDAOMember (address) = {
78+ let group = getDAOMember()
79+ let newGroup = ((group + ";") + address)
80+ let groupSize = tryGetInteger("dao_members_size")
81+ let newGroupSize = (groupSize + 1)
82+ WriteSet([DataEntry((("dao_member_" + address) + "_status"), 1), DataEntry("dao_members", newGroup), DataEntry("dao_members_size", newGroupSize)])
83+ }
84+
85+
86+func getMembershipWorkingGroup () = {
87+ let val = match getString(this, "membership_working_group_members") {
88+ case b: String =>
89+ b
90+ case _ =>
91+ ""
92+ }
93+ val
94+ }
95+
96+
97+func addToMembershipWorkingGroup (address) = {
98+ let group = getMembershipWorkingGroup()
99+ let newGroup = ((group + ";") + address)
100+ let groupSize = tryGetInteger("membership_working_group_members_size")
101+ let newGroupSize = (groupSize + 1)
102+ WriteSet([DataEntry((("membership" + address) + "_status"), 1), DataEntry("membership_working_group_members", newGroup), DataEntry("membership_working_group_members_size", newGroupSize)])
103+ }
104+
105+
106+func getVoteValue (value) = if ((value == "0"))
107+ then 0
108+ else if ((value == "1"))
109+ then 1
110+ else if ((value == "2"))
111+ then 2
112+ else throw("You need to vote with '1' or '0' value")
113+
114+
115+func xxx (address) = DataEntry((("dao_member_" + address) + "_status"), 1)
116+
117+
118+@Callable(i)
119+func proposeCandidateForDAOMember (address) = {
120+ let caller = toString(i.caller)
121+ if ((tryGetInteger(("candidates_" + address)) == 1))
122+ then throw("This user already exists")
123+ else WriteSet([DataEntry(("candidates_" + address), "proposed")])
124+ }
125+
126+
127+
128+@Callable(i)
129+func ownerAddDAOMember (address) = addToDAOMember(address)
130+
131+
132+
133+@Callable(i)
134+func ownerAddWorkingGroup (address) = WriteSet([DataEntry((("working_group" + address) + "_status"), 1)])
135+
136+
137+
138+@Callable(i)
139+func ownerAddMembershioWorkingGroup (address) = addToMembershipWorkingGroup(address)
140+
141+
142+
143+@Callable(i)
144+func decisionOnMember (memberAddress,decisionValue) = if (!(isOwner(i.caller)))
145+ then throw("access only to the owner")
146+ else {
147+ let voteValueInt = getVoteValue(decisionValue)
148+ if ((voteValueInt == 1))
149+ then addToWorkingGroup(memberAddress)
150+ else WriteSet([DataEntry((("dao_member_" + memberAddress) + "_status"), decisionValue)])
151+ }
152+
153+
154+
155+@Callable(i)
156+func membershipVoteForDAOMemberCandidate (candidateAddress) = {
157+ let membershipAddress = toString(i.caller)
158+ if (isMembershipWorkingGroup(i.caller))
159+ then if (isMembershipVotedForCandidate(membershipAddress, candidateAddress))
160+ then throw("You have already voted")
161+ else membershipVoteForCandidate(membershipAddress, candidateAddress)
162+ else throw("You have no rights")
163+ }
164+
165+

github/deemru/w8io/169f3d6 
18.37 ms