package ic_nns_governance.pb.v1

Mouse Melon logoGet desktop application:
View/edit binary Protocol Buffers messages

message AbridgedNeuron

governance.proto:406

Subset of Neuron that has no collections or big fields that might not exist in most neurons, and the goal is to keep the size of the struct consistent and can be easily stored in a StableBTreeMap. For the meaning of each field, see the Neuron struct.

message AddOrRemoveNodeProvider

governance.proto:675

Adds and/or removes NodeProviders from the list of current node providers.

Used in: Proposal

message ApproveGenesisKYC

governance.proto:669

For all Neurons controlled by the given principals, set their KYC status to `kyc_verified=true`.

Used in: Proposal

message AuditEvent

governance.proto:2547

Audit events in order to leave an audit trail for certain operations.

message AuditEvent.ResetAging

governance.proto:2558

Used in: AuditEvent

message AuditEvent.RestoreAging

governance.proto:2578

Used in: AuditEvent

message Ballot

governance.proto:1222

Used in: ProposalData, ProposalInfo

message BallotInfo

governance.proto:182

How did a neuron vote in the recent past? This data is used by other neurons to determine what neurons to follow.

Used in: Neuron, NeuronInfo

message ClaimOrRefreshNeuronFromAccount

governance.proto:2368

The arguments to the method `claim_or_refresh_neuron_from_account`. DEPRECATED: Use ManageNeuron::ClaimOrRefresh.

message ClaimOrRefreshNeuronFromAccountResponse

governance.proto:2379

Response to claim_or_refresh_neuron_from_account. DEPRECATED: Use ManageNeuron::ClaimOrRefresh.

message CreateServiceNervousSystem

governance.proto:1869

Mainly, calls the deploy_new_sns Candid method on the SNS-WASMs canister. Therefore, most of the fields here have equivalents in SnsInitPayload. Please, consult the comments therein.

Metadata --------

Used in: Proposal

message CreateServiceNervousSystem.GovernanceParameters

governance.proto:1970

Proposal Parameters -------------------

Used in: CreateServiceNervousSystem

message CreateServiceNervousSystem.GovernanceParameters.VotingRewardParameters

governance.proto:1993

Used in: GovernanceParameters

message CreateServiceNervousSystem.InitialTokenDistribution

governance.proto:1888

Used in: CreateServiceNervousSystem

message CreateServiceNervousSystem.InitialTokenDistribution.DeveloperDistribution

governance.proto:1889

Used in: InitialTokenDistribution

message CreateServiceNervousSystem.InitialTokenDistribution.DeveloperDistribution.NeuronDistribution

governance.proto:1890

Used in: DeveloperDistribution

message CreateServiceNervousSystem.InitialTokenDistribution.SwapDistribution

governance.proto:1909

Used in: InitialTokenDistribution

message CreateServiceNervousSystem.InitialTokenDistribution.TreasuryDistribution

governance.proto:1903

Used in: InitialTokenDistribution

message CreateServiceNervousSystem.LedgerParameters

governance.proto:1961

Used in: CreateServiceNervousSystem

message CreateServiceNervousSystem.SwapParameters

governance.proto:1921

Used in: CreateServiceNervousSystem

message CreateServiceNervousSystem.SwapParameters.NeuronBasketConstructionParameters

governance.proto:1933

Used in: SwapParameters

message DerivedProposalInformation

governance.proto:1530

This message has a couple of unusual features. 1. There is (currently) only one field. We expect that more fields will be (and possibly other clients) to be able to handle this information in a generic way, i.e. without having to change their code. 2. Fields that might be added later will probably be mutually exclusive with existing fields. Normally, this would be handled by putting all such fields into a oneof. However, Candid has a bug where variant is not handled correctly. Therefore, we refrain from using oneof until we believe that the fix is very imminent.

Used in: ProposalData, ProposalInfo

message Empty

governance.proto:846

Empty message to use in oneof fields that represent empty enums.

Used in: ManageNeuron.ClaimOrRefresh

(message has no fields)

message ExecuteNnsFunction

governance.proto:652

Payload of a proposal that calls a function on another NNS canister. The canister and function to call is derived from the `nns_function`.

Used in: Proposal

message GetNeuronsFundAuditInfoRequest

governance.proto:1413

message GetNeuronsFundAuditInfoResponse

governance.proto:1418

message GetNeuronsFundAuditInfoResponse.Ok

governance.proto:1420

Request was completed successfully.

Used in: GetNeuronsFundAuditInfoResponse

message Governance

governance.proto:2008

This represents the whole NNS governance system. It contains all information about the NNS governance system that must be kept across upgrades of the NNS governance system.

message Governance.FollowersMap

governance.proto:2239

A map of followees to their followers.

Used in: Governance

message Governance.FollowersMap.Followers

governance.proto:2240

Used in: FollowersMap

message Governance.GovernanceCachedMetrics

governance.proto:2126

Stores metrics that are too costly to compute each time metrics are requested. For bucketed metrics, keys are bucket IDs, i.e., number of full half-year dissolve delay intervals of neurons counted towards this bucket.

Used in: Governance

message Governance.MakingSnsProposal

governance.proto:2186

Records that making an OpenSnsTokenSwap (OSTS) or CreateServiceNervousSystem (CSNS) proposal is in progress. We only want one of these to be happening at the same time, because otherwise, it is error prone to enforce that open OSTS or CSNS proposals are unique. In particular, the result of checking that the proposal currently being made would be unique is liable to becoming invalid during an .await. This is a temporary measure, because OSTS is part of the SNS flow that will be replaced by 1-proposal very soon.

Used in: Governance

message Governance.Migration

governance.proto:2195

Progress of a migration that (potentially) is performed over the course of more than one heartbeat call.

Used in: Migrations

enum Governance.Migration.MigrationStatus

governance.proto:2196

Used in: Migration

message Governance.Migrations

governance.proto:2227

The status of all on-going (and recently completed) migrations (that take place over the course of multiple heartbeat calls). Each Migration field corresponds to one (ongoing or recently completed) migration. After a migration is finished, it should be OK to reserve the tag and lose the data.

Used in: Governance

message Governance.NeuronInFlightCommand

governance.proto:2031

The possible commands that require interaction with the ledger.

Used in: Governance

message Governance.NeuronInFlightCommand.SyncCommand

governance.proto:2046

A general place holder for sync commands. The neuron lock is never left holding a sync command (as it either succeeds to acquire the lock and releases it in the same call, or never acquires it in the first place), but it still must be acquired to prevent interleaving with another async command. Thus there's no value in actually storing the command itself, and this placeholder can generally be used in all sync cases.

Used in: NeuronInFlightCommand

(message has no fields)

message GovernanceError

governance.proto:1158

Used in: ClaimOrRefreshNeuronFromAccountResponse, GetNeuronsFundAuditInfoResponse, ManageNeuronResponse, ProposalData, ProposalInfo, SettleNeuronsFundParticipationResponse

enum GovernanceError.ErrorType

governance.proto:1159

Used in: GovernanceError

message IdealMatchedParticipationFunction

governance.proto:1479

This function is called "ideal" because it serves as the guideline that the Neurons' Fund will try to follow, but may deviate from in order to satisfy SNS-specific participation constraints while allocating its overall participation amount among its neurons' maturity. In contrast, The "effective" matched participation function `crate::neurons_fund::MatchedParticipationFunction` is computed *based* on this one.

Used in: NeuronsFundParticipation

message KnownNeuron

governance.proto:1841

Used in: ListKnownNeuronsResponse, Proposal

message KnownNeuronData

governance.proto:1847

Known neurons have extra information (a name and optionally a description) that can be used to identify them.

Used in: KnownNeuron, Neuron, NeuronInfo

message ListKnownNeuronsResponse

governance.proto:2354

A response to "ListKnownNeurons"

message ListNeurons

governance.proto:2329

A request to list neurons. The "requested list", i.e., the list of neuron IDs to retrieve information about, is the union of the list of neurons listed in `neuron_ids` and, if `caller_neurons` is true, the list of neuron IDs of neurons for which the caller is the controller or one of the hot keys.

message ListNeuronsResponse

governance.proto:2342

A response to a `ListNeurons` request. The "requested list" is described in `ListNeurons`.

message ListNodeProvidersResponse

governance.proto:2360

Response to list_node_providers

message ListProposalInfo

governance.proto:2284

Proposals with restricted voting are not included unless the caller is allowed to vote on them. The actual ballots of the proposal are restricted to ballots cast by the caller.

message ListProposalInfoResponse

governance.proto:2320

message ManageNeuron

governance.proto:855

All operations that modify the state of an existing neuron are represented by instances of `ManageNeuron`. All commands are available to the `controller` of the neuron. In addition, commands related to voting, i.g., [manage_neuron::Follow] and [manage_neuron::RegisterVote], are also available to the registered hot keys of the neuron.

Used in: Proposal

message ManageNeuron.AddHotKey

governance.proto:881

Add a new hot key that can be used to manage the neuron. This provides an alternative to using the controller principal’s cold key to manage the neuron, which might be onerous and difficult to keep secure, especially if it is used regularly. A hot key might be a WebAuthn key that is maintained inside a user device, such as a smartphone.

Used in: Configure

message ManageNeuron.ChangeAutoStakeMaturity

governance.proto:904

Changes auto-stake maturity for this Neuron. While on, auto-stake maturity will cause all the maturity generated by voting rewards to this neuron to be automatically staked and contribute to the voting power of the neuron.

Used in: Configure

message ManageNeuron.ClaimOrRefresh

governance.proto:1039

Claim a new neuron or refresh the stake of an existing neuron.

Used in: Governance.NeuronInFlightCommand, ManageNeuron

message ManageNeuron.ClaimOrRefresh.MemoAndController

governance.proto:1040

Used in: ClaimOrRefresh

message ManageNeuron.Configure

governance.proto:910

Commands that only configure a given neuron, but do not interact with the outside world. They all require the caller to be the controller of the neuron.

Used in: Governance.NeuronInFlightCommand, ManageNeuron

message ManageNeuron.Disburse

governance.proto:925

Disburse this neuron's stake: transfer the staked ICP to the specified account.

Used in: Governance.NeuronInFlightCommand, ManageNeuron

message ManageNeuron.Disburse.Amount

governance.proto:927

Used in: Disburse

message ManageNeuron.DisburseToNeuron

governance.proto:990

Disburse a portion of this neuron's stake into another neuron. This allows to split a neuron but with a new dissolve delay and owned by someone else.

Used in: Governance.NeuronInFlightCommand, ManageNeuron

message ManageNeuron.Follow

governance.proto:1024

Add a rule that enables the neuron to vote automatically on proposals that belong to a specific topic, by specifying a group of followee neurons whose majority vote is followed. The configuration of such follow rules can be used to a) distribute control over voting power amongst multiple entities, b) have a neuron vote automatically when its owner lacks time to evaluate newly submitted proposals, c) have a neuron vote automatically when its own lacks the expertise to evaluate newly submitted proposals, and d) for other purposes. A follow rule specifies a set of followees. Once a majority of the followees votes to adopt or reject a proposal belonging to the specified topic, the neuron votes the same way. If it becomes impossible for a majority of the followees to adopt (for example, because they are split 50-50 between adopt and reject), then the neuron votes to reject. If a rule is specified where the proposal topic is UNSPECIFIED, then it becomes a catch-all follow rule, which will be used to vote automatically on proposals belonging to topics for which no specific rule has been specified. If the list 'followees' is empty, this removes following for a specific topic.

Used in: ManageNeuron

message ManageNeuron.IncreaseDissolveDelay

governance.proto:869

The dissolve delay of a neuron can be increased up to a maximum of 8 years.

Used in: Configure

message ManageNeuron.JoinCommunityFund

governance.proto:897

Join the Internet Computer's community fund with this neuron's present and future maturity.

Used in: Configure

(message has no fields)

message ManageNeuron.LeaveCommunityFund

governance.proto:899

Leave the Internet Computer's community fund.

Used in: Configure

(message has no fields)

message ManageNeuron.Merge

governance.proto:947

Merge another neuron into this neuron.

Used in: Governance.NeuronInFlightCommand, ManageNeuron

message ManageNeuron.MergeMaturity

governance.proto:972

Merge the maturity of a neuron into the current stake. The caller can choose a percentage of the current maturity to merge into the existing stake. The resulting amount to merge must be greater than or equal to the transaction fee.

Used in: Governance.NeuronInFlightCommand, ManageNeuron

message ManageNeuron.RegisterVote

governance.proto:1032

Have the neuron vote to either adopt or reject a proposal with a specified id.

Used in: ManageNeuron

message ManageNeuron.RemoveHotKey

governance.proto:886

Remove a hot key that has been previously assigned to the neuron.

Used in: Configure

message ManageNeuron.SetDissolveTimestamp

governance.proto:892

An (idempotent) alternative to IncreaseDissolveDelay where the dissolve delay is passed as an absolute timestamp in seconds since the unix epoch.

Used in: Configure

message ManageNeuron.Spawn

governance.proto:957

When the maturity of a neuron has risen above a threshold, it can be instructed to spawn a new neuron. This creates a new neuron that locks a new balance of ICP on the ledger. The new neuron can remain controlled by the same principal as its parent, or be assigned to a new principal.

Used in: ManageNeuron

message ManageNeuron.Split

governance.proto:941

Split this neuron into two neurons. The child neuron retains the parent neuron's properties.

Used in: Governance.NeuronInFlightCommand, ManageNeuron

message ManageNeuron.StakeMaturity

governance.proto:982

Stake the maturity of a neuron. The caller can choose a percentage of of the current maturity to stake. If 'percentage_to_stake' is not provided, all of the neuron's current maturity will be staked.

Used in: ManageNeuron

message ManageNeuron.StartDissolving

governance.proto:873

Used in: Configure

(message has no fields)

message ManageNeuron.StopDissolving

governance.proto:874

Used in: Configure

(message has no fields)

message ManageNeuronResponse

governance.proto:1082

The response of the ManageNeuron command There is a dedicated response type for each `ManageNeuron.command` field

message ManageNeuronResponse.ClaimOrRefreshResponse

governance.proto:1137

Used in: ManageNeuronResponse

message ManageNeuronResponse.ConfigureResponse

governance.proto:1083

Used in: ManageNeuronResponse

(message has no fields)

message ManageNeuronResponse.DisburseResponse

governance.proto:1085

Used in: ManageNeuronResponse

message ManageNeuronResponse.DisburseToNeuronResponse

governance.proto:1132

Used in: ManageNeuronResponse

message ManageNeuronResponse.FollowResponse

governance.proto:1105

Used in: ManageNeuronResponse

(message has no fields)

message ManageNeuronResponse.MakeProposalResponse

governance.proto:1107

Used in: ManageNeuronResponse

message ManageNeuronResponse.MergeMaturityResponse

governance.proto:1095

Used in: ManageNeuronResponse

message ManageNeuronResponse.MergeResponse

governance.proto:1121

A response for merging or simulating merge neurons

Used in: ManageNeuronResponse

message ManageNeuronResponse.RegisterVoteResponse

governance.proto:1113

Used in: ManageNeuronResponse

(message has no fields)

message ManageNeuronResponse.SpawnResponse

governance.proto:1090

Used in: ManageNeuronResponse

message ManageNeuronResponse.SplitResponse

governance.proto:1115

Used in: ManageNeuronResponse

message ManageNeuronResponse.StakeMaturityResponse

governance.proto:1100

Used in: ManageNeuronResponse

message MostRecentMonthlyNodeProviderRewards

governance.proto:2389

The most recent monthly Node Provider rewards

Used in: Governance

message Motion

governance.proto:662

If adopted, a motion should guide the future strategy of the Internet Computer ecosystem.

Used in: Proposal

message NetworkEconomics

governance.proto:1682

Network economics contains the parameters for several operations related to the economy of the network. When submitting a NetworkEconomics proposal default values (0) are considered unchanged, so a valid proposal only needs to set the parameters that it wishes to change. In other words, it's not possible to set any of the values of NetworkEconomics to 0. NOTE: If adding a value to this proto, make sure there is a corresponding `if` in Governance::perform_action().

Used in: Governance, Proposal

message Neuron

governance.proto:243

This structure represents a neuron "at rest" in governance system of the Internet Computer IC.

Used in: Governance, ListNeuronsResponse, ManageNeuronResponse.MergeResponse

message Neuron.Followees

governance.proto:346

Protobuf representing a list of followees of a neuron for a specific topic.

Used in: Governance, Neuron, SetDefaultFollowees

message NeuronInfo

governance.proto:188

The result of querying for the state of a single neuron.

Used in: ListNeuronsResponse, ManageNeuronResponse.MergeResponse

message NeuronStakeTransfer

governance.proto:224

A transfer performed from some account to stake a new neuron.

Used in: Governance, Neuron

enum NeuronState

governance.proto:138

Every neuron is in one of three states. Note that `Disbursed` is not a state of a neuron, as the neuron is consumed through the act of disbursement (using the method [Governance::disburse]). See [neuron::DissolveState] for detail on how the different states are represented.

Used in: NeuronInfo

enum NeuronType

governance.proto:431

Types of a Neuron.

Used in: AbridgedNeuron, Neuron, NeuronInfo

message NeuronsFundAuditInfo

governance.proto:1402

This is a view of the NeuronsFundData returned by API queries and is NOT used for storage. Currently, the structure is identical to NeuronsFundData, but this may change over time. Some of the fields, e.g., actual IDs of neurons, are anonymized.

Used in: GetNeuronsFundAuditInfoResponse.Ok

message NeuronsFundData

governance.proto:1378

This structure contains data for settling the Neurons' Fund participation in an SNS token swap.

Used in: ProposalData

message NeuronsFundEconomics

governance.proto:1762

When the Neurons' Fund decides to participates in an SNS swap, the amount of participation is determined according to the rules of Matched Funding. The amount of ICP tokens contributed by the Neurons' Fund depends on four factors: (1) Direct participation amount at the time of the swap's successful finalization. (2) Amount of maturity held by all eligible neurons that were members of the Neurons' Fund at the time of the CreateServiceNervousSystem proposal execution. (3) Global Neurons' Fund participation thresholds, held in this structure (defined in XDR). (4) ICP/XDR conversion rate at the time of the CreateServiceNervousSystem proposal execution.

Used in: NetworkEconomics

message NeuronsFundMatchedFundingCurveCoefficients

governance.proto:1737

The thresholds specify the shape of the ideal matching function used by the Neurons' Fund to determine how much to contribute for a given direct participation amount. Note that the actual swap participation is in ICP, whereas these thresholds are specifid in XDR; the conversion rate is determined at the time of execution of the CreateServiceNervousSystem proposal.

Used in: NeuronsFundEconomics

message NeuronsFundParticipation

governance.proto:1432

Information for deciding how the Neurons' Fund should participate in an SNS Swap.

Used in: NeuronsFundAuditInfo, NeuronsFundData

message NeuronsFundSnapshot

governance.proto:1490

The snapshot of the Neurons' Fund allocation of its maximum swap participation amount among its neurons. This snapshot is computed at the execution time of the NNS proposal leading to the swap opening; it is then used at the end of a swap to compute the refund amounts per Neuron' Fund neuron.

Used in: NeuronsFundAuditInfo, NeuronsFundData, NeuronsFundParticipation

message NeuronsFundSnapshot.NeuronsFundNeuronPortion

governance.proto:1492

Represents one NNS neuron from the Neurons' Fund participating in this swap.

Used in: NeuronsFundSnapshot

enum NnsFunction

governance.proto:458

List of NNS functions that can be called by proposals.

Used in: ExecuteNnsFunction

message NodeProvider

governance.proto:21

The entity that owns the nodes that run the network. Note that this is different from a node operator, the entity that operates the nodes. In terms of responsibilities, the node operator is responsible for adding/removing and generally making sure that the nodes are working, while the NodeProvider is the entity that is compensated. Note: The NodeOperatorRecord is defined in: rs/protobuf/def/registry/node_operator/v1/node_operator.proto.

Used in: AddOrRemoveNodeProvider, Governance, ListNodeProvidersResponse, RewardNodeProvider

message OpenSnsTokenSwap

governance.proto:1853

Proposal action to call the "open" method of an SNS token swap canister.

Used in: Proposal

message Proposal

governance.proto:761

A proposal is the immutable input of a proposal submission. This contains all the information from the original proposal submission. Making a proposal implicitly votes yes.

Used in: Governance.MakingSnsProposal, ManageNeuron, ProposalData, ProposalInfo

message ProposalData

governance.proto:1289

A ProposalData contains everything related to an open proposal: the proposal itself (immutable), as well as mutable data such as ballots.

Used in: Governance

message ProposalInfo

governance.proto:1621

This is a view of the ProposalData returned by API queries and is NOT used for storage. The ballots are restricted to those of the caller's neurons and additionally it has the computed fields, topic, status, and reward_status.

Used in: ListProposalInfoResponse

enum ProposalRewardStatus

governance.proto:1252

The proposal status, with respect to reward distribution. See also ProposalStatus.

Used in: ListProposalInfo, ProposalInfo

enum ProposalStatus

governance.proto:1229

The proposal status, with respect to decision making and execution. See also ProposalRewardStatus.

Used in: ListProposalInfo, ProposalInfo

message RestoreAgingSummary

governance.proto:2600

The summary of the restore aging event.

Used in: Governance

enum RestoreAgingSummary.NeuronGroupType

governance.proto:2606

Used in: RestoreAgingNeuronGroup

message RestoreAgingSummary.RestoreAgingNeuronGroup

governance.proto:2623

Used in: RestoreAgingSummary

message RewardEvent

governance.proto:1781

A reward event is an event at which neuron maturity is increased

Used in: Governance

message RewardNodeProvider

governance.proto:685

This proposal payload is used to reward a node provider by minting ICPs directly to the node provider's ledger account, or into a new neuron created on behalf of the node provider.

Used in: MostRecentMonthlyNodeProviderRewards, Proposal, RewardNodeProviders

message RewardNodeProvider.RewardToAccount

governance.proto:714

Used in: RewardNodeProvider

message RewardNodeProvider.RewardToNeuron

governance.proto:710

This message specifies how to create a new neuron on behalf of the node provider. - The controller of the new neuron is the node provider's principal. - The account is chosen at random. - The stake of the new neuron is `amount_e8s`. - `dissolve_delay_seconds` is as specified in the proto. - `kyc_verified` is set to true, as node providers are (implicitly) KYC'ed. - `not_for_profit` is set to false. - All other values are set as for other neurons: timestamp is now, following is set up per default, maturity is 0, neuron fee is 0.

Used in: RewardNodeProvider

message RewardNodeProviders

governance.proto:732

Used in: Proposal

message SetDefaultFollowees

governance.proto:743

Changes the default followees to match the one provided. This completely replaces the default followees so entries for all Topics (except ManageNeuron) must be provided on each proposal.

Used in: Proposal

message SetSnsTokenSwapOpenTimeWindow

governance.proto:748

Obsolete. Superseded by OpenSnsTokenSwap.

Used in: Proposal

message SettleCommunityFundParticipation

governance.proto:2397

TODO(NNS1-1589): Until the Jira ticket gets solved, changes here need to be manually propagated to (sns) swap.proto. This message is obsolete; please use SettleNeuronsFundParticipation instead.

message SettleCommunityFundParticipation.Aborted

governance.proto:2427

When this happens, maturity needs to be restored to CF neurons. The amounts to be refunded can be found in the ProposalData's cf_participants field.

Used in: SettleCommunityFundParticipation

(message has no fields)

message SettleCommunityFundParticipation.Committed

governance.proto:2414

When this happens, ICP needs to be minted, and sent to the SNS governance canister's main account on the ICP Ledger. As with Aborted, the amount of ICP that needs to be minted can be deduced from the ProposalData's cf_participants field.

Used in: SettleCommunityFundParticipation

message SettleNeuronsFundParticipationRequest

governance.proto:2464

Request to settle the Neurons' Fund participation in this SNS Swap. When a swap ends, the Swap canister notifies the Neurons' Fund of the swap's ultimate result, which can be either `Committed` or `Aborted`. Note that currently, the Neurons' Fund is managed by the NNS Governance canister. * If the result is `Committed`: - Neurons' Fund computes the "effective" participation amount for each of its neurons (as per the Matched Funding rules). This computation is based on the total direct participation amount, which is thus a field of `Committed`. - Neurons' Fund converts the "effective" amount of maturity into ICP by: - Requesting the ICP Ledger to mint an appropriate amount of ICP tokens and sending them to the SNS treasury. - Refunding whatever maturity is left over (the maximum possible maturity is reserved by the Neurons' Fund before the swap begins). - Neurons' Fund returns the Neurons' Fund participants back to the Swap canister (see SettleNeuronsFundParticipationResponse). - The Swap canister then creates SNS neurons for the Neurons' Fund participants. * If the result is Aborted, the Neurons' Fund is refunded for all maturity reserved for this SNS. This design assumes trust between the Neurons' Fund and the SNS Swap canisters. In the one hand, the Swap trusts that the Neurons' Fund sends the correct amount of ICP to the SNS treasury, and that the Neurons' Fund allocates its participants following the Matched Funding rules. On the other hand, the Neurons' Fund trusts that the Swap will indeed create appropriate SNS neurons for the Neurons' Fund participants. The justification for this trust assumption is as follows. The Neurons' Fund can be trusted as it is controlled by the NNS. The SNS Swap can be trusted as it is (1) deployed by SNS-W, which is also part of the NNS and (2) upgraded via an NNS proposal (unlike all other SNS canisters). This request may be submitted only by the Swap canister of an SNS instance created by a CreateServiceNervousSystem proposal. TODO(NNS1-1589): Until the Jira ticket gets solved, changes here need to be manually propagated to (sns) swap.proto.

message SettleNeuronsFundParticipationRequest.Aborted

governance.proto:2506

When this happens, all priorly reserved maturity for this SNS instance needs to be restored to the Neurons' Fund neurons.

Used in: SettleNeuronsFundParticipationRequest

(message has no fields)

message SettleNeuronsFundParticipationRequest.Committed

governance.proto:2494

When this happens, the NNS Governance needs to do several things: (1) Compute the effective amount of ICP per neuron of the Neurons' Fund as a function of `total_direct_participation_icp_e8s`. The overall Neurons' Fund participation should equal `total_neurons_fund_contribution_icp_e8s`. (2) Mint (via the ICP Ledger) and sent to the SNS governance the amount of `total_neurons_fund_contribution_icp_e8s`. (3) Respond to this request with `SettleNeuronsFundParticipationResponse`, providing the set of `NeuronsFundParticipant`s with the effective amount of ICP per neuron, as computed in step (1). (4) Refund each neuron of the Neurons' Fund with (reserved - effective) amount of ICP. Effective amounts depend on `total_direct_participation_icp_e8s` and the participation limits of a particular SNS instance, namely, each participation must be between `min_participant_icp_e8s` and `max_participant_icp_e8s`. - If a neuron of the Neurons' Fund has less than `min_participant_icp_e8s` worth of maturity, then it is ineligible to participate. - If a neuron of the Neurons' Fund has more than `max_participant_icp_e8s` worth of maturity, then its participation amount is limited to `max_participant_icp_e8s`. Reserved amounts are computed as the minimal upper bound on the effective amounts, i.e., when the value `total_direct_participation_icp_e8s` reaches its theoretical maximum.

Used in: SettleNeuronsFundParticipationRequest

message SettleNeuronsFundParticipationResponse

governance.proto:2521

Handling the Neurons' Fund and transferring some of its maturity to an SNS treasury is thus the responsibility of the NNS Governance. When a swap succeeds, a Swap canister should send a `settle_neurons_fund_participation` request to the NNS Governance, specifying its `result` field as `committed`. The NNS Governance then computes the ultimate distribution of maturity in the Neurons' Fund. However, this distribution also needs to be made available to the SNS Swap that will use this information to create SNS neurons of an appropriate size for each Neurons' Fund (as well as direct) participant. That is why in the `committed` case, the NNS Governance should populate the `neurons_fund_participants` field, while in the `aborted` case it should be empty. TODO(NNS1-1589): Until the Jira ticket gets solved, changes here need to be manually propagated to (sns) swap.proto.

message SettleNeuronsFundParticipationResponse.NeuronsFundNeuron

governance.proto:2523

Represents one NNS neuron from the Neurons' Fund participating in this swap.

Used in: Ok

message SettleNeuronsFundParticipationResponse.Ok

governance.proto:2536

Request was completed successfully.

Used in: SettleNeuronsFundParticipationResponse

message SwapBackgroundInformation

governance.proto:1542

Additional information about the SNS that's being "swapped". This data is fetched from other canisters. Currently, the swap canister itself, and the root canister are queried, but additional canisters could be queried later. In particular, the ID of the root canister is discovered via the swap canister. (See Governance::fetch_swap_background_information for how this is compiled.)

Obsolete. Superseded by newer fields.

Used in: DerivedProposalInformation

message SwapBackgroundInformation.CanisterStatusResultV2

governance.proto:1584

Used in: CanisterSummary

enum SwapBackgroundInformation.CanisterStatusType

governance.proto:1605

A canister can be stopped by calling stop_canister. The effect of stop_canister can be undone by calling start_canister. Stopping is an intermediate state where new method calls are rejected, but in-flight method calls are allowed to be fully serviced.

Used in: CanisterStatusResultV2

message SwapBackgroundInformation.CanisterSummary

governance.proto:1579

Transcribed from sns/root.

Used in: SwapBackgroundInformation

message SwapParticipationLimits

governance.proto:1512

Absolute constraints of this swap needed that the Neurons' Fund need to be aware of. The fields correspond to those in Swap's `Init` message.

Used in: NeuronsFundParticipation

message Tally

governance.proto:1271

A tally of votes.

Used in: ProposalData, ProposalInfo

enum Topic

governance.proto:41

Proposal types are organized into topics. Neurons can automatically vote based on following other neurons, and these follow relationships are defined per topic.

Used in: ListProposalInfo, ManageNeuron.Follow, ProposalInfo

message UpdateNodeProvider

governance.proto:33

Used to update node provider records There is no need to specify a node provider Principal ID here, as Governance uses the Principal ID of the caller as the Node Provider Principal ID.

enum Vote

governance.proto:446

The types of votes the Neuron can issue.

Used in: Ballot, BallotInfo, ManageNeuron.RegisterVote

message WaitForQuietState

governance.proto:1614

Stores data relevant to the "wait for quiet" implementation.

Used in: ProposalData

message XdrConversionRate

governance.proto:2271

Used in: Governance