@@ -113,6 +113,12 @@ pub struct NeuronInfo {
113
113
/// after the UNIX epoch).
114
114
#[ prost( uint64, optional, tag = "13" ) ]
115
115
pub voting_power_refreshed_timestamp_seconds : :: core:: option:: Option < u64 > ,
116
+ /// See analogous field in Neuron.
117
+ #[ prost( uint64, optional, tag = "14" ) ]
118
+ pub deciding_voting_power : Option < u64 > ,
119
+ /// See analogous field in Neuron.
120
+ #[ prost( uint64, optional, tag = "15" ) ]
121
+ pub potential_voting_power : Option < u64 > ,
116
122
}
117
123
/// A transfer performed from some account to stake a new neuron.
118
124
#[ derive( candid:: CandidType , candid:: Deserialize , serde:: Serialize , comparable:: Comparable ) ]
@@ -302,6 +308,63 @@ pub struct Neuron {
302
308
/// Cf. \[Neuron::stop_dissolving\] and \[Neuron::start_dissolving\].
303
309
#[ prost( oneof = "neuron::DissolveState" , tags = "9, 10" ) ]
304
310
pub dissolve_state : Option < neuron:: DissolveState > ,
311
+ /// The amount of "sway" this neuron has when voting on proposals.
312
+ ///
313
+ /// When a proposal is created, each eligible neuron gets a "blank" ballot. The
314
+ /// amount of voting power in that ballot is set to the neuron's deciding
315
+ /// voting power at the time of proposal creation. There are two ways that a
316
+ /// proposal can become decided:
317
+ ///
318
+ /// 1. Early: Either more than half of the total voting power in the ballots
319
+ /// votes in favor (then the proposal is approved), or at least half of the
320
+ /// votal voting power in the ballots votes against (then, the proposal is
321
+ /// rejected).
322
+ ///
323
+ /// 2. The proposal's voting deadline is reached. At that point, if there is
324
+ /// more voting power in favor than against, and at least 3% of the total
325
+ /// voting power voted in favor, then the proposal is approved. Otherwise, it
326
+ /// is rejected.
327
+ ///
328
+ /// If a neuron regularly refreshes its voting power, this has the same value
329
+ /// as potential_voting_power. Actions that cause a refresh are as follows:
330
+ ///
331
+ /// 1. voting directly (not via following)
332
+ /// 2. set following
333
+ /// 3. refresh voting power
334
+ ///
335
+ /// (All of these actions are performed via the manage_neuron method.)
336
+ ///
337
+ /// However, if a neuron has not refreshed in a "long" time, this will be less
338
+ /// than potential voting power. See VotingPowerEconomics. As a further result
339
+ /// of less deciding voting power, not only does it have less influence on the
340
+ /// outcome of proposals, the neuron receives less voting rewards (when it
341
+ /// votes indirectly via following).
342
+ ///
343
+ /// For details, see https://dashboard.internetcomputer.org/proposal/132411.
344
+ ///
345
+ /// Per NNS policy, this is opt. Nevertheless, it will never be null.
346
+ #[ prost( uint64, optional, tag = "26" ) ]
347
+ pub deciding_voting_power : Option < u64 > ,
348
+ /// The amount of "sway" this neuron can have if it refreshes its voting power
349
+ /// frequently enough.
350
+ ///
351
+ /// Unlike deciding_voting_power, this does NOT take refreshing into account.
352
+ /// Rather, this only takes three factors into account:
353
+ ///
354
+ /// 1. (Net) staked amount - This is the "base" of a neuron's voting power.
355
+ /// This primarily consists of the neuron's ICP balance.
356
+ ///
357
+ /// 2. Age - Neurons with more age have more voting power (all else being
358
+ /// equal).
359
+ ///
360
+ /// 3. Dissolve delay - Neurons with longer dissolve delay have more voting
361
+ /// power (all else being equal). Neurons with a dissolve delay of less
362
+ /// than six months are not eligible to vote. Therefore, such neurons
363
+ /// are considered to have 0 voting power.
364
+ ///
365
+ /// Per NNS policy, this is opt. Nevertheless, it will never be null.
366
+ #[ prost( uint64, optional, tag = "27" ) ]
367
+ pub potential_voting_power : Option < u64 > ,
305
368
}
306
369
/// Nested message and enum types in `Neuron`.
307
370
pub mod neuron {
0 commit comments