File: test.sol.ref

package info (click to toggle)
kf6-syntax-highlighting 6.13.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 47,568 kB
  • sloc: xml: 197,750; cpp: 12,850; python: 3,023; sh: 955; perl: 546; ruby: 488; pascal: 393; javascript: 161; php: 150; jsp: 132; lisp: 131; haskell: 124; ada: 119; ansic: 107; makefile: 96; f90: 94; ml: 85; cobol: 81; yacc: 71; csh: 62; erlang: 54; sql: 51; java: 47; objc: 37; awk: 31; asm: 30; tcl: 29; fortran: 18; cs: 10
file content (153 lines) | stat: -rw-r--r-- 21,377 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<Comment>// Solidity Sample File</Comment><br/>
<Comment>// https://solidity.readthedocs.io/en/latest/solidity-by-example.html#voting</Comment><br/>
<Normal Text></Normal Text><br/>
<Keyword>pragma</Keyword><Normal Text> </Normal Text><Built-in>solidity</Built-in><Normal Text> >=0.4.22 <0.7.0;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Comment>/// </Comment><Custom Tags>@title</Custom Tags><Comment> Voting with delegation.</Comment><br/>
<Control Structures>contract</Control Structures><Normal Text> Ballot </Normal Text><Symbol>{</Symbol><br/>
<Normal Text>    </Normal Text><Comment>// This declares a new complex type which will</Comment><br/>
<Normal Text>    </Normal Text><Comment>// be used for variables later.</Comment><br/>
<Normal Text>    </Normal Text><Comment>// It will represent a single voter.</Comment><br/>
<Normal Text>    </Normal Text><Keyword>struct</Keyword><Normal Text> Voter </Normal Text><Symbol>{</Symbol><br/>
<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/>
<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/>
<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/>
<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/>
<Normal Text>    </Normal Text><Symbol>}</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    </Normal Text><Comment>// This is a type for a single proposal.</Comment><br/>
<Normal Text>    </Normal Text><Keyword>struct</Keyword><Normal Text> Proposal </Normal Text><Symbol>{</Symbol><br/>
<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/>
<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/>
<Normal Text>    </Normal Text><Symbol>}</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    </Normal Text><Data Type>address</Data Type><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> chairperson</Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    </Normal Text><Comment>// This declares a state variable that</Comment><br/>
<Normal Text>    </Normal Text><Comment>// stores a `Voter` struct for each possible address.</Comment><br/>
<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/>
<Normal Text></Normal Text><br/>
<Normal Text>    </Normal Text><Comment>// A dynamically-sized array of `Proposal` structs.</Comment><br/>
<Normal Text>    Proposal</Normal Text><Symbol>[]</Symbol><Normal Text> </Normal Text><Keyword>public</Keyword><Normal Text> proposals</Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    </Normal Text><Comment>/// Create a new ballot to choose one of `proposalNames`.</Comment><br/>
<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/>
<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/>
<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/>
<Normal Text></Normal Text><br/>
<Normal Text>        </Normal Text><Comment>// For each of the provided proposal names,</Comment><br/>
<Normal Text>        </Normal Text><Comment>// create a new proposal object and add it</Comment><br/>
<Normal Text>        </Normal Text><Comment>// to the end of the array.</Comment><br/>
<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/>
<Normal Text>            </Normal Text><Comment>// `Proposal({...})` creates a temporary</Comment><br/>
<Normal Text>            </Normal Text><Comment>// Proposal object and `proposals.push(...)`</Comment><br/>
<Normal Text>            </Normal Text><Comment>// appends it to the end of `proposals`.</Comment><br/>
<Normal Text>            proposals</Normal Text><Symbol>.</Symbol><Normal Text>push</Normal Text><Symbol>(</Symbol><Normal Text>Proposal</Normal Text><Symbol>({</Symbol><br/>
<Normal Text>                name</Normal Text><Symbol>:</Symbol><Normal Text> proposalNames</Normal Text><Symbol>[</Symbol><Normal Text>i</Normal Text><Symbol>],</Symbol><br/>
<Normal Text>                voteCount</Normal Text><Symbol>:</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><br/>
<Normal Text>            </Normal Text><Symbol>}));</Symbol><br/>
<Normal Text>        </Normal Text><Symbol>}</Symbol><br/>
<Normal Text>    </Normal Text><Symbol>}</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    </Normal Text><Comment>// Give `voter` the right to vote on this ballot.</Comment><br/>
<Normal Text>    </Normal Text><Comment>// May only be called by `chairperson`.</Comment><br/>
<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/>
<Normal Text>        </Normal Text><Comment>// If the first argument of `require` evaluates</Comment><br/>
<Normal Text>        </Normal Text><Comment>// to `false`, execution terminates and all</Comment><br/>
<Normal Text>        </Normal Text><Comment>// changes to the state and to Ether balances</Comment><br/>
<Normal Text>        </Normal Text><Comment>// are reverted.</Comment><br/>
<Normal Text>        </Normal Text><Comment>// This used to consume all gas in old EVM versions, but</Comment><br/>
<Normal Text>        </Normal Text><Comment>// not anymore.</Comment><br/>
<Normal Text>        </Normal Text><Comment>// It is often a good idea to use `require` to check if</Comment><br/>
<Normal Text>        </Normal Text><Comment>// functions are called correctly.</Comment><br/>
<Normal Text>        </Normal Text><Comment>// As a second argument, you can also provide an</Comment><br/>
<Normal Text>        </Normal Text><Comment>// explanation about what went wrong.</Comment><br/>
<Normal Text>        </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><br/>
<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/>
<Normal Text>            </Normal Text><String>"Only chairperson can give right to vote."</String><br/>
<Normal Text>        </Normal Text><Symbol>);</Symbol><br/>
<Normal Text>        </Normal Text><Built-in>require</Built-in><Symbol>(</Symbol><br/>
<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/>
<Normal Text>            </Normal Text><String>"The voter already voted."</String><br/>
<Normal Text>        </Normal Text><Symbol>);</Symbol><br/>
<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/>
<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/>
<Normal Text>    </Normal Text><Symbol>}</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    </Normal Text><Comment>/// Delegate your vote to the voter `to`.</Comment><br/>
<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/>
<Normal Text>        </Normal Text><Comment>// assigns reference</Comment><br/>
<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/>
<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/>
<Normal Text></Normal Text><br/>
<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/>
<Normal Text></Normal Text><br/>
<Normal Text>        </Normal Text><Comment>// Forward the delegation as long as</Comment><br/>
<Normal Text>        </Normal Text><Comment>// `to` also delegated.</Comment><br/>
<Normal Text>        </Normal Text><Comment>// In general, such loops are very dangerous,</Comment><br/>
<Normal Text>        </Normal Text><Comment>// because if they run too long, they might</Comment><br/>
<Normal Text>        </Normal Text><Comment>// need more gas than is available in a block.</Comment><br/>
<Normal Text>        </Normal Text><Comment>// In this case, the delegation will not be executed,</Comment><br/>
<Normal Text>        </Normal Text><Comment>// but in other situations, such loops might</Comment><br/>
<Normal Text>        </Normal Text><Comment>// cause a contract to get "stuck" completely.</Comment><br/>
<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/>
<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/>
<Normal Text></Normal Text><br/>
<Normal Text>            </Normal Text><Comment>// We found a loop in the delegation, not allowed.</Comment><br/>
<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/>
<Normal Text>        </Normal Text><Symbol>}</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>        </Normal Text><Comment>// Since `sender` is a reference, this</Comment><br/>
<Normal Text>        </Normal Text><Comment>// modifies `voters[msg.sender].voted`</Comment><br/>
<Normal Text>        sender</Normal Text><Symbol>.</Symbol><Normal Text>voted </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Keyword>true</Keyword><Symbol>;</Symbol><br/>
<Normal Text>        sender</Normal Text><Symbol>.</Symbol><Normal Text>delegate </Normal Text><Symbol>=</Symbol><Normal Text> to</Normal Text><Symbol>;</Symbol><br/>
<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/>
<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/>
<Normal Text>            </Normal Text><Comment>// If the delegate already voted,</Comment><br/>
<Normal Text>            </Normal Text><Comment>// directly add to the number of votes</Comment><br/>
<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/>
<Normal Text>        </Normal Text><Symbol>}</Symbol><Normal Text> </Normal Text><Control Structures>else</Control Structures><Normal Text> </Normal Text><Symbol>{</Symbol><br/>
<Normal Text>            </Normal Text><Comment>// If the delegate did not vote yet,</Comment><br/>
<Normal Text>            </Normal Text><Comment>// add to her weight.</Comment><br/>
<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/>
<Normal Text>        </Normal Text><Symbol>}</Symbol><br/>
<Normal Text>    </Normal Text><Symbol>}</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    </Normal Text><Comment>/// Give your vote (including votes delegated to you)</Comment><br/>
<Normal Text>    </Normal Text><Comment>/// to proposal `proposals[proposal].name`.</Comment><br/>
<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/>
<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/>
<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/>
<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/>
<Normal Text>        sender</Normal Text><Symbol>.</Symbol><Normal Text>voted </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Keyword>true</Keyword><Symbol>;</Symbol><br/>
<Normal Text>        sender</Normal Text><Symbol>.</Symbol><Normal Text>vote </Normal Text><Symbol>=</Symbol><Normal Text> proposal</Normal Text><Symbol>;</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>        </Normal Text><Comment>// If `proposal` is out of the range of the array,</Comment><br/>
<Normal Text>        </Normal Text><Comment>// this will throw automatically and revert all</Comment><br/>
<Normal Text>        </Normal Text><Comment>// changes.</Comment><br/>
<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/>
<Normal Text>    </Normal Text><Symbol>}</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    </Normal Text><Comment>/// </Comment><Custom Tags>@dev</Custom Tags><Comment> Computes the winning proposal taking all</Comment><br/>
<Normal Text>    </Normal Text><Comment>/// previous votes into account.</Comment><br/>
<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/>
<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/>
<Normal Text>    </Normal Text><Symbol>{</Symbol><br/>
<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/>
<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/>
<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/>
<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/>
<Normal Text>                winningProposal_ </Normal Text><Symbol>=</Symbol><Normal Text> p</Normal Text><Symbol>;</Symbol><br/>
<Normal Text>            </Normal Text><Symbol>}</Symbol><br/>
<Normal Text>        </Normal Text><Symbol>}</Symbol><br/>
<Normal Text>    </Normal Text><Symbol>}</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    </Normal Text><Comment>// Calls winningProposal() function to get the index</Comment><br/>
<Normal Text>    </Normal Text><Comment>// of the winner contained in the proposals array and then</Comment><br/>
<Normal Text>    </Normal Text><Comment>// returns the name of the winner</Comment><br/>
<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/>
<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/>
<Normal Text>    </Normal Text><Symbol>{</Symbol><br/>
<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/>
<Normal Text>    </Normal Text><Symbol>}</Symbol><br/>
<Symbol>}</Symbol><br/>