tx · HiWbEhNGWCqyK7SVX5cuZmodVFz9D7xJcErmVAVNm9Hh

3N6zsHoJ1d5MGewb6SzocKf9hqY2YRv2X9F:  -0.05000000 Waves

2023.10.06 14:50 [2786722] smart account 3N6zsHoJ1d5MGewb6SzocKf9hqY2YRv2X9F > SELF 0.00000000 Waves

{ "type": 13, "id": "HiWbEhNGWCqyK7SVX5cuZmodVFz9D7xJcErmVAVNm9Hh", "fee": 5000000, "feeAssetId": null, "timestamp": 1696593034362, "version": 1, "sender": "3N6zsHoJ1d5MGewb6SzocKf9hqY2YRv2X9F", "senderPublicKey": "4vKLYiETjKhWQjgL2HxhS5cAy69esyZaVbGU5NRbcP2b", "proofs": [ "4vc1EGn6Sa9TRQdokuEbgAxcfiGLMWhiu1WUmQTQEWLt1g2UqY1oNG5xknaQ2saPAvBq3JgPR4jtwwAkYHRjjoyv" ], "script": "base64:AAIFAAAAAAAAACEIAhIECgIICBIDCgEIEgMKAQgSAwoBCBIDCgEIEgMKAQgAAAAsAQAAAAd0aHJvd0lmAAAAAgAAAAljb25kaXRpb24AAAAFZXJyb3IDBQAAAAljb25kaXRpb24JAAACAAAAAQUAAAAFZXJyb3IGAQAAAAh3cml0ZUludAAAAAIAAAADa2V5AAAABXZhbHVlAwkAAGYAAAACAAAAAAAAAAAABQAAAAV2YWx1ZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABd3cml0aW5nIG5lZ2F0aXZlIHZhbHVlIAkAAaQAAAABBQAAAAV2YWx1ZQIAAAAJIGZvciBrZXkgBQAAAANrZXkJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAANrZXkFAAAABXZhbHVlAQAAABB3cml0ZUNvbnN0U3RyaW5nAAAAAgAAAANrZXkAAAAFdmFsdWUDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAADa2V5BQAAAAV2YWx1ZQkAAAIAAAABCQABLAAAAAICAAAAFWFscmVhZHkgaW5pdGlhbGl6ZWQ6IAUAAAADa2V5AQAAAA13cml0ZUNvbnN0SW50AAAAAgAAAANrZXkAAAAFdmFsdWUDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAA2tleQUAAAAFdmFsdWUJAAACAAAAAQkAASwAAAACAgAAABBhbHJlYWR5IGV4aXN0czogBQAAAANrZXkBAAAACGNoYW5nZUJ5AAAAAgAAAANrZXkAAAAFdmFsdWUJAQAAAAh3cml0ZUludAAAAAIFAAAAA2tleQkAAGQAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQAAAAAAAAAAAAUAAAAFdmFsdWUBAAAABWFzSW50AAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBQAAAANpbnQJAAACAAAAAQIAAAAZd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAAAAAASY29uZmlnQWRkcmVzc1N0b3JlAgAAAAZjb25maWcAAAAADWNvbmZpZ0FkZHJlc3MJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAASY29uZmlnQWRkcmVzc1N0b3JlAgAAABpjaGlsZHJlbi52b3Rpbmc6IG5vIGNvbmZpZwIAAAAWaW52YWxpZCBjb25maWcgYWRkcmVzcwAAAAAGSEVJR0hUBQAAAAZoZWlnaHQBAAAABmFkdmlzZQAAAAAJAAEsAAAAAgIAAAAIaGVpZ2h0OiAJAAGkAAAAAQUAAAAGSEVJR0hUAAAAAARCQVNFAAAAAAAAAAPoAQAAAAlvcEFsbG93ZWQAAAABAAAAAm9wBAAAAAFhCQAD/AAAAAQFAAAADWNvbmZpZ0FkZHJlc3MCAAAACW9wQWxsb3dlZAkABEwAAAACBQAAAAJvcAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAAWEFAAAAAWEGCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAAQY2hpbGRyZW5Db250cmFjdAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAA1jb25maWdBZGRyZXNzAgAAABFjb250cmFjdF9jaGlsZHJlbgIAAAAUbm8gY29udHJhY3RfY2hpbGRyZW4CAAAAGWludmFsaWQgY29udHJhY3RfY2hpbGRyZW4AAAAAFHZvdGluZ1Jlc3VsdENvbnRyYWN0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAADWNvbmZpZ0FkZHJlc3MCAAAAFmNvbnRyYWN0X3ZvdGluZ19yZXN1bHQCAAAAGW5vIGNvbnRyYWN0X3ZvdGluZ19y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c2FsX21pbl9wb3dlcl9yZXF1aXJlZAUAAAAFY2hpbGQBAAAAEXZvdGluZ1N0YXJ0T2Zmc2V0AAAAAQAAAAVjaGlsZAkBAAAACHNldHRpbmdzAAAAAgIAAAAbcHJvcG9zYWxfdm90aW5nc3RhcnRfb2Zmc2V0BQAAAAVjaGlsZAEAAAAPdm90aW5nRW5kT2Zmc2V0AAAAAQAAAAVjaGlsZAkBAAAACHNldHRpbmdzAAAAAgIAAAAZcHJvcG9zYWxfdm90aW5nZW5kX29mZnNldAUAAAAFY2hpbGQBAAAACXVzZXJQb3dlcgAAAAIAAAAFY2hpbGQAAAAEdXNlcgkBAAAABWFzSW50AAAAAQkAA/wAAAAEBQAAABBjaGlsZHJlbkNvbnRyYWN0AgAAAAl1c2VyUG93ZXIJAARMAAAAAgUAAAAFY2hpbGQJAARMAAAAAgUAAAAEdXNlcgUAAAADbmlsBQAAAANuaWwBAAAADWlzUGFydGljaXBhbnQAAAABAAAABXBvd2VyAwkAAAAAAAACBQAAAAVwb3dlcgAAAAAAAAAAAAkAAAIAAAABAgAAACV5b3UgYXJlIG5vdCBhIHBhcnRpY2lwYW50IG9mIHRoaXMgZGFvBQAAAANuaWwBAAAADnByb3Bvc2FsRXhpc3RzAAAAAQAAAAR0eElkBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAQAAABNwcm9wb3NhbEhlaWdodFN0b3JlAAAAAQUAAAAEdHhJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAVzdGFydAUAAAAHJG1hdGNoMAYHAQAAABBwcm9wb3NhbE9uVm90aW5nAAAAAQAAAAR0eElkBAAAAAtub25FeGlzdEVycgIAAAAWcHJvcG9zYWwgZG9lc24ndCBleGlzdAMJAQAAAAEhAAAAAQkBAAAADnByb3Bvc2FsRXhpc3RzAAAAAQUAAAAEdHhJZAkAAAIAAAABBQAAAAtub25FeGlzdEVycgQAAAALdm90aW5nU3RhcnQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAYcHJvcG9zYWxWb3RpbmdTdGFydFN0b3JlAAAAAQUAAAAEdHhJZAUAAAALbm9uRXhpc3RFcnIEAAAA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IGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQAAAA5hZHZpc2VQcm9wb3NhbAAAAAEAAAAEdHhJZAQAAAAFY2hpbGQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCIAAAABCQEAAAAScHJvcG9zYWxDaGlsZFN0b3JlAAAAAQUAAAAEdHhJZAIAAAAPY2hpbGQgbm90IGZvdW5kBAAAAA5wcm9wb3NhbEhlaWdodAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAABNwcm9wb3NhbEhlaWdodFN0b3JlAAAAAQUAAAAEdHhJZAIAAAALbm8gcHJvcG9zYWwEAAAAC3ZvdGluZ1N0YXJ0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAGHByb3Bvc2FsVm90aW5nU3RhcnRTdG9yZQAAAAEFAAAABHR4SWQCAAAAC25vIHByb3Bvc2FsBAAAAAl2b3RpbmdFbmQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAWcHJvcG9zYWxWb3RpbmdFbmRTdG9yZQAAAAEFAAAABHR4SWQCAAAAC25vIHByb3Bvc2FsBAAAAAh2b3Rlc1llcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAVcHJvcG9zYWxUb3RhbFllc1N0b3JlAAAAAQUAAAAEdHhJZAAAAAAAAAAAAAQAAAAHdm90ZXNObwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAUcHJvcG9zYWxUb3RhbE5vU3RvcmUAAAABBQAAAAR0eElkAAAAAAAAAAAABAAAAA50b3RhbFBvd2VyU25hcAkBAAAAEHRvdGFsUG93ZXJTdGFrZWQAAAABBQAAAAVjaGlsZAMJAAAAAAAAAgUAAAAOdG90YWxQb3dlclNuYXAFAAAADnRvdGFsUG93ZXJTbmFwBAAAAAp0b3RhbFZvdGVzCQAAZAAAAAIFAAAACHZvdGVzWWVzBQAAAAd2b3Rlc05vBAAAAAloYXNRdW9ydW0DCQAAZgAAAAIFAAAACnRvdGFsVm90ZXMAAAAAAAAAAAAJAABnAAAAAgkAAGkAAAACCQAAaAAAAAIFAAAACnRvdGFsVm90ZXMFAAAABEJBU0UFAAAADnRvdGFsUG93ZXJTbmFwCQEAAAALcXVvcnVtUmF0aW8AAAABBQAAAAVjaGlsZAcEAAAACWhhc1Bhc3NlZAMJAABmAAAAAgUAAAAKdG90YWxWb3RlcwAAAAAAAAAAAAkAAGcAAAACCQAAaQAAAAIJAABoAAAAAgUAAAAIdm90ZXNZZXMFAAAABEJBU0UFAAAACnRvdGFsVm90ZXMJAQAAAAtwYXNzZWRSYXRpbwAAAAEFAAAABWNoaWxkBwQAAAASaW5CbG9ja2NoYWluSGVpZ2h0CQEAAAALdmFsdWVPckVsc2UAAAACCQAD6QAAAAEJAAJZAAAAAQUAAAAEdHhJZAAAAAAAAAAAAAQAAAAGc3RhdHVzAwkAAGYAAAACBQAAAAt2b3RpbmdTdGFydAUAAAAGSEVJR0hUAgAAAApkaXNjdXNzaW9uAwkAAGcAAAACBQAAAAl2b3RpbmdFbmQFAAAABkhFSUdIVAIAAAAGdm90aW5nAwkBAAAAASEAAAABBQAAAAloYXNRdW9ydW0CAAAACG5vUXVvcnVtAwkBAAAAASEAAAABBQAAAAloYXNQYXNzZWQCAAAADHZvdGluZ0ZhaWxlZAMJAABmAAAAAgUAAAASaW5CbG9ja2NoYWluSGVpZ2h0AAAAAAAAAAAAAgAAAAxpbkJsb2NrY2hhaW4CAAAADHdhaXRpbmdGb3JUeAQAAAAPYnJvYWRjYXN0SGVpZ2h0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAFHZvdGluZ1Jlc3VsdENvbnRyYWN0CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABlwcm9wb3NhbF9hbGxvd19icm9hZGNhc3RfBQAAAAVjaGlsZAIAAAABXwUAAAAEdHhJZAD//////////wkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA1wcm9wb3NhbF9pZDogBQAAAAR0eElkAgAAABMsIHByb3Bvc2FsX3N0YXR1czogBQAAAAZzdGF0dXMCAAAADywgcHJvcG9zYWxfYnk6IAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMJAQAAAA9wcm9wb3NhbEJ5U3RvcmUAAAABBQAAAAR0eElkAgAAAAtubyBwcm9wb3NhbAIAAAATLCBwcm9wb3NhbF9oZWlnaHQ6IAkAAaQAAAABBQAAAA5wcm9wb3NhbEhlaWdodAIAAAAVLCBwcm9wb3NhbF90eGhlaWdodDogCQABpAAAAAEFAAAAEmluQmxvY2tjaGFpbkhlaWdodAIAAAAYLCBwcm9wb3NhbF92b3RpbmdzdGFydDogCQABpAAAAAEFAAAAC3ZvdGluZ1N0YXJ0AgAAABYsIHByb3Bvc2FsX3ZvdGluZ2VuZDogCQABpAAAAAEFAAAACXZvdGluZ0VuZAIAAAASLCBwcm9wb3NhbF9wb3dlcjogCQABpAAAAAEFAAAADnRvdGFsUG93ZXJTbmFwAgAAAAwsIHZvdGVfeWVzOiAJAAGkAAAAAQUAAAAIdm90ZXNZZXMCAAAACywgdm90ZV9ubzogCQABpAAAAAEFAAAAB3ZvdGVzTm8CAAAAHCwgcHJvcG9zYWxfYWxsb3dfYnJvYWRjYXN0OiAJAAGlAAAAAQMJAQAAAAIhPQAAAAIFAAAAD2Jyb2FkY2FzdEhlaWdodAD//////////wkAAGcAAAACBQAAAAZIRUlHSFQFAAAAD2Jyb2FkY2FzdEhlaWdodAcCAAAAIywgcHJvcG9zYWxfYWxsb3dfYnJvYWRjYXN0X2hlaWdodDogCQABpAAAAAEFAAAAD2Jyb2FkY2FzdEhlaWdodAIAAAAaLCBwcm9wb3NhbF92b3Rpbmdfc3VjY2VlZDoJAAGlAAAAAQkBAAAAAiE9AAAAAgUAAAAPYnJvYWRjYXN0SGVpZ2h0AP//////////CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEAAAAPYnJvYWRjYXN0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", "chainId": 84, "height": 2786722, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func throwIf (condition,error) = if (condition)
5+ then throw(error)
6+ else true
7+
8+
9+func writeInt (key,value) = if ((0 > value))
10+ then throw(((("writing negative value " + toString(value)) + " for key ") + key))
11+ else IntegerEntry(key, value)
12+
13+
14+func writeConstString (key,value) = if (!(isDefined(getString(this, key))))
15+ then StringEntry(key, value)
16+ else throw(("already initialized: " + key))
17+
18+
19+func writeConstInt (key,value) = if (!(isDefined(getInteger(this, key))))
20+ then IntegerEntry(key, value)
21+ else throw(("already exists: " + key))
22+
23+
24+func changeBy (key,value) = writeInt(key, (valueOrElse(getInteger(this, key), 0) + value))
25+
26+
27+func asInt (value) = match value {
28+ case int: Int =>
29+ int
30+ case _ =>
31+ throw("wrong type, expected: Int")
32+}
33+
34+
35+let configAddressStore = "config"
36+
37+let configAddress = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, configAddressStore), "children.voting: no config")), "invalid config address")
38+
39+let HEIGHT = height
40+
41+func advise () = ("height: " + toString(HEIGHT))
42+
43+
44+let BASE = 1000
45+
46+func opAllowed (op) = {
47+ let a = invoke(configAddress, "opAllowed", [op], nil)
48+ if ((a == a))
49+ then true
50+ else throw("Strict value is not equal to itself.")
51+ }
52+
53+
54+let childrenContract = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(configAddress, "contract_children"), "no contract_children")), "invalid contract_children")
55+
56+let votingResultContract = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(configAddress, "contract_voting_result"), "no contract_voting_result")), "invalid contract_voting_result")
57+
58+func proposalChildStore (id) = ("proposal_child_" + id)
59+
60+
61+func proposalHeightStore (id) = ("proposal_height_" + id)
62+
63+
64+func proposalVotingStartStore (id) = ("proposal_votingstart_" + id)
65+
66+
67+func proposalVotingEndStore (id) = ("proposal_votingend_" + id)
68+
69+
70+func proposalByStore (id) = ("proposal_by_" + id)
71+
72+
73+func proposalTotalYesStore (id) = ("proposal_yes_" + id)
74+
75+
76+func proposalTotalNoStore (id) = ("proposal_no_" + id)
77+
78+
79+func proposalUserYesStore (user,id) = ((("user_proposal_yes_" + user) + "_") + id)
80+
81+
82+func proposalUserNoStore (user,id) = ((("user_proposal_no_" + user) + "_") + id)
83+
84+
85+func userLastProposeHeightStore (user) = ("propose_lastheight_" + user)
86+
87+
88+func userYes (user,id) = valueOrElse(getInteger(this, proposalUserYesStore(user, id)), 0)
89+
90+
91+func userNo (user,id) = valueOrElse(getInteger(this, proposalUserNoStore(user, id)), 0)
92+
93+
94+func userLastProposeHeight (user) = valueOrElse(getInteger(this, userLastProposeHeightStore(user)), -1)
95+
96+
97+let thisAddress = toString(this)
98+
99+func settings (key,child) = valueOrElse(getInteger(((key + "_") + child)), valueOrErrorMessage(getInteger(configAddress, ((thisAddress + "_") + key)), (key + " is not defined")))
100+
101+
102+func userProposeDelay (child) = settings("user_propose_delay", child)
103+
104+
105+func quorumRatio (child) = settings("proposal_quorum_ratio", child)
106+
107+
108+func passedRatio (child) = settings("proposal_passed_ratio", child)
109+
110+
111+func proposalMinRequired (child) = settings("proposal_min_power_required", child)
112+
113+
114+func votingStartOffset (child) = settings("proposal_votingstart_offset", child)
115+
116+
117+func votingEndOffset (child) = settings("proposal_votingend_offset", child)
118+
119+
120+func userPower (child,user) = asInt(invoke(childrenContract, "userPower", [child, user], nil))
121+
122+
123+func isParticipant (power) = if ((power == 0))
124+ then throw("you are not a participant of this dao")
125+ else nil
126+
127+
128+func proposalExists (txId) = match getInteger(this, proposalHeightStore(txId)) {
129+ case start: Int =>
130+ true
131+ case _ =>
132+ false
133+}
134+
135+
136+func proposalOnVoting (txId) = {
137+ let nonExistErr = "proposal doesn't exist"
138+ if (!(proposalExists(txId)))
139+ then throw(nonExistErr)
140+ else {
141+ let votingStart = valueOrErrorMessage(getInteger(this, proposalVotingStartStore(txId)), nonExistErr)
142+ let votingEnd = valueOrErrorMessage(getInteger(this, proposalVotingEndStore(txId)), nonExistErr)
143+ if ((votingStart > HEIGHT))
144+ then throw(((("voting not started yet, discussion is in progress, voting will start at block " + toString(votingStart)) + ", now it's ") + toString(HEIGHT)))
145+ else if ((HEIGHT > votingEnd))
146+ then throw(((("voting ended at block " + toString(votingEnd)) + ", now it's ") + toString(HEIGHT)))
147+ else true
148+ }
149+ }
150+
151+
152+func proposalBeforeVoting (txId) = {
153+ let nonExistErr = "proposal doesn't exist"
154+ if (!(proposalExists(txId)))
155+ then throw(nonExistErr)
156+ else {
157+ let votingStart = valueOrErrorMessage(getInteger(this, proposalVotingStartStore(txId)), nonExistErr)
158+ if ((HEIGHT >= votingStart))
159+ then throw("voting start is already happened")
160+ else true
161+ }
162+ }
163+
164+
165+func totalPowerStaked (child) = asInt(invoke(childrenContract, "totalPower", [child], nil))
166+
167+
168+func canBroadcast (child,txId,yesInc,noInc) = {
169+ let votesYes = (valueOrElse(getInteger(proposalTotalYesStore(txId)), 0) + yesInc)
170+ let votesNo = (valueOrElse(getInteger(proposalTotalNoStore(txId)), 0) + noInc)
171+ let proposalHeight = valueOrErrorMessage(getInteger(proposalHeightStore(txId)), "proposal not registered")
172+ let totalPower = totalPowerStaked(child)
173+ if ((totalPower == totalPower))
174+ then {
175+ let quorum = quorumRatio(child)
176+ let passed = passedRatio(child)
177+ let totalVotes = (votesYes + votesNo)
178+ let hasQuorum = (((totalVotes * BASE) / totalPower) >= quorum)
179+ let hasPassed = (((votesYes * BASE) / totalVotes) >= passed)
180+ if (hasQuorum)
181+ then hasPassed
182+ else false
183+ }
184+ else throw("Strict value is not equal to itself.")
185+ }
186+
187+
188+func adviseProposal (txId) = {
189+ let child = valueOrErrorMessage(getString(proposalChildStore(txId)), "child not found")
190+ let proposalHeight = valueOrErrorMessage(getInteger(this, proposalHeightStore(txId)), "no proposal")
191+ let votingStart = valueOrErrorMessage(getInteger(this, proposalVotingStartStore(txId)), "no proposal")
192+ let votingEnd = valueOrErrorMessage(getInteger(this, proposalVotingEndStore(txId)), "no proposal")
193+ let votesYes = valueOrElse(getInteger(this, proposalTotalYesStore(txId)), 0)
194+ let votesNo = valueOrElse(getInteger(this, proposalTotalNoStore(txId)), 0)
195+ let totalPowerSnap = totalPowerStaked(child)
196+ if ((totalPowerSnap == totalPowerSnap))
197+ then {
198+ let totalVotes = (votesYes + votesNo)
199+ let hasQuorum = if ((totalVotes > 0))
200+ then (((totalVotes * BASE) / totalPowerSnap) >= quorumRatio(child))
201+ else false
202+ let hasPassed = if ((totalVotes > 0))
203+ then (((votesYes * BASE) / totalVotes) >= passedRatio(child))
204+ else false
205+ let inBlockchainHeight = valueOrElse(transactionHeightById(fromBase58String(txId)), 0)
206+ let status = if ((votingStart > HEIGHT))
207+ then "discussion"
208+ else if ((votingEnd >= HEIGHT))
209+ then "voting"
210+ else if (!(hasQuorum))
211+ then "noQuorum"
212+ else if (!(hasPassed))
213+ then "votingFailed"
214+ else if ((inBlockchainHeight > 0))
215+ then "inBlockchain"
216+ else "waitingForTx"
217+ let broadcastHeight = valueOrElse(getInteger(votingResultContract, ((("proposal_allow_broadcast_" + child) + "_") + txId)), -1)
218+ ((((((((((((((((((((((((("proposal_id: " + txId) + ", proposal_status: ") + status) + ", proposal_by: ") + valueOrErrorMessage(getString(this, proposalByStore(txId)), "no proposal")) + ", proposal_height: ") + toString(proposalHeight)) + ", proposal_txheight: ") + toString(inBlockchainHeight)) + ", proposal_votingstart: ") + toString(votingStart)) + ", proposal_votingend: ") + toString(votingEnd)) + ", proposal_power: ") + toString(totalPowerSnap)) + ", vote_yes: ") + toString(votesYes)) + ", vote_no: ") + toString(votesNo)) + ", proposal_allow_broadcast: ") + toString(if ((broadcastHeight != -1))
219+ then (HEIGHT >= broadcastHeight)
220+ else false)) + ", proposal_allow_broadcast_height: ") + toString(broadcastHeight)) + ", proposal_voting_succeed:") + toString((broadcastHeight != -1)))
221+ }
222+ else throw("Strict value is not equal to itself.")
223+ }
224+
225+
226+func broadcastHeight (txId) = (getIntegerValue(proposalVotingEndStore(txId)) + 1)
227+
228+
229+@Callable(i)
230+func propose (child,txId) = {
231+ let checks = opAllowed("child_governance_propose_tx")
232+ if ((checks == checks))
233+ then {
234+ let required = proposalMinRequired(child)
235+ let user = toString(i.caller)
236+ let gv = userPower(child, user)
237+ if ((gv == gv))
238+ then if ((required > gv))
239+ then throw((((("not enough staked power to make proposal." + " Minimum required = ") + toString(required)) + ", actual: = ") + toString(gv)))
240+ else {
241+ let delay = userProposeDelay(child)
242+ let last = userLastProposeHeight(user)
243+ if (if ((last > -1))
244+ then ((last + delay) > HEIGHT)
245+ else false)
246+ then throw(((("can't propose too often, last proroposal height: " + toString(last)) + ", blocks to wait: ") + toString(((last + delay) - HEIGHT))))
247+ else [writeConstString(proposalChildStore(txId), child), writeConstInt(proposalHeightStore(txId), HEIGHT), writeConstInt(proposalVotingStartStore(txId), (HEIGHT + votingStartOffset(child))), writeConstInt(proposalVotingEndStore(txId), (HEIGHT + votingEndOffset(child))), writeConstString(proposalByStore(txId), user), writeInt(userLastProposeHeightStore(user), HEIGHT)]
248+ }
249+ else throw("Strict value is not equal to itself.")
250+ }
251+ else throw("Strict value is not equal to itself.")
252+ }
253+
254+
255+
256+@Callable(i)
257+func voteYes (txId) = {
258+ let checks = if (opAllowed("child_governance_vote_tx"))
259+ then proposalOnVoting(txId)
260+ else false
261+ if ((checks == checks))
262+ then {
263+ let user = toString(i.caller)
264+ if ((userNo(user, txId) > 0))
265+ then throw("already voted against, please retract your vote first")
266+ else {
267+ let yes = userYes(user, txId)
268+ if ((yes > 0))
269+ then throw("already voted")
270+ else {
271+ let child = valueOrErrorMessage(getString(proposalChildStore(txId)), "child not found")
272+ let power = userPower(child, user)
273+ if ((power == power))
274+ then {
275+ let p = isParticipant(power)
276+ if ((p == p))
277+ then {
278+ let result = canBroadcast(child, txId, power, 0)
279+ let setResult = invoke(votingResultContract, "setResult", [child, txId, result, broadcastHeight(txId)], nil)
280+ if ((setResult == setResult))
281+ then [changeBy(proposalUserYesStore(user, txId), power), changeBy(proposalTotalYesStore(txId), power)]
282+ else throw("Strict value is not equal to itself.")
283+ }
284+ else throw("Strict value is not equal to itself.")
285+ }
286+ else throw("Strict value is not equal to itself.")
287+ }
288+ }
289+ }
290+ else throw("Strict value is not equal to itself.")
291+ }
292+
293+
294+
295+@Callable(i)
296+func voteNo (txId) = {
297+ let checks = if (opAllowed("child_governance_vote_tx"))
298+ then proposalOnVoting(txId)
299+ else false
300+ if ((checks == checks))
301+ then {
302+ let user = toString(i.caller)
303+ if ((userYes(user, txId) > 0))
304+ then throw("already voted for, please retract your vote first")
305+ else {
306+ let no = userNo(user, txId)
307+ if ((no > 0))
308+ then throw("already voted")
309+ else {
310+ let child = valueOrErrorMessage(getString(proposalChildStore(txId)), "child not found")
311+ let power = userPower(child, user)
312+ if ((power == power))
313+ then {
314+ let p = isParticipant(power)
315+ if ((p == p))
316+ then {
317+ let result = canBroadcast(child, txId, 0, power)
318+ let setResult = invoke(votingResultContract, "setResult", [child, txId, result, broadcastHeight(txId)], nil)
319+ if ((setResult == setResult))
320+ then [changeBy(proposalUserNoStore(user, txId), power), changeBy(proposalTotalNoStore(txId), power)]
321+ else throw("Strict value is not equal to itself.")
322+ }
323+ else throw("Strict value is not equal to itself.")
324+ }
325+ else throw("Strict value is not equal to itself.")
326+ }
327+ }
328+ }
329+ else throw("Strict value is not equal to itself.")
330+ }
331+
332+
333+
334+@Callable(i)
335+func retract (txId) = {
336+ let checks = if (opAllowed("child_governance_retract_vote"))
337+ then proposalOnVoting(txId)
338+ else false
339+ if ((checks == checks))
340+ then {
341+ let user = toString(i.caller)
342+ let child = valueOrErrorMessage(getString(proposalChildStore(txId)), "child not found")
343+ let yes = -(userYes(user, txId))
344+ let no = -(userNo(user, txId))
345+ let result = canBroadcast(child, txId, yes, no)
346+ let setResult = invoke(votingResultContract, "setResult", [child, txId, result, broadcastHeight(txId)], nil)
347+ if ((setResult == setResult))
348+ then [changeBy(proposalTotalYesStore(txId), yes), changeBy(proposalTotalNoStore(txId), no), DeleteEntry(proposalUserYesStore(user, txId)), DeleteEntry(proposalUserNoStore(user, txId))]
349+ else throw("Strict value is not equal to itself.")
350+ }
351+ else throw("Strict value is not equal to itself.")
352+ }
353+
354+
355+
356+@Callable(i)
357+func retractProposal (txId) = {
358+ let checks = if (opAllowed("child_governance_retract_proposal_tx"))
359+ then proposalBeforeVoting(txId)
360+ else false
361+ if ((checks == checks))
362+ then {
363+ let by = valueOrErrorMessage(getString(this, proposalByStore(txId)), "proposal doesn't exist")
364+ let user = toString(i.caller)
365+ if ((by != user))
366+ then throw("only owner can retract proposal")
367+ else [DeleteEntry(proposalChildStore(txId)), DeleteEntry(proposalHeightStore(txId)), DeleteEntry(proposalVotingStartStore(txId)), DeleteEntry(proposalVotingEndStore(txId)), DeleteEntry(proposalByStore(txId)), DeleteEntry(proposalTotalYesStore(txId)), DeleteEntry(proposalTotalNoStore(txId)), DeleteEntry(proposalUserYesStore(user, txId)), DeleteEntry(proposalUserNoStore(user, txId)), DeleteEntry(userLastProposeHeightStore(user))]
368+ }
369+ else throw("Strict value is not equal to itself.")
370+ }
371+
372+
373+
374+@Callable(i)
375+func init (config) = [writeConstString(configAddressStore, config)]
376+
377+

github/deemru/w8io/873ac7e 
29.89 ms