Changeset View
Changeset View
Standalone View
Standalone View
autotests/reference/test.sol.ref
- This file was added.
1 | <Comment>// Solidity Sample File</Comment><br/> | ||||
---|---|---|---|---|---|
2 | <Comment>// https://solidity.readthedocs.io/en/latest/solidity-by-example.html#voting</Comment><br/> | ||||
3 | <Normal Text></Normal Text><br/> | ||||
4 | <Keyword>pragma</Keyword><Normal Text> </Normal Text><Built-in>solidity</Built-in><Normal Text> >=0.4.22 <0.7.0;</Normal Text><br/> | ||||
5 | <Normal Text></Normal Text><br/> | ||||
6 | <Comment>/// </Comment><Custom Tags>@title</Custom Tags><Comment> Voting with delegation.</Comment><br/> | ||||
7 | <Control Structures>contract</Control Structures><Normal Text> Ballot </Normal Text><Symbol>{</Symbol><br/> | ||||
8 | <Normal Text> </Normal Text><Comment>// This declares a new complex type which will</Comment><br/> | ||||
9 | <Normal Text> </Normal Text><Comment>// be used for variables later.</Comment><br/> | ||||
10 | <Normal Text> </Normal Text><Comment>// It will represent a single voter.</Comment><br/> | ||||
11 | <Normal Text> </Normal Text><Keyword>struct</Keyword><Normal Text> Voter </Normal Text><Symbol>{</Symbol><br/> | ||||
12 | <Normal Text> </Normal Text><Data Type>uint</Data Type><Normal Text> weight</Normal Text><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// weight is accumulated by delegation</Comment><br/> | ||||
13 | <Normal Text> </Normal Text><Data Type>bool</Data Type><Normal Text> voted</Normal Text><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// if true, that person already voted</Comment><br/> | ||||
14 | <Normal Text> </Normal Text><Data Type>address</Data Type><Normal Text> delegate</Normal Text><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// person delegated to</Comment><br/> | ||||
15 | <Normal Text> </Normal Text><Data Type>uint</Data Type><Normal Text> vote</Normal Text><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// index of the voted proposal</Comment><br/> | ||||
16 | <Normal Text> </Normal Text><Symbol>}</Symbol><br/> | ||||
17 | <Normal Text></Normal Text><br/> | ||||
18 | <Normal Text> </Normal Text><Comment>// This is a type for a single proposal.</Comment><br/> | ||||
19 | <Normal Text> </Normal Text><Keyword>struct</Keyword><Normal Text> Proposal </Normal Text><Symbol>{</Symbol><br/> | ||||
20 | <Normal Text> </Normal Text><Data Type>bytes32</Data Type><Normal Text> name</Normal Text><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// short name (up to 32 bytes)</Comment><br/> | ||||
21 | <Normal Text> </Normal Text><Data Type>uint</Data Type><Normal Text> voteCount</Normal Text><Symbol>;</Symbol><Normal Text> </Normal Text><Comment>// number of accumulated votes</Comment><br/> | ||||
22 | <Normal Text> </Normal Text><Symbol>}</Symbol><br/> | ||||
23 | <Normal Text></Normal Text><br/> | ||||
24 | <Normal Text> </Normal Text><Data Type>address</Data Type><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> chairperson</Normal Text><Symbol>;</Symbol><br/> | ||||
25 | <Normal Text></Normal Text><br/> | ||||
26 | <Normal Text> </Normal Text><Comment>// This declares a state variable that</Comment><br/> | ||||
27 | <Normal Text> </Normal Text><Comment>// stores a `Voter` struct for each possible address.</Comment><br/> | ||||
28 | <Normal Text> </Normal Text><Data Type>mapping</Data Type><Symbol>(</Symbol><Data Type>address</Data Type><Normal Text> </Normal Text><Symbol>=></Symbol><Normal Text> Voter</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> voters</Normal Text><Symbol>;</Symbol><br/> | ||||
29 | <Normal Text></Normal Text><br/> | ||||
30 | <Normal Text> </Normal Text><Comment>// A dynamically-sized array of `Proposal` structs.</Comment><br/> | ||||
31 | <Normal Text> Proposal</Normal Text><Symbol>[]</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> proposals</Normal Text><Symbol>;</Symbol><br/> | ||||
32 | <Normal Text></Normal Text><br/> | ||||
33 | <Normal Text> </Normal Text><Comment>/// Create a new ballot to choose one of `proposalNames`.</Comment><br/> | ||||
34 | <Normal Text> </Normal Text><Control Structures>constructor</Control Structures><Symbol>(</Symbol><Data Type>bytes32</Data Type><Symbol>[]</Symbol><Normal Text> </Normal Text><Keyword>memory</Keyword><Normal Text> proposalNames</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Symbol>{</Symbol><br/> | ||||
35 | <Normal Text> chairperson </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender</Normal Text><Symbol>;</Symbol><br/> | ||||
36 | <Normal Text> voters</Normal Text><Symbol>[</Symbol><Normal Text>chairperson</Normal Text><Symbol>].</Symbol><Normal Text>weight </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>1</Decimal><Symbol>;</Symbol><br/> | ||||
37 | <Normal Text></Normal Text><br/> | ||||
38 | <Normal Text> </Normal Text><Comment>// For each of the provided proposal names,</Comment><br/> | ||||
39 | <Normal Text> </Normal Text><Comment>// create a new proposal object and add it</Comment><br/> | ||||
40 | <Normal Text> </Normal Text><Comment>// to the end of the array.</Comment><br/> | ||||
41 | <Normal Text> </Normal Text><Control Structures>for</Control Structures><Normal Text> </Normal Text><Symbol>(</Symbol><Data Type>uint</Data Type><Normal Text> i </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><Symbol>;</Symbol><Normal Text> i </Normal Text><Symbol><</Symbol><Normal Text> proposalNames</Normal Text><Symbol>.</Symbol><Normal Text>length</Normal Text><Symbol>;</Symbol><Normal Text> i</Normal Text><Built-in>++</Built-in><Symbol>)</Symbol><Normal Text> </Normal Text><Symbol>{</Symbol><br/> | ||||
42 | <Normal Text> </Normal Text><Comment>// `Proposal({...})` creates a temporary</Comment><br/> | ||||
43 | <Normal Text> </Normal Text><Comment>// Proposal object and `proposals.push(...)`</Comment><br/> | ||||
44 | <Normal Text> </Normal Text><Comment>// appends it to the end of `proposals`.</Comment><br/> | ||||
45 | <Normal Text> proposals</Normal Text><Symbol>.</Symbol><Normal Text>push</Normal Text><Symbol>(</Symbol><Normal Text>Proposal</Normal Text><Symbol>({</Symbol><br/> | ||||
46 | <Normal Text> name</Normal Text><Symbol>:</Symbol><Normal Text> proposalNames</Normal Text><Symbol>[</Symbol><Normal Text>i</Normal Text><Symbol>],</Symbol><br/> | ||||
47 | <Normal Text> voteCount</Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><br/> | ||||
48 | <Normal Text> </Normal Text><Symbol>}));</Symbol><br/> | ||||
49 | <Normal Text> </Normal Text><Symbol>}</Symbol><br/> | ||||
50 | <Normal Text> </Normal Text><Symbol>}</Symbol><br/> | ||||
51 | <Normal Text></Normal Text><br/> | ||||
52 | <Normal Text> </Normal Text><Comment>// Give `voter` the right to vote on this ballot.</Comment><br/> | ||||
53 | <Normal Text> </Normal Text><Comment>// May only be called by `chairperson`.</Comment><br/> | ||||
54 | <Normal Text> </Normal Text><Control Structures>function</Control Structures><Normal Text> giveRightToVote</Normal Text><Symbol>(</Symbol><Data Type>address</Data Type><Normal Text> voter</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Symbol>{</Symbol><br/> | ||||
55 | <Normal Text> </Normal Text><Comment>// If the first argument of `require` evaluates</Comment><br/> | ||||
56 | <Normal Text> </Normal Text><Comment>// to `false`, execution terminates and all</Comment><br/> | ||||
57 | <Normal Text> </Normal Text><Comment>// changes to the state and to Ether balances</Comment><br/> | ||||
58 | <Normal Text> </Normal Text><Comment>// are reverted.</Comment><br/> | ||||
59 | <Normal Text> </Normal Text><Comment>// This used to consume all gas in old EVM versions, but</Comment><br/> | ||||
60 | <Normal Text> </Normal Text><Comment>// not anymore.</Comment><br/> | ||||
61 | <Normal Text> </Normal Text><Comment>// It is often a good idea to use `require` to check if</Comment><br/> | ||||
62 | <Normal Text> </Normal Text><Comment>// functions are called correctly.</Comment><br/> | ||||
63 | <Normal Text> </Normal Text><Comment>// As a second argument, you can also provide an</Comment><br/> | ||||
64 | <Normal Text> </Normal Text><Comment>// explanation about what went wrong.</Comment><br/> | ||||
65 | <Normal Text> </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><br/> | ||||
66 | <Normal Text> </Normal Text><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender </Normal Text><Symbol>==</Symbol><Normal Text> chairperson</Normal Text><Symbol>,</Symbol><br/> | ||||
67 | <Normal Text> </Normal Text><String>"Only chairperson can give right to vote."</String><br/> | ||||
68 | <Normal Text> </Normal Text><Symbol>);</Symbol><br/> | ||||
69 | <Normal Text> </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><br/> | ||||
70 | <Normal Text> </Normal Text><Symbol>!</Symbol><Normal Text>voters</Normal Text><Symbol>[</Symbol><Normal Text>voter</Normal Text><Symbol>].</Symbol><Normal Text>voted</Normal Text><Symbol>,</Symbol><br/> | ||||
71 | <Normal Text> </Normal Text><String>"The voter already voted."</String><br/> | ||||
72 | <Normal Text> </Normal Text><Symbol>);</Symbol><br/> | ||||
73 | <Normal Text> </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><Normal Text>voters</Normal Text><Symbol>[</Symbol><Normal Text>voter</Normal Text><Symbol>].</Symbol><Normal Text>weight </Normal Text><Symbol>==</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><Symbol>);</Symbol><br/> | ||||
74 | <Normal Text> voters</Normal Text><Symbol>[</Symbol><Normal Text>voter</Normal Text><Symbol>].</Symbol><Normal Text>weight </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>1</Decimal><Symbol>;</Symbol><br/> | ||||
75 | <Normal Text> </Normal Text><Symbol>}</Symbol><br/> | ||||
76 | <Normal Text></Normal Text><br/> | ||||
77 | <Normal Text> </Normal Text><Comment>/// Delegate your vote to the voter `to`.</Comment><br/> | ||||
78 | <Normal Text> </Normal Text><Control Structures>function</Control Structures><Normal Text> delegate</Normal Text><Symbol>(</Symbol><Data Type>address</Data Type><Normal Text> to</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Symbol>{</Symbol><br/> | ||||
79 | <Normal Text> </Normal Text><Comment>// assigns reference</Comment><br/> | ||||
80 | <Normal Text> Voter </Normal Text><Keyword>storage</Keyword><Normal Text> sender </Normal Text><Symbol>=</Symbol><Normal Text> voters</Normal Text><Symbol>[</Symbol><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender</Normal Text><Symbol>];</Symbol><br/> | ||||
81 | <Normal Text> </Normal Text><Built-in>require</Built-in><Symbol>(!</Symbol><Normal Text>sender</Normal Text><Symbol>.</Symbol><Normal Text>voted</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><String>"You already voted."</String><Symbol>);</Symbol><br/> | ||||
82 | <Normal Text></Normal Text><br/> | ||||
83 | <Normal Text> </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><Normal Text>to </Normal Text><Symbol>!=</Symbol><Normal Text> </Normal Text><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><String>"Self-delegation is disallowed."</String><Symbol>);</Symbol><br/> | ||||
84 | <Normal Text></Normal Text><br/> | ||||
85 | <Normal Text> </Normal Text><Comment>// Forward the delegation as long as</Comment><br/> | ||||
86 | <Normal Text> </Normal Text><Comment>// `to` also delegated.</Comment><br/> | ||||
87 | <Normal Text> </Normal Text><Comment>// In general, such loops are very dangerous,</Comment><br/> | ||||
88 | <Normal Text> </Normal Text><Comment>// because if they run too long, they might</Comment><br/> | ||||
89 | <Normal Text> </Normal Text><Comment>// need more gas than is available in a block.</Comment><br/> | ||||
90 | <Normal Text> </Normal Text><Comment>// In this case, the delegation will not be executed,</Comment><br/> | ||||
91 | <Normal Text> </Normal Text><Comment>// but in other situations, such loops might</Comment><br/> | ||||
92 | <Normal Text> </Normal Text><Comment>// cause a contract to get "stuck" completely.</Comment><br/> | ||||
93 | <Normal Text> </Normal Text><Control Structures>while</Control Structures><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>voters</Normal Text><Symbol>[</Symbol><Normal Text>to</Normal Text><Symbol>].</Symbol><Normal Text>delegate </Normal Text><Symbol>!=</Symbol><Normal Text> </Normal Text><Data Type>address</Data Type><Symbol>(</Symbol><Decimal>0</Decimal><Symbol>))</Symbol><Normal Text> </Normal Text><Symbol>{</Symbol><br/> | ||||
94 | <Normal Text> to </Normal Text><Symbol>=</Symbol><Normal Text> voters</Normal Text><Symbol>[</Symbol><Normal Text>to</Normal Text><Symbol>].</Symbol><Normal Text>delegate</Normal Text><Symbol>;</Symbol><br/> | ||||
95 | <Normal Text></Normal Text><br/> | ||||
96 | <Normal Text> </Normal Text><Comment>// We found a loop in the delegation, not allowed.</Comment><br/> | ||||
97 | <Normal Text> </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><Normal Text>to </Normal Text><Symbol>!=</Symbol><Normal Text> </Normal Text><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><String>"Found loop in delegation."</String><Symbol>);</Symbol><br/> | ||||
98 | <Normal Text> </Normal Text><Symbol>}</Symbol><br/> | ||||
99 | <Normal Text></Normal Text><br/> | ||||
100 | <Normal Text> </Normal Text><Comment>// Since `sender` is a reference, this</Comment><br/> | ||||
101 | <Normal Text> </Normal Text><Comment>// modifies `voters[msg.sender].voted`</Comment><br/> | ||||
102 | <Normal Text> sender</Normal Text><Symbol>.</Symbol><Normal Text>voted </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Keyword>true</Keyword><Symbol>;</Symbol><br/> | ||||
103 | <Normal Text> sender</Normal Text><Symbol>.</Symbol><Normal Text>delegate </Normal Text><Symbol>=</Symbol><Normal Text> to</Normal Text><Symbol>;</Symbol><br/> | ||||
104 | <Normal Text> Voter </Normal Text><Keyword>storage</Keyword><Normal Text> delegate_ </Normal Text><Symbol>=</Symbol><Normal Text> voters</Normal Text><Symbol>[</Symbol><Normal Text>to</Normal Text><Symbol>];</Symbol><br/> | ||||
105 | <Normal Text> </Normal Text><Control Structures>if</Control Structures><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>delegate_</Normal Text><Symbol>.</Symbol><Normal Text>voted</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Symbol>{</Symbol><br/> | ||||
106 | <Normal Text> </Normal Text><Comment>// If the delegate already voted,</Comment><br/> | ||||
107 | <Normal Text> </Normal Text><Comment>// directly add to the number of votes</Comment><br/> | ||||
108 | <Normal Text> proposals</Normal Text><Symbol>[</Symbol><Normal Text>delegate_</Normal Text><Symbol>.</Symbol><Normal Text>vote</Normal Text><Symbol>].</Symbol><Normal Text>voteCount </Normal Text><Symbol>+=</Symbol><Normal Text> sender</Normal Text><Symbol>.</Symbol><Normal Text>weight</Normal Text><Symbol>;</Symbol><br/> | ||||
109 | <Normal Text> </Normal Text><Symbol>}</Symbol><Normal Text> </Normal Text><Control Structures>else</Control Structures><Normal Text> </Normal Text><Symbol>{</Symbol><br/> | ||||
110 | <Normal Text> </Normal Text><Comment>// If the delegate did not vote yet,</Comment><br/> | ||||
111 | <Normal Text> </Normal Text><Comment>// add to her weight.</Comment><br/> | ||||
112 | <Normal Text> delegate_</Normal Text><Symbol>.</Symbol><Normal Text>weight </Normal Text><Symbol>+=</Symbol><Normal Text> sender</Normal Text><Symbol>.</Symbol><Normal Text>weight</Normal Text><Symbol>;</Symbol><br/> | ||||
113 | <Normal Text> </Normal Text><Symbol>}</Symbol><br/> | ||||
114 | <Normal Text> </Normal Text><Symbol>}</Symbol><br/> | ||||
115 | <Normal Text></Normal Text><br/> | ||||
116 | <Normal Text> </Normal Text><Comment>/// Give your vote (including votes delegated to you)</Comment><br/> | ||||
117 | <Normal Text> </Normal Text><Comment>/// to proposal `proposals[proposal].name`.</Comment><br/> | ||||
118 | <Normal Text> </Normal Text><Control Structures>function</Control Structures><Normal Text> vote</Normal Text><Symbol>(</Symbol><Data Type>uint</Data Type><Normal Text> proposal</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Symbol>{</Symbol><br/> | ||||
119 | <Normal Text> Voter </Normal Text><Keyword>storage</Keyword><Normal Text> sender </Normal Text><Symbol>=</Symbol><Normal Text> voters</Normal Text><Symbol>[</Symbol><Built-in>msg</Built-in><Symbol>.</Symbol><Normal Text>sender</Normal Text><Symbol>];</Symbol><br/> | ||||
120 | <Normal Text> </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><Normal Text>sender</Normal Text><Symbol>.</Symbol><Normal Text>weight </Normal Text><Symbol>!=</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><Symbol>,</Symbol><Normal Text> </Normal Text><String>"Has no right to vote"</String><Symbol>);</Symbol><br/> | ||||
121 | <Normal Text> </Normal Text><Built-in>require</Built-in><Symbol>(!</Symbol><Normal Text>sender</Normal Text><Symbol>.</Symbol><Normal Text>voted</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><String>"Already voted."</String><Symbol>);</Symbol><br/> | ||||
122 | <Normal Text> sender</Normal Text><Symbol>.</Symbol><Normal Text>voted </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Keyword>true</Keyword><Symbol>;</Symbol><br/> | ||||
123 | <Normal Text> sender</Normal Text><Symbol>.</Symbol><Normal Text>vote </Normal Text><Symbol>=</Symbol><Normal Text> proposal</Normal Text><Symbol>;</Symbol><br/> | ||||
124 | <Normal Text></Normal Text><br/> | ||||
125 | <Normal Text> </Normal Text><Comment>// If `proposal` is out of the range of the array,</Comment><br/> | ||||
126 | <Normal Text> </Normal Text><Comment>// this will throw automatically and revert all</Comment><br/> | ||||
127 | <Normal Text> </Normal Text><Comment>// changes.</Comment><br/> | ||||
128 | <Normal Text> proposals</Normal Text><Symbol>[</Symbol><Normal Text>proposal</Normal Text><Symbol>].</Symbol><Normal Text>voteCount </Normal Text><Symbol>+=</Symbol><Normal Text> sender</Normal Text><Symbol>.</Symbol><Normal Text>weight</Normal Text><Symbol>;</Symbol><br/> | ||||
129 | <Normal Text> </Normal Text><Symbol>}</Symbol><br/> | ||||
130 | <Normal Text></Normal Text><br/> | ||||
131 | <Normal Text> </Normal Text><Comment>/// </Comment><Custom Tags>@dev</Custom Tags><Comment> Computes the winning proposal taking all</Comment><br/> | ||||
132 | <Normal Text> </Normal Text><Comment>/// previous votes into account.</Comment><br/> | ||||
133 | <Normal Text> </Normal Text><Control Structures>function</Control Structures><Normal Text> winningProposal</Normal Text><Symbol>()</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Keyword>view</Keyword><br/> | ||||
134 | <Normal Text> </Normal Text><Keyword>returns</Keyword><Normal Text> </Normal Text><Symbol>(</Symbol><Data Type>uint</Data Type><Normal Text> winningProposal_</Normal Text><Symbol>)</Symbol><br/> | ||||
135 | <Normal Text> </Normal Text><Symbol>{</Symbol><br/> | ||||
136 | <Normal Text> </Normal Text><Data Type>uint</Data Type><Normal Text> winningVoteCount </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><Symbol>;</Symbol><br/> | ||||
137 | <Normal Text> </Normal Text><Control Structures>for</Control Structures><Normal Text> </Normal Text><Symbol>(</Symbol><Data Type>uint</Data Type><Normal Text> p </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><Symbol>;</Symbol><Normal Text> p </Normal Text><Symbol><</Symbol><Normal Text> proposals</Normal Text><Symbol>.</Symbol><Normal Text>length</Normal Text><Symbol>;</Symbol><Normal Text> p</Normal Text><Built-in>++</Built-in><Symbol>)</Symbol><Normal Text> </Normal Text><Symbol>{</Symbol><br/> | ||||
138 | <Normal Text> </Normal Text><Control Structures>if</Control Structures><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>proposals</Normal Text><Symbol>[</Symbol><Normal Text>p</Normal Text><Symbol>].</Symbol><Normal Text>voteCount </Normal Text><Symbol>></Symbol><Normal Text> winningVoteCount</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Symbol>{</Symbol><br/> | ||||
139 | <Normal Text> winningVoteCount </Normal Text><Symbol>=</Symbol><Normal Text> proposals</Normal Text><Symbol>[</Symbol><Normal Text>p</Normal Text><Symbol>].</Symbol><Normal Text>voteCount</Normal Text><Symbol>;</Symbol><br/> | ||||
140 | <Normal Text> winningProposal_ </Normal Text><Symbol>=</Symbol><Normal Text> p</Normal Text><Symbol>;</Symbol><br/> | ||||
141 | <Normal Text> </Normal Text><Symbol>}</Symbol><br/> | ||||
142 | <Normal Text> </Normal Text><Symbol>}</Symbol><br/> | ||||
143 | <Normal Text> </Normal Text><Symbol>}</Symbol><br/> | ||||
144 | <Normal Text></Normal Text><br/> | ||||
145 | <Normal Text> </Normal Text><Comment>// Calls winningProposal() function to get the index</Comment><br/> | ||||
146 | <Normal Text> </Normal Text><Comment>// of the winner contained in the proposals array and then</Comment><br/> | ||||
147 | <Normal Text> </Normal Text><Comment>// returns the name of the winner</Comment><br/> | ||||
148 | <Normal Text> </Normal Text><Control Structures>function</Control Structures><Normal Text> winnerName</Normal Text><Symbol>()</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> </Normal Text><Keyword>view</Keyword><br/> | ||||
149 | <Normal Text> </Normal Text><Keyword>returns</Keyword><Normal Text> </Normal Text><Symbol>(</Symbol><Data Type>bytes32</Data Type><Normal Text> winnerName_</Normal Text><Symbol>)</Symbol><br/> | ||||
150 | <Normal Text> </Normal Text><Symbol>{</Symbol><br/> | ||||
151 | <Normal Text> winnerName_ </Normal Text><Symbol>=</Symbol><Normal Text> proposals</Normal Text><Symbol>[</Symbol><Normal Text>winningProposal</Normal Text><Symbol>()].</Symbol><Normal Text>name</Normal Text><Symbol>;</Symbol><br/> | ||||
152 | <Normal Text> </Normal Text><Symbol>}</Symbol><br/> | ||||
153 | <Symbol>}</Symbol><br/> |