<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.internetcomputer.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bjoern.assmann</id>
	<title>Internet Computer Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.internetcomputer.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bjoern.assmann"/>
	<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/wiki/Special:Contributions/Bjoern.assmann"/>
	<updated>2026-05-01T02:39:54Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-to:_Interact_with_SNS_canisters&amp;diff=8719</id>
		<title>How-to: Interact with SNS canisters</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-to:_Interact_with_SNS_canisters&amp;diff=8719"/>
		<updated>2026-02-17T18:21:43Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: Replaced content with &amp;quot;Content moved [https://learn.internetcomputer.org/hc/en-us/articles/46381576634772-How-to-Inspect-an-SNS-and-Its-Dapp-Canisters here].&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Content moved [https://learn.internetcomputer.org/hc/en-us/articles/46381576634772-How-to-Inspect-an-SNS-and-Its-Dapp-Canisters here].&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_Participate_in_the_SNS_decentralization_swap_via_quill&amp;diff=8718</id>
		<title>How-To: Participate in the SNS decentralization swap via quill</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_Participate_in_the_SNS_decentralization_swap_via_quill&amp;diff=8718"/>
		<updated>2026-02-17T18:18:11Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: Replaced content with &amp;quot;Content moved [https://github.com/dfinity/quill/tree/master/docs/cli-reference/sns here].&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Content moved [https://github.com/dfinity/quill/tree/master/docs/cli-reference/sns here].&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_swap_participation_via_quill&amp;diff=8717</id>
		<title>How-To: SNS swap participation via quill</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_swap_participation_via_quill&amp;diff=8717"/>
		<updated>2026-02-17T18:17:05Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: Replaced content with &amp;quot;__NUMBEREDHEADINGS__  Content moved [https://github.com/dfinity/quill/tree/master/docs/cli-reference/sns here].&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NUMBEREDHEADINGS__&lt;br /&gt;
&lt;br /&gt;
Content moved [https://github.com/dfinity/quill/tree/master/docs/cli-reference/sns here].&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-to:_Analyze_an_SNS_after_launch&amp;diff=8716</id>
		<title>How-to: Analyze an SNS after launch</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-to:_Analyze_an_SNS_after_launch&amp;diff=8716"/>
		<updated>2026-02-17T14:55:07Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: Replaced content with &amp;quot;Deprecated.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Deprecated.&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-to:_Add_a_hotkey_to_neuron&amp;diff=8715</id>
		<title>How-to: Add a hotkey to neuron</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-to:_Add_a_hotkey_to_neuron&amp;diff=8715"/>
		<updated>2026-02-17T14:52:22Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: Replaced content with &amp;quot;Content moved [https://learn.internetcomputer.org/hc/en-us/articles/43823123678100-How-can-I-stake-ICP-with-quill here].&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Content moved [https://learn.internetcomputer.org/hc/en-us/articles/43823123678100-How-can-I-stake-ICP-with-quill here].&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=8714</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=8714"/>
		<updated>2026-02-17T14:43:07Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: Replaced content with &amp;quot;Deprecated.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Deprecated.&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=NNS_Canisters&amp;diff=8713</id>
		<title>NNS Canisters</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=NNS_Canisters&amp;diff=8713"/>
		<updated>2026-02-17T14:40:03Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: Replaced content with &amp;quot;Deprecated.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Deprecated.&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_Join_the_Community_fund_via_quill&amp;diff=8712</id>
		<title>How-To: Join the Community fund via quill</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_Join_the_Community_fund_via_quill&amp;diff=8712"/>
		<updated>2026-02-17T14:32:28Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: Page deprecation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Deprecated.&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=SNS_decentralization_swap_trust&amp;diff=8711</id>
		<title>SNS decentralization swap trust</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=SNS_decentralization_swap_trust&amp;diff=8711"/>
		<updated>2026-02-17T14:29:52Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: Page deprecation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Deprecated.&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Verification_and_trust_in_a_(launched)_SNS&amp;diff=8710</id>
		<title>Verification and trust in a (launched) SNS</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Verification_and_trust_in_a_(launched)_SNS&amp;diff=8710"/>
		<updated>2026-02-17T14:27:58Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: Page deprecation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Deprecated.&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=SNS_Tokenization_Considerations&amp;diff=8709</id>
		<title>SNS Tokenization Considerations</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=SNS_Tokenization_Considerations&amp;diff=8709"/>
		<updated>2026-02-17T14:23:22Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: Page depreciation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Content moved [https://docs.internetcomputer.org/building-apps/governing-apps/tokenomics/preparation here].&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_Updating_neuron_following_via_quill&amp;diff=8708</id>
		<title>How-To: Updating neuron following via quill</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_Updating_neuron_following_via_quill&amp;diff=8708"/>
		<updated>2026-02-17T14:20:27Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Content moved [https://docs.internetcomputer.org/tutorials/developer-liftoff/level-4/4.5-using-quill here]&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_Updating_neuron_following_via_quill&amp;diff=8707</id>
		<title>How-To: Updating neuron following via quill</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_Updating_neuron_following_via_quill&amp;diff=8707"/>
		<updated>2026-02-17T14:18:24Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: page deprecation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Content move [https://docs.internetcomputer.org/tutorials/developer-liftoff/level-4/4.5-using-quill here]&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_Create_an_NNS_motion_proposal&amp;diff=8706</id>
		<title>How-To: Create an NNS motion proposal</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_Create_an_NNS_motion_proposal&amp;diff=8706"/>
		<updated>2026-02-17T14:04:48Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please see [https://docs.internetcomputer.org/building-apps/governing-apps/nns/concepts/proposals/proposal-submit/#proposal-submission How to create NNS proposal on ICP developer docs]&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Neuron_attributes_and_commands&amp;diff=8208</id>
		<title>Neuron attributes and commands</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Neuron_attributes_and_commands&amp;diff=8208"/>
		<updated>2025-01-30T08:27:17Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides more details about the [https://wiki.internetcomputer.org/index.php?title=Governance_of_the_Internet_Computer&amp;amp;veaction=edit&amp;amp;section=6#Neurons neurons] in the Network Nervous System (NNS), focusing on their attributes and the commands by which they can be changed.&lt;br /&gt;
&lt;br /&gt;
== Neuron Attributes ==&lt;br /&gt;
Each neuron in the NNS has the following attributes.&lt;br /&gt;
&lt;br /&gt;
* id: The identifier of the neuron.&lt;br /&gt;
* account: The principal of the ICP ledger account where the locked ICP balance resides. That is, each neuron&#039;s ICP token balance is stored on an account on the ledger canister. In contrast to non-neuron accounts the controller can however not just transfer the funds out of this account.&lt;br /&gt;
&lt;br /&gt;
* controller: The principal that controls the neuron. The principal must be derived from a public key, which acts as a “master key” (the corresponding secret key should be kept secure). The principal may control many neurons.&lt;br /&gt;
&lt;br /&gt;
* hot_keys: Keys that can be used to authorize actions with limited privileges, for example voting with a neuron. The idea is that while the controller key should be kept very secure, the loss or compromise of keys that are used more often (and thus very secure storage might not be feasible) has less security impact.&lt;br /&gt;
* cached_neuron_stake_e8s: The amount of staked ICP tokens, measured in fractions of 10E-8 of an ICP. This does not include the fees or some of the collected rewards (see below) and might not correspond exactly to the amount of ICP tokens of the neuron&#039;s account at all times. For example, to top up a neuron, one first transfers some ICP tokens to the neuron&#039;s account and then refreshes the neuron, which means that in between these actions the neuron&#039;s account actually holds more tokens than indicated by the corresponding cached stake.&lt;br /&gt;
* neuron_fees_e8s: The amount that this neuron owes, measured in fractions of 10E-8 of an ICP. This amount is increased when a neuron makes a proposal of [[Topic ManageNeuron|topic &#039;&#039;ManageNeuron&#039;&#039;]] or when a neuron makes a proposal of any other topic (in the latter case the fee is reimbursed if the proposal is accepted). When a neuron is disbursed, these tokens are burned.&lt;br /&gt;
* created_timestamp_seconds: The time when the neuron was created.&lt;br /&gt;
* aging_since_timestamp_seconds: The time, in seconds from the Unix epoch as measured by the IC, this neuron has last entered the non-dissolving state.&lt;br /&gt;
* dissolve_state: The state specifying whether a neuron is dissolving, i.e., the timer when the staked tokens can be retrieved is decreasing, or non-dissolving, i.e., the time how much into the future the staked tokens can be retrieved is stopped. &lt;br /&gt;
** When a neuron is dissolving, i.e., the dissolve timer is running, the state is when_dissolved_timestamp_seconds and stores the timestamp, in seconds from the Unix epoch, at which the neuron becomes dissolved. &lt;br /&gt;
** When a neuron is non-dissolving, i.e., the dissolve timer is stopped, the state is dissolve_delay_seconds and stores how much time, in seconds, the dissolve timer will be started with.&lt;br /&gt;
* followees: A neuron&#039;s followees stored as a map of topics (represented by an integer) to set of followee neurons.&lt;br /&gt;
* recent_ballots: Information about how this neuron voted in the recent past. It only contains proposals that the neuron voted yes or no on.         &lt;br /&gt;
* kyc_verified: `true` if this neuron has passed KYC, `false` otherwise&lt;br /&gt;
* transfer: The record of the transfer that was made to create this neuron. This is not used anymore and always set to &amp;quot;None&amp;quot;.&lt;br /&gt;
* maturity_e8s_equivalent: A neuron&#039;s maturity in &amp;quot;e8s equivalent&amp;quot;. The maturity keeps track of the rewards that the neurons has collected. While this quantity is on the same scale as ICP tokens, it is not directly convertible to ICPs and conversion requires a minting event (i.e., spawn the maturity).&lt;br /&gt;
* not_for_profit:  Whether this neuron is &amp;quot;Not for profit&amp;quot;, making it dissolvable by voting (see below)&lt;br /&gt;
* joined_community_fund_timestamp_seconds: The time point when this neuron joined the community fund.&lt;br /&gt;
&lt;br /&gt;
== Manage Neuron Commands ==&lt;br /&gt;
In general, any changes to or in the name of a neuron (e.g., changes to the neuron&#039;s attributes or casting a vote in the name of the neuron) can be made in two ways: &lt;br /&gt;
&lt;br /&gt;
# by using the manage_neuron interface of the governance canister or&lt;br /&gt;
# by making a special proposal of [[topic ManageNeuron]], where the basic idea is that a set of neurons can control a &#039;&#039;managed neuron&#039;&#039; by submitting and voting on special proposals. This only works if the managed neuron follows these controlling neurons for the proposal topic ManageNeuron. If this is given, the set of controlling neurons can send commands to the governance canister as if they were issued by the managed neuron&#039;s controller (that is with the same privileges that the managed neuron&#039;s controller has to manipulate the neuron). Thus, if it is stated that some neuron commands can only be done by a neuron&#039;s controller, this also includes the possibility that these commands are done per manageNeuron proposal.&lt;br /&gt;
&lt;br /&gt;
The next section lists all commands that can be performed by manage_neuron.&lt;br /&gt;
&lt;br /&gt;
=== Claiming a Neuron ===&lt;br /&gt;
This can be used to stake ICP utility tokens into a neuron. To do so, first a transfer must be made to the neuron&#039;s associated ledger account. Each transfer on the ledger account can be provided with a &#039;&#039;memo.&#039;&#039; After this transfer, the neuron can be claimed on the governance canister by providing the memo and the controller of the neuron. This allows the governance canister to find the corresponding account on the ledger canister and learn how many tokens should be staked in the corresponding neuron. A neuron is then created. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command)&#039;&#039;&amp;lt;u&amp;gt;:&amp;lt;/u&amp;gt;&#039;&#039;&#039;&#039;&#039; &#039;&#039;&amp;lt;u&amp;gt;Anyone can call this method.&amp;lt;/u&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the neuron&#039;s attributes:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Refreshing a Neuron ===&lt;br /&gt;
Similarly to how a neuron is first created, a neuron can be topped up by making a transfer to the neuron&#039;s Ledger canister account and then calling the Governance canister, which will adjust the neuron&#039;s stake to the new balance on the neuron&#039;s account. For this to work, the caller must either provide the governance canister with the memo and controller (as with claiming a neuron) or with the neuron&#039;s ID or account. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039; Anyone can call this method.&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the neuron&#039;s attributes:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Configuring a Neuron ===&lt;br /&gt;
Once a neuron is claimed, a neuron&#039;s controller might want to configure it. The following are commands that only configure a given neuron, but do not interact with the outside world.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039; All neuron configurations can only be invoked by a neuron&#039;s controller.&lt;br /&gt;
&lt;br /&gt;
* IncreaseDissolveDelay: Increases a neuron&#039;s dissolve delay by the given additional dissolve delay but at most to a given maximum dissolve delay (which is currently set to 8 years). If this method is called on a non-dissolving neuron, it remains non-dissolving. If it is called on dissolving neuron, it remains dissolving.   If this configuration is called on a dissolved neuron, it becomes non-dissolving. Moreover, the neuron&#039;s aging_since_timestamp_seconds is reset to start counting from when it last entered the dissolved state in the case where the &#039;&#039;dissolved&#039;&#039; state was reached through explicit dissolution or to `now` when this is not applicable, e.g., when the neuron is newly created with zero dissolve delay.&lt;br /&gt;
&lt;br /&gt;
* SetDissolveTimestamp: This is just another way of increasing the dissolve delay, by stating the target dissolve timestamp rather than the relative increase in the dissolve delay. It is internally translated to do the same as increasing the dissolve delay.&lt;br /&gt;
* StartDissolving: If this neuron is not dissolving, start dissolving it. If the neuron is dissolving or dissolved, an error is returned. Starting to dissolve a neuron intuitively means that the neuron&#039;s countdown to when the staked tokens can be liquidated is started. In terms of neuron attributes, the neuron&#039;s dissolve state is set to when_dissolved_timestamp_seconds which specifies the time now plus the neuron&#039;s dissolve delay (i.e., the defined countdown&#039;s duration). Moreover, the neuron&#039;s aging_since_timestamp_seconds is set to the maximum possible value, which represents that the neuron has no age as this will be in the future.&lt;br /&gt;
&lt;br /&gt;
* StopDissolving: If this neuron is dissolving, set it to not dissolving. If the neuron is not dissolving, an error is returned. Intuitively, this means that the neuron&#039;s countdown towards when the staked tokens can be liquidated is stopped. In terms of neuron attributes, the neuron&#039;s state is set to dissolve_delay_seconds, which now tracks the remaining time on the countdown. Also, the neuron&#039;s aging_since_timestamp_seconds is set to now. &lt;br /&gt;
&lt;br /&gt;
* AddHotKey: A new hot key is added to the neuron if the following preconditions hold: - key to add is not already present in &#039;hot_keys&#039; - the key to add is well-formed - there are not already too many hot keys for this neuron (currently 10 hot keys are allowed).&lt;br /&gt;
* RemoveHotKey: The specified hot key is removed if it is in the list of hot keys.&lt;br /&gt;
* JoinCommunityFund: If the neuron has not yet joined the community fund, this configuration sets the neuron&#039;s joined_community_fund_timestamp_seconds to the current time. If the neuron is already a member of the community fund, an error is returned.&lt;br /&gt;
&lt;br /&gt;
=== Make Proposal ===&lt;br /&gt;
This command can be used to have a neuron controlled by the issuer of the command to submit a proposal. If successful, the command creates an initial electoral roll that includes a ballot for all neurons that are eligible to vote on the proposal at the time when the proposal is created and where the ballots state the neurons&#039; voting power at the time of the proposal creation. The neuron that makes the proposal is charged the rejection fee upfront which will be reimbursed if the proposal is accepted (except for proposals of topic ManageNeuron) and the voting power of the proposer neuron is already counted towards the yes votes of the proposal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039; The neuron&#039;s controller or a registered hot key.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The proposal is valid.&lt;br /&gt;
* The neuron is eligible to vote on the proposal (i.e., still has a minimum dissolve delay currently set to 6 months).&lt;br /&gt;
* The neuron has more stake than the cost of a rejected proposal, which is currently 1 ICP.&lt;br /&gt;
* There are not too many open proposals.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the neuron&#039;s attributes:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The neuron_fees_e8s are increased by the rejection fee (or, in case of a ManageNeuron proposal the corresponding fee).&lt;br /&gt;
* The recent_ballots are updated with the yes ballot that is cast for the proposer.&lt;br /&gt;
&lt;br /&gt;
=== Register Vote ===&lt;br /&gt;
This is used to directly register a neuron&#039;s vote for a given proposal. Also, it triggers the registration of a vote for all neurons that follow this neuron.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039; The neuron&#039;s controller or a registered hot key.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* A proposal is specified that exists.&lt;br /&gt;
* The neuron is eligible to vote on this proposal, i.e., an empty ballot has been entered to the electoral roll (if this is not the case, then the neuron was not eligible at the time when the proposal was created and thus the neuron is not allowed to vote on it).&lt;br /&gt;
* The neuron has not already voted on this proposal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the neuron&#039;s attributes:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The recent_ballots are updated.&lt;br /&gt;
&lt;br /&gt;
=== Follow ===&lt;br /&gt;
Add or remove followees for this neuron for a specified topic. If the list of followees is empty, remove the followees for this topic. If the list has at least one element, replace the current list of followees for the given topic with the provided list. Note that the list is replaced, not added to.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039; The neuron&#039;s controller.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The list of followees is not too long (the current maximum is 15 followees per topic).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the neuron&#039;s attributes:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The followees for the given topic are updated.&lt;br /&gt;
&lt;br /&gt;
=== Spawn ===&lt;br /&gt;
This command allows to convert the neuron&#039;s collected rewards that are stored as the neuron&#039;s maturity to (staked) ICP utility tokens by minting the corresponding tokens (on the Ledger canister) and &amp;quot;spawning&amp;quot; them into a new neuron. The new &#039;&#039;child neuron&#039;&#039;, containing the spawned staked tokens has a small dissolve delay, which means that the tokens can be liquidated after only a short period of time while the original &#039;&#039;parent neuron&#039;s&#039;&#039; tokens may still be locked for much longer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039; The neuron&#039;s controller.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The parent neuron exists.&lt;br /&gt;
* The parent neuron is not involved in any neuron commands that have ledger interactions (to avoid inconsistencies).&lt;br /&gt;
* The parent neuron has accumulated maturity that would generate more than the minimum stake needed to create a new neuron.&lt;br /&gt;
* A controller for the new child neuron is provided that is valid.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the neuron&#039;s attributes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The maturity is decreased by the maturity at the time when the command started (a new reward event might have set it to non-zero already again).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The new &amp;quot;child&amp;quot; neuron&#039;s attributes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* id: random identifier&lt;br /&gt;
* account: random account (that does not yet exist)&lt;br /&gt;
&lt;br /&gt;
* controller: set to the provided controller&lt;br /&gt;
&lt;br /&gt;
* hot_keys: same as parent neuron&lt;br /&gt;
* cached_neuron_stake_e8s: set to the parent&#039;s maturity at the time when the command started.&lt;br /&gt;
* neuron_fees_e8s: 0&lt;br /&gt;
* created_timestamp_seconds: current time&lt;br /&gt;
* aging_since_timestamp_seconds: current time&lt;br /&gt;
* dissolve_state: (non-dissolving) dissolve_delay_seconds set to neuron_spawn_dissolve_delay_seconds as defined in the governance economics (currently set to 7 days)&lt;br /&gt;
* followees: same as parent neuron&lt;br /&gt;
* recent_ballots: empty&lt;br /&gt;
* kyc_verified: same as parent neuron&lt;br /&gt;
* transfer: not set&lt;br /&gt;
* maturity_e8s_equivalent:0&lt;br /&gt;
* not_for_profit: false&lt;br /&gt;
* joined_community_fund_timestamp_seconds: None&lt;br /&gt;
&lt;br /&gt;
=== Disburse ===&lt;br /&gt;
Once a dissolving neuron&#039;s countdown has reached zero, the neuron is dissolved and can thus be disbursed, which means that (some or only a specified number of) the staked ICP tokens can be transferred to a given account. If no target account is provided, the transfer is made to the caller&#039;s account (i.e., the neuron&#039;s controller&#039;s account).&lt;br /&gt;
&lt;br /&gt;
In more detail, when a neuron is disbursed multiple steps happen:&lt;br /&gt;
&lt;br /&gt;
# The neuron&#039;s accumulated fees are burned.&lt;br /&gt;
# The given staked amount (or the full stake if none is provided) is transferred to the target account.&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039;  The neuron&#039;s controller.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The neuron exists.&lt;br /&gt;
* The neuron&#039;s state is `Dissolved` at the current timestamp, i.e., the dissolve countdown has reached zero.&lt;br /&gt;
* The neuron&#039;s kyc_verified is not false. That is, a neuron that was created with kyc_verified false cannot be disbursed until it went through kyc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the neuron&#039;s attributes:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The specified amount is subtracted from the neuron&#039;s cached_neuron_stake_e8s, as are the original neuron fees.&lt;br /&gt;
* The neuron_fees_e8s is set to zero.&lt;br /&gt;
&lt;br /&gt;
=== Split ===&lt;br /&gt;
This command splits a &#039;&#039;parent neuron&#039;&#039; into two neurons, the original parent neuron and a new child neuron. This command may be useful, if a neuron holder would like for example to set the neuron configurations differently for a portion of the locked tokens. &lt;br /&gt;
&lt;br /&gt;
The parent neuron&#039;s stake is decreased by the amount specified, while the child neuron is created with a stake equal to that amount, minus the Ledger canister transfer fee. The child neuron inherits all the properties of its parent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039;  The neuron&#039;s controller.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The parent neuron exists.&lt;br /&gt;
* The parent neuron is not involved in any neuron commands that have ledger interactions (to avoid inconsistencies).&lt;br /&gt;
* The staked amount minus amount to split is more than the minimum stake (ensuring that the parent neuron has at least the minimum stake).&lt;br /&gt;
* The amount to split minus the transfer fee is more than the minimum stake  (ensuring that the child neuron has at least the minimum stake).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the (parent) neuron&#039;s attributes:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* cached_neuron_stake_e8s: deduced by specified amount that is split.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The the new &amp;quot;child&amp;quot; neuron&#039;s attributes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* id: random identifier&lt;br /&gt;
* account: random account (that does not yet exist)&lt;br /&gt;
&lt;br /&gt;
* controller: same as parent neuron&lt;br /&gt;
&lt;br /&gt;
* hot_keys: same as parent neuron&lt;br /&gt;
* cached_neuron_stake_e8s: set to specified amount that is split from parent minus the transaction fee&lt;br /&gt;
* neuron_fees_e8s: 0&lt;br /&gt;
* created_timestamp_seconds: current time&lt;br /&gt;
* aging_since_timestamp_seconds: same as parent neuron&lt;br /&gt;
* dissolve_state: same as parent neuron&lt;br /&gt;
* followees: same as parent neuron&lt;br /&gt;
* recent_ballots: empty&lt;br /&gt;
* kyc_verified: same as parent neuron&lt;br /&gt;
* transfer: not set&lt;br /&gt;
* maturity_e8s_equivalent: 0&lt;br /&gt;
* not_for_profit: same as parent neuron&lt;br /&gt;
* joined_community_fund_timestamp_seconds: same as parent neuron&lt;br /&gt;
=== Disburse to Neuron ===&lt;br /&gt;
(Intro)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039;  The neuron&#039;s controller.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the neuron&#039;s attributes:&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Neuron_attributes_and_commands&amp;diff=8207</id>
		<title>Neuron attributes and commands</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Neuron_attributes_and_commands&amp;diff=8207"/>
		<updated>2025-01-30T08:25:46Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides more details about the [https://wiki.internetcomputer.org/index.php?title=Governance_of_the_Internet_Computer&amp;amp;veaction=edit&amp;amp;section=6#Neurons neurons] in the Network Nervous System (NNS), focusing on their attributes and the commands by which they can be changed.&lt;br /&gt;
&lt;br /&gt;
== Neuron Attributes ==&lt;br /&gt;
Each neuron in the NNS has the following attributes.&lt;br /&gt;
&lt;br /&gt;
* id: The identifier of the neuron.&lt;br /&gt;
* account: The principal of the ICP ledger account where the locked ICP balance resides. That is, each neuron&#039;s ICP token balance is stored on an account on the ledger canister. In contrast to non-neuron accounts the controller can however not just transfer the funds out of this account.&lt;br /&gt;
&lt;br /&gt;
* controller: The principal that controls the neuron. The principal must be derived from a public key, which acts as a “master key” (the corresponding secret key should be kept secure). The principal may control many neurons.&lt;br /&gt;
&lt;br /&gt;
* hot_keys: Keys that can be used to authorize actions with limited privileges, for example voting with a neuron. The idea is that while the controller key should be kept very secure, the loss or compromise of keys that are used more often (and thus very secure storage might not be feasible) has less security impact.&lt;br /&gt;
* cached_neuron_stake_e8s: The amount of staked ICP tokens, measured in fractions of 10E-8 of an ICP. This does not include the fees or some of the collected rewards (see below) and might not correspond exactly to the amount of ICP tokens of the neuron&#039;s account at all times. For example, to top up a neuron, one first transfers some ICP tokens to the neuron&#039;s account and then refreshes the neuron, which means that in between these actions the neuron&#039;s account actually holds more tokens than indicated by the corresponding cached stake.&lt;br /&gt;
* neuron_fees_e8s: The amount that this neuron owes, measured in fractions of 10E-8 of an ICP. This amount is increased when a neuron makes a proposal of [[Topic ManageNeuron|topic &#039;&#039;ManageNeuron&#039;&#039;]] or when a neuron makes a proposal of any other topic (in the latter case the fee is reimbursed if the proposal is accepted). When a neuron is disbursed, these tokens are burned.&lt;br /&gt;
* created_timestamp_seconds: The time when the neuron was created.&lt;br /&gt;
* aging_since_timestamp_seconds: The time, in seconds from the Unix epoch as measured by the IC, this neuron has last entered the non-dissolving state.&lt;br /&gt;
* dissolve_state: The state specifying whether a neuron is dissolving, i.e., the timer when the staked tokens can be retrieved is decreasing, or non-dissolving, i.e., the time how much into the future the staked tokens can be retrieved is stopped. &lt;br /&gt;
** When a neuron is dissolving, i.e., the dissolve timer is running, the state is when_dissolved_timestamp_seconds and stores the timestamp, in seconds from the Unix epoch, at which the neuron becomes dissolved. &lt;br /&gt;
** When a neuron is non-dissolving, i.e., the dissolve timer is stopped, the state is dissolve_delay_seconds and stores how much time, in seconds, the dissolve timer will be started with.&lt;br /&gt;
* followees: A neuron&#039;s followees stored as a map of topics (represented by an integer) to set of followee neurons.&lt;br /&gt;
* recent_ballots: Information about how this neuron voted in the recent past. It only contains proposals that the neuron voted yes or no on.         &lt;br /&gt;
* kyc_verified: `true` if this neuron has passed KYC, `false` otherwise&lt;br /&gt;
* transfer: The record of the transfer that was made to create this neuron. This is not used anymore and always set to &amp;quot;None&amp;quot;.&lt;br /&gt;
* maturity_e8s_equivalent: A neuron&#039;s maturity in &amp;quot;e8s equivalent&amp;quot;. The maturity keeps track of the rewards that the neurons has collected. While this quantity is on the same scale as ICP tokens, it is not directly convertible to ICPs and conversion requires a minting event (i.e., spawn the maturity).&lt;br /&gt;
* not_for_profit:  Whether this neuron is &amp;quot;Not for profit&amp;quot;, making it dissolvable by voting (see below)&lt;br /&gt;
* joined_community_fund_timestamp_seconds: The time point when this neuron joined the community fund.&lt;br /&gt;
&lt;br /&gt;
== Manage Neuron Commands ==&lt;br /&gt;
In general, any changes to or in the name of a neuron (e.g., changes to the neuron&#039;s attributes or casting a vote in the name of the neuron) can be made in two ways: &lt;br /&gt;
&lt;br /&gt;
# by using the manage_neuron interface of the governance canister or&lt;br /&gt;
# by making a special proposal of [[topic ManageNeuron]], where the basic idea is that a set of neurons can control a &#039;&#039;managed neuron&#039;&#039; by submitting and voting on special proposals. This only works if the managed neuron follows these controlling neurons for the proposal topic ManageNeuron. If this is given, the set of controlling neurons can send commands to the governance canister as if they were issued by the managed neuron&#039;s controller (that is with the same privileges that the managed neuron&#039;s controller has to manipulate the neuron). Thus, if it is stated that some neuron commands can only be done by a neuron&#039;s controller, this also includes the possibility that these commands are done per manageNeuron proposal.&lt;br /&gt;
&lt;br /&gt;
The next section lists all commands that can be performed by manage_neuron.&lt;br /&gt;
&lt;br /&gt;
=== Claiming a Neuron ===&lt;br /&gt;
This can be used to stake ICP utility tokens into a neuron. To do so, first a transfer must be made to the neuron&#039;s associated ledger account. Each transfer on the ledger account can be provided with a &#039;&#039;memo.&#039;&#039; After this transfer, the neuron can be claimed on the governance canister by providing the memo and the controller of the neuron. This allows the governance canister to find the corresponding account on the ledger canister and learn how many tokens should be staked in the corresponding neuron. A neuron is then created. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command)&#039;&#039;&amp;lt;u&amp;gt;:&amp;lt;/u&amp;gt;&#039;&#039;&#039;&#039;&#039; &#039;&#039;&amp;lt;u&amp;gt;Anyone can call this method.&amp;lt;/u&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the neuron&#039;s attributes:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Refreshing a Neuron ===&lt;br /&gt;
Similarly to how a neuron is first created, a neuron can be topped up by making a transfer to the neuron&#039;s Ledger canister account and then calling the Governance canister, which will adjust the neuron&#039;s stake to the new balance on the neuron&#039;s account. For this to work, the caller must either provide the governance canister with the memo and controller (as with claiming a neuron) or with the neuron&#039;s ID or account. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039; Anyone can call this method.&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the neuron&#039;s attributes:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Configuring a Neuron ===&lt;br /&gt;
Once a neuron is claimed, a neuron&#039;s controller might want to configure it. The following are commands that only configure a given neuron, but do not interact with the outside world.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039; All neuron configurations can only be invoked by a neuron&#039;s controller.&lt;br /&gt;
&lt;br /&gt;
* IncreaseDissolveDelay: Increases a neuron&#039;s dissolve delay by the given additional dissolve delay but at most to a given maximum dissolve delay (which is currently set to 8 years). If this method is called on a non-dissolving neuron, it remains non-dissolving. If it is called on dissolving neuron, it remains dissolving.   If this configuration is called on a dissolved neuron, it becomes non-dissolving. Moreover, the neuron&#039;s aging_since_timestamp_seconds is reset to start counting from when it last entered the dissolved state in the case where the &#039;&#039;dissolved&#039;&#039; state was reached through explicit dissolution or to `now` when this is not applicable, e.g., when the neuron is newly created with zero dissolve delay.&lt;br /&gt;
&lt;br /&gt;
* SetDissolveTimestamp: This is just another way of increasing the dissolve delay, by stating the target dissolve timestamp rather than the relative increase in the dissolve delay. It is internally translated to do the same as increasing the dissolve delay.&lt;br /&gt;
* StartDissolving: If this neuron is not dissolving, start dissolving it. If the neuron is dissolving or dissolved, an error is returned. Starting to dissolve a neuron intuitively means that the neuron&#039;s countdown to when the staked tokens can be liquidated is started. In terms of neuron attributes, the neuron&#039;s dissolve state is set to when_dissolved_timestamp_seconds which specifies the time now plus the neuron&#039;s dissolve delay (i.e., the defined countdown&#039;s duration). Moreover, the neuron&#039;s aging_since_timestamp_seconds is set to the maximum possible value, which represents that the neuron has no age as this will be in the future.&lt;br /&gt;
&lt;br /&gt;
* StopDissolving: If this neuron is dissolving, set it to not dissolving. If the neuron is not dissolving, an error is returned. Intuitively, this means that the neuron&#039;s countdown towards when the staked tokens can be liquidated is stopped. In terms of neuron attributes, the neuron&#039;s state is set to dissolve_delay_seconds, which now tracks the remaining time on the countdown. Also, the neuron&#039;s aging_since_timestamp_seconds is set to now. &lt;br /&gt;
&lt;br /&gt;
* AddHotKey: A new hot key is added to the neuron if the following preconditions hold: - key to add is not already present in &#039;hot_keys&#039; - the key to add is well-formed - there are not already too many hot keys for this neuron (currently 10 hot keys are allowed).&lt;br /&gt;
* RemoveHotKey: The specified hot key is removed if it is in the list of hot keys.&lt;br /&gt;
* JoinCommunityFund: If the neuron has not yet joined the community fund, this configuration sets the neuron&#039;s joined_community_fund_timestamp_seconds to the current time. If the neuron is already a member of the community fund, an error is returned.&lt;br /&gt;
&lt;br /&gt;
=== Make Proposal ===&lt;br /&gt;
This command can be used to have a neuron controlled by the issuer of the command to submit a proposal. If successful, the command creates an initial electoral roll that includes a ballot for all neurons that are eligible to vote on the proposal at the time when the proposal is created and where the ballots state the neurons&#039; voting power at the time of the proposal creation. The neuron that makes the proposal is charged the rejection fee upfront which will be reimbursed if the proposal is accepted (except for proposals of topic ManageNeuron) and the voting power of the proposer neuron is already counted towards the yes votes of the proposal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039; The neuron&#039;s controller or a registered hot key.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The proposal is valid.&lt;br /&gt;
* The neuron is eligible to vote on the proposal (i.e., still has a minimum dissolve delay currently set to 6 months).&lt;br /&gt;
* The neuron has more stake than the cost of a rejected proposal, which is currently 1 ICP.&lt;br /&gt;
* There are not too many open proposals.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the neuron&#039;s attributes:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The neuron_fees_e8s are increased by the rejection fee (or, in case of a ManageNeuron proposal the corresponding fee).&lt;br /&gt;
* The recent_ballots are updated with the yes ballot that is cast for the proposer.&lt;br /&gt;
&lt;br /&gt;
=== Register Vote ===&lt;br /&gt;
This is used to directly register a neuron&#039;s vote for a given proposal. Also, it triggers the registration of a vote for all neurons that follow this neuron.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039; The neuron&#039;s controller or a registered hot key.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* A proposal is specified that exists.&lt;br /&gt;
* The neuron is eligible to vote on this proposal, i.e., an empty ballot has been entered to the electoral roll (if this is not the case, then the neuron was not eligible at the time when the proposal was created and thus the neuron is not allowed to vote on it).&lt;br /&gt;
* The neuron has not already voted on this proposal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the neuron&#039;s attributes:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The recent_ballots are updated.&lt;br /&gt;
&lt;br /&gt;
=== Follow ===&lt;br /&gt;
Add or remove followees for this neuron for a specified topic. If the list of followees is empty, remove the followees for this topic. If the list has at least one element, replace the current list of followees for the given topic with the provided list. Note that the list is replaced, not added to.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039; The neuron&#039;s controller.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The list of followees is not too long (the current maximum is 15 followees per topic).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the neuron&#039;s attributes:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The followees for the given topic are updated.&lt;br /&gt;
&lt;br /&gt;
=== Spawn ===&lt;br /&gt;
This command allows to convert the neuron&#039;s collected rewards that are stored as the neuron&#039;s maturity to (staked) ICP utility tokens by minting the corresponding tokens (on the Ledger canister) and &amp;quot;spawning&amp;quot; them into a new neuron. The new &#039;&#039;child neuron&#039;&#039;, containing the spawned staked tokens has a small dissolve delay, which means that the tokens can be liquidated after only a short period of time while the original &#039;&#039;parent neuron&#039;s&#039;&#039; tokens may still be locked for much longer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039; The neuron&#039;s controller.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The parent neuron exists.&lt;br /&gt;
* The parent neuron is not involved in any neuron commands that have ledger interactions (to avoid inconsistencies).&lt;br /&gt;
* The parent neuron has accumulated maturity that would generate more than the minimum stake needed to create a new neuron.&lt;br /&gt;
* A controller for the new child neuron is provided that is valid.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the neuron&#039;s attributes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The maturity is decreased by the maturity at the time when the command started (a new reward event might have set it to non-zero already again).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The new &amp;quot;child&amp;quot; neuron&#039;s attributes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* id: random identifier&lt;br /&gt;
* account: random account (that does not yet exist)&lt;br /&gt;
&lt;br /&gt;
* controller: set to the provided controller&lt;br /&gt;
&lt;br /&gt;
* hot_keys: same as parent neuron&lt;br /&gt;
* cached_neuron_stake_e8s: set to the parent&#039;s maturity at the time when the command started.&lt;br /&gt;
* neuron_fees_e8s: 0&lt;br /&gt;
* created_timestamp_seconds: current time&lt;br /&gt;
* aging_since_timestamp_seconds: current time&lt;br /&gt;
* dissolve_state: (non-dissolving) dissolve_delay_seconds set to neuron_spawn_dissolve_delay_seconds as defined in the governance economics (currently set to 7 days)&lt;br /&gt;
* followees: same as parent neuron&lt;br /&gt;
* recent_ballots: empty&lt;br /&gt;
* kyc_verified: same as parent neuron&lt;br /&gt;
* transfer: not set&lt;br /&gt;
* maturity_e8s_equivalent:0&lt;br /&gt;
* not_for_profit: false&lt;br /&gt;
* joined_community_fund_timestamp_seconds: None&lt;br /&gt;
&lt;br /&gt;
=== Disburse ===&lt;br /&gt;
Once a dissolving neuron&#039;s countdown has reached zero, the neuron is dissolved and can thus be disbursed, which means that (some or only a specified number of) the staked tokens can be transferred to a given account. If no target account is provided, the transfer is made to the caller&#039;s account (i.e., the neuron&#039;s controller&#039;s account).&lt;br /&gt;
&lt;br /&gt;
In more detail, when a neuron is disbursed multiple steps happen:&lt;br /&gt;
&lt;br /&gt;
# The neuron&#039;s accumulated fees are burned.&lt;br /&gt;
# The neuron&#039;s accumulated maturity is converted to ICP utility tokens by minting the corresponding tokens and also transferring them to the target account.&lt;br /&gt;
# The given staked amount (or the full stake if none is provided) is transferred to the target account.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039;  The neuron&#039;s controller.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The neuron exists.&lt;br /&gt;
* The neuron&#039;s state is `Dissolved` at the current timestamp, i.e., the dissolve countdown has reached zero.&lt;br /&gt;
* The neuron&#039;s kyc_verified is not false. That is, a neuron that was created with kyc_verified false cannot be disbursed until it went through kyc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the neuron&#039;s attributes:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The specified amount is subtracted from the neuron&#039;s cached_neuron_stake_e8s, as are the original neuron fees.&lt;br /&gt;
* The neuron_fees_e8s is set to zero.&lt;br /&gt;
&lt;br /&gt;
=== Split ===&lt;br /&gt;
This command splits a &#039;&#039;parent neuron&#039;&#039; into two neurons, the original parent neuron and a new child neuron. This command may be useful, if a neuron holder would like for example to set the neuron configurations differently for a portion of the locked tokens. &lt;br /&gt;
&lt;br /&gt;
The parent neuron&#039;s stake is decreased by the amount specified, while the child neuron is created with a stake equal to that amount, minus the Ledger canister transfer fee. The child neuron inherits all the properties of its parent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039;  The neuron&#039;s controller.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* The parent neuron exists.&lt;br /&gt;
* The parent neuron is not involved in any neuron commands that have ledger interactions (to avoid inconsistencies).&lt;br /&gt;
* The staked amount minus amount to split is more than the minimum stake (ensuring that the parent neuron has at least the minimum stake).&lt;br /&gt;
* The amount to split minus the transfer fee is more than the minimum stake  (ensuring that the child neuron has at least the minimum stake).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the (parent) neuron&#039;s attributes:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* cached_neuron_stake_e8s: deduced by specified amount that is split.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The the new &amp;quot;child&amp;quot; neuron&#039;s attributes:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* id: random identifier&lt;br /&gt;
* account: random account (that does not yet exist)&lt;br /&gt;
&lt;br /&gt;
* controller: same as parent neuron&lt;br /&gt;
&lt;br /&gt;
* hot_keys: same as parent neuron&lt;br /&gt;
* cached_neuron_stake_e8s: set to specified amount that is split from parent minus the transaction fee&lt;br /&gt;
* neuron_fees_e8s: 0&lt;br /&gt;
* created_timestamp_seconds: current time&lt;br /&gt;
* aging_since_timestamp_seconds: same as parent neuron&lt;br /&gt;
* dissolve_state: same as parent neuron&lt;br /&gt;
* followees: same as parent neuron&lt;br /&gt;
* recent_ballots: empty&lt;br /&gt;
* kyc_verified: same as parent neuron&lt;br /&gt;
* transfer: not set&lt;br /&gt;
* maturity_e8s_equivalent: 0&lt;br /&gt;
* not_for_profit: same as parent neuron&lt;br /&gt;
* joined_community_fund_timestamp_seconds: same as parent neuron&lt;br /&gt;
=== Disburse to Neuron ===&lt;br /&gt;
(Intro)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access control (who can issue this command):&#039;&#039;&#039;  The neuron&#039;s controller.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Preconditions (other conditions that must hold):&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The effect on the neuron&#039;s attributes:&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=7701</id>
		<title>Matched Funding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=7701"/>
		<updated>2024-04-08T09:05:06Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
This wiki page describes the ‘Matched Funding’ scheme, in which the contribution of the Neurons’ Fund to SNS swaps scales in line with direct participation, allowing for a more accurate reflection of market signals.&lt;br /&gt;
&lt;br /&gt;
In addition, the page also outlines the separation of contributions from direct participants and the Neurons’ Fund. In the Matched Funding framework,  the minimum and maximum funding targets of an SNS swap are specifically set for direct participation. This means that the success of a swap only depends on the level of direct participation, not the contributions from the Neurons’ Fund.&lt;br /&gt;
&lt;br /&gt;
== The Matching function, f ==&lt;br /&gt;
&lt;br /&gt;
The scheme is implemented through a matching function &#039;&#039;f&#039;&#039;, where the input &#039;&#039;x&#039;&#039; represents the amount of direct participation, and the output &#039;&#039;f(x)&#039;&#039; denotes the corresponding contribution from the Neurons&#039; Fund (NF).&lt;br /&gt;
&lt;br /&gt;
The function &#039;&#039;f&#039;&#039; is designed to have three distinct phases and will be a continuous function to ensure a smooth transition between these phases. Importantly, the rules for these phases will be globally consistent, applicable to all SNS launches.&lt;br /&gt;
&lt;br /&gt;
* Initial Lag Phase (I): The function starts at 0, and grows slowly until it reaches a set threshold. This design encourages projects to accumulate enough direct participation before receiving substantial contributions from the NF.&lt;br /&gt;
* Growth Phase (II): After crossing the threshold, the NF&#039;s contribution increases at a faster rate, signifying more significant support for projects that have demonstrated viability through direct participation.&lt;br /&gt;
* Saturation Phase (III): Beyond a certain point, &#039;&#039;f(x)&#039;&#039; will level off and will not surpass 10% of the NF&#039;s total maturity, which ensures that no single SNS will excessively deplete the NF&#039;s resources.&lt;br /&gt;
* Bounding Condition: The matching function &#039;&#039;f(x)&#039;&#039; is bounded by &#039;&#039;g(x)=x&#039;&#039;, meaning that it will never exceed a 1:1 ratio with &#039;&#039;x&#039;&#039;. In practical terms, the NF&#039;s contribution will always be less than or equal to the amount of direct participation.&lt;br /&gt;
* Audability: The shape of &#039;&#039;f&#039;&#039; (which can change over time due to varying NF size) should be audible.&lt;br /&gt;
&lt;br /&gt;
These design principles aim  to create a fair and sustainable system for allocating NF contributions to various SNS initiatives.&lt;br /&gt;
&lt;br /&gt;
== Benefits of matched funding ==&lt;br /&gt;
&lt;br /&gt;
=== Better Reflection of Market Signals ===&lt;br /&gt;
&lt;br /&gt;
The matched funding system is designed to closely align with market sentiment. Specifically, a project that successfully raises more direct contributions will correspondingly receive a greater contribution from the Neurons&#039; Fund (NF), up to a predetermined threshold.&lt;br /&gt;
&lt;br /&gt;
=== Simpler Decision-making for NF NNS Neurons ===&lt;br /&gt;
&lt;br /&gt;
The automated adjustment feature in the NF&#039;s contributions lessens the decision-making burden on NF NNS neurons. As a result, these neurons have fewer instances where they need to opt out, making the process more efficient.&lt;br /&gt;
&lt;br /&gt;
=== Improved Incentives for Projects ===&lt;br /&gt;
&lt;br /&gt;
The matching system provides a more compelling incentive structure for projects. Knowing that increased direct funding will be matched (up to a point) by the NF, encourages projects to be more proactive in their fundraising efforts.&lt;br /&gt;
&lt;br /&gt;
== Detailed specification of the matching function ==&lt;br /&gt;
=== Cap ===&lt;br /&gt;
&lt;br /&gt;
The contribution should be capped by 10% of the NF maturity at proposal execution time and also by a global NF contribution cap being equivalent to 0.75M XDR. In other words we have cap = min (10% of NF maturity, global NF contribution cap)&lt;br /&gt;
&lt;br /&gt;
The global NF contribution cap is a configurable parameter of the NNS.&lt;br /&gt;
&lt;br /&gt;
=== Thresholds ===&lt;br /&gt;
&lt;br /&gt;
For specifying the shape of the matching function &#039;&#039;f&#039;&#039;, we define the following thresholds&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: Up to this point, a project receives no contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: Projects get a 2:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: Projects receive a 1:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_4&#039;&#039; = 2 * cap: Projects get a 2:1 contribution from the NF. (and afterwards the contribution of the NF remains flat).&lt;br /&gt;
&lt;br /&gt;
The thresholds should be configurable parameters of the NNS. For example they could be part of the NetworkEconomics record.&lt;br /&gt;
&lt;br /&gt;
These thresholds are specified in XDR and then converted to ICP thresholds at the execution of the SNS swap proposal using the 30-day average ICP/XDR conversion rate.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: 75k XDR&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: 225k XDR &lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: 375k XDR &amp;lt;br /&amp;gt;&lt;br /&gt;
For an interactive tool allowing to explore the functionality of matched funding, please see the SNS tokenomics analyzer [https://dashboard.internetcomputer.org/sns/tokenomics here]. &lt;br /&gt;
&lt;br /&gt;
[[File:SNS tokenomics analyzer.png|frameless|900x900px]] &lt;br /&gt;
&lt;br /&gt;
=== Matching function polynomials ===&lt;br /&gt;
The matching should be realized by set of polynomials&lt;br /&gt;
&lt;br /&gt;
* f_1: for function values between t_1 and t_2 &lt;br /&gt;
* f_2: for function values between t_2 and t_3&lt;br /&gt;
* f_3: for function values between t_3 and t_4. &lt;br /&gt;
&lt;br /&gt;
Formulas for the polynomials can be derived from constraints listed above on the functions f and f’.  &lt;br /&gt;
&lt;br /&gt;
== Clearer separation of contributions ==&lt;br /&gt;
Feedback from both SNS projects and users has highlighted the need for a clearer separation between contributions from direct participants and those from the NF. This is now realized in two areas:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Proposal Structure:&#039;&#039;&#039; Instead of specifying the overall minimum and maximum funding target, projects have the ability to set distinct minimum and maximum funding targets specifically for direct participation, which is the only factor determining whether the swap succeeds. The contribution from the NF is then added to this base amount, determined by a well-defined model (as per the matching function discussed above).&lt;br /&gt;
# &#039;&#039;&#039;User Transparency in the SNS Launchpad:&#039;&#039;&#039; During the swap, contributions from direct participants and the NF are displayed separately for transparency, within the NNS dapp’s SNS launchpad.&lt;br /&gt;
&lt;br /&gt;
== Benefits of the clearer separation ==&lt;br /&gt;
&lt;br /&gt;
* Transparency in Success Metrics: The success of the swap is directly and transparently linked to the amount raised through direct participation.&lt;br /&gt;
* More freedom to define funding target range: Projects can set a more flexible range for minimum and maximum funding targets without having to factor in the NF contribution, offering more leeway than in the current system where the NF contribution affects these limit (e.g. because the fixed NF contribution should exceed more than 66% of the minimum funding target).&lt;br /&gt;
* User Clarity: Users will be able to easily see the amount of direct participation already collected during the swap, as well as the anticipated NF contribution.&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=File:SNS_tokenomics_analyzer.png&amp;diff=7700</id>
		<title>File:SNS tokenomics analyzer.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=File:SNS_tokenomics_analyzer.png&amp;diff=7700"/>
		<updated>2024-04-08T09:03:33Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SNS tokenomics analyzer on dashboard&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=7699</id>
		<title>Matched Funding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=7699"/>
		<updated>2024-04-08T08:58:46Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
This wiki page describes the ‘Matched Funding’ scheme, in which the contribution of the Neurons’ Fund to SNS swaps scales in line with direct participation, allowing for a more accurate reflection of market signals.&lt;br /&gt;
&lt;br /&gt;
In addition, the page also outlines the separation of contributions from direct participants and the Neurons’ Fund. In the Matched Funding framework,  the minimum and maximum funding targets of an SNS swap are specifically set for direct participation. This means that the success of a swap only depends on the level of direct participation, not the contributions from the Neurons’ Fund.&lt;br /&gt;
&lt;br /&gt;
== The Matching function, f ==&lt;br /&gt;
&lt;br /&gt;
The scheme is implemented through a matching function &#039;&#039;f&#039;&#039;, where the input &#039;&#039;x&#039;&#039; represents the amount of direct participation, and the output &#039;&#039;f(x)&#039;&#039; denotes the corresponding contribution from the Neurons&#039; Fund (NF).&lt;br /&gt;
&lt;br /&gt;
The function &#039;&#039;f&#039;&#039; is designed to have three distinct phases and will be a continuous function to ensure a smooth transition between these phases. Importantly, the rules for these phases will be globally consistent, applicable to all SNS launches.&lt;br /&gt;
&lt;br /&gt;
* Initial Lag Phase (I): The function starts at 0, and grows slowly until it reaches a set threshold. This design encourages projects to accumulate enough direct participation before receiving substantial contributions from the NF.&lt;br /&gt;
* Growth Phase (II): After crossing the threshold, the NF&#039;s contribution increases at a faster rate, signifying more significant support for projects that have demonstrated viability through direct participation.&lt;br /&gt;
* Saturation Phase (III): Beyond a certain point, &#039;&#039;f(x)&#039;&#039; will level off and will not surpass 10% of the NF&#039;s total maturity, which ensures that no single SNS will excessively deplete the NF&#039;s resources.&lt;br /&gt;
* Bounding Condition: The matching function &#039;&#039;f(x)&#039;&#039; is bounded by &#039;&#039;g(x)=x&#039;&#039;, meaning that it will never exceed a 1:1 ratio with &#039;&#039;x&#039;&#039;. In practical terms, the NF&#039;s contribution will always be less than or equal to the amount of direct participation.&lt;br /&gt;
* Audability: The shape of &#039;&#039;f&#039;&#039; (which can change over time due to varying NF size) should be audible.&lt;br /&gt;
&lt;br /&gt;
These design principles aim  to create a fair and sustainable system for allocating NF contributions to various SNS initiatives.&lt;br /&gt;
&lt;br /&gt;
== Benefits of matched funding ==&lt;br /&gt;
&lt;br /&gt;
=== Better Reflection of Market Signals ===&lt;br /&gt;
&lt;br /&gt;
The matched funding system is designed to closely align with market sentiment. Specifically, a project that successfully raises more direct contributions will correspondingly receive a greater contribution from the Neurons&#039; Fund (NF), up to a predetermined threshold.&lt;br /&gt;
&lt;br /&gt;
=== Simpler Decision-making for NF NNS Neurons ===&lt;br /&gt;
&lt;br /&gt;
The automated adjustment feature in the NF&#039;s contributions lessens the decision-making burden on NF NNS neurons. As a result, these neurons have fewer instances where they need to opt out, making the process more efficient.&lt;br /&gt;
&lt;br /&gt;
=== Improved Incentives for Projects ===&lt;br /&gt;
&lt;br /&gt;
The matching system provides a more compelling incentive structure for projects. Knowing that increased direct funding will be matched (up to a point) by the NF, encourages projects to be more proactive in their fundraising efforts.&lt;br /&gt;
&lt;br /&gt;
== Detailed specification of the matching function ==&lt;br /&gt;
=== Cap ===&lt;br /&gt;
&lt;br /&gt;
The contribution should be capped by 10% of the NF maturity at proposal execution time and also by a global NF contribution cap being equivalent to 0.75M XDR. In other words we have cap = min (10% of NF maturity, global NF contribution cap)&lt;br /&gt;
&lt;br /&gt;
The global NF contribution cap is a configurable parameter of the NNS.&lt;br /&gt;
&lt;br /&gt;
=== Thresholds ===&lt;br /&gt;
&lt;br /&gt;
For specifying the shape of the matching function &#039;&#039;f&#039;&#039;, we define the following thresholds&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: Up to this point, a project receives no contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: Projects get a 2:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: Projects receive a 1:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_4&#039;&#039; = 2 * cap: Projects get a 2:1 contribution from the NF. (and afterwards the contribution of the NF remains flat).&lt;br /&gt;
&lt;br /&gt;
The thresholds should be configurable parameters of the NNS. For example they could be part of the NetworkEconomics record.&lt;br /&gt;
&lt;br /&gt;
These thresholds are specified in XDR and then converted to ICP thresholds at the execution of the SNS swap proposal using the 30-day average ICP/XDR conversion rate.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: 75k XDR&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: 225k XDR &lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: 375k XDR &amp;lt;br /&amp;gt;&lt;br /&gt;
For an interactive tool allowing to explore the functionality of matched funding, please see the SNS tokenomics analyzer [https://dashboard.internetcomputer.org/sns/tokenomics here]. &lt;br /&gt;
&lt;br /&gt;
=== Matching function polynomials ===&lt;br /&gt;
The matching should be realized by set of polynomials&lt;br /&gt;
&lt;br /&gt;
* f_1: for function values between t_1 and t_2 &lt;br /&gt;
* f_2: for function values between t_2 and t_3&lt;br /&gt;
* f_3: for function values between t_3 and t_4. &lt;br /&gt;
&lt;br /&gt;
Formulas for the polynomials can be derived from constraints listed above on the functions f and f’.  &lt;br /&gt;
&lt;br /&gt;
== Clearer separation of contributions ==&lt;br /&gt;
Feedback from both SNS projects and users has highlighted the need for a clearer separation between contributions from direct participants and those from the NF. This is now realized in two areas:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Proposal Structure:&#039;&#039;&#039; Instead of specifying the overall minimum and maximum funding target, projects have the ability to set distinct minimum and maximum funding targets specifically for direct participation, which is the only factor determining whether the swap succeeds. The contribution from the NF is then added to this base amount, determined by a well-defined model (as per the matching function discussed above).&lt;br /&gt;
# &#039;&#039;&#039;User Transparency in the SNS Launchpad:&#039;&#039;&#039; During the swap, contributions from direct participants and the NF are displayed separately for transparency, within the NNS dapp’s SNS launchpad.&lt;br /&gt;
&lt;br /&gt;
== Benefits of the clearer separation ==&lt;br /&gt;
&lt;br /&gt;
* Transparency in Success Metrics: The success of the swap is directly and transparently linked to the amount raised through direct participation.&lt;br /&gt;
* More freedom to define funding target range: Projects can set a more flexible range for minimum and maximum funding targets without having to factor in the NF contribution, offering more leeway than in the current system where the NF contribution affects these limit (e.g. because the fixed NF contribution should exceed more than 66% of the minimum funding target).&lt;br /&gt;
* User Clarity: Users will be able to easily see the amount of direct participation already collected during the swap, as well as the anticipated NF contribution.&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=7698</id>
		<title>Matched Funding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=7698"/>
		<updated>2024-04-08T07:58:17Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
This wiki page describes the ‘Matched Funding’ scheme, in which the contribution of the Neurons’ Fund to SNS swaps scales in line with direct participation, allowing for a more accurate reflection of market signals.&lt;br /&gt;
&lt;br /&gt;
In addition, the page also outlines the separation of contributions from direct participants and the Neurons’ Fund. In the Matched Funding framework,  the minimum and maximum funding targets of an SNS swap are specifically set for direct participation. This means that the success of a swap only depends on the level of direct participation, not the contributions from the Neurons’ Fund.&lt;br /&gt;
&lt;br /&gt;
== The Matching function, f ==&lt;br /&gt;
&lt;br /&gt;
The scheme is implemented through a matching function &#039;&#039;f&#039;&#039;, where the input &#039;&#039;x&#039;&#039; represents the amount of direct participation, and the output &#039;&#039;f(x)&#039;&#039; denotes the corresponding contribution from the Neurons&#039; Fund (NF).&lt;br /&gt;
&lt;br /&gt;
The function &#039;&#039;f&#039;&#039; is designed to have three distinct phases and will be a continuous function to ensure a smooth transition between these phases. Importantly, the rules for these phases will be globally consistent, applicable to all SNS launches.&lt;br /&gt;
&lt;br /&gt;
* Initial Lag Phase (I): The function starts at 0, and grows slowly until it reaches a set threshold. This design encourages projects to accumulate enough direct participation before receiving substantial contributions from the NF.&lt;br /&gt;
* Growth Phase (II): After crossing the threshold, the NF&#039;s contribution increases at a faster rate, signifying more significant support for projects that have demonstrated viability through direct participation.&lt;br /&gt;
* Saturation Phase (III): Beyond a certain point, &#039;&#039;f(x)&#039;&#039; will level off and will not surpass 10% of the NF&#039;s total maturity, which ensures that no single SNS will excessively deplete the NF&#039;s resources.&lt;br /&gt;
* Bounding Condition: The matching function &#039;&#039;f(x)&#039;&#039; is bounded by &#039;&#039;g(x)=x&#039;&#039;, meaning that it will never exceed a 1:1 ratio with &#039;&#039;x&#039;&#039;. In practical terms, the NF&#039;s contribution will always be less than or equal to the amount of direct participation.&lt;br /&gt;
* Audability: The shape of &#039;&#039;f&#039;&#039; (which can change over time due to varying NF size) should be audible.&lt;br /&gt;
&lt;br /&gt;
These design principles aim  to create a fair and sustainable system for allocating NF contributions to various SNS initiatives.&lt;br /&gt;
&lt;br /&gt;
== Benefits of matched funding ==&lt;br /&gt;
&lt;br /&gt;
=== Better Reflection of Market Signals ===&lt;br /&gt;
&lt;br /&gt;
The matched funding system is designed to closely align with market sentiment. Specifically, a project that successfully raises more direct contributions will correspondingly receive a greater contribution from the Neurons&#039; Fund (NF), up to a predetermined threshold.&lt;br /&gt;
&lt;br /&gt;
=== Simpler Decision-making for NF NNS Neurons ===&lt;br /&gt;
&lt;br /&gt;
The automated adjustment feature in the NF&#039;s contributions lessens the decision-making burden on NF NNS neurons. As a result, these neurons have fewer instances where they need to opt out, making the process more efficient.&lt;br /&gt;
&lt;br /&gt;
=== Improved Incentives for Projects ===&lt;br /&gt;
&lt;br /&gt;
The matching system provides a more compelling incentive structure for projects. Knowing that increased direct funding will be matched (up to a point) by the NF, encourages projects to be more proactive in their fundraising efforts.&lt;br /&gt;
&lt;br /&gt;
== Detailed specification of the matching function ==&lt;br /&gt;
[[File:Matching function.png|thumb|Graph of the matching function|alt=|900x900px]]&lt;br /&gt;
=== Cap ===&lt;br /&gt;
&lt;br /&gt;
The contribution should be capped by 10% of the NF maturity at proposal execution time and also by a global NF contribution cap being equivalent to 0.75M XDR. In other words we have cap = min (10% of NF maturity, global NF contribution cap)&lt;br /&gt;
&lt;br /&gt;
The global NF contribution cap is a configurable parameter of the NNS.&lt;br /&gt;
&lt;br /&gt;
=== Thresholds ===&lt;br /&gt;
&lt;br /&gt;
For specifying the shape of the matching function &#039;&#039;f&#039;&#039;, we define the following thresholds&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: Up to this point, a project receives no contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: Projects get a 2:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: Projects receive a 1:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_4&#039;&#039; = 2 * cap: Projects get a 2:1 contribution from the NF. (and afterwards the contribution of the NF remains flat).&lt;br /&gt;
&lt;br /&gt;
The thresholds should be configurable parameters of the NNS. For example they could be part of the NetworkEconomics record.&lt;br /&gt;
&lt;br /&gt;
These thresholds are specified in XDR and then converted to ICP thresholds at the execution of the SNS swap proposal using the 30-day average ICP/XDR conversion rate.&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: 75k XDR&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: 225k XDR &lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: 375k XDR &amp;lt;br /&amp;gt;&lt;br /&gt;
=== Matching function polynomials ===&lt;br /&gt;
The matching should be realized by set of polynomials&lt;br /&gt;
&lt;br /&gt;
* f_1: for function values between t_1 and t_2 &lt;br /&gt;
* f_2: for function values between t_2 and t_3&lt;br /&gt;
* f_3: for function values between t_3 and t_4. &lt;br /&gt;
&lt;br /&gt;
Formulas for the polynomials can be derived from constraints listed above on the functions f and f’.  &lt;br /&gt;
&lt;br /&gt;
== Clearer separation of contributions ==&lt;br /&gt;
Feedback from both SNS projects and users has highlighted the need for a clearer separation between contributions from direct participants and those from the NF. This is now realized in two areas:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Proposal Structure:&#039;&#039;&#039; Instead of specifying the overall minimum and maximum funding target, projects have the ability to set distinct minimum and maximum funding targets specifically for direct participation, which is the only factor determining whether the swap succeeds. The contribution from the NF is then added to this base amount, determined by a well-defined model (as per the matching function discussed above).&lt;br /&gt;
# &#039;&#039;&#039;User Transparency in the SNS Launchpad:&#039;&#039;&#039; During the swap, contributions from direct participants and the NF are displayed separately for transparency, within the NNS dapp’s SNS launchpad.&lt;br /&gt;
&lt;br /&gt;
== Benefits of the clearer separation ==&lt;br /&gt;
&lt;br /&gt;
* Transparency in Success Metrics: The success of the swap is directly and transparently linked to the amount raised through direct participation.&lt;br /&gt;
* More freedom to define funding target range: Projects can set a more flexible range for minimum and maximum funding targets without having to factor in the NF contribution, offering more leeway than in the current system where the NF contribution affects these limit (e.g. because the fixed NF contribution should exceed more than 66% of the minimum funding target).&lt;br /&gt;
* User Clarity: Users will be able to easily see the amount of direct participation already collected during the swap, as well as the anticipated NF contribution.&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=7661</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=7661"/>
		<updated>2024-03-20T12:30:24Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
The purpose of this page is to gather information that assists teams in selecting a tokenomics structure for their SNS DAO. Additionally, it aims to aid potential SNS DAO participants in evaluating the proposed tokenomics configurations of an SNS.&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics set-up ==&lt;br /&gt;
The &#039;&#039;&#039;SNS governance framework&#039;&#039;&#039; is a customizable version of the NNS framework. All its parameters can be set in the [https://github.com/dfinity/ic/blob/master/rs/sns/cli/sns_init_template.yaml SNS initialization file], which also contains a comprehensive guide to these settings. For more detailed information about &#039;&#039;&#039;SNS rewards&#039;&#039;&#039;, please refer to this [https://internetcomputer.org/docs/current/developer-docs/integrations/sns/tokenomics/rewards link]. &lt;br /&gt;
&lt;br /&gt;
== SNS decentralization swap ==&lt;br /&gt;
In the &#039;&#039;&#039;[https://internetcomputer.org/sns/faq#what-is-a-decentralization-swap SNS decentralization swap]&#039;&#039;&#039;, community members have two ways to get involved. One is &#039;&#039;&#039;direct participation&#039;&#039;&#039;, where they can exchange their ICP for SNS tokens.&lt;br /&gt;
&lt;br /&gt;
Alternatively, community members can engage indirectly through the &#039;&#039;&#039;Neurons&#039; Fund&#039;&#039;&#039; (NF). The extent of the NF&#039;s involvement in a specific SNS swap is decided by the [https://wiki.internetcomputer.org/wiki/Matched_Funding Matched Funding scheme]. This scheme correlates the &#039;&#039;&#039;fund participation&#039;&#039;&#039; with the level of direct participation. For more details on the Neurons&#039; Fund, visit this [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund/ link].&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics analyzer ==&lt;br /&gt;
Use this [https://dashboard.internetcomputer.org/sns/tokenomics dashboard app] to evaluate SNS tokenomics configurations. The tool takes as an input an SNS init file and allows  to simulate different levels of direct participation and its impact on key factors&lt;br /&gt;
&lt;br /&gt;
* Token Price Range: Displays the potential exchange rate range between ICP and SNS tokens.&lt;br /&gt;
* Matched Funding: Estimates the Neurons&#039; Fund contribution as a function of the simulated direct participation and the overall size of the Neurons&#039; Fund. &lt;br /&gt;
* Token Distribution: Shows how tokens are allocated between treasury, swap participants and the development team.&lt;br /&gt;
* Voting Power Assessment: Provides a visual representation of the voting power across the community (swap participants) and the developer team. &lt;br /&gt;
[[File:SNS tokenomics analyzer visual.png|alt=|center|thumb|900x900px]]&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;How many and what kind of neurons do you receive when directly participating in an SNS swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;In an SNS initialization, a project defines the number of SNS neurons and their dissolve delay range. For instance, a neuron basket with 3 neurons and a 1-month interval will result in neurons with dissolve delays of 0, 1, and 2 months.&amp;quot;&lt;br /&gt;
* &#039;&#039;How precisely do the minimum and maximum funding targets influence the swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;The swap fails if the minimum funding target is not met within the swap window. Conversely, if the maximum funding is reached, the swap concludes immediately.&amp;quot;&lt;br /&gt;
** &amp;quot;Please note: The minimum and maximum funding target are specified with respect to the direct participation only!&amp;quot;  &lt;br /&gt;
* &#039;&#039;What should projects consider when setting the minimum and maximum funding targets?&#039;&#039;&lt;br /&gt;
** &amp;quot;Set a realistic maximum funding target to create scarcity and drive token demand, as reaching this target ends the swap, possibly excluding some participants. A very high maximum can lead to a post-launch price drop, while a very low maximum might limit participation and miss funding opportunities.&amp;quot;&lt;br /&gt;
* &#039;&#039;What considerations are there when choosing the minimum stake of SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum stake is the lowest amount of SNS tokens required for a neuron. A lower value increases accessibility for those wanting to participate with fewer tokens. However, with a technical limit of 200K neurons in an SNS, a very low minimum stake might lead to too many small neurons.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should be considered when setting the minimum dissolve delay for SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum dissolve delay is crucial for voting eligibility. It encourages prudent, long-term voting as tokens are locked up. It also offers some defense against attacks, especially those funded by borrowed resources. However, if an attacker gains 51% of the voting power, the minimum staking period becomes irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Further background material == &lt;br /&gt;
* Overall intro to SNS https://internetcomputer.org/sns/&lt;br /&gt;
* Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=File:SNS_tokenomics_analyzer_visual.png&amp;diff=7660</id>
		<title>File:SNS tokenomics analyzer visual.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=File:SNS_tokenomics_analyzer_visual.png&amp;diff=7660"/>
		<updated>2024-03-20T12:29:08Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Screenshot for dashboard&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Validation_of_Candidate_Node_Machines&amp;diff=7573</id>
		<title>Validation of Candidate Node Machines</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Validation_of_Candidate_Node_Machines&amp;diff=7573"/>
		<updated>2024-03-01T19:09:05Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
In order to improve the decentralization network, an optimization model has been proposed on the forum (see [https://forum.dfinity.org/t/ic-topology-series-node-diversification-part-i/23402 node diversification part 1] and [https://forum.dfinity.org/t/ic-topology-node-diversification-part-ii/23553 node diversification part 2]) and also approved (see [https://dashboard.internetcomputer.org/proposal/125367 proposal 125367]). Given a certain target topology, the model optimizes between node rewards (onboarding of additional new nodes and rewards for existing nodes) and decentralization, calculating the minimum number of additional node machines required in order to achieve specific decentralization targets.&lt;br /&gt;
&lt;br /&gt;
The basis for the optimization model is a target IC topology for the next 6 to 12 months which may extend into Q1 2025 for contract ending for Gen1 node machines. This target topology has been proposed on the forum in [https://forum.dfinity.org/t/ic-topology-node-diversification-part-ii/23553 node diversification part 2], and approved by the community in [https://dashboard.internetcomputer.org/proposal/125549 proposal 125549] on 12th November 2023. This model sets targets for the number of Gen1 nodes and Gen2 nodes per subnet, and the decentralization coefficients (Nakamato coefficients) per subnet. &lt;br /&gt;
[[File:Validation Candidate Nodes - figure 1.png|center|thumb|800x800px|Validation of Candidate Node Machines - figure 1|alt=]] &lt;br /&gt;
&lt;br /&gt;
Running the optimization tool with the current topology will produce a graph like above, the red blocks showing the number of additional required node machines in order to reach the decentralization targets set in the IC Target Topology. The number of additional node machines required to reach the decentralization targets is visible in the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; which in the example graph is 68 additional Gen 2 node machines. &lt;br /&gt;
&lt;br /&gt;
With the optimization model and the IC Target Topology, the goal is to implement a transparent, objective and reproducible approach for node provider onboarding. Running the model with the existing IC topology and the number of new node machines intended to be onboarded, the model allows the proposer:&lt;br /&gt;
&lt;br /&gt;
* to verify whether adding additional nodes actually improves the decentralization, and &lt;br /&gt;
* allows the community to verify this improvement and vote on the proposal to add additional nodes.&lt;br /&gt;
&lt;br /&gt;
Below the steps are described to run the optimization model and verify any new proposal. An example is also given for a specific (fictional) proposal. &lt;br /&gt;
&lt;br /&gt;
== Basic starting points ==&lt;br /&gt;
There are a few basic starting points that everybody should be aware of when using the optimization tool and the IC Target Topology. First of all, using the model requires some basic knowledge of Python and Github, so please make sure to familiarize yourself with these before starting.&lt;br /&gt;
&lt;br /&gt;
In addition, it is important to note that the IC Target Topology is not fixed. It is voted in by the community as the target to be achieved within a certain timeframe. [https://dashboard.internetcomputer.org/proposal/125549 Proposal 125549] describes the target topology for the next half year/year, estimated on the current growth of the IC network. If expected growth should change, the community can decide to vote on an updated IC Target Topology with either more node machines or less node machines. Note that the Target IC Topology is intended to assess effectiveness of adding additional nodes, and identify potential nodes that are not relevant from a decentralization perspective. It does not assess or propose any changes in node rewards, which is a topic that the community discusses and votes upon separately. &lt;br /&gt;
&lt;br /&gt;
If target IC Topology is reached - meaning the &amp;lt;code&amp;gt;Objective Value&amp;lt;/code&amp;gt; in the optimization model has reached the value of zero, no new node machines should be onboarded. Hence, NNS proposals for increasing the Node Allowance or defining a new Node Allowance should be rejected by the community. Once a new IC Target topology is defined or (other) Node Providers have reduced their Node Allowance, the &amp;lt;code&amp;gt;Objective Value&amp;lt;/code&amp;gt; might increase again which would allow for new proposals to be submitted and approved. &lt;br /&gt;
== Steps to follow to assess node relevance ==&lt;br /&gt;
Assessing the relevance of adding new node machines using the optimization tool requires you to follow four basic steps:&lt;br /&gt;
&lt;br /&gt;
# Installing and running the latest version of the optimization tool&lt;br /&gt;
# Determining your candidate node configuration&lt;br /&gt;
# Updating your candidate nodes in the optimization tooling&lt;br /&gt;
# If adding new node machines is relevant, submitting the Node Operator proposal with the necessary background description.&lt;br /&gt;
&lt;br /&gt;
Each of these steps is discussed in detail below. &lt;br /&gt;
&lt;br /&gt;
=== Step 1 - downloading and installing the optimization tool ===&lt;br /&gt;
The optimization tool can be found in the following Github repository: https://github.com/dfinity/decentralization/. The repository is open sourced to allow the community to help improve the tooling with additional functionality and visualizations. &lt;br /&gt;
&lt;br /&gt;
To run the model. Please follow the following steps:&lt;br /&gt;
&lt;br /&gt;
* Find the repository on https://github.com/dfinity/decentralization/&lt;br /&gt;
* Either follow one of the following two approaches:&lt;br /&gt;
** Command Line approach - Follow the instructions as described in the README file, i.e.:&lt;br /&gt;
*** Clone the repository to you computer&lt;br /&gt;
*** Install [https://python-poetry.org/ Python Poetry]&lt;br /&gt;
*** Run the model in the command line as described in the README file&lt;br /&gt;
** Jupyter Notebook approach - Frequent Python users might have a preference for using [https://jupyter.org/ Jupyter Notebook]. If you want to use Jupyter notebook, you can follow the following steps:&lt;br /&gt;
*** Copy the code from the repository files and delete the import commands and main() sections from the separate python files (&amp;lt;code&amp;gt;data_preparation.py&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;helper_functions.py&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;linear_solver.py&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;visualization.py&amp;lt;/code&amp;gt;) &lt;br /&gt;
*** Run each file in subsequent cells in Jupyter notebook&lt;br /&gt;
*** You can subsequently rerun the model and adjust parameters using the interface of Jupyter notebook.&lt;br /&gt;
* Carefully read the forum posts on [https://forum.dfinity.org/t/ic-topology-series-node-diversification-part-i/23402 node diversification part 1] and [https://forum.dfinity.org/t/ic-topology-node-diversification-part-ii/23553 node diversification part 2] to understand the working of the tooling.&lt;br /&gt;
* Check the outcome of the model without making any updates to the model, in particular the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; as described above. As per 23 november 2023, the Objective Value should be similar to the graph shown above, with an additional 72 nodes needed to reach the target topology.&lt;br /&gt;
&lt;br /&gt;
=== Step 2 - determine your candidate node configuration ===&lt;br /&gt;
The internet computer dashboard shows the worldwide distribution of node machines. Based on this distribution, as a potential new Node Provider you can identify potential locations and data center providers for new node machines.&lt;br /&gt;
&lt;br /&gt;
For the Node Provider economics and understanding the costs and rewards for running a node machine, please look at the detailed NP documentation on the Internet Computer wiki pages, in particular those on [[Node Provider Machine Hardware Guide|hardware configuration]], [[Node Provider Data Center and ISP Guide|data center requirements]], and [[Node Provider Remuneration|node rewards]]. &lt;br /&gt;
&lt;br /&gt;
Once you have decided on potential data center locations and a potential number of new node machines that have viable economics, you can follow the following steps to add this candidate configuration to the optimization tool:&lt;br /&gt;
&lt;br /&gt;
* Collect the following information:&lt;br /&gt;
** The node provider name (if you are an existing node provider, use your existing Node Provider name)&lt;br /&gt;
** The data center name (if you are intending to add node machines to an existing data center, use the existing data center name)&lt;br /&gt;
** The data center provider name (if you are intending to use an existing data center provider, use the existing data center provider name)&lt;br /&gt;
** The country name (if you are intending to add node machines to an existing country, use the existing country name)&lt;br /&gt;
** The number of nodes you intend to onboard&lt;br /&gt;
&lt;br /&gt;
=== Step 3 - update the candidate node configuration in the optimization tooling ===&lt;br /&gt;
The optimization tool includes a function that allows candidate nodes to be added to the node configuration, and to run the optimization with including these candidate nodes. With the information collected in step 2, the following steps allow for the optimization tool to be run including the candidate nodes:&lt;br /&gt;
&lt;br /&gt;
* Updated the latest topology in the optimization tooling&lt;br /&gt;
** Find the df_candidate_nodes function in the &amp;lt;code&amp;gt;main.py&amp;lt;/code&amp;gt; of the ic_topology directory. &lt;br /&gt;
** You will see the following example entry: &amp;lt;code&amp;gt;df_candidate_nodes = create_candidate_node_dataframe(node_provider =&#039;Lionel Messi&#039;,data_center =&#039;Buenos Aires&#039;,data_center_provider =&#039;Perron Corporation&#039;,country = &#039;AR&#039;,is_sev = True,no_nodes = 0)&amp;lt;/code&amp;gt;&lt;br /&gt;
** Replace ‘Lionel Messi’ with the Node Provider name&lt;br /&gt;
** Replace ‘Buenos Aires’ with the data center name&lt;br /&gt;
** Replace ‘Perron Corporation’ with the data center provider name&lt;br /&gt;
** Replace ‘AR’ with the country name &lt;br /&gt;
** Replace “0” in no_nodes with the number of nodes intended to be onboarded.&lt;br /&gt;
* Run the model and determine the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt;:&lt;br /&gt;
** If the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; is lower compared to the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; without making changes to the df_candidate_nodes, it means that adding one or more new nodes is increasing the decentralization of the IC. It is important to note that every single node machine should help 1:1 to reduce the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt;. For, if the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; without adding any candidate nodes is 68, and 6 candidate nodes are added, the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; should reduce to 68 minus 6 is 62. If the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; is reduced to for example 66, only 2 candidate node machines will support further decentralization of the IC network, and no more than 2 candidate nodes should be added.&lt;br /&gt;
** If the ObjectiveValue is the same compared to the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; without making changes to the df_candidate_nodes, it means that adding one or more new nodes does not improve  the decentralization of the IC. &lt;br /&gt;
&lt;br /&gt;
=== Step 4 - Submitting a Node Operator Proposal ===&lt;br /&gt;
If the conclusion from step 3 is that adding node machines helps decentralization of the IC network, the final step is to prepare to submit a proposal for onboarding these nodes. Following are the steps to take in order to submit this proposal:&lt;br /&gt;
&lt;br /&gt;
* If you are not yet a Node Provider, please follow the steps on the [[Node Provider Onboarding|NP onboarding wiki page]] to submit a Node Provider Proposal. Please make sure to submit the self-declaration form and the identity-document as part of the proposal, as described in the instructions. &lt;br /&gt;
* If you are intending to onboard node machines in a new data center, follow the subsequent steps on the same [[Node Provider Onboarding|NP onboarding wiki page]] to submit a Data Center Proposal.&lt;br /&gt;
* Follow the steps on the same [[Node Provider Onboarding|NP onboarding wiki page]] to submit a Node Operator Proposal. The Node Operator Proposal should include the following input in the summary text:&lt;br /&gt;
** The number of nodes planned to be onboarded&lt;br /&gt;
** Node provider name (as per the public dashboard)&lt;br /&gt;
** The data center and country where nodes are to be onboarded&lt;br /&gt;
** Evidence of running the optimization model and providing reproducible feedback on decrease in &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt;. This can be done in the following way:&lt;br /&gt;
*** Upload a pdf with screenshots of running the optimization model to the wiki, on the page of your specific Node Provider self-declaration documentation.&lt;br /&gt;
*** Include the link to this pdf document and the hash of this document in the Node Operator Proposal.&lt;br /&gt;
*** Include/describe exactly the used input data and config the optimization model was run with.&lt;br /&gt;
*** Clearly state the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; before adding the candidate nodes&lt;br /&gt;
*** Clearly state the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; after adding the candidate nodes&lt;br /&gt;
* Complete the steps of the [[Node Provider Onboarding|NP onboarding wiki page]].&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
In the below example, an example is given how to use the optimization model to validate whether candidate nodes improve the decentralization of the IC network. In the optimization model code in the Github library, you will find a function df_candidate_nodes that is defined as follows:&lt;br /&gt;
 df_candidate_nodes = create_candidate_node_dataframe(node_provider =&#039;Lionel Messi&#039;, data_center =&#039;Buenos Aires&#039;, data_center_provider =&#039;Perron Corporation&#039;, country = &#039;AR&#039;, is_sev = True, no_nodes = 0)&lt;br /&gt;
This function uses a hypothetical new Node Provider, called Lionel Messi, that is interested in setting up new node machines in the Buenos Aires data center. Lionel Messi uses the data center entity Perron Corporation as the data center name. Note that all nodes are marked as  &amp;lt;code&amp;gt;is_sev = True&amp;lt;/code&amp;gt; which means that Gen2 node machines (with SEV SNP enabled) will be set up, and that  &amp;lt;code&amp;gt;no_nodes = 0&amp;lt;/code&amp;gt; so when running the current optimization tooling zero nodes will be added; the optimization tool will only use the existing IC topology to calculate the number of required Gen2 Nodes, defined as &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Now let’s add one node machine to the candidate node list of Lionel Messi. For this, the function is updated as follows:&lt;br /&gt;
 df_candidate_nodes = create_candidate_node_dataframe(node_provider =&#039;Lionel Messi&#039;, data_center =&#039;Buenos Aires&#039;, data_center_provider =&#039;Perron Corporation&#039;, country = &#039;AR&#039;, is_sev = True, no_nodes = 1)&lt;br /&gt;
Re-running the optimization model will generate (amongst others) the following output. As can be seen from the Node Provider topology Matrix, Lionel Messi is added as a node Provider with one node (which is the top orange block in the graph, and the bottom name in the Node Provider legenda on the right). &lt;br /&gt;
[[File:Validation of Candidate Node Machines - figure 2.png|alt=Validation of Candidate Node Machines - figure 2|center|thumb|800x800px|Validation of Candidate Node Machines - figure 2]]  &lt;br /&gt;
&lt;br /&gt;
The output also shows the data center being added to the Data Center topology. Again, the node is shown on the top (as the block block on second to the top) and the data center name is shown at the bottom of the data center legenda as Perron Corporation.  &lt;br /&gt;
&lt;br /&gt;
 [[File:Candidate Node Machine Validation - figure 3.png|center|thumb|800x800px|Validation of Candidate Node Machines - figure 3|alt=]]&lt;br /&gt;
More importantly, the node allocation per subnet is now showing an updated &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; with a value of 67, hence 67 more Gen2 node machines are required to reach the IC target topology. Compared to running the model without Lionel Messi’s candidate node machine, the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; is reduced from 68 (see beginning of this article) to 67, hence adding one extra node machine in Buenos Aires support the decentralization of the IC network. &lt;br /&gt;
&lt;br /&gt;
[[File:Validation of Canidate Node Machines - figure 4.png|center|thumb|800x800px|Validation of Candidate Node Machines - figure 4|alt=]]&lt;br /&gt;
&lt;br /&gt;
It would be interesting to validate whether adding additional node machines in Buenos Aires further support the decentralization of the IC. Let’s increase the number of candidate nodes from 1 to 4 by update the df_candidate_nodes function as follows:&lt;br /&gt;
 df_candidate_nodes = create_candidate_node_dataframe(node_provider =&#039;Lionel Messi&#039;, data_center =&#039;Buenos Aires&#039;, data_center_provider =&#039;Perron Corporation&#039;, country = &#039;AR&#039;, is_sev = True, no_nodes = 4)&lt;br /&gt;
The node allocation per subnet now shows an &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; with a value of 64, hence 64 more Gen2 node machines are required to reach the decentralization targets of the IC network. This is reduction from the original 68 required node machines with 4 node machines. Hence, the model shows that adding 4 candidate nodes in Buenos Aires still adds to the decentralization of the IC network. &lt;br /&gt;
&lt;br /&gt;
Further increasing the number of candidate nodes to 6 shows that decentralization of the IC network still improves. By adding 6 candidate nodes through the updated df_candidate_nodes function, the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; reduces to 62 from 68. &lt;br /&gt;
[[File:Validation of Candidate node Machines - figure 5.png|center|thumb|800x800px|Validation of Candidate Node Machines - figure 5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, adding 8 candidate node machines still improves decentralization, as the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; reduced to 60. &lt;br /&gt;
 df_candidate_nodes = create_candidate_node_dataframe(node_provider =&#039;Lionel Messi&#039;, data_center =&#039;Buenos Aires&#039;, data_center_provider =&#039;Perron Corporation&#039;, country = &#039;AR&#039;, is_sev = True, no_nodes = 8)&lt;br /&gt;
&lt;br /&gt;
 [[File:Validation of Candidate node Machines - figure 6.png|center|thumb|800x800px|Validation of Candidate Node Machines - figure 6]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However, if we increase the number of candidate node machines in Buenos Aires from 8 to 9, we notice that the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; does not reduce anymore. Hence, adding 8 node machines in Buenos Aires is the optimal solution for improving the decentralization targets. &lt;br /&gt;
 df_candidate_nodes = create_candidate_node_dataframe(node_provider =&#039;Lionel Messi&#039;, data_center =&#039;Buenos Aires&#039;, data_center_provider =&#039;Perron Corporation&#039;, country = &#039;AR&#039;, is_sev = True, no_nodes = 9)&lt;br /&gt;
[[File:Validation of Candidate Node Machines - figure 7.png|center|thumb|800x800px|Validation of Candidate Node Machines - figure 7]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be explained by the fact that most subnets (marked in blue in the Node Allocation subnet graph) are already optimized in terms of country limit, node provider limit, and data center limit. Only the subnets with blocks marked in red need additional node machines from unique countries, unique data centers and unique node providers. Adding 8 nodes achieves this. An additional ninth node machine cannot be added to any of the existing subnets in order to improve any of the country limits, data center limits and node provider limits.&lt;br /&gt;
&lt;br /&gt;
== Q&amp;amp;A ==&lt;br /&gt;
&lt;br /&gt;
* What is the maximum number of nodes for one country ?&lt;br /&gt;
** As per the agreed target topology  ([https://dashboard.internetcomputer.org/proposal/125549 proposal] link) the country subnet limit ranges between 2 and 3. Given that there are currently 40 subnets, once the proposed topology is fully implemented, each country will have the capacity to host between 80 and 120 nodes in total. This range is calculated by multiplying the number of subnets (40) by the per-subnet country limit (2 to 3).&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Validation_of_Candidate_Node_Machines&amp;diff=7572</id>
		<title>Validation of Candidate Node Machines</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Validation_of_Candidate_Node_Machines&amp;diff=7572"/>
		<updated>2024-03-01T19:04:44Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Background ==&lt;br /&gt;
In order to improve the decentralization network, an optimization model has been proposed on the forum (see [https://forum.dfinity.org/t/ic-topology-series-node-diversification-part-i/23402 node diversification part 1] and [https://forum.dfinity.org/t/ic-topology-node-diversification-part-ii/23553 node diversification part 2]) and also approved (see [https://dashboard.internetcomputer.org/proposal/125367 proposal 125367]). Given a certain target topology, the model optimizes between node rewards (onboarding of additional new nodes and rewards for existing nodes) and decentralization, calculating the minimum number of additional node machines required in order to achieve specific decentralization targets.&lt;br /&gt;
&lt;br /&gt;
The basis for the optimization model is a target IC topology for the next 6 to 12 months which may extend into Q1 2025 for contract ending for Gen1 node machines. This target topology has been proposed on the forum in [https://forum.dfinity.org/t/ic-topology-node-diversification-part-ii/23553 node diversification part 2], and approved by the community in [https://dashboard.internetcomputer.org/proposal/125549 proposal 125549] on 12th November 2023. This model sets targets for the number of Gen1 nodes and Gen2 nodes per subnet, and the decentralization coefficients (Nakamato coefficients) per subnet. &lt;br /&gt;
[[File:Validation Candidate Nodes - figure 1.png|center|thumb|800x800px|Validation of Candidate Node Machines - figure 1|alt=]] &lt;br /&gt;
&lt;br /&gt;
Running the optimization tool with the current topology will produce a graph like above, the red blocks showing the number of additional required node machines in order to reach the decentralization targets set in the IC Target Topology. The number of additional node machines required to reach the decentralization targets is visible in the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; which in the example graph is 68 additional Gen 2 node machines. &lt;br /&gt;
&lt;br /&gt;
With the optimization model and the IC Target Topology, the goal is to implement a transparent, objective and reproducible approach for node provider onboarding. Running the model with the existing IC topology and the number of new node machines intended to be onboarded, the model allows the proposer:&lt;br /&gt;
&lt;br /&gt;
* to verify whether adding additional nodes actually improves the decentralization, and &lt;br /&gt;
* allows the community to verify this improvement and vote on the proposal to add additional nodes.&lt;br /&gt;
&lt;br /&gt;
Below the steps are described to run the optimization model and verify any new proposal. An example is also given for a specific (fictional) proposal. &lt;br /&gt;
&lt;br /&gt;
== Basic starting points ==&lt;br /&gt;
There are a few basic starting points that everybody should be aware of when using the optimization tool and the IC Target Topology. First of all, using the model requires some basic knowledge of Python and Github, so please make sure to familiarize yourself with these before starting.&lt;br /&gt;
&lt;br /&gt;
In addition, it is important to note that the IC Target Topology is not fixed. It is voted in by the community as the target to be achieved within a certain timeframe. [https://dashboard.internetcomputer.org/proposal/125549 Proposal 125549] describes the target topology for the next half year/year, estimated on the current growth of the IC network. If expected growth should change, the community can decide to vote on an updated IC Target Topology with either more node machines or less node machines. Note that the Target IC Topology is intended to assess effectiveness of adding additional nodes, and identify potential nodes that are not relevant from a decentralization perspective. It does not assess or propose any changes in node rewards, which is a topic that the community discusses and votes upon separately. &lt;br /&gt;
&lt;br /&gt;
If target IC Topology is reached - meaning the &amp;lt;code&amp;gt;Objective Value&amp;lt;/code&amp;gt; in the optimization model has reached the value of zero, no new node machines should be onboarded. Hence, NNS proposals for increasing the Node Allowance or defining a new Node Allowance should be rejected by the community. Once a new IC Target topology is defined or (other) Node Providers have reduced their Node Allowance, the &amp;lt;code&amp;gt;Objective Value&amp;lt;/code&amp;gt; might increase again which would allow for new proposals to be submitted and approved. &lt;br /&gt;
== Steps to follow to assess node relevance ==&lt;br /&gt;
Assessing the relevance of adding new node machines using the optimization tool requires you to follow four basic steps:&lt;br /&gt;
&lt;br /&gt;
# Installing and running the latest version of the optimization tool&lt;br /&gt;
# Determining your candidate node configuration&lt;br /&gt;
# Updating your candidate nodes in the optimization tooling&lt;br /&gt;
# If adding new node machines is relevant, submitting the Node Operator proposal with the necessary background description.&lt;br /&gt;
&lt;br /&gt;
Each of these steps is discussed in detail below. &lt;br /&gt;
&lt;br /&gt;
=== Step 1 - downloading and installing the optimization tool ===&lt;br /&gt;
The optimization tool can be found in the following Github repository: https://github.com/dfinity/decentralization/. The repository is open sourced to allow the community to help improve the tooling with additional functionality and visualizations. &lt;br /&gt;
&lt;br /&gt;
To run the model. Please follow the following steps:&lt;br /&gt;
&lt;br /&gt;
* Find the repository on https://github.com/dfinity/decentralization/&lt;br /&gt;
* Either follow one of the following two approaches:&lt;br /&gt;
** Command Line approach - Follow the instructions as described in the README file, i.e.:&lt;br /&gt;
*** Clone the repository to you computer&lt;br /&gt;
*** Install [https://python-poetry.org/ Python Poetry]&lt;br /&gt;
*** Run the model in the command line as described in the README file&lt;br /&gt;
** Jupyter Notebook approach - Frequent Python users might have a preference for using [https://jupyter.org/ Jupyter Notebook]. If you want to use Jupyter notebook, you can follow the following steps:&lt;br /&gt;
*** Copy the code from the repository files and delete the import commands and main() sections from the separate python files (&amp;lt;code&amp;gt;data_preparation.py&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;helper_functions.py&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;linear_solver.py&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;visualization.py&amp;lt;/code&amp;gt;) &lt;br /&gt;
*** Run each file in subsequent cells in Jupyter notebook&lt;br /&gt;
*** You can subsequently rerun the model and adjust parameters using the interface of Jupyter notebook.&lt;br /&gt;
* Carefully read the forum posts on [https://forum.dfinity.org/t/ic-topology-series-node-diversification-part-i/23402 node diversification part 1] and [https://forum.dfinity.org/t/ic-topology-node-diversification-part-ii/23553 node diversification part 2] to understand the working of the tooling.&lt;br /&gt;
* Check the outcome of the model without making any updates to the model, in particular the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; as described above. As per 23 november 2023, the Objective Value should be similar to the graph shown above, with an additional 72 nodes needed to reach the target topology.&lt;br /&gt;
&lt;br /&gt;
=== Step 2 - determine your candidate node configuration ===&lt;br /&gt;
The internet computer dashboard shows the worldwide distribution of node machines. Based on this distribution, as a potential new Node Provider you can identify potential locations and data center providers for new node machines.&lt;br /&gt;
&lt;br /&gt;
For the Node Provider economics and understanding the costs and rewards for running a node machine, please look at the detailed NP documentation on the Internet Computer wiki pages, in particular those on [[Node Provider Machine Hardware Guide|hardware configuration]], [[Node Provider Data Center and ISP Guide|data center requirements]], and [[Node Provider Remuneration|node rewards]]. &lt;br /&gt;
&lt;br /&gt;
Once you have decided on potential data center locations and a potential number of new node machines that have viable economics, you can follow the following steps to add this candidate configuration to the optimization tool:&lt;br /&gt;
&lt;br /&gt;
* Collect the following information:&lt;br /&gt;
** The node provider name (if you are an existing node provider, use your existing Node Provider name)&lt;br /&gt;
** The data center name (if you are intending to add node machines to an existing data center, use the existing data center name)&lt;br /&gt;
** The data center provider name (if you are intending to use an existing data center provider, use the existing data center provider name)&lt;br /&gt;
** The country name (if you are intending to add node machines to an existing country, use the existing country name)&lt;br /&gt;
** The number of nodes you intend to onboard&lt;br /&gt;
&lt;br /&gt;
=== Step 3 - update the candidate node configuration in the optimization tooling ===&lt;br /&gt;
The optimization tool includes a function that allows candidate nodes to be added to the node configuration, and to run the optimization with including these candidate nodes. With the information collected in step 2, the following steps allow for the optimization tool to be run including the candidate nodes:&lt;br /&gt;
&lt;br /&gt;
* Updated the latest topology in the optimization tooling&lt;br /&gt;
** Find the df_candidate_nodes function in the &amp;lt;code&amp;gt;main.py&amp;lt;/code&amp;gt; of the ic_topology directory. &lt;br /&gt;
** You will see the following example entry: &amp;lt;code&amp;gt;df_candidate_nodes = create_candidate_node_dataframe(node_provider =&#039;Lionel Messi&#039;,data_center =&#039;Buenos Aires&#039;,data_center_provider =&#039;Perron Corporation&#039;,country = &#039;AR&#039;,is_sev = True,no_nodes = 0)&amp;lt;/code&amp;gt;&lt;br /&gt;
** Replace ‘Lionel Messi’ with the Node Provider name&lt;br /&gt;
** Replace ‘Buenos Aires’ with the data center name&lt;br /&gt;
** Replace ‘Perron Corporation’ with the data center provider name&lt;br /&gt;
** Replace ‘AR’ with the country name &lt;br /&gt;
** Replace “0” in no_nodes with the number of nodes intended to be onboarded.&lt;br /&gt;
* Run the model and determine the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt;:&lt;br /&gt;
** If the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; is lower compared to the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; without making changes to the df_candidate_nodes, it means that adding one or more new nodes is increasing the decentralization of the IC. It is important to note that every single node machine should help 1:1 to reduce the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt;. For, if the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; without adding any candidate nodes is 68, and 6 candidate nodes are added, the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; should reduce to 68 minus 6 is 62. If the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; is reduced to for example 66, only 2 candidate node machines will support further decentralization of the IC network, and no more than 2 candidate nodes should be added.&lt;br /&gt;
** If the ObjectiveValue is the same compared to the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; without making changes to the df_candidate_nodes, it means that adding one or more new nodes does not improve  the decentralization of the IC. &lt;br /&gt;
&lt;br /&gt;
=== Step 4 - Submitting a Node Operator Proposal ===&lt;br /&gt;
If the conclusion from step 3 is that adding node machines helps decentralization of the IC network, the final step is to prepare to submit a proposal for onboarding these nodes. Following are the steps to take in order to submit this proposal:&lt;br /&gt;
&lt;br /&gt;
* If you are not yet a Node Provider, please follow the steps on the [[Node Provider Onboarding|NP onboarding wiki page]] to submit a Node Provider Proposal. Please make sure to submit the self-declaration form and the identity-document as part of the proposal, as described in the instructions. &lt;br /&gt;
* If you are intending to onboard node machines in a new data center, follow the subsequent steps on the same [[Node Provider Onboarding|NP onboarding wiki page]] to submit a Data Center Proposal.&lt;br /&gt;
* Follow the steps on the same [[Node Provider Onboarding|NP onboarding wiki page]] to submit a Node Operator Proposal. The Node Operator Proposal should include the following input in the summary text:&lt;br /&gt;
** The number of nodes planned to be onboarded&lt;br /&gt;
** Node provider name (as per the public dashboard)&lt;br /&gt;
** The data center and country where nodes are to be onboarded&lt;br /&gt;
** Evidence of running the optimization model and providing reproducible feedback on decrease in &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt;. This can be done in the following way:&lt;br /&gt;
*** Upload a pdf with screenshots of running the optimization model to the wiki, on the page of your specific Node Provider self-declaration documentation.&lt;br /&gt;
*** Include the link to this pdf document and the hash of this document in the Node Operator Proposal.&lt;br /&gt;
*** Include/describe exactly the used input data and config the optimization model was run with.&lt;br /&gt;
*** Clearly state the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; before adding the candidate nodes&lt;br /&gt;
*** Clearly state the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; after adding the candidate nodes&lt;br /&gt;
* Complete the steps of the [[Node Provider Onboarding|NP onboarding wiki page]].&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
In the below example, an example is given how to use the optimization model to validate whether candidate nodes improve the decentralization of the IC network. In the optimization model code in the Github library, you will find a function df_candidate_nodes that is defined as follows:&lt;br /&gt;
 df_candidate_nodes = create_candidate_node_dataframe(node_provider =&#039;Lionel Messi&#039;, data_center =&#039;Buenos Aires&#039;, data_center_provider =&#039;Perron Corporation&#039;, country = &#039;AR&#039;, is_sev = True, no_nodes = 0)&lt;br /&gt;
This function uses a hypothetical new Node Provider, called Lionel Messi, that is interested in setting up new node machines in the Buenos Aires data center. Lionel Messi uses the data center entity Perron Corporation as the data center name. Note that all nodes are marked as  &amp;lt;code&amp;gt;is_sev = True&amp;lt;/code&amp;gt; which means that Gen2 node machines (with SEV SNP enabled) will be set up, and that  &amp;lt;code&amp;gt;no_nodes = 0&amp;lt;/code&amp;gt; so when running the current optimization tooling zero nodes will be added; the optimization tool will only use the existing IC topology to calculate the number of required Gen2 Nodes, defined as &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Now let’s add one node machine to the candidate node list of Lionel Messi. For this, the function is updated as follows:&lt;br /&gt;
 df_candidate_nodes = create_candidate_node_dataframe(node_provider =&#039;Lionel Messi&#039;, data_center =&#039;Buenos Aires&#039;, data_center_provider =&#039;Perron Corporation&#039;, country = &#039;AR&#039;, is_sev = True, no_nodes = 1)&lt;br /&gt;
Re-running the optimization model will generate (amongst others) the following output. As can be seen from the Node Provider topology Matrix, Lionel Messi is added as a node Provider with one node (which is the top orange block in the graph, and the bottom name in the Node Provider legenda on the right). &lt;br /&gt;
[[File:Validation of Candidate Node Machines - figure 2.png|alt=Validation of Candidate Node Machines - figure 2|center|thumb|800x800px|Validation of Candidate Node Machines - figure 2]]  &lt;br /&gt;
&lt;br /&gt;
The output also shows the data center being added to the Data Center topology. Again, the node is shown on the top (as the block block on second to the top) and the data center name is shown at the bottom of the data center legenda as Perron Corporation.  &lt;br /&gt;
&lt;br /&gt;
 [[File:Candidate Node Machine Validation - figure 3.png|center|thumb|800x800px|Validation of Candidate Node Machines - figure 3|alt=]]&lt;br /&gt;
More importantly, the node allocation per subnet is now showing an updated &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; with a value of 67, hence 67 more Gen2 node machines are required to reach the IC target topology. Compared to running the model without Lionel Messi’s candidate node machine, the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; is reduced from 68 (see beginning of this article) to 67, hence adding one extra node machine in Buenos Aires support the decentralization of the IC network. &lt;br /&gt;
&lt;br /&gt;
[[File:Validation of Canidate Node Machines - figure 4.png|center|thumb|800x800px|Validation of Candidate Node Machines - figure 4|alt=]]&lt;br /&gt;
&lt;br /&gt;
It would be interesting to validate whether adding additional node machines in Buenos Aires further support the decentralization of the IC. Let’s increase the number of candidate nodes from 1 to 4 by update the df_candidate_nodes function as follows:&lt;br /&gt;
 df_candidate_nodes = create_candidate_node_dataframe(node_provider =&#039;Lionel Messi&#039;, data_center =&#039;Buenos Aires&#039;, data_center_provider =&#039;Perron Corporation&#039;, country = &#039;AR&#039;, is_sev = True, no_nodes = 4)&lt;br /&gt;
The node allocation per subnet now shows an &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; with a value of 64, hence 64 more Gen2 node machines are required to reach the decentralization targets of the IC network. This is reduction from the original 68 required node machines with 4 node machines. Hence, the model shows that adding 4 candidate nodes in Buenos Aires still adds to the decentralization of the IC network. &lt;br /&gt;
&lt;br /&gt;
Further increasing the number of candidate nodes to 6 shows that decentralization of the IC network still improves. By adding 6 candidate nodes through the updated df_candidate_nodes function, the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; reduces to 62 from 68. &lt;br /&gt;
[[File:Validation of Candidate node Machines - figure 5.png|center|thumb|800x800px|Validation of Candidate Node Machines - figure 5]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, adding 8 candidate node machines still improves decentralization, as the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; reduced to 60. &lt;br /&gt;
 df_candidate_nodes = create_candidate_node_dataframe(node_provider =&#039;Lionel Messi&#039;, data_center =&#039;Buenos Aires&#039;, data_center_provider =&#039;Perron Corporation&#039;, country = &#039;AR&#039;, is_sev = True, no_nodes = 8)&lt;br /&gt;
&lt;br /&gt;
 [[File:Validation of Candidate node Machines - figure 6.png|center|thumb|800x800px|Validation of Candidate Node Machines - figure 6]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However, if we increase the number of candidate node machines in Buenos Aires from 8 to 9, we notice that the &amp;lt;code&amp;gt;ObjectiveValue&amp;lt;/code&amp;gt; does not reduce anymore. Hence, adding 8 node machines in Buenos Aires is the optimal solution for improving the decentralization targets. &lt;br /&gt;
 df_candidate_nodes = create_candidate_node_dataframe(node_provider =&#039;Lionel Messi&#039;, data_center =&#039;Buenos Aires&#039;, data_center_provider =&#039;Perron Corporation&#039;, country = &#039;AR&#039;, is_sev = True, no_nodes = 9)&lt;br /&gt;
[[File:Validation of Candidate Node Machines - figure 7.png|center|thumb|800x800px|Validation of Candidate Node Machines - figure 7]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This can be explained by the fact that most subnets (marked in blue in the Node Allocation subnet graph) are already optimized in terms of country limit, node provider limit, and data center limit. Only the subnets with blocks marked in red need additional node machines from unique countries, unique data centers and unique node providers. Adding 8 nodes achieves this. An additional ninth node machine cannot be added to any of the existing subnets in order to improve any of the country limits, data center limits and node provider limits.&lt;br /&gt;
&lt;br /&gt;
== Q&amp;amp;A ==&lt;br /&gt;
&lt;br /&gt;
* What is the maximum number of nodes for one country ?&lt;br /&gt;
** As per the agreed target topology (see [https://dashboard.internetcomputer.org/proposal/125549 proposal]) the country subnet limit ranges between 2 and 3. Given that there are currently 40 subnets, once the proposed topology is fully implemented, each country will have the capacity to host between 80 and 120 nodes in total. This range is calculated by multiplying the number of subnets (40) by the per-subnet node capacity (2 to 3).&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6951</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6951"/>
		<updated>2023-12-24T10:41:58Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
The purpose of this page is to gather information that assists teams in selecting a tokenomics structure for their SNS DAO. Additionally, it aims to aid potential SNS DAO participants in evaluating the proposed tokenomics configurations of an SNS.&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics set-up ==&lt;br /&gt;
The &#039;&#039;&#039;SNS governance framework&#039;&#039;&#039; is a customizable version of the NNS framework. All its parameters can be set in the [https://github.com/dfinity/ic/blob/master/rs/sns/cli/sns_init_template.yaml SNS initialization file], which also contains a comprehensive guide to these settings. For more detailed information about &#039;&#039;&#039;SNS rewards&#039;&#039;&#039;, please refer to this [https://internetcomputer.org/docs/current/developer-docs/integrations/sns/tokenomics/rewards link]. &lt;br /&gt;
&lt;br /&gt;
== SNS decentralization swap ==&lt;br /&gt;
In the &#039;&#039;&#039;[https://internetcomputer.org/sns/faq#what-is-a-decentralization-swap SNS decentralization swap]&#039;&#039;&#039;, community members have two ways to get involved. One is &#039;&#039;&#039;direct participation&#039;&#039;&#039;, where they can exchange their ICP for SNS tokens.&lt;br /&gt;
&lt;br /&gt;
Alternatively, community members can engage indirectly through the &#039;&#039;&#039;Neurons&#039; Fund&#039;&#039;&#039; (NF). The extent of the NF&#039;s involvement in a specific SNS swap is decided by the [https://wiki.internetcomputer.org/wiki/Matched_Funding Matched Funding scheme]. This scheme correlates the &#039;&#039;&#039;fund participation&#039;&#039;&#039; with the level of direct participation. For more details on the Neurons&#039; Fund, visit this [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund/ link].&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics analyzer ==&lt;br /&gt;
Use this [https://github.com/dfinity/sns-testing/tree/main/sns_tokenomics_analyzer Python app] to evaluate SNS tokenomics configurations. The tool takes as an input an SNS init file and allows  to simulate different levels of direct participation and its impact on key factors&lt;br /&gt;
&lt;br /&gt;
* Token Price Range: Displays the potential exchange rate range between ICP and SNS tokens.&lt;br /&gt;
* Matched Funding: Estimates the Neurons&#039; Fund contribution as a function of the simulated direct participation and the overall size of the Neurons&#039; Fund. &lt;br /&gt;
* Token Distribution: Shows how tokens are allocated between treasury, swap participants and the development team.&lt;br /&gt;
* Voting Power Assessment: Provides a visual representation of the voting power across the community (swap participants) and the developer team. &lt;br /&gt;
[[File:SNS Tokenomics Analyzer.png|center|thumb|900x900px]]&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;How many and what kind of neurons do you receive when directly participating in an SNS swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;In an SNS initialization, a project defines the number of SNS neurons and their dissolve delay range. For instance, a neuron basket with 3 neurons and a 1-month interval will result in neurons with dissolve delays of 0, 1, and 2 months.&amp;quot;&lt;br /&gt;
* &#039;&#039;How precisely do the minimum and maximum funding targets influence the swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;The swap fails if the minimum funding target is not met within the swap window. Conversely, if the maximum funding is reached, the swap concludes immediately.&amp;quot;&lt;br /&gt;
** &amp;quot;Please note: The minimum and maximum funding target are specified with respect to the direct participation only!&amp;quot;  &lt;br /&gt;
* &#039;&#039;What should projects consider when setting the minimum and maximum funding targets?&#039;&#039;&lt;br /&gt;
** &amp;quot;Set a realistic maximum funding target to create scarcity and drive token demand, as reaching this target ends the swap, possibly excluding some participants. A very high maximum can lead to a post-launch price drop, while a very low maximum might limit participation and miss funding opportunities.&amp;quot;&lt;br /&gt;
* &#039;&#039;What considerations are there when choosing the minimum stake of SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum stake is the lowest amount of SNS tokens required for a neuron. A lower value increases accessibility for those wanting to participate with fewer tokens. However, with a technical limit of 200K neurons in an SNS, a very low minimum stake might lead to too many small neurons.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should be considered when setting the minimum dissolve delay for SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum dissolve delay is crucial for voting eligibility. It encourages prudent, long-term voting as tokens are locked up. It also offers some defense against attacks, especially those funded by borrowed resources. However, if an attacker gains 51% of the voting power, the minimum staking period becomes irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Further background material == &lt;br /&gt;
* Overall intro to SNS https://internetcomputer.org/sns/&lt;br /&gt;
* Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=6818</id>
		<title>Matched Funding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=6818"/>
		<updated>2023-12-04T13:07:35Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
This wiki page describes the ‘Matched Funding’ scheme, in which the contribution of the Neurons’ Fund to SNS swaps scales in line with direct participation, allowing for a more accurate reflection of market signals.&lt;br /&gt;
&lt;br /&gt;
In addition, the page also outlines the separation of contributions from direct participants and the Neurons’ Fund. In the Matched Funding framework,  the minimum and maximum funding targets of an SNS swap are specifically set for direct participation. This means that the success of a swap only depends on the level of direct participation, not the contributions from the Neurons’ Fund.&lt;br /&gt;
&lt;br /&gt;
== The Matching function, f ==&lt;br /&gt;
&lt;br /&gt;
The scheme is implemented through a matching function &#039;&#039;f&#039;&#039;, where the input &#039;&#039;x&#039;&#039; represents the amount of direct participation, and the output &#039;&#039;f(x)&#039;&#039; denotes the corresponding contribution from the Neurons&#039; Fund (NF).&lt;br /&gt;
&lt;br /&gt;
The function &#039;&#039;f&#039;&#039; is designed to have three distinct phases and will be a continuous function to ensure a smooth transition between these phases. Importantly, the rules for these phases will be globally consistent, applicable to all SNS launches.&lt;br /&gt;
&lt;br /&gt;
* Initial Lag Phase (I): The function starts at 0, and grows slowly until it reaches a set threshold. This design encourages projects to accumulate enough direct participation before receiving substantial contributions from the NF.&lt;br /&gt;
* Growth Phase (II): After crossing the threshold, the NF&#039;s contribution increases at a faster rate, signifying more significant support for projects that have demonstrated viability through direct participation.&lt;br /&gt;
* Saturation Phase (III): Beyond a certain point, &#039;&#039;f(x)&#039;&#039; will level off and will not surpass 10% of the NF&#039;s total maturity, which ensures that no single SNS will excessively deplete the NF&#039;s resources.&lt;br /&gt;
* Bounding Condition: The matching function &#039;&#039;f(x)&#039;&#039; is bounded by &#039;&#039;g(x)=x&#039;&#039;, meaning that it will never exceed a 1:1 ratio with &#039;&#039;x&#039;&#039;. In practical terms, the NF&#039;s contribution will always be less than or equal to the amount of direct participation.&lt;br /&gt;
* Audability: The shape of &#039;&#039;f&#039;&#039; (which can change over time due to varying NF size) should be audible.&lt;br /&gt;
&lt;br /&gt;
These design principles aim  to create a fair and sustainable system for allocating NF contributions to various SNS initiatives.&lt;br /&gt;
&lt;br /&gt;
== Benefits of matched funding ==&lt;br /&gt;
&lt;br /&gt;
=== Better Reflection of Market Signals ===&lt;br /&gt;
&lt;br /&gt;
The matched funding system is designed to closely align with market sentiment. Specifically, a project that successfully raises more direct contributions will correspondingly receive a greater contribution from the Neurons&#039; Fund (NF), up to a predetermined threshold.&lt;br /&gt;
&lt;br /&gt;
=== Simpler Decision-making for NF NNS Neurons ===&lt;br /&gt;
&lt;br /&gt;
The automated adjustment feature in the NF&#039;s contributions lessens the decision-making burden on NF NNS neurons. As a result, these neurons have fewer instances where they need to opt out, making the process more efficient.&lt;br /&gt;
&lt;br /&gt;
=== Improved Incentives for Projects ===&lt;br /&gt;
&lt;br /&gt;
The matching system provides a more compelling incentive structure for projects. Knowing that increased direct funding will be matched (up to a point) by the NF, encourages projects to be more proactive in their fundraising efforts.&lt;br /&gt;
&lt;br /&gt;
== Detailed specification of the matching function ==&lt;br /&gt;
[[File:Matching function.png|thumb|Graph of the matching function|alt=|900x900px]]&lt;br /&gt;
=== Cap ===&lt;br /&gt;
&lt;br /&gt;
The contribution should be capped by 10% of the NF maturity at proposal execution time and also by a global NF contribution cap being equivalent to 1M XDR and thus 333k ICP. In other words we have cap = min (10% of NF maturity, global NF contribution cap)&lt;br /&gt;
&lt;br /&gt;
The global NF contribution cap should be a configurable parameter of the NNS and eventually it should be specified in units of XDR.&lt;br /&gt;
&lt;br /&gt;
=== Thresholds ===&lt;br /&gt;
&lt;br /&gt;
For specifying the shape of the matching function &#039;&#039;f&#039;&#039;, we define the following thresholds&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: Up to this point, a project receives no contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: Projects get a 2:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: Projects receive a 1:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_4&#039;&#039; = 2 * cap: Projects get a 2:1 contribution from the NF. (and afterwards the contribution of the NF remains flat).&lt;br /&gt;
&lt;br /&gt;
The thresholds should be configurable parameters of the NNS. For example they could be part of the NetworkEconomics record.&lt;br /&gt;
&lt;br /&gt;
Eventually, it should be possible to specify these thresholds in XDR and then convert them to ICP thresholds at the execution of the SNS swap proposal. For the initial implementation, it is sufficient to have these thresholds in ICP.&lt;br /&gt;
&lt;br /&gt;
For the time being, the following values are suggested&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: 100k XDR corresponding to 33k ICP&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: 300k XDR corresponding to 100k ICP&lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: 500k XDR corresponding to 167k ICP&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Matching function polynomials ===&lt;br /&gt;
The matching should be realized by set of polynomials&lt;br /&gt;
&lt;br /&gt;
* f_1: for function values between t_1 and t_2 &lt;br /&gt;
* f_2: for function values between t_2 and t_3&lt;br /&gt;
* f_3: for function values between t_3 and t_4. &lt;br /&gt;
&lt;br /&gt;
Formulas for the polynomials can be derived from constraints listed above on the functions f and f’.  &lt;br /&gt;
&lt;br /&gt;
== Clearer separation of contributions ==&lt;br /&gt;
Feedback from both SNS projects and users has highlighted the need for a clearer separation between contributions from direct participants and those from the NF. This is now realized in two areas:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Proposal Structure:&#039;&#039;&#039; Instead of specifying the overall minimum and maximum funding target, projects have the ability to set distinct minimum and maximum funding targets specifically for direct participation, which is the only factor determining whether the swap succeeds. The contribution from the NF is then added to this base amount, determined by a well-defined model (as per the matching function discussed above).&lt;br /&gt;
# &#039;&#039;&#039;User Transparency in the SNS Launchpad:&#039;&#039;&#039; During the swap, contributions from direct participants and the NF are displayed separately for transparency, within the NNS dapp’s SNS launchpad.&lt;br /&gt;
&lt;br /&gt;
== Benefits of the clearer separation ==&lt;br /&gt;
&lt;br /&gt;
* Transparency in Success Metrics: The success of the swap is directly and transparently linked to the amount raised through direct participation.&lt;br /&gt;
* More freedom to define funding target range: Projects can set a more flexible range for minimum and maximum funding targets without having to factor in the NF contribution, offering more leeway than in the current system where the NF contribution affects these limit (e.g. because the fixed NF contribution should exceed more than 66% of the minimum funding target).&lt;br /&gt;
* User Clarity: Users will be able to easily see the amount of direct participation already collected during the swap, as well as the anticipated NF contribution.&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=6817</id>
		<title>Matched Funding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=6817"/>
		<updated>2023-12-04T13:07:11Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
This wiki page describes the ‘Matched Funding’ scheme, in which the contribution of the Neurons’ Fund to SNS swaps scales in line with direct participation, allowing for a more accurate reflection of market signals.&lt;br /&gt;
&lt;br /&gt;
In addition, the page also outlines the separation of contributions from direct participants and the Neurons’ Fund. In the Matched Funding framework,  the minimum and maximum funding targets of a swap are specifically set for direct participation. This means that the success of a swap only depends on the level of direct participation, not the contributions from the Neurons’ Fund.&lt;br /&gt;
&lt;br /&gt;
== The Matching function, f ==&lt;br /&gt;
&lt;br /&gt;
The scheme is implemented through a matching function &#039;&#039;f&#039;&#039;, where the input &#039;&#039;x&#039;&#039; represents the amount of direct participation, and the output &#039;&#039;f(x)&#039;&#039; denotes the corresponding contribution from the Neurons&#039; Fund (NF).&lt;br /&gt;
&lt;br /&gt;
The function &#039;&#039;f&#039;&#039; is designed to have three distinct phases and will be a continuous function to ensure a smooth transition between these phases. Importantly, the rules for these phases will be globally consistent, applicable to all SNS launches.&lt;br /&gt;
&lt;br /&gt;
* Initial Lag Phase (I): The function starts at 0, and grows slowly until it reaches a set threshold. This design encourages projects to accumulate enough direct participation before receiving substantial contributions from the NF.&lt;br /&gt;
* Growth Phase (II): After crossing the threshold, the NF&#039;s contribution increases at a faster rate, signifying more significant support for projects that have demonstrated viability through direct participation.&lt;br /&gt;
* Saturation Phase (III): Beyond a certain point, &#039;&#039;f(x)&#039;&#039; will level off and will not surpass 10% of the NF&#039;s total maturity, which ensures that no single SNS will excessively deplete the NF&#039;s resources.&lt;br /&gt;
* Bounding Condition: The matching function &#039;&#039;f(x)&#039;&#039; is bounded by &#039;&#039;g(x)=x&#039;&#039;, meaning that it will never exceed a 1:1 ratio with &#039;&#039;x&#039;&#039;. In practical terms, the NF&#039;s contribution will always be less than or equal to the amount of direct participation.&lt;br /&gt;
* Audability: The shape of &#039;&#039;f&#039;&#039; (which can change over time due to varying NF size) should be audible.&lt;br /&gt;
&lt;br /&gt;
These design principles aim  to create a fair and sustainable system for allocating NF contributions to various SNS initiatives.&lt;br /&gt;
&lt;br /&gt;
== Benefits of matched funding ==&lt;br /&gt;
&lt;br /&gt;
=== Better Reflection of Market Signals ===&lt;br /&gt;
&lt;br /&gt;
The matched funding system is designed to closely align with market sentiment. Specifically, a project that successfully raises more direct contributions will correspondingly receive a greater contribution from the Neurons&#039; Fund (NF), up to a predetermined threshold.&lt;br /&gt;
&lt;br /&gt;
=== Simpler Decision-making for NF NNS Neurons ===&lt;br /&gt;
&lt;br /&gt;
The automated adjustment feature in the NF&#039;s contributions lessens the decision-making burden on NF NNS neurons. As a result, these neurons have fewer instances where they need to opt out, making the process more efficient.&lt;br /&gt;
&lt;br /&gt;
=== Improved Incentives for Projects ===&lt;br /&gt;
&lt;br /&gt;
The matching system provides a more compelling incentive structure for projects. Knowing that increased direct funding will be matched (up to a point) by the NF, encourages projects to be more proactive in their fundraising efforts.&lt;br /&gt;
&lt;br /&gt;
== Detailed specification of the matching function ==&lt;br /&gt;
[[File:Matching function.png|thumb|Graph of the matching function|alt=|900x900px]]&lt;br /&gt;
=== Cap ===&lt;br /&gt;
&lt;br /&gt;
The contribution should be capped by 10% of the NF maturity at proposal execution time and also by a global NF contribution cap being equivalent to 1M XDR and thus 333k ICP. In other words we have cap = min (10% of NF maturity, global NF contribution cap)&lt;br /&gt;
&lt;br /&gt;
The global NF contribution cap should be a configurable parameter of the NNS and eventually it should be specified in units of XDR.&lt;br /&gt;
&lt;br /&gt;
=== Thresholds ===&lt;br /&gt;
&lt;br /&gt;
For specifying the shape of the matching function &#039;&#039;f&#039;&#039;, we define the following thresholds&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: Up to this point, a project receives no contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: Projects get a 2:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: Projects receive a 1:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_4&#039;&#039; = 2 * cap: Projects get a 2:1 contribution from the NF. (and afterwards the contribution of the NF remains flat).&lt;br /&gt;
&lt;br /&gt;
The thresholds should be configurable parameters of the NNS. For example they could be part of the NetworkEconomics record.&lt;br /&gt;
&lt;br /&gt;
Eventually, it should be possible to specify these thresholds in XDR and then convert them to ICP thresholds at the execution of the SNS swap proposal. For the initial implementation, it is sufficient to have these thresholds in ICP.&lt;br /&gt;
&lt;br /&gt;
For the time being, the following values are suggested&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: 100k XDR corresponding to 33k ICP&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: 300k XDR corresponding to 100k ICP&lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: 500k XDR corresponding to 167k ICP&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Matching function polynomials ===&lt;br /&gt;
The matching should be realized by set of polynomials&lt;br /&gt;
&lt;br /&gt;
* f_1: for function values between t_1 and t_2 &lt;br /&gt;
* f_2: for function values between t_2 and t_3&lt;br /&gt;
* f_3: for function values between t_3 and t_4. &lt;br /&gt;
&lt;br /&gt;
Formulas for the polynomials can be derived from constraints listed above on the functions f and f’.  &lt;br /&gt;
&lt;br /&gt;
== Clearer separation of contributions ==&lt;br /&gt;
Feedback from both SNS projects and users has highlighted the need for a clearer separation between contributions from direct participants and those from the NF. This is now realized in two areas:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Proposal Structure:&#039;&#039;&#039; Instead of specifying the overall minimum and maximum funding target, projects have the ability to set distinct minimum and maximum funding targets specifically for direct participation, which is the only factor determining whether the swap succeeds. The contribution from the NF is then added to this base amount, determined by a well-defined model (as per the matching function discussed above).&lt;br /&gt;
# &#039;&#039;&#039;User Transparency in the SNS Launchpad:&#039;&#039;&#039; During the swap, contributions from direct participants and the NF are displayed separately for transparency, within the NNS dapp’s SNS launchpad.&lt;br /&gt;
&lt;br /&gt;
== Benefits of the clearer separation ==&lt;br /&gt;
&lt;br /&gt;
* Transparency in Success Metrics: The success of the swap is directly and transparently linked to the amount raised through direct participation.&lt;br /&gt;
* More freedom to define funding target range: Projects can set a more flexible range for minimum and maximum funding targets without having to factor in the NF contribution, offering more leeway than in the current system where the NF contribution affects these limit (e.g. because the fixed NF contribution should exceed more than 66% of the minimum funding target).&lt;br /&gt;
* User Clarity: Users will be able to easily see the amount of direct participation already collected during the swap, as well as the anticipated NF contribution.&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=6816</id>
		<title>Matched Funding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=6816"/>
		<updated>2023-12-04T13:06:50Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
This wiki page describes the ‘Matched Funding’ scheme, in which the contribution of the Neurons’ Fund to SNS swaps scales in line with direct participation, allowing for a more accurate reflection of market signals.&lt;br /&gt;
&lt;br /&gt;
In addition, the page also outlines the separation of contributions from direct participants and the Neurons’ Fund. In the Matched funding framework,  the minimum and maximum funding targets of a swap are specifically set for direct participation. This means that the success of a swap only depends on the level of direct participation, not the contributions from the Neurons’ Fund.&lt;br /&gt;
&lt;br /&gt;
== The Matching function, f ==&lt;br /&gt;
&lt;br /&gt;
The scheme is implemented through a matching function &#039;&#039;f&#039;&#039;, where the input &#039;&#039;x&#039;&#039; represents the amount of direct participation, and the output &#039;&#039;f(x)&#039;&#039; denotes the corresponding contribution from the Neurons&#039; Fund (NF).&lt;br /&gt;
&lt;br /&gt;
The function &#039;&#039;f&#039;&#039; is designed to have three distinct phases and will be a continuous function to ensure a smooth transition between these phases. Importantly, the rules for these phases will be globally consistent, applicable to all SNS launches.&lt;br /&gt;
&lt;br /&gt;
* Initial Lag Phase (I): The function starts at 0, and grows slowly until it reaches a set threshold. This design encourages projects to accumulate enough direct participation before receiving substantial contributions from the NF.&lt;br /&gt;
* Growth Phase (II): After crossing the threshold, the NF&#039;s contribution increases at a faster rate, signifying more significant support for projects that have demonstrated viability through direct participation.&lt;br /&gt;
* Saturation Phase (III): Beyond a certain point, &#039;&#039;f(x)&#039;&#039; will level off and will not surpass 10% of the NF&#039;s total maturity, which ensures that no single SNS will excessively deplete the NF&#039;s resources.&lt;br /&gt;
* Bounding Condition: The matching function &#039;&#039;f(x)&#039;&#039; is bounded by &#039;&#039;g(x)=x&#039;&#039;, meaning that it will never exceed a 1:1 ratio with &#039;&#039;x&#039;&#039;. In practical terms, the NF&#039;s contribution will always be less than or equal to the amount of direct participation.&lt;br /&gt;
* Audability: The shape of &#039;&#039;f&#039;&#039; (which can change over time due to varying NF size) should be audible.&lt;br /&gt;
&lt;br /&gt;
These design principles aim  to create a fair and sustainable system for allocating NF contributions to various SNS initiatives.&lt;br /&gt;
&lt;br /&gt;
== Benefits of matched funding ==&lt;br /&gt;
&lt;br /&gt;
=== Better Reflection of Market Signals ===&lt;br /&gt;
&lt;br /&gt;
The matched funding system is designed to closely align with market sentiment. Specifically, a project that successfully raises more direct contributions will correspondingly receive a greater contribution from the Neurons&#039; Fund (NF), up to a predetermined threshold.&lt;br /&gt;
&lt;br /&gt;
=== Simpler Decision-making for NF NNS Neurons ===&lt;br /&gt;
&lt;br /&gt;
The automated adjustment feature in the NF&#039;s contributions lessens the decision-making burden on NF NNS neurons. As a result, these neurons have fewer instances where they need to opt out, making the process more efficient.&lt;br /&gt;
&lt;br /&gt;
=== Improved Incentives for Projects ===&lt;br /&gt;
&lt;br /&gt;
The matching system provides a more compelling incentive structure for projects. Knowing that increased direct funding will be matched (up to a point) by the NF, encourages projects to be more proactive in their fundraising efforts.&lt;br /&gt;
&lt;br /&gt;
== Detailed specification of the matching function ==&lt;br /&gt;
[[File:Matching function.png|thumb|Graph of the matching function|alt=|900x900px]]&lt;br /&gt;
=== Cap ===&lt;br /&gt;
&lt;br /&gt;
The contribution should be capped by 10% of the NF maturity at proposal execution time and also by a global NF contribution cap being equivalent to 1M XDR and thus 333k ICP. In other words we have cap = min (10% of NF maturity, global NF contribution cap)&lt;br /&gt;
&lt;br /&gt;
The global NF contribution cap should be a configurable parameter of the NNS and eventually it should be specified in units of XDR.&lt;br /&gt;
&lt;br /&gt;
=== Thresholds ===&lt;br /&gt;
&lt;br /&gt;
For specifying the shape of the matching function &#039;&#039;f&#039;&#039;, we define the following thresholds&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: Up to this point, a project receives no contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: Projects get a 2:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: Projects receive a 1:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_4&#039;&#039; = 2 * cap: Projects get a 2:1 contribution from the NF. (and afterwards the contribution of the NF remains flat).&lt;br /&gt;
&lt;br /&gt;
The thresholds should be configurable parameters of the NNS. For example they could be part of the NetworkEconomics record.&lt;br /&gt;
&lt;br /&gt;
Eventually, it should be possible to specify these thresholds in XDR and then convert them to ICP thresholds at the execution of the SNS swap proposal. For the initial implementation, it is sufficient to have these thresholds in ICP.&lt;br /&gt;
&lt;br /&gt;
For the time being, the following values are suggested&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: 100k XDR corresponding to 33k ICP&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: 300k XDR corresponding to 100k ICP&lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: 500k XDR corresponding to 167k ICP&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Matching function polynomials ===&lt;br /&gt;
The matching should be realized by set of polynomials&lt;br /&gt;
&lt;br /&gt;
* f_1: for function values between t_1 and t_2 &lt;br /&gt;
* f_2: for function values between t_2 and t_3&lt;br /&gt;
* f_3: for function values between t_3 and t_4. &lt;br /&gt;
&lt;br /&gt;
Formulas for the polynomials can be derived from constraints listed above on the functions f and f’.  &lt;br /&gt;
&lt;br /&gt;
== Clearer separation of contributions ==&lt;br /&gt;
Feedback from both SNS projects and users has highlighted the need for a clearer separation between contributions from direct participants and those from the NF. This is now realized in two areas:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Proposal Structure:&#039;&#039;&#039; Instead of specifying the overall minimum and maximum funding target, projects have the ability to set distinct minimum and maximum funding targets specifically for direct participation, which is the only factor determining whether the swap succeeds. The contribution from the NF is then added to this base amount, determined by a well-defined model (as per the matching function discussed above).&lt;br /&gt;
# &#039;&#039;&#039;User Transparency in the SNS Launchpad:&#039;&#039;&#039; During the swap, contributions from direct participants and the NF are displayed separately for transparency, within the NNS dapp’s SNS launchpad.&lt;br /&gt;
&lt;br /&gt;
== Benefits of the clearer separation ==&lt;br /&gt;
&lt;br /&gt;
* Transparency in Success Metrics: The success of the swap is directly and transparently linked to the amount raised through direct participation.&lt;br /&gt;
* More freedom to define funding target range: Projects can set a more flexible range for minimum and maximum funding targets without having to factor in the NF contribution, offering more leeway than in the current system where the NF contribution affects these limit (e.g. because the fixed NF contribution should exceed more than 66% of the minimum funding target).&lt;br /&gt;
* User Clarity: Users will be able to easily see the amount of direct participation already collected during the swap, as well as the anticipated NF contribution.&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6800</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6800"/>
		<updated>2023-11-30T13:55:45Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
The purpose of this page is to gather information that assists teams in selecting a tokenomics structure for their SNS DAO. Additionally, it aims to aid potential SNS DAO participants in evaluating the proposed tokenomics configurations of an SNS.&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics set-up ==&lt;br /&gt;
The &#039;&#039;&#039;SNS governance framework&#039;&#039;&#039; is a customizable version of the NNS framework. All its parameters can be set in the [https://github.com/dfinity/ic/blob/master/rs/sns/cli/sns_init_template.yaml SNS initialization file], which also contains a comprehensive guide to these settings. For more detailed information about &#039;&#039;&#039;SNS rewards&#039;&#039;&#039;, please refer to this [https://internetcomputer.org/docs/current/developer-docs/integrations/sns/tokenomics/rewards link]. &lt;br /&gt;
&lt;br /&gt;
== SNS decentralization swap ==&lt;br /&gt;
In the &#039;&#039;&#039;[https://internetcomputer.org/sns/faq#what-is-a-decentralization-swap SNS decentralization swap]&#039;&#039;&#039;, community members have two ways to get involved. One is &#039;&#039;&#039;direct participation&#039;&#039;&#039;, where they can exchange their ICP for SNS tokens.&lt;br /&gt;
&lt;br /&gt;
Alternatively, community members can engage indirectly through the &#039;&#039;&#039;Neurons&#039; Fund&#039;&#039;&#039; (NF). The extent of the NF&#039;s involvement in a specific SNS swap is decided by the [https://wiki.internetcomputer.org/wiki/Matched_Funding Matched Funding scheme]. This scheme correlates the &#039;&#039;&#039;fund participation&#039;&#039;&#039; with the level of direct participation. For more details on the Neurons&#039; Fund, visit this [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund/ link].&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics analyzer ==&lt;br /&gt;
Use this [https://github.com/dfinity/sns-testing/tree/main/sns_tokenomics_analyzer Python app] to evaluate SNS tokenomics configurations. The tool takes as an input an SNS init file and allows  to simulate different levels of direct participation and its impact on key factors&lt;br /&gt;
&lt;br /&gt;
* Token Price Range: Displays the potential exchange rate range between ICP and SNS tokens.&lt;br /&gt;
* Matched Funding: Estimates the Neurons&#039; Fund contribution as a function of the simulated direct participation and the overall size of the Neurons&#039; Fund. &lt;br /&gt;
* Token Distribution: Shows how tokens are allocated between treasury, swap participants and the development team.&lt;br /&gt;
* Voting Power Assessment: Provides a visual representation of the voting power across the community (swap participants) and the developer team. &lt;br /&gt;
[[File:SNS Tokenomics Analyzer.png|center|thumb|900x900px]]&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;How many and what kind of neurons do you receive when directly participating in an SNS swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;In an SNS initialization, a project defines the number of SNS neurons and their dissolve delay range. For instance, a neuron basket with 3 neurons and a 1-month interval will result in neurons with dissolve delays of 0, 1, and 2 months.&amp;quot;&lt;br /&gt;
* &#039;&#039;How precisely do the minimum and maximum funding targets influence the swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;The swap fails if the minimum funding target is not met within the swap window. Conversely, if the maximum funding is reached, the swap concludes immediately.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should projects consider when setting the minimum and maximum funding targets?&#039;&#039;&lt;br /&gt;
** &amp;quot;Set a realistic maximum funding target to create scarcity and drive token demand, as reaching this target ends the swap, possibly excluding some participants. A very high maximum can lead to a post-launch price drop, while a very low maximum might limit participation and miss funding opportunities.&amp;quot;&lt;br /&gt;
* &#039;&#039;What considerations are there when choosing the minimum stake of SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum stake is the lowest amount of SNS tokens required for a neuron. A lower value increases accessibility for those wanting to participate with fewer tokens. However, with a technical limit of 200K neurons in an SNS, a very low minimum stake might lead to too many small neurons.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should be considered when setting the minimum dissolve delay for SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum dissolve delay is crucial for voting eligibility. It encourages prudent, long-term voting as tokens are locked up. It also offers some defense against attacks, especially those funded by borrowed resources. However, if an attacker gains 51% of the voting power, the minimum staking period becomes irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Further background material == &lt;br /&gt;
* Overall intro to SNS https://internetcomputer.org/sns/&lt;br /&gt;
* Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=6762</id>
		<title>Matched Funding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=6762"/>
		<updated>2023-11-28T11:29:34Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
This wiki page describes the ‘Matched Funding’ scheme, in which the contribution of the Neurons’ Fund to SNS swaps scales in line with direct participation, allowing for a more accurate reflection of market signals.&lt;br /&gt;
&lt;br /&gt;
== The Matching function, f ==&lt;br /&gt;
&lt;br /&gt;
The scheme is implemented through a matching function &#039;&#039;f&#039;&#039;, where the input &#039;&#039;x&#039;&#039; represents the amount of direct participation, and the output &#039;&#039;f(x)&#039;&#039; denotes the corresponding contribution from the Neurons&#039; Fund (NF).&lt;br /&gt;
&lt;br /&gt;
The function &#039;&#039;f&#039;&#039; is designed to have three distinct phases and will be a continuous function to ensure a smooth transition between these phases. Importantly, the rules for these phases will be globally consistent, applicable to all SNS launches.&lt;br /&gt;
&lt;br /&gt;
* Initial Lag Phase (I): The function starts at 0, and grows slowly until it reaches a set threshold. This design encourages projects to accumulate enough direct participation before receiving substantial contributions from the NF.&lt;br /&gt;
* Growth Phase (II): After crossing the threshold, the NF&#039;s contribution increases at a faster rate, signifying more significant support for projects that have demonstrated viability through direct participation.&lt;br /&gt;
* Saturation Phase (III): Beyond a certain point, &#039;&#039;f(x)&#039;&#039; will level off and will not surpass 10% of the NF&#039;s total maturity, which ensures that no single SNS will excessively deplete the NF&#039;s resources.&lt;br /&gt;
* Bounding Condition: The matching function &#039;&#039;f(x)&#039;&#039; is bounded by &#039;&#039;g(x)=x&#039;&#039;, meaning that it will never exceed a 1:1 ratio with &#039;&#039;x&#039;&#039;. In practical terms, the NF&#039;s contribution will always be less than or equal to the amount of direct participation.&lt;br /&gt;
* Audability: The shape of &#039;&#039;f&#039;&#039; (which can change over time due to varying NF size) should be audible.&lt;br /&gt;
&lt;br /&gt;
These design principles aim  to create a fair and sustainable system for allocating NF contributions to various SNS initiatives.&lt;br /&gt;
&lt;br /&gt;
== Benefits of matched funding ==&lt;br /&gt;
&lt;br /&gt;
=== Better Reflection of Market Signals ===&lt;br /&gt;
&lt;br /&gt;
The matched funding system is designed to closely align with market sentiment. Specifically, a project that successfully raises more direct contributions will correspondingly receive a greater contribution from the Neurons&#039; Fund (NF), up to a predetermined threshold.&lt;br /&gt;
&lt;br /&gt;
=== Simpler Decision-making for NF NNS Neurons ===&lt;br /&gt;
&lt;br /&gt;
The automated adjustment feature in the NF&#039;s contributions lessens the decision-making burden on NF NNS neurons. As a result, these neurons have fewer instances where they need to opt out, making the process more efficient.&lt;br /&gt;
&lt;br /&gt;
=== Improved Incentives for Projects ===&lt;br /&gt;
&lt;br /&gt;
The matching system provides a more compelling incentive structure for projects. Knowing that increased direct funding will be matched (up to a point) by the NF, encourages projects to be more proactive in their fundraising efforts.&lt;br /&gt;
&lt;br /&gt;
== Detailed specification of the matching function ==&lt;br /&gt;
[[File:Matching function.png|thumb|Graph of the matching function|alt=|900x900px]]&lt;br /&gt;
=== Cap ===&lt;br /&gt;
&lt;br /&gt;
The contribution should be capped by 10% of the NF maturity at proposal execution time and also by a global NF contribution cap being equivalent to 1M XDR and thus 333k ICP. In other words we have cap = min (10% of NF maturity, global NF contribution cap)&lt;br /&gt;
&lt;br /&gt;
The global NF contribution cap should be a configurable parameter of the NNS and eventually it should be specified in units of XDR.&lt;br /&gt;
&lt;br /&gt;
=== Thresholds ===&lt;br /&gt;
&lt;br /&gt;
For specifying the shape of the matching function &#039;&#039;f&#039;&#039;, we define the following thresholds&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: Up to this point, a project receives no contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: Projects get a 2:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: Projects receive a 1:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_4&#039;&#039; = 2 * cap: Projects get a 2:1 contribution from the NF. (and afterwards the contribution of the NF remains flat).&lt;br /&gt;
&lt;br /&gt;
The thresholds should be configurable parameters of the NNS. For example they could be part of the NetworkEconomics record.&lt;br /&gt;
&lt;br /&gt;
Eventually, it should be possible to specify these thresholds in XDR and then convert them to ICP thresholds at the execution of the SNS swap proposal. For the initial implementation, it is sufficient to have these thresholds in ICP.&lt;br /&gt;
&lt;br /&gt;
For the time being, the following values are suggested&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: 100k XDR corresponding to 33k ICP&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: 300k XDR corresponding to 100k ICP&lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: 500k XDR corresponding to 167k ICP&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Matching function polynomials ===&lt;br /&gt;
The matching should be realized by set of polynomials&lt;br /&gt;
&lt;br /&gt;
* f_1: for function values between t_1 and t_2 &lt;br /&gt;
* f_2: for function values between t_2 and t_3&lt;br /&gt;
* f_3: for function values between t_3 and t_4. &lt;br /&gt;
&lt;br /&gt;
Formulas for the polynomials can be derived from constraints listed above on the functions f and f’.  &lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6745</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6745"/>
		<updated>2023-11-24T16:30:04Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
The purpose of this page is to gather information that assists teams in selecting a tokenomics structure for their SNS DAO. Additionally, it aims to aid potential SNS DAO participants in evaluating the proposed tokenomics configurations of an SNS.&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics set-up ==&lt;br /&gt;
The &#039;&#039;&#039;SNS governance framework&#039;&#039;&#039; is a customizable version of the NNS framework. All its parameters can be set in the [https://github.com/dfinity/ic/blob/master/rs/sns/cli/sns_init_template.yaml SNS initialization file], which also contains a comprehensive guide to these settings. For more detailed information about &#039;&#039;&#039;SNS rewards&#039;&#039;&#039;, please refer to this [https://internetcomputer.org/docs/current/developer-docs/integrations/sns/tokenomics/rewards link]. &lt;br /&gt;
&lt;br /&gt;
== SNS decentralization swap ==&lt;br /&gt;
In the &#039;&#039;&#039;SNS decentralization swap&#039;&#039;&#039; process, community members have two ways to get involved. One is &#039;&#039;&#039;direct participation&#039;&#039;&#039;, where they can exchange their ICP for SNS tokens.&lt;br /&gt;
&lt;br /&gt;
Alternatively, community members can engage indirectly through the &#039;&#039;&#039;Neurons&#039; Fund&#039;&#039;&#039; (NF). The extent of the NF&#039;s involvement in a specific SNS swap is decided by the [https://wiki.internetcomputer.org/wiki/Matched_Funding Matched Funding scheme]. This scheme correlates the &#039;&#039;&#039;fund participation&#039;&#039;&#039; with the level of direct participation. For more details on the Neurons&#039; Fund, visit this [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund/ link].&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics analyzer ==&lt;br /&gt;
Use this [https://github.com/dfinity/sns-testing/tree/main/sns_tokenomics_analyzer Python app] to evaluate SNS tokenomics configurations. The tool takes as an input an SNS init file and allows  to simulate different levels of direct participation and its impact on key factors&lt;br /&gt;
&lt;br /&gt;
* Token Price Range: Displays the potential exchange rate range between ICP and SNS tokens.&lt;br /&gt;
* Matched Funding: Estimates the Neurons&#039; Fund contribution as a function of the simulated direct participation and the overall size of the Neurons&#039; Fund. &lt;br /&gt;
* Token Distribution: Shows how tokens are allocated between treasury, swap participants and the development team.&lt;br /&gt;
* Voting Power Assessment: Provides a visual representation of the voting power across the community (swap participants) and the developer team. &lt;br /&gt;
[[File:SNS Tokenomics Analyzer.png|center|thumb|900x900px]]&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;How many and what kind of neurons do you receive when directly participating in an SNS swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;In an SNS initialization, a project defines the number of SNS neurons and their dissolve delay range. For instance, a neuron basket with 3 neurons and a 1-month interval will result in neurons with dissolve delays of 0, 1, and 2 months.&amp;quot;&lt;br /&gt;
* &#039;&#039;How precisely do the minimum and maximum funding targets influence the swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;The swap fails if the minimum funding target is not met within the swap window. Conversely, if the maximum funding is reached, the swap concludes immediately.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should projects consider when setting the minimum and maximum funding targets?&#039;&#039;&lt;br /&gt;
** &amp;quot;Set a realistic maximum funding target to create scarcity and drive token demand, as reaching this target ends the swap, possibly excluding some participants. A very high maximum can lead to a post-launch price drop, while a very low maximum might limit participation and miss funding opportunities.&amp;quot;&lt;br /&gt;
* &#039;&#039;What considerations are there when choosing the minimum stake of SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum stake is the lowest amount of SNS tokens required for a neuron. A lower value increases accessibility for those wanting to participate with fewer tokens. However, with a technical limit of 200K neurons in an SNS, a very low minimum stake might lead to too many small neurons.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should be considered when setting the minimum dissolve delay for SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum dissolve delay is crucial for voting eligibility. It encourages prudent, long-term voting as tokens are locked up. It also offers some defense against attacks, especially those funded by borrowed resources. However, if an attacker gains 51% of the voting power, the minimum staking period becomes irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Further background material == &lt;br /&gt;
* Overall intro to SNS https://internetcomputer.org/sns/&lt;br /&gt;
* Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=File:SNS_Tokenomics_Analyzer.png&amp;diff=6744</id>
		<title>File:SNS Tokenomics Analyzer.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=File:SNS_Tokenomics_Analyzer.png&amp;diff=6744"/>
		<updated>2023-11-24T16:29:16Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SNS Tokenomics Analyzer&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6743</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6743"/>
		<updated>2023-11-24T16:21:28Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
The purpose of this page is to gather information that assists teams in selecting a tokenomics structure for their SNS DAO. Additionally, it aims to aid potential SNS DAO participants in evaluating the proposed tokenomics configurations of an SNS.&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics set-up ==&lt;br /&gt;
The &#039;&#039;&#039;SNS governance framework&#039;&#039;&#039; is a customizable version of the NNS framework. All its parameters can be set in the [https://github.com/dfinity/ic/blob/master/rs/sns/cli/sns_init_template.yaml SNS initialization file], which also contains a comprehensive guide to these settings. For more detailed information about &#039;&#039;&#039;SNS rewards&#039;&#039;&#039;, please refer to this [https://internetcomputer.org/docs/current/developer-docs/integrations/sns/tokenomics/rewards link]. &lt;br /&gt;
&lt;br /&gt;
== SNS decentralization swap ==&lt;br /&gt;
In the &#039;&#039;&#039;SNS decentralization swap&#039;&#039;&#039; process, community members have two ways to get involved. One is &#039;&#039;&#039;direct participation&#039;&#039;&#039;, where they can exchange their ICP for SNS tokens.&lt;br /&gt;
&lt;br /&gt;
Alternatively, community members can engage indirectly through the &#039;&#039;&#039;Neurons&#039; Fund&#039;&#039;&#039; (NF). The extent of the NF&#039;s involvement in a specific SNS swap is decided by the [https://wiki.internetcomputer.org/wiki/Matched_Funding Matched Funding scheme]. This scheme correlates the &#039;&#039;&#039;fund participation&#039;&#039;&#039; with the level of direct participation. For more details on the Neurons&#039; Fund, visit this [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund/ link].&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics analyzer ==&lt;br /&gt;
Use this [https://github.com/dfinity/sns-testing/tree/main/sns_tokenomics_analyzer Python app] to evaluate SNS tokenomics configurations. The tool takes as an input an SNS init file and allows  to simulate different levels of direct participation and its impact on key factors&lt;br /&gt;
&lt;br /&gt;
* Token Price Range: Displays the potential exchange rate range between ICP and SNS tokens.&lt;br /&gt;
* Matched Funding: Estimates the Neurons&#039; Fund contribution as a function of the simulated direct participation and the overall size of the Neurons&#039; Fund. &lt;br /&gt;
* Token Distribution: Shows how tokens are allocated between treasury, swap participants and the development team.&lt;br /&gt;
* Voting Power Assessment: Provides a visual representation of the voting power across the community (swap participants) and the developer team. &lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;How many and what kind of neurons do you receive when directly participating in an SNS swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;In an SNS initialization, a project defines the number of SNS neurons and their dissolve delay range. For instance, a neuron basket with 3 neurons and a 1-month interval will result in neurons with dissolve delays of 0, 1, and 2 months.&amp;quot;&lt;br /&gt;
* &#039;&#039;How precisely do the minimum and maximum funding targets influence the swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;The swap fails if the minimum funding target is not met within the swap window. Conversely, if the maximum funding is reached, the swap concludes immediately.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should projects consider when setting the minimum and maximum funding targets?&#039;&#039;&lt;br /&gt;
** &amp;quot;Set a realistic maximum funding target to create scarcity and drive token demand, as reaching this target ends the swap, possibly excluding some participants. A very high maximum can lead to a post-launch price drop, while a very low maximum might limit participation and miss funding opportunities.&amp;quot;&lt;br /&gt;
* &#039;&#039;What considerations are there when choosing the minimum stake of SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum stake is the lowest amount of SNS tokens required for a neuron. A lower value increases accessibility for those wanting to participate with fewer tokens. However, with a technical limit of 200K neurons in an SNS, a very low minimum stake might lead to too many small neurons.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should be considered when setting the minimum dissolve delay for SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum dissolve delay is crucial for voting eligibility. It encourages prudent, long-term voting as tokens are locked up. It also offers some defense against attacks, especially those funded by borrowed resources. However, if an attacker gains 51% of the voting power, the minimum staking period becomes irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Further background material == &lt;br /&gt;
* Overall intro to SNS https://internetcomputer.org/sns/&lt;br /&gt;
* Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6742</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6742"/>
		<updated>2023-11-24T16:19:42Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
The purpose of this page is to gather information that assists teams in selecting a tokenomics structure for their SNS DAO. Additionally, it aims to aid potential SNS DAO participants in evaluating the proposed tokenomics configurations of an SNS.&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics set-up ==&lt;br /&gt;
The &#039;&#039;&#039;SNS governance framework&#039;&#039;&#039; is a customizable version of the NNS framework. All its parameters can be set in the [https://github.com/dfinity/ic/blob/master/rs/sns/cli/sns_init_template.yaml SNS initialization file], which also contains a comprehensive guide to these settings. For more detailed information about &#039;&#039;&#039;SNS rewards&#039;&#039;&#039;, please refer to this [https://internetcomputer.org/docs/current/developer-docs/integrations/sns/tokenomics/rewards link]. &lt;br /&gt;
&lt;br /&gt;
== SNS decentralization swap ==&lt;br /&gt;
In the &#039;&#039;&#039;SNS decentralization swap&#039;&#039;&#039; process, community members have two ways to get involved. One is &#039;&#039;&#039;direct participation&#039;&#039;&#039;, where they can exchange their ICP for SNS tokens.&lt;br /&gt;
&lt;br /&gt;
Alternatively, community members can engage indirectly through the &#039;&#039;&#039;Neurons&#039; Fund&#039;&#039;&#039; (NF). The extent of the NF&#039;s involvement in a specific SNS swap is decided by the [https://wiki.internetcomputer.org/wiki/Matched_Funding Matched Funding scheme]. This scheme correlates the &#039;&#039;&#039;fund participation&#039;&#039;&#039; with the level of direct participation. For more details on the Neurons&#039; Fund, visit this [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund/ link].&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics analyzer ==&lt;br /&gt;
Use this [https://github.com/dfinity/sns-testing/tree/main/sns_tokenomics_analyzer Python app] to evaluate SNS tokenomics configurations. The tool takes as an input an SNS init file and allows  to simulate different levels of direct participation and its impact on key factors&lt;br /&gt;
&lt;br /&gt;
* Token Price Range: Displays the potential exchange rate range between ICP and SNS tokens.&lt;br /&gt;
* Matched Funding: Estimates the Neurons&#039; Fund contribution.&lt;br /&gt;
* Token Distribution: Shows how tokens are allocated between treasury, swap participants and the development team.&lt;br /&gt;
* Voting Power Assessment: Provides a visual representation of the voting power across the community (swap participants) and the developer team. &lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;How many and what kind of neurons do you receive when directly participating in an SNS swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;In an SNS initialization, a project defines the number of SNS neurons and their dissolve delay range. For instance, a neuron basket with 3 neurons and a 1-month interval will result in neurons with dissolve delays of 0, 1, and 2 months.&amp;quot;&lt;br /&gt;
* &#039;&#039;How precisely do the minimum and maximum funding targets influence the swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;The swap fails if the minimum funding target is not met within the swap window. Conversely, if the maximum funding is reached, the swap concludes immediately.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should projects consider when setting the minimum and maximum funding targets?&#039;&#039;&lt;br /&gt;
** &amp;quot;Set a realistic maximum funding target to create scarcity and drive token demand, as reaching this target ends the swap, possibly excluding some participants. A very high maximum can lead to a post-launch price drop, while a very low maximum might limit participation and miss funding opportunities.&amp;quot;&lt;br /&gt;
* &#039;&#039;What considerations are there when choosing the minimum stake of SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum stake is the lowest amount of SNS tokens required for a neuron. A lower value increases accessibility for those wanting to participate with fewer tokens. However, with a technical limit of 200K neurons in an SNS, a very low minimum stake might lead to too many small neurons.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should be considered when setting the minimum dissolve delay for SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum dissolve delay is crucial for voting eligibility. It encourages prudent, long-term voting as tokens are locked up. It also offers some defense against attacks, especially those funded by borrowed resources. However, if an attacker gains 51% of the voting power, the minimum staking period becomes irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Further background material == &lt;br /&gt;
* Overall intro to SNS https://internetcomputer.org/sns/&lt;br /&gt;
* Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6741</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6741"/>
		<updated>2023-11-24T16:18:15Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
The purpose of this page is to gather information that assists teams in selecting a tokenomics structure for their SNS DAO. Additionally, it aims to aid potential SNS DAO participants in evaluating the proposed tokenomics configurations of an SNS.&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics set-up ==&lt;br /&gt;
The &#039;&#039;&#039;SNS governance framework&#039;&#039;&#039; is a customizable version of the NNS framework. All its parameters can be set in the [https://github.com/dfinity/ic/blob/master/rs/sns/cli/sns_init_template.yaml SNS initialization file], which also contains a comprehensive guide to these settings. For more detailed information about &#039;&#039;&#039;SNS rewards&#039;&#039;&#039;, please refer to this [https://internetcomputer.org/docs/current/developer-docs/integrations/sns/tokenomics/rewards link]. &lt;br /&gt;
&lt;br /&gt;
== SNS decentralization swap ==&lt;br /&gt;
In the &#039;&#039;&#039;SNS decentralization swap&#039;&#039;&#039; process, community members have two ways to get involved. One is &#039;&#039;&#039;direct participation&#039;&#039;&#039;, where they can exchange their ICP for SNS tokens.&lt;br /&gt;
&lt;br /&gt;
Alternatively, community members can engage indirectly through the &#039;&#039;&#039;Neurons&#039; Fund&#039;&#039;&#039; (NF). The extent of the NF&#039;s involvement in a specific SNS swap is decided by the [https://wiki.internetcomputer.org/wiki/Matched_Funding Matched Funding scheme]. This scheme correlates the &#039;&#039;&#039;fund participation&#039;&#039;&#039; with the level of direct participation. For more details on the Neurons&#039; Fund, visit this [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund/ link].&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics analyzer ==&lt;br /&gt;
Use this [https://github.com/dfinity/sns-testing/tree/main/sns_tokenomics_analyzer Python app] to evaluate SNS tokenomics configurations. The tool takes as an input an SNS init file and allows  to simulate different levels of direct participation and its impact on key factors&lt;br /&gt;
&lt;br /&gt;
* Token Price Range: Displays the potential exchange rate range between ICP and SNS tokens.&lt;br /&gt;
* Matched Funding: Estimates the Neurons&#039; Fund contribution.&lt;br /&gt;
* Token Distribution: Shows how tokens are allocated between treasury, swap participants and the development team.&lt;br /&gt;
* Voting Power Assessment: Provides a visual representation of the voting power.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;How many and what kind of neurons do you receive when directly participating in an SNS swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;In an SNS initialization, a project defines the number of SNS neurons and their dissolve delay range. For instance, a neuron basket with 3 neurons and a 1-month interval will result in neurons with dissolve delays of 0, 1, and 2 months.&amp;quot;&lt;br /&gt;
* &#039;&#039;How precisely do the minimum and maximum funding targets influence the swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;The swap fails if the minimum funding target is not met within the swap window. Conversely, if the maximum funding is reached, the swap concludes immediately.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should projects consider when setting the minimum and maximum funding targets?&#039;&#039;&lt;br /&gt;
** &amp;quot;Set a realistic maximum funding target to create scarcity and drive token demand, as reaching this target ends the swap, possibly excluding some participants. A very high maximum can lead to a post-launch price drop, while a very low maximum might limit participation and miss funding opportunities.&amp;quot;&lt;br /&gt;
* &#039;&#039;What considerations are there when choosing the minimum stake of SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum stake is the lowest amount of SNS tokens required for a neuron. A lower value increases accessibility for those wanting to participate with fewer tokens. However, with a technical limit of 200K neurons in an SNS, a very low minimum stake might lead to too many small neurons.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should be considered when setting the minimum dissolve delay for SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum dissolve delay is crucial for voting eligibility. It encourages prudent, long-term voting as tokens are locked up. It also offers some defense against attacks, especially those funded by borrowed resources. However, if an attacker gains 51% of the voting power, the minimum staking period becomes irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Further background material == &lt;br /&gt;
* Overall intro to SNS https://internetcomputer.org/sns/&lt;br /&gt;
* Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6740</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6740"/>
		<updated>2023-11-24T16:17:50Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
The purpose of this page is to gather information that assists teams in selecting a tokenomics structure for their SNS DAO. Additionally, it aims to aid potential SNS DAO participants in evaluating the proposed tokenomics configurations of an SNS.&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics set-up ==&lt;br /&gt;
The &#039;&#039;&#039;SNS governance framework&#039;&#039;&#039; is a customizable version of the NNS framework. All its parameters can be set in the [https://github.com/dfinity/ic/blob/master/rs/sns/cli/sns_init_template.yaml SNS initialization file], which also contains a comprehensive guide to these settings. For more detailed information about &#039;&#039;&#039;SNS rewards&#039;&#039;&#039;, please refer to this [https://internetcomputer.org/docs/current/developer-docs/integrations/sns/tokenomics/rewards link]. &lt;br /&gt;
&lt;br /&gt;
== SNS decentralization swap ==&lt;br /&gt;
In the &#039;&#039;&#039;SNS decentralization swap&#039;&#039;&#039; process, community members have two ways to get involved. One is &#039;&#039;&#039;direct participation&#039;&#039;&#039;, where they can exchange their ICP for SNS tokens.&lt;br /&gt;
&lt;br /&gt;
Alternatively, community members can engage indirectly through the &#039;&#039;&#039;Neurons&#039; Fund&#039;&#039;&#039; (NF). The extent of the NF&#039;s involvement in a specific SNS swap is decided by the [https://wiki.internetcomputer.org/wiki/Matched_Funding Matched Funding scheme]. This scheme correlates the &#039;&#039;&#039;fund participation&#039;&#039;&#039; with the level of direct participation. For more details on the Neurons&#039; Fund, visit this [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund/ link].&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics training &amp;amp; tools ==&lt;br /&gt;
Use this [https://github.com/dfinity/sns-testing/tree/main/sns_tokenomics_analyzer Python app] to evaluate SNS tokenomics configurations. The tool takes as an input an SNS init file and allows  to simulate different levels of direct participation and its impact on key factors&lt;br /&gt;
&lt;br /&gt;
* Token Price Range: Displays the potential exchange rate range between ICP and SNS tokens.&lt;br /&gt;
* Matched Funding: Estimates the Neurons&#039; Fund contribution.&lt;br /&gt;
* Token Distribution: Shows how tokens are allocated between treasury, swap participants and the development team.&lt;br /&gt;
* Voting Power Assessment: Provides a visual representation of the voting power.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;How many and what kind of neurons do you receive when directly participating in an SNS swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;In an SNS initialization, a project defines the number of SNS neurons and their dissolve delay range. For instance, a neuron basket with 3 neurons and a 1-month interval will result in neurons with dissolve delays of 0, 1, and 2 months.&amp;quot;&lt;br /&gt;
* &#039;&#039;How precisely do the minimum and maximum funding targets influence the swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;The swap fails if the minimum funding target is not met within the swap window. Conversely, if the maximum funding is reached, the swap concludes immediately.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should projects consider when setting the minimum and maximum funding targets?&#039;&#039;&lt;br /&gt;
** &amp;quot;Set a realistic maximum funding target to create scarcity and drive token demand, as reaching this target ends the swap, possibly excluding some participants. A very high maximum can lead to a post-launch price drop, while a very low maximum might limit participation and miss funding opportunities.&amp;quot;&lt;br /&gt;
* &#039;&#039;What considerations are there when choosing the minimum stake of SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum stake is the lowest amount of SNS tokens required for a neuron. A lower value increases accessibility for those wanting to participate with fewer tokens. However, with a technical limit of 200K neurons in an SNS, a very low minimum stake might lead to too many small neurons.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should be considered when setting the minimum dissolve delay for SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum dissolve delay is crucial for voting eligibility. It encourages prudent, long-term voting as tokens are locked up. It also offers some defense against attacks, especially those funded by borrowed resources. However, if an attacker gains 51% of the voting power, the minimum staking period becomes irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Further background material == &lt;br /&gt;
* Overall intro to SNS https://internetcomputer.org/sns/&lt;br /&gt;
* Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6739</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6739"/>
		<updated>2023-11-24T16:06:14Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
The purpose of this page is to gather information that assists teams in selecting a tokenomics structure for their SNS DAO. Additionally, it aims to aid potential SNS DAO participants in evaluating the proposed tokenomics configurations of an SNS.&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics set-up ==&lt;br /&gt;
The &#039;&#039;&#039;SNS governance framework&#039;&#039;&#039; is a customizable version of the NNS framework. All its parameters can be set in the [https://github.com/dfinity/ic/blob/master/rs/sns/cli/sns_init_template.yaml SNS initialization file], which also contains a comprehensive guide to these settings. For more detailed information about &#039;&#039;&#039;SNS rewards&#039;&#039;&#039;, please refer to this [https://internetcomputer.org/docs/current/developer-docs/integrations/sns/tokenomics/rewards link]. &lt;br /&gt;
&lt;br /&gt;
== SNS decentralization swap ==&lt;br /&gt;
In the &#039;&#039;&#039;SNS decentralization swap&#039;&#039;&#039; process, community members have two ways to get involved. One is &#039;&#039;&#039;direct participation&#039;&#039;&#039;, where they can exchange their ICP for SNS tokens.&lt;br /&gt;
&lt;br /&gt;
Alternatively, community members can engage indirectly through the &#039;&#039;&#039;Neurons&#039; Fund&#039;&#039;&#039; (NF). The extent of the NF&#039;s involvement in a specific SNS swap is decided by the [https://wiki.internetcomputer.org/wiki/Matched_Funding Matched Funding scheme]. This scheme correlates the &#039;&#039;&#039;fund participation&#039;&#039;&#039; with the level of direct participation. For more details on the Neurons&#039; Fund, visit this [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund/ link].&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics training &amp;amp; tools ==&lt;br /&gt;
Via this [https://docs.google.com/spreadsheets/d/1eSxkJl94jPt63CdOXH6ROy-WSkacW6P4qcAKMLrfBPc/edit#gid=0 spreadsheet tool] you can assess SNS tokenomics configurations. In order to use the tool and modify input parameters, please make a copy. The tool covers&lt;br /&gt;
* SNS input parameters: Contains all tokenomics parameters for SNS initialization, e.g. voting reward rate, swap parameters, initial token allocation, etc. &lt;br /&gt;
* Token price range: Visualizes the minimum &amp;amp; maximum funding target vs the amount of tokens swapped, as well as the token price range in ICP and USD. &lt;br /&gt;
* Voting power assessment: Visualizes the initial token allocation and voting power. It is further possible to parametrize and simulate 51% attacks. &lt;br /&gt;
* Total supply over time: Simulates how total supply of SNS tokens could develop over time.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;How many and what kind of neurons do you receive when directly participating in an SNS swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;In an SNS initialization, a project defines the number of SNS neurons and their dissolve delay range. For instance, a neuron basket with 3 neurons and a 1-month interval will result in neurons with dissolve delays of 0, 1, and 2 months.&amp;quot;&lt;br /&gt;
* &#039;&#039;How precisely do the minimum and maximum funding targets influence the swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;The swap fails if the minimum funding target is not met within the swap window. Conversely, if the maximum funding is reached, the swap concludes immediately.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should projects consider when setting the minimum and maximum funding targets?&#039;&#039;&lt;br /&gt;
** &amp;quot;Set a realistic maximum funding target to create scarcity and drive token demand, as reaching this target ends the swap, possibly excluding some participants. A very high maximum can lead to a post-launch price drop, while a very low maximum might limit participation and miss funding opportunities.&amp;quot;&lt;br /&gt;
* &#039;&#039;What considerations are there when choosing the minimum stake of SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum stake is the lowest amount of SNS tokens required for a neuron. A lower value increases accessibility for those wanting to participate with fewer tokens. However, with a technical limit of 200K neurons in an SNS, a very low minimum stake might lead to too many small neurons.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should be considered when setting the minimum dissolve delay for SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum dissolve delay is crucial for voting eligibility. It encourages prudent, long-term voting as tokens are locked up. It also offers some defense against attacks, especially those funded by borrowed resources. However, if an attacker gains 51% of the voting power, the minimum staking period becomes irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Further background material == &lt;br /&gt;
* Overall intro to SNS https://internetcomputer.org/sns/&lt;br /&gt;
* Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6738</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6738"/>
		<updated>2023-11-24T16:01:47Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
&lt;br /&gt;
* This intention of this page is to collect information enabling teams to choose a tokenomics set-up for their SNS DAO.&lt;br /&gt;
* Furthermore, it should help potential participants of SNS decentralization swaps to review proposed SNS tokenomics configurations. &lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics set-up ==&lt;br /&gt;
The &#039;&#039;&#039;SNS governance framework&#039;&#039;&#039; is a customizable version of the NNS framework. All its parameters can be set in the [https://github.com/dfinity/ic/blob/master/rs/sns/cli/sns_init_template.yaml SNS initialization file], which also contains a comprehensive guide to these settings. For more detailed information about &#039;&#039;&#039;SNS rewards&#039;&#039;&#039;, please refer to this [https://internetcomputer.org/docs/current/developer-docs/integrations/sns/tokenomics/rewards link]. &lt;br /&gt;
&lt;br /&gt;
== SNS decentralization swap ==&lt;br /&gt;
In the &#039;&#039;&#039;SNS decentralization swap&#039;&#039;&#039; process, community members have two ways to get involved. One is &#039;&#039;&#039;direct participation&#039;&#039;&#039;, where they can exchange their ICP for SNS tokens.&lt;br /&gt;
&lt;br /&gt;
Alternatively, community members can engage indirectly through the &#039;&#039;&#039;Neurons&#039; Fund&#039;&#039;&#039; (NF). The extent of the NF&#039;s involvement in a specific SNS swap is decided by the [https://wiki.internetcomputer.org/wiki/Matched_Funding Matched Funding scheme]. This scheme correlates the &#039;&#039;&#039;fund participation&#039;&#039;&#039; with the level of direct participation. For more details on the Neurons&#039; Fund, visit this [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund/ link].&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics training &amp;amp; tools ==&lt;br /&gt;
Via this [https://docs.google.com/spreadsheets/d/1eSxkJl94jPt63CdOXH6ROy-WSkacW6P4qcAKMLrfBPc/edit#gid=0 spreadsheet tool] you can assess SNS tokenomics configurations. In order to use the tool and modify input parameters, please make a copy. The tool covers&lt;br /&gt;
* SNS input parameters: Contains all tokenomics parameters for SNS initialization, e.g. voting reward rate, swap parameters, initial token allocation, etc. &lt;br /&gt;
* Token price range: Visualizes the minimum &amp;amp; maximum funding target vs the amount of tokens swapped, as well as the token price range in ICP and USD. &lt;br /&gt;
* Voting power assessment: Visualizes the initial token allocation and voting power. It is further possible to parametrize and simulate 51% attacks. &lt;br /&gt;
* Total supply over time: Simulates how total supply of SNS tokens could develop over time.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;How many and what kind of neurons do you receive when directly participating in an SNS swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;In an SNS initialization, a project defines the number of SNS neurons and their dissolve delay range. For instance, a neuron basket with 3 neurons and a 1-month interval will result in neurons with dissolve delays of 0, 1, and 2 months.&amp;quot;&lt;br /&gt;
* &#039;&#039;How precisely do the minimum and maximum funding targets influence the swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;The swap fails if the minimum funding target is not met within the swap window. Conversely, if the maximum funding is reached, the swap concludes immediately.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should projects consider when setting the minimum and maximum funding targets?&#039;&#039;&lt;br /&gt;
** &amp;quot;Set a realistic maximum funding target to create scarcity and drive token demand, as reaching this target ends the swap, possibly excluding some participants. A very high maximum can lead to a post-launch price drop, while a very low maximum might limit participation and miss funding opportunities.&amp;quot;&lt;br /&gt;
* &#039;&#039;What considerations are there when choosing the minimum stake of SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum stake is the lowest amount of SNS tokens required for a neuron. A lower value increases accessibility for those wanting to participate with fewer tokens. However, with a technical limit of 200K neurons in an SNS, a very low minimum stake might lead to too many small neurons.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should be considered when setting the minimum dissolve delay for SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum dissolve delay is crucial for voting eligibility. It encourages prudent, long-term voting as tokens are locked up. It also offers some defense against attacks, especially those funded by borrowed resources. However, if an attacker gains 51% of the voting power, the minimum staking period becomes irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Further background material == &lt;br /&gt;
* Overall intro to SNS https://internetcomputer.org/sns/&lt;br /&gt;
* Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6737</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6737"/>
		<updated>2023-11-24T16:00:49Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
&lt;br /&gt;
* This intention of this page is to collect information enabling teams to choose a tokenomics set-up for their SNS DAO.&lt;br /&gt;
* Furthermore, it should help potential participants of SNS decentralization swaps to review proposed SNS tokenomics configurations. &lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics set-up ==&lt;br /&gt;
The &#039;&#039;&#039;SNS governance framework&#039;&#039;&#039; is a customizable version of the NNS framework. All its parameters can be set in the [https://github.com/dfinity/ic/blob/master/rs/sns/cli/sns_init_template.yaml SNS initialization file], which also contains a comprehensive guide to these settings. For more detailed information about &#039;&#039;&#039;SNS rewards&#039;&#039;&#039;, please refer to this [https://internetcomputer.org/docs/current/developer-docs/integrations/sns/tokenomics/rewards link]. &lt;br /&gt;
&lt;br /&gt;
== SNS decentralization swap ==&lt;br /&gt;
In the &#039;&#039;&#039;SNS decentralization swap&#039;&#039;&#039; process, community members have two ways to get involved. One is &#039;&#039;&#039;direct participation&#039;&#039;&#039;, where they can exchange their ICP for SNS tokens.&lt;br /&gt;
&lt;br /&gt;
Alternatively, community members can engage indirectly through the &#039;&#039;&#039;Neurons&#039; Fund&#039;&#039;&#039; (NF). The extent of the NF&#039;s involvement in a specific SNS swap is decided by the [https://wiki.internetcomputer.org/wiki/Matched_Funding Matched Funding scheme]. This scheme correlates the &#039;&#039;&#039;fund participation&#039;&#039;&#039; with the level of direct participation. For more details on the Neurons&#039; Fund, visit this [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund/ link].&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics training &amp;amp; tools ==&lt;br /&gt;
Via this [https://docs.google.com/spreadsheets/d/1eSxkJl94jPt63CdOXH6ROy-WSkacW6P4qcAKMLrfBPc/edit#gid=0 spreadsheet tool] you can assess SNS tokenomics configurations. In order to use the tool and modify input parameters, please make a copy. The tool covers&lt;br /&gt;
* SNS input parameters: Contains all tokenomics parameters for SNS initialization, e.g. voting reward rate, swap parameters, initial token allocation, etc. &lt;br /&gt;
* Token price range: Visualizes the minimum &amp;amp; maximum funding target vs the amount of tokens swapped, as well as the token price range in ICP and USD. &lt;br /&gt;
* Voting power assessment: Visualizes the initial token allocation and voting power. It is further possible to parametrize and simulate 51% attacks. &lt;br /&gt;
* Total supply over time: Simulates how total supply of SNS tokens could develop over time.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;How many and what kind of neurons do you receive when directly participating in an SNS swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;In an SNS initialization, a project defines the number of SNS neurons and their dissolve delay range. For instance, a neuron basket with 3 neurons and a 1-month interval will result in neurons with dissolve delays of 0, 1, and 2 months.&amp;quot;&lt;br /&gt;
* &#039;&#039;How precisely do the minimum and maximum funding targets influence the swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;The swap fails if the minimum funding target is not met within the swap window. Conversely, if the maximum funding is reached, the swap concludes immediately.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should projects consider when setting the minimum and maximum funding targets?&#039;&#039;&lt;br /&gt;
** &amp;quot;Set a realistic maximum funding target to create scarcity and drive token demand, as reaching this target ends the swap, possibly excluding some participants. A very high maximum can lead to a post-launch price drop, while a very low maximum might limit participation and miss funding opportunities.&amp;quot;&lt;br /&gt;
* &#039;&#039;What considerations are there when choosing the minimum stake of SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum stake is the lowest amount of SNS tokens required for a neuron. A lower value increases accessibility for those wanting to participate with fewer tokens. However, with a technical limit of 200K neurons in an SNS, a very low minimum stake might lead to too many small neurons.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should be considered when setting the minimum dissolve delay for SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum dissolve delay is crucial for voting eligibility. It encourages prudent, long-term voting as tokens are locked up. It also offers some defense against attacks, especially those funded by borrowed resources. However, if an attacker gains 51% of the voting power, the minimum staking period becomes irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Background material == &lt;br /&gt;
* Overall intro to SNS https://internetcomputer.org/sns/&lt;br /&gt;
* Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6736</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6736"/>
		<updated>2023-11-24T15:58:33Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
&lt;br /&gt;
* This intention of this page is to collect information enabling teams to choose a tokenomics set-up for their SNS DAO.&lt;br /&gt;
* Furthermore, it should help potential participants of SNS decentralization swaps to review proposed SNS tokenomics configurations. &lt;br /&gt;
&lt;br /&gt;
== SNS rewards &amp;amp; participation ==&lt;br /&gt;
The &#039;&#039;&#039;SNS governance framework&#039;&#039;&#039; is a customizable version of the NNS framework. All its parameters can be set in the [https://github.com/dfinity/ic/blob/master/rs/sns/cli/sns_init_template.yaml SNS initialization file], which also contains a comprehensive guide to these settings. For more detailed information about &#039;&#039;&#039;SNS rewards&#039;&#039;&#039;, please refer to this [https://internetcomputer.org/docs/current/developer-docs/integrations/sns/tokenomics/rewards link]. &lt;br /&gt;
&lt;br /&gt;
In the &#039;&#039;&#039;SNS decentralization swap&#039;&#039;&#039; process, community members have two ways to get involved. One is &#039;&#039;&#039;direct participation&#039;&#039;&#039;, where they can exchange their ICP for SNS tokens.&lt;br /&gt;
&lt;br /&gt;
Alternatively, community members can engage indirectly through the &#039;&#039;&#039;Neurons&#039; Fund&#039;&#039;&#039; (NF). The extent of the NF&#039;s involvement in a specific SNS swap is decided by the [https://wiki.internetcomputer.org/wiki/Matched_Funding Matched Funding scheme]. This scheme correlates the &#039;&#039;&#039;fund participation&#039;&#039;&#039; with the level of direct participation. For more details on the Neurons&#039; Fund, visit this [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund/ link].&lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics training &amp;amp; tools ==&lt;br /&gt;
Via this [https://docs.google.com/spreadsheets/d/1eSxkJl94jPt63CdOXH6ROy-WSkacW6P4qcAKMLrfBPc/edit#gid=0 spreadsheet tool] you can assess SNS tokenomics configurations. In order to use the tool and modify input parameters, please make a copy. The tool covers&lt;br /&gt;
* SNS input parameters: Contains all tokenomics parameters for SNS initialization, e.g. voting reward rate, swap parameters, initial token allocation, etc. &lt;br /&gt;
* Token price range: Visualizes the minimum &amp;amp; maximum funding target vs the amount of tokens swapped, as well as the token price range in ICP and USD. &lt;br /&gt;
* Voting power assessment: Visualizes the initial token allocation and voting power. It is further possible to parametrize and simulate 51% attacks. &lt;br /&gt;
* Total supply over time: Simulates how total supply of SNS tokens could develop over time.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;How many and what kind of neurons do you receive when directly participating in an SNS swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;In an SNS initialization, a project defines the number of SNS neurons and their dissolve delay range. For instance, a neuron basket with 3 neurons and a 1-month interval will result in neurons with dissolve delays of 0, 1, and 2 months.&amp;quot;&lt;br /&gt;
* &#039;&#039;How precisely do the minimum and maximum funding targets influence the swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;The swap fails if the minimum funding target is not met within the swap window. Conversely, if the maximum funding is reached, the swap concludes immediately.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should projects consider when setting the minimum and maximum funding targets?&#039;&#039;&lt;br /&gt;
** &amp;quot;Set a realistic maximum funding target to create scarcity and drive token demand, as reaching this target ends the swap, possibly excluding some participants. A very high maximum can lead to a post-launch price drop, while a very low maximum might limit participation and miss funding opportunities.&amp;quot;&lt;br /&gt;
* &#039;&#039;What considerations are there when choosing the minimum stake of SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum stake is the lowest amount of SNS tokens required for a neuron. A lower value increases accessibility for those wanting to participate with fewer tokens. However, with a technical limit of 200K neurons in an SNS, a very low minimum stake might lead to too many small neurons.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should be considered when setting the minimum dissolve delay for SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum dissolve delay is crucial for voting eligibility. It encourages prudent, long-term voting as tokens are locked up. It also offers some defense against attacks, especially those funded by borrowed resources. However, if an attacker gains 51% of the voting power, the minimum staking period becomes irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Background material == &lt;br /&gt;
* Overall intro to SNS https://internetcomputer.org/sns/&lt;br /&gt;
* Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6735</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6735"/>
		<updated>2023-11-24T15:33:17Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
&lt;br /&gt;
* This intention of this page is to collect information enabling teams to choose a tokenomics set-up for their SNS DAO.&lt;br /&gt;
* Furthermore, it should help potential participants of SNS decentralization swaps to review proposed SNS tokenomics configurations. &lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics concepts ==&lt;br /&gt;
The &#039;&#039;&#039;SNS governance framework&#039;&#039;&#039; is a configurable version of the NNS  governance framework. It can be fully configured via the [https://github.com/dfinity/ic/blob/master/rs/sns/cli/sns_init_template.yaml SNS initilization file], which contains a detailed description of all  parameters. &lt;br /&gt;
&lt;br /&gt;
A key element of SNS governance is the &#039;&#039;&#039;SNS reward framework&#039;&#039;&#039;, consisting of the following main elements: &lt;br /&gt;
&lt;br /&gt;
* Determination of the total reward pool: The total pool of voting rewards for a given day is calculated as total supply * voting reward function R(t) / 365.25.&lt;br /&gt;
* Voting power of neurons: Voting power is a function of stake, dissolve delay and age of a neuron.&lt;br /&gt;
* Allocation of reward pool: Rewards are allocated to neurons in proportion to the exercised voting power on proposals that are settled on given day.&lt;br /&gt;
&lt;br /&gt;
Further information on SNS rewards can be found [https://internetcomputer.org/docs/current/developer-docs/integrations/sns/tokenomics/rewards here]. &lt;br /&gt;
&lt;br /&gt;
During an &#039;&#039;&#039;SNS decentralization swap&#039;&#039;&#039;, community members can participate directly in an SNS by swapping ICP in exchange for SNS tokens. This is called &#039;&#039;&#039;direct participation&#039;&#039;&#039;. If the swap is successful, swap participants will receive a &#039;&#039;&#039;basket of SNS neurons&#039;&#039;&#039; with equal stake. &lt;br /&gt;
&lt;br /&gt;
Community members can also indirectly participate in an SNS swap via the &#039;&#039;&#039;Neurons&#039; Fund (NF).&#039;&#039;&#039;  Via this fund, NNS neuron holders can allocate their maturity towards supporting future SNSes. The size of the participation of the NF in a particular SNS swap, is determined via the [https://wiki.internetcomputer.org/wiki/Matched_Funding &#039;&#039;&#039;Matched Funding scheme&#039;&#039;&#039;] which links the &#039;&#039;&#039;fund participation&#039;&#039;&#039; to the direct participation. Further information on the Neurons&#039; Fund can be found [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund/ here].  &lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics training &amp;amp; tools ==&lt;br /&gt;
Via this [https://docs.google.com/spreadsheets/d/1eSxkJl94jPt63CdOXH6ROy-WSkacW6P4qcAKMLrfBPc/edit#gid=0 spreadsheet tool] you can assess SNS tokenomics configurations. In order to use the tool and modify input parameters, please make a copy. The tool covers&lt;br /&gt;
* SNS input parameters: Contains all tokenomics parameters for SNS initialization, e.g. voting reward rate, swap parameters, initial token allocation, etc. &lt;br /&gt;
* Token price range: Visualizes the minimum &amp;amp; maximum funding target vs the amount of tokens swapped, as well as the token price range in ICP and USD. &lt;br /&gt;
* Voting power assessment: Visualizes the initial token allocation and voting power. It is further possible to parametrize and simulate 51% attacks. &lt;br /&gt;
* Total supply over time: Simulates how total supply of SNS tokens could develop over time.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;How many and what kind of neurons do you receive when directly participating in an SNS swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;In an SNS initialization, a project defines the number of SNS neurons and their dissolve delay range. For instance, a neuron basket with 3 neurons and a 1-month interval will result in neurons with dissolve delays of 0, 1, and 2 months.&amp;quot;&lt;br /&gt;
* &#039;&#039;How precisely do the minimum and maximum funding targets influence the swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;The swap fails if the minimum funding target is not met within the swap window. Conversely, if the maximum funding is reached, the swap concludes immediately.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should projects consider when setting the minimum and maximum funding targets?&#039;&#039;&lt;br /&gt;
** &amp;quot;Set a realistic maximum funding target to create scarcity and drive token demand, as reaching this target ends the swap, possibly excluding some participants. A very high maximum can lead to a post-launch price drop, while a very low maximum might limit participation and miss funding opportunities.&amp;quot;&lt;br /&gt;
* &#039;&#039;What considerations are there when choosing the minimum stake of SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum stake is the lowest amount of SNS tokens required for a neuron. A lower value increases accessibility for those wanting to participate with fewer tokens. However, with a technical limit of 200K neurons in an SNS, a very low minimum stake might lead to too many small neurons.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should be considered when setting the minimum dissolve delay for SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum dissolve delay is crucial for voting eligibility. It encourages prudent, long-term voting as tokens are locked up. It also offers some defense against attacks, especially those funded by borrowed resources. However, if an attacker gains 51% of the voting power, the minimum staking period becomes irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Background material == &lt;br /&gt;
* Overall intro to SNS https://internetcomputer.org/sns/&lt;br /&gt;
* Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6734</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6734"/>
		<updated>2023-11-24T15:30:30Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
&lt;br /&gt;
* This intention of this page is to collect material enabling teams to choose a tokenomics set-up for their SNS DAO. &lt;br /&gt;
* Furthermore, it should help potential participants of SNS decentralization swaps to review proposed SNS tokenomics configurations. &lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics concepts ==&lt;br /&gt;
The &#039;&#039;&#039;SNS governance framework&#039;&#039;&#039; is a configurable version of the NNS  governance framework. It can be fully configured via the [https://github.com/dfinity/ic/blob/master/rs/sns/cli/sns_init_template.yaml SNS initilization file], which contains a detailed description of all  parameters. &lt;br /&gt;
&lt;br /&gt;
A key element of SNS governance is the &#039;&#039;&#039;SNS reward framework&#039;&#039;&#039;, consisting of the following main elements: &lt;br /&gt;
&lt;br /&gt;
* Determination of the total reward pool: The total pool of voting rewards for a given day is calculated as total supply * voting reward function R(t) / 365.25.&lt;br /&gt;
* Voting power of neurons: Voting power is a function of stake, dissolve delay and age of a neuron.&lt;br /&gt;
* Allocation of reward pool: Rewards are allocated to neurons in proportion to the exercised voting power on proposals that are settled on given day.&lt;br /&gt;
&lt;br /&gt;
Further information on SNS rewards can be found [https://internetcomputer.org/docs/current/developer-docs/integrations/sns/tokenomics/rewards here]. &lt;br /&gt;
&lt;br /&gt;
During an &#039;&#039;&#039;SNS decentralization swap&#039;&#039;&#039;, community members can participate directly in an SNS by swapping ICP in exchange for SNS tokens. This is called &#039;&#039;&#039;direct participation&#039;&#039;&#039;. If the swap is successful, swap participants will receive a &#039;&#039;&#039;basket of SNS neurons&#039;&#039;&#039; with equal stake. &lt;br /&gt;
&lt;br /&gt;
Community members can also indirectly participate in an SNS swap via the &#039;&#039;&#039;Neurons&#039; Fund (NF).&#039;&#039;&#039;  Via this fund, NNS neuron holders can allocate their maturity towards supporting future SNSes. The size of the participation of the NF in a particular SNS swap, is determined via the [https://wiki.internetcomputer.org/wiki/Matched_Funding &#039;&#039;&#039;Matched Funding scheme&#039;&#039;&#039;] which links the &#039;&#039;&#039;fund participation&#039;&#039;&#039; to the direct participation. Further information on the Neurons&#039; Fund can be found [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund/ here].  &lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics training &amp;amp; tools ==&lt;br /&gt;
Via this [https://docs.google.com/spreadsheets/d/1eSxkJl94jPt63CdOXH6ROy-WSkacW6P4qcAKMLrfBPc/edit#gid=0 spreadsheet tool] you can assess SNS tokenomics configurations. In order to use the tool and modify input parameters, please make a copy. The tool covers&lt;br /&gt;
* SNS input parameters: Contains all tokenomics parameters for SNS initialization, e.g. voting reward rate, swap parameters, initial token allocation, etc. &lt;br /&gt;
* Token price range: Visualizes the minimum &amp;amp; maximum funding target vs the amount of tokens swapped, as well as the token price range in ICP and USD. &lt;br /&gt;
* Voting power assessment: Visualizes the initial token allocation and voting power. It is further possible to parametrize and simulate 51% attacks. &lt;br /&gt;
* Total supply over time: Simulates how total supply of SNS tokens could develop over time.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;How many and what kind of neurons do you receive when directly participating in an SNS swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;In an SNS initialization, a project defines the number of SNS neurons and their dissolve delay range. For instance, a neuron basket with 3 neurons and a 1-month interval will result in neurons with dissolve delays of 0, 1, and 2 months.&amp;quot;&lt;br /&gt;
* &#039;&#039;How precisely do the minimum and maximum funding targets influence the swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;The swap fails if the minimum funding target is not met within the swap window. Conversely, if the maximum funding is reached, the swap concludes immediately.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should projects consider when setting the minimum and maximum funding targets?&#039;&#039;&lt;br /&gt;
** &amp;quot;Set a realistic maximum funding target to create scarcity and drive token demand, as reaching this target ends the swap, possibly excluding some participants. A very high maximum can lead to a post-launch price drop, while a very low maximum might limit participation and miss funding opportunities.&amp;quot;&lt;br /&gt;
* &#039;&#039;What considerations are there when choosing the minimum stake of SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum stake is the lowest amount of SNS tokens required for a neuron. A lower value increases accessibility for those wanting to participate with fewer tokens. However, with a technical limit of 200K neurons in an SNS, a very low minimum stake might lead to too many small neurons.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should be considered when setting the minimum dissolve delay for SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum dissolve delay is crucial for voting eligibility. It encourages prudent, long-term voting as tokens are locked up. It also offers some defense against attacks, especially those funded by borrowed resources. However, if an attacker gains 51% of the voting power, the minimum staking period becomes irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Background material == &lt;br /&gt;
* Overall intro to SNS https://internetcomputer.org/sns/&lt;br /&gt;
* Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6733</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6733"/>
		<updated>2023-11-24T15:28:02Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
&lt;br /&gt;
* This intention of this page is to collect material enabling teams to choose a tokenomics set-up for their SNS DAO. &lt;br /&gt;
* Furthermore, it should help potential participants of SNS decentralization swaps to review proposed SNS tokenomics configurations. &lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics concepts ==&lt;br /&gt;
The &#039;&#039;&#039;SNS governance framework&#039;&#039;&#039; is a configurable version of the NNS  governance framework. It can be fully configured via the [https://github.com/dfinity/ic/blob/master/rs/sns/cli/sns_init_template.yaml SNS initilization file], which contains a detailed description of all  parameters. &lt;br /&gt;
&lt;br /&gt;
A key element of SNS governance is the &#039;&#039;&#039;SNS reward framework&#039;&#039;&#039;, consisting of the following main elements: &lt;br /&gt;
&lt;br /&gt;
* Determination of the total reward pool: The total pool of voting rewards for a given day is calculated as total supply * voting reward function R(t) / 365.25.&lt;br /&gt;
* Voting power of neurons: Voting power is a function of stake, dissolve delay and age of a neuron.&lt;br /&gt;
* Allocation of reward pool: Rewards are allocated to neurons in proportion to the exercised voting power on proposals that are settled on given day.&lt;br /&gt;
&lt;br /&gt;
Further information on SNS rewards can be found [https://internetcomputer.org/docs/current/developer-docs/integrations/sns/tokenomics/rewards here]. &lt;br /&gt;
&lt;br /&gt;
During an &#039;&#039;&#039;SNS decentralization swap&#039;&#039;&#039;, community members can participate directly in an SNS by swapping ICP in exchange for SNS tokens. This is called &#039;&#039;&#039;direct participation&#039;&#039;&#039;. If the swap is successful, swap participants will receive a &#039;&#039;&#039;basket of SNS neurons&#039;&#039;&#039; with equal stake. &lt;br /&gt;
&lt;br /&gt;
Community members can also indirectly participate in an SNS swap via the &#039;&#039;&#039;Neurons&#039; Fund (NF).&#039;&#039;&#039;  Via this fund, NNS neuron holders can allocate their maturity towards supporting future SNSes. The size of the participation of the NF in a particular SNS swap, is determined via the [https://wiki.internetcomputer.org/wiki/Matched_Funding &#039;&#039;&#039;Matched Funding scheme&#039;&#039;&#039;] which links the &#039;&#039;&#039;fund participation&#039;&#039;&#039; to the direct participation. Further information on the Neurons&#039; Fund can be found [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund/ here].  &lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics training &amp;amp; tools ==&lt;br /&gt;
Via this [https://docs.google.com/spreadsheets/d/1eSxkJl94jPt63CdOXH6ROy-WSkacW6P4qcAKMLrfBPc/edit#gid=0 spreadsheet tool] you can assess SNS tokenomics configurations. In order to use the tool and modify input parameters, please make a copy. The tool covers&lt;br /&gt;
* SNS input parameters: Contains all tokenomics parameters for SNS initialization, e.g. voting reward rate, swap parameters, initial token allocation, etc. &lt;br /&gt;
* Token price range: Visualizes the minimum &amp;amp; maximum funding target vs the amount of tokens swapped, as well as the token price range in ICP and USD. &lt;br /&gt;
* Voting power assessment: Visualizes the initial token allocation and voting power. It is further possible to parametrize and simulate 51% attacks. &lt;br /&gt;
* Total supply over time: Simulates how total supply of SNS tokens could develop over time.&lt;br /&gt;
&lt;br /&gt;
== Frequently asked questions ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;How many and what kind of neurons do you receive when directly participating in an SNS swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;In an SNS initialization, a project defines the number of SNS neurons and their dissolve delay range. For instance, a neuron basket with 3 neurons and a 1-month interval will result in neurons with dissolve delays of 0, 1, and 2 months.&amp;quot;&lt;br /&gt;
* &#039;&#039;How precisely do the minimum and maximum funding targets influence the swap ?&#039;&#039; &lt;br /&gt;
** &amp;quot;The swap fails if the minimum funding target is not met within the swap window. Conversely, if the maximum funding is reached, the swap concludes immediately.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should projects consider when setting the minimum and maximum funding targets?&#039;&#039;&lt;br /&gt;
** &amp;quot;Set a realistic maximum funding target to create scarcity and drive token demand, as reaching this target ends the swap, possibly excluding some participants. A very high maximum can lead to a post-launch price drop, while a very low maximum might limit participation and miss funding opportunities.&amp;quot;&lt;br /&gt;
* &#039;&#039;What considerations are there when choosing the minimum stake of SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum stake is the lowest amount of SNS tokens required for a neuron. A lower value increases accessibility for those wanting to participate with fewer tokens. However, with a technical limit of 200K neurons in an SNS, a very low minimum stake might lead to too many small neurons.&amp;quot;&lt;br /&gt;
* &#039;&#039;What should be considered when setting the minimum dissolve delay for SNS neurons?&#039;&#039;&lt;br /&gt;
** &amp;quot;The minimum dissolve delay is crucial for voting eligibility. It encourages prudent, long-term voting as tokens are locked up. It also offers some defense against attacks, especially those funded by borrowed resources. However, if an attacker gains 51% of the voting power, the minimum staking period becomes irrelevant.&lt;br /&gt;
&lt;br /&gt;
== Background material == &lt;br /&gt;
* Introduction to Service Nervous System (SNS): &lt;br /&gt;
** Overall intro https://internetcomputer.org/sns/&lt;br /&gt;
** Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;br /&gt;
* SNS reward design: https://internetcomputer.org/docs/current/tokenomics/sns/rewards&lt;br /&gt;
* Neurons&#039; fund: [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund https://internetcomputer.org/docs/current/tokenomics/nns/community-fund]&lt;br /&gt;
* Configuration files used by OpenChat: https://github.com/open-ic/open-chat/tree/master/sns/config&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6732</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6732"/>
		<updated>2023-11-24T14:56:53Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
&lt;br /&gt;
* This intention of this page is to collect material enabling teams to choose a tokenomics set-up for their SNS DAO. &lt;br /&gt;
* Furthermore, it should help potential participants of SNS decentralization swaps to review proposed SNS tokenomics configurations. &lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics concepts ==&lt;br /&gt;
The &#039;&#039;&#039;SNS governance framework&#039;&#039;&#039; is a configurable version of the NNS  governance framework. It can be fully configured via the [https://github.com/dfinity/ic/blob/master/rs/sns/cli/sns_init_template.yaml SNS initilization file], which contains a detailed description of all  parameters. &lt;br /&gt;
&lt;br /&gt;
A key element of SNS governance is the &#039;&#039;&#039;SNS reward framework&#039;&#039;&#039;, consisting of the following main elements: &lt;br /&gt;
&lt;br /&gt;
* Determination of the total reward pool: The total pool of voting rewards for a given day is calculated as total supply * voting reward function R(t) / 365.25.&lt;br /&gt;
* Voting power of neurons: Voting power is a function of stake, dissolve delay and age of a neuron.&lt;br /&gt;
* Allocation of reward pool: Rewards are allocated to neurons in proportion to the exercised voting power on proposals that are settled on given day.&lt;br /&gt;
&lt;br /&gt;
Further information on SNS rewards can be found [https://internetcomputer.org/docs/current/developer-docs/integrations/sns/tokenomics/rewards here]. &lt;br /&gt;
&lt;br /&gt;
During an &#039;&#039;&#039;SNS decentralization swap&#039;&#039;&#039;, community members can participate directly in an SNS by swapping ICP in exchange for SNS tokens. This is called &#039;&#039;&#039;direct participation&#039;&#039;&#039;. If the swap is successful, swap participants will receive a &#039;&#039;&#039;basket of SNS neurons&#039;&#039;&#039; with equal stake. In the SNS configuration a project can specify the number of SNS neurons in the basket and the interval of dissolve delays within a SNS neuron basket. For example an neuron basket with 3 neurons and interval of 1 month, will yield neurons with 0,1 and 2 months of dissolve delay.&lt;br /&gt;
&lt;br /&gt;
Community members can also indirectly participate in an SNS swap via the &#039;&#039;&#039;Neurons&#039; Fund (NF).&#039;&#039;&#039;  Via this fund, NNS neuron holders can allocate their maturity towards supporting future SNSes. The NNS governs the allocation of the Neurons&#039; Fund to various SNSs, enabling ICP stakers to benefit from the collective intelligence of the community. The size of the participation of the NF in a particular SNS swap, is determined via the [https://wiki.internetcomputer.org/wiki/Matched_Funding &#039;&#039;&#039;Matched Funding scheme&#039;&#039;&#039;] which links the fund participation to the direct participation. Further information on the Neurons&#039; Fund can be found [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund/ here].  &lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics training &amp;amp; tools ==&lt;br /&gt;
Via this [https://docs.google.com/spreadsheets/d/1eSxkJl94jPt63CdOXH6ROy-WSkacW6P4qcAKMLrfBPc/edit#gid=0 spreadsheet tool] you can assess SNS tokenomics configurations. In order to use the tool and modify input parameters, please make a copy. The tool covers&lt;br /&gt;
* SNS input parameters: Contains all tokenomics parameters for SNS initialization, e.g. voting reward rate, swap parameters, initial token allocation, etc. &lt;br /&gt;
* Token price range: Visualizes the minimum &amp;amp; maximum funding target vs the amount of tokens swapped, as well as the token price range in ICP and USD. &lt;br /&gt;
* Voting power assessment: Visualizes the initial token allocation and voting power. It is further possible to parametrize and simulate 51% attacks. &lt;br /&gt;
* Total supply over time: Simulates how total supply of SNS tokens could develop over time.&lt;br /&gt;
&lt;br /&gt;
== Background material == &lt;br /&gt;
* Introduction to Service Nervous System (SNS): &lt;br /&gt;
** Overall intro https://internetcomputer.org/sns/&lt;br /&gt;
** Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;br /&gt;
* SNS reward design: https://internetcomputer.org/docs/current/tokenomics/sns/rewards&lt;br /&gt;
* Neurons&#039; fund: [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund https://internetcomputer.org/docs/current/tokenomics/nns/community-fund]&lt;br /&gt;
* Configuration files used by OpenChat: https://github.com/open-ic/open-chat/tree/master/sns/config&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6731</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6731"/>
		<updated>2023-11-24T12:50:00Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
&lt;br /&gt;
* This intention of this page is to collect material enabling teams to choose a tokenomics set-up for their SNS DAO. &lt;br /&gt;
* Furthermore, it should help potential participants of SNS decentralization swaps to review proposed SNS tokenomics configurations. &lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics concepts ==&lt;br /&gt;
The &#039;&#039;&#039;SNS reward framework&#039;&#039;&#039; is a configurable version of the NNS rewards system, consisting of the following key elements:&lt;br /&gt;
&lt;br /&gt;
* Determination of the total reward pool: The total pool of voting rewards for a given day is calculated as total supply * voting reward function R(t) / 365.25.&lt;br /&gt;
* Voting power of neurons: Voting power is a function of stake, dissolve delay and age of a neuron.&lt;br /&gt;
* Allocation of reward pool: Rewards are allocated to neurons in proportion to the exercised voting power on proposals that are settled on given day.&lt;br /&gt;
&lt;br /&gt;
Further information on SNS rewards can be found [https://internetcomputer.org/docs/current/developer-docs/integrations/sns/tokenomics/rewards here]. &lt;br /&gt;
&lt;br /&gt;
During an &#039;&#039;&#039;SNS decentralization swap&#039;&#039;&#039;, community members can participate directly in an SNS by swapping ICP in exchange for SNS tokens. This is called &#039;&#039;&#039;direct participation&#039;&#039;&#039;. If the swap is successful, swap participants will receive a &#039;&#039;&#039;basket of SNS neurons&#039;&#039;&#039; with equal stake. In the SNS configuration a project can specify the number of SNS neurons in the basket and the interval of dissolve delays within a SNS neuron basket. For example an neuron basket with 3 neurons and interval of 1 month, will yield neurons with 0,1 and 2 months of dissolve delay.&lt;br /&gt;
&lt;br /&gt;
Community members can also indirectly participate in an SNS swap via the &#039;&#039;&#039;Neurons&#039; Fund (NF).&#039;&#039;&#039;  Via this fund NNS neuron holders can allocate their maturity towards supporting future SNSes. The NNS governs the allocation of the Neurons&#039; Fund to various SNSs, enabling ICP stakers to benefit from the collective intelligence of the community. The size of the participation of the NF in a particular SNS swap, is determined via the [https://wiki.internetcomputer.org/wiki/Matched_Funding &#039;&#039;&#039;Matched Funding scheme&#039;&#039;&#039;] which links the fund participation to the direct participation. Further information on the Neurons&#039; Fund can be found [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund/ here].  &lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics training &amp;amp; tools ==&lt;br /&gt;
Via this [https://docs.google.com/spreadsheets/d/1eSxkJl94jPt63CdOXH6ROy-WSkacW6P4qcAKMLrfBPc/edit#gid=0 spreadsheet tool] you can assess SNS tokenomics configurations. In order to use the tool and modify input parameters, please make a copy. The tool covers&lt;br /&gt;
* SNS input parameters: Contains all tokenomics parameters for SNS initialization, e.g. voting reward rate, swap parameters, initial token allocation, etc. &lt;br /&gt;
* Token price range: Visualizes the minimum &amp;amp; maximum funding target vs the amount of tokens swapped, as well as the token price range in ICP and USD. &lt;br /&gt;
* Voting power assessment: Visualizes the initial token allocation and voting power. It is further possible to parametrize and simulate 51% attacks. &lt;br /&gt;
* Total supply over time: Simulates how total supply of SNS tokens could develop over time.&lt;br /&gt;
&lt;br /&gt;
== Background material == &lt;br /&gt;
* Introduction to Service Nervous System (SNS): &lt;br /&gt;
** Overall intro https://internetcomputer.org/sns/&lt;br /&gt;
** Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;br /&gt;
* SNS reward design: https://internetcomputer.org/docs/current/tokenomics/sns/rewards&lt;br /&gt;
* Neurons&#039; fund: [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund https://internetcomputer.org/docs/current/tokenomics/nns/community-fund]&lt;br /&gt;
* Configuration files used by OpenChat: https://github.com/open-ic/open-chat/tree/master/sns/config&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6730</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6730"/>
		<updated>2023-11-24T12:10:33Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
&lt;br /&gt;
* This intention of this page is to collect material enabling teams to choose a tokenomics set-up for their SNS DAO. &lt;br /&gt;
* Furthermore, it should help potential participants of SNS decentralization swaps to review proposed SNS tokenomics configurations. &lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics training &amp;amp; tools == &lt;br /&gt;
In this [https://docs.google.com/presentation/d/1p9zoXGqlcObrvw_lOJ_OCSgsbQTWbQJeZdRNEjXan3w/edit?usp=sharing slide deck] there is a brief introduction to key concepts such as &lt;br /&gt;
* SNS governance &amp;amp; rewards&lt;br /&gt;
* Decentralization swap&lt;br /&gt;
* Neurons&#039; fund&lt;br /&gt;
&lt;br /&gt;
Via this [https://docs.google.com/spreadsheets/d/1eSxkJl94jPt63CdOXH6ROy-WSkacW6P4qcAKMLrfBPc/edit#gid=0 spreadsheet tool] you can assess SNS tokenomics configurations. In order to use the tool and modify input parameters, please make a copy. The tool covers&lt;br /&gt;
* SNS input parameters: Contains all tokenomics parameters for SNS initialization, e.g. voting reward rate, swap parameters, initial token allocation, etc. &lt;br /&gt;
* Token price range: Visualizes the minimum &amp;amp; maximum funding target vs the amount of tokens swapped, as well as the token price range in ICP and USD. &lt;br /&gt;
* Voting power assessment: Visualizes the initial token allocation and voting power. It is further possible to parametrize and simulate 51% attacks. &lt;br /&gt;
* Total supply over time: Simulates how total supply of SNS tokens could develop over time.&lt;br /&gt;
&lt;br /&gt;
== Background material == &lt;br /&gt;
* Introduction to Service Nervous System (SNS): &lt;br /&gt;
** Overall intro https://internetcomputer.org/sns/&lt;br /&gt;
** Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;br /&gt;
* SNS reward design: https://internetcomputer.org/docs/current/tokenomics/sns/rewards&lt;br /&gt;
* Neurons&#039; fund: [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund https://internetcomputer.org/docs/current/tokenomics/nns/community-fund]&lt;br /&gt;
* Configuration files used by OpenChat: https://github.com/open-ic/open-chat/tree/master/sns/config&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6729</id>
		<title>How-To: SNS tokenomics configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=How-To:_SNS_tokenomics_configuration&amp;diff=6729"/>
		<updated>2023-11-24T12:00:25Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
&lt;br /&gt;
* This intention of this page is to collect material enabling teams to choose a tokenomics set-up for their SNS DAO. &lt;br /&gt;
* To include documentation links to SNS tokenomics key concepts as well as a SNS tokenomics tool. &lt;br /&gt;
&lt;br /&gt;
== SNS tokenomics training &amp;amp; tools == &lt;br /&gt;
In this [https://docs.google.com/presentation/d/1p9zoXGqlcObrvw_lOJ_OCSgsbQTWbQJeZdRNEjXan3w/edit?usp=sharing slide deck] there is a brief introduction to key concepts such as &lt;br /&gt;
* SNS governance &amp;amp; rewards&lt;br /&gt;
* Decentralization swap&lt;br /&gt;
* Neurons&#039; fund&lt;br /&gt;
&lt;br /&gt;
Via this [https://docs.google.com/spreadsheets/d/1eSxkJl94jPt63CdOXH6ROy-WSkacW6P4qcAKMLrfBPc/edit#gid=0 spreadsheet tool] you can assess SNS tokenomics configurations. In order to use the tool and modify input parameters, please make a copy. The tool covers&lt;br /&gt;
* SNS input parameters: Contains all tokenomics parameters for SNS initialization, e.g. voting reward rate, swap parameters, initial token allocation, etc. &lt;br /&gt;
* Token price range: Visualizes the minimum &amp;amp; maximum funding target vs the amount of tokens swapped, as well as the token price range in ICP and USD. &lt;br /&gt;
* Voting power assessment: Visualizes the initial token allocation and voting power. It is further possible to parametrize and simulate 51% attacks. &lt;br /&gt;
* Total supply over time: Simulates how total supply of SNS tokens could develop over time.&lt;br /&gt;
&lt;br /&gt;
== Background material == &lt;br /&gt;
* Introduction to Service Nervous System (SNS): &lt;br /&gt;
** Overall intro https://internetcomputer.org/sns/&lt;br /&gt;
** Tokenomics of a DAO: https://internetcomputer.org/docs/current/tokenomics/sns/tokenomics&lt;br /&gt;
* SNS reward design: https://internetcomputer.org/docs/current/tokenomics/sns/rewards&lt;br /&gt;
* Neurons&#039; fund: [https://internetcomputer.org/docs/current/tokenomics/nns/neurons-fund https://internetcomputer.org/docs/current/tokenomics/nns/community-fund]&lt;br /&gt;
* Configuration files used by OpenChat: https://github.com/open-ic/open-chat/tree/master/sns/config&lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=6728</id>
		<title>Matched Funding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=6728"/>
		<updated>2023-11-24T11:28:52Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
This wiki page describes the ‘Matched Funding’ scheme, in which the contribution of the Neurons’ Fund to SNS swaps scales in line with direct participation, allowing for a more accurate reflection of market signals.&lt;br /&gt;
&lt;br /&gt;
== The Matching function, f ==&lt;br /&gt;
&lt;br /&gt;
The scheme is implemented through a matching function &#039;&#039;f&#039;&#039;, where the input &#039;&#039;x&#039;&#039; represents the amount of direct participation, and the output &#039;&#039;f(x)&#039;&#039; denotes the corresponding contribution from the Neurons&#039; Fund (NF).&lt;br /&gt;
&lt;br /&gt;
The function &#039;&#039;f&#039;&#039; is designed to have three distinct phases and will be a continuous function to ensure a smooth transition between these phases. Importantly, the rules for these phases will be globally consistent, applicable to all SNS launches.&lt;br /&gt;
&lt;br /&gt;
* Initial Lag Phase (I): The function starts at 0, and grows slowly until it reaches a set threshold. This design encourages projects to accumulate enough direct participation before receiving substantial contributions from the NF.&lt;br /&gt;
* Growth Phase (II): After crossing the threshold, the NF&#039;s contribution increases at a faster rate, signifying more significant support for projects that have demonstrated viability through direct participation.&lt;br /&gt;
* Saturation Phase (III): Beyond a certain point, &#039;&#039;f(x)&#039;&#039; will level off and will not surpass 10% of the NF&#039;s total maturity, which ensures that no single SNS will excessively deplete the NF&#039;s resources.&lt;br /&gt;
* Bounding Condition: The matching function &#039;&#039;f(x)&#039;&#039; is bounded by &#039;&#039;g(x)=x&#039;&#039;, meaning that it will never exceed a 1:1 ratio with &#039;&#039;x&#039;&#039;. In practical terms, the NF&#039;s contribution will always be less than or equal to the amount of direct participation.&lt;br /&gt;
* Audability: The shape of &#039;&#039;f&#039;&#039; (which can change over time due to varying NF size) should be audible.&lt;br /&gt;
&lt;br /&gt;
These design principles aim  to create a fair and sustainable system for allocating NF contributions to various SNS initiatives.&lt;br /&gt;
&lt;br /&gt;
== Benefits of matched funding ==&lt;br /&gt;
&lt;br /&gt;
=== Better Reflection of Market Signals ===&lt;br /&gt;
&lt;br /&gt;
The matched funding system is designed to closely align with market sentiment. Specifically, a project that successfully raises more direct contributions will correspondingly receive a greater contribution from the Neurons&#039; Fund (NF), up to a predetermined threshold.&lt;br /&gt;
&lt;br /&gt;
=== Simpler Decision-making for NF NNS Neurons ===&lt;br /&gt;
&lt;br /&gt;
The automated adjustment feature in the NF&#039;s contributions lessens the decision-making burden on NF NNS neurons. As a result, these neurons have fewer instances where they need to opt out, making the process more efficient.&lt;br /&gt;
&lt;br /&gt;
=== Improved Incentives for Projects ===&lt;br /&gt;
&lt;br /&gt;
The matching system provides a more compelling incentive structure for projects. Knowing that increased direct funding will be matched (up to a point) by the NF, encourages projects to be more proactive in their fundraising efforts.&lt;br /&gt;
&lt;br /&gt;
== Detailed specification of the matching function ==&lt;br /&gt;
[[File:Matching function.png|thumb|Graph of the matching function|alt=|900x900px]]&lt;br /&gt;
=== Cap ===&lt;br /&gt;
&lt;br /&gt;
The contribution should be capped by 10% of the NF maturity at proposal execution time and also by a global NF contribution cap being equivalent to 1M USD and thus 333k ICP. In other words we have cap = min (10% of NF maturity, global NF contribution cap)&lt;br /&gt;
&lt;br /&gt;
The global NF contribution cap should be a configurable parameter of the NNS and eventually it should be specified in units of XDR.&lt;br /&gt;
&lt;br /&gt;
=== Thresholds ===&lt;br /&gt;
&lt;br /&gt;
For specifying the shape of the matching function &#039;&#039;f&#039;&#039;, we define the following thresholds&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: Up to this point, a project receives no contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: Projects get a 2:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: Projects receive a 1:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_4&#039;&#039; = 2 * cap: Projects get a 2:1 contribution from the NF. (and afterwards the contribution of the NF remains flat).&lt;br /&gt;
&lt;br /&gt;
The thresholds should be configurable parameters of the NNS. For example they could be part of the NetworkEconomics record.&lt;br /&gt;
&lt;br /&gt;
Eventually, it should be possible to specify these thresholds in XDR and then convert them to ICP thresholds at the execution of the SNS swap proposal. For the initial implementation, it is sufficient to have these thresholds in ICP.&lt;br /&gt;
&lt;br /&gt;
For the time being, the following values are suggested&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: 100k USD corresponding to 33k ICP&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: 300k USD corresponding to 100k ICP&lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: 500k USD corresponding to 167k ICP&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Matching function polynomials ===&lt;br /&gt;
The matching should be realized by set of polynomials&lt;br /&gt;
&lt;br /&gt;
* f_1: for function values between t_1 and t_2 &lt;br /&gt;
* f_2: for function values between t_2 and t_3&lt;br /&gt;
* f_3: for function values between t_3 and t_4. &lt;br /&gt;
&lt;br /&gt;
Formulas for the polynomials can be derived from constraints listed above on the functions f and f’.  &lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=6727</id>
		<title>Matched Funding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=6727"/>
		<updated>2023-11-24T11:24:47Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
This wiki page describes the ‘Matched Funding’ scheme, in which the contribution of the Neurons’ Fund to SNS swaps scales in line with direct participation, allowing for a more accurate reflection of market signals.&lt;br /&gt;
&lt;br /&gt;
== The Matching function, f ==&lt;br /&gt;
&lt;br /&gt;
The scheme is implemented through a matching function &#039;&#039;f&#039;&#039;, where the input &#039;&#039;x&#039;&#039; represents the amount of direct participation, and the output &#039;&#039;f(x)&#039;&#039; denotes the corresponding contribution from the Neurons&#039; Fund (NF).&lt;br /&gt;
&lt;br /&gt;
The function &#039;&#039;f&#039;&#039; is designed to have three distinct phases and will be a continuous function to ensure a smooth transition between these phases. Importantly, the rules for these phases will be globally consistent, applicable to all SNS launches.&lt;br /&gt;
&lt;br /&gt;
* Initial Lag Phase (I): The function starts at 0, and grows slowly until it reaches a set threshold. This design encourages projects to accumulate enough direct participation before receiving substantial contributions from the NF.&lt;br /&gt;
* Growth Phase (II): After crossing the threshold, the NF&#039;s contribution increases at a faster rate, signifying more significant support for projects that have demonstrated viability through direct participation.&lt;br /&gt;
* Saturation Phase (III): Beyond a certain point, &#039;&#039;f(x)&#039;&#039; will level off and will not surpass 10% of the NF&#039;s total maturity, which ensures that no single SNS will excessively deplete the NF&#039;s resources.&lt;br /&gt;
* Bounding Condition: The matching function &#039;&#039;f(x)&#039;&#039; is bounded by &#039;&#039;g(x)=x&#039;&#039;, meaning that it will never exceed a 1:1 ratio with &#039;&#039;x&#039;&#039;. In practical terms, the NF&#039;s contribution will always be less than or equal to the amount of direct participation.&lt;br /&gt;
* Audability: The shape of &#039;&#039;f&#039;&#039; (which can change over time due to varying NF size) should be audible.&lt;br /&gt;
&lt;br /&gt;
These design principles aim  to create a fair and sustainable system for allocating NF contributions to various SNS initiatives.&lt;br /&gt;
&lt;br /&gt;
== Benefits of matched funding ==&lt;br /&gt;
&lt;br /&gt;
=== Better Reflection of Market Signals ===&lt;br /&gt;
&lt;br /&gt;
The matched funding system is designed to closely align with market sentiment. Specifically, a project that successfully raises more direct contributions will correspondingly receive a greater contribution from the Neurons&#039; Fund (NF), up to a predetermined threshold.&lt;br /&gt;
&lt;br /&gt;
=== Simpler Decision-making for NF NNS Neurons ===&lt;br /&gt;
&lt;br /&gt;
The automated adjustment feature in the NF&#039;s contributions lessens the decision-making burden on NF NNS neurons. As a result, these neurons have fewer instances where they need to opt out, making the process more efficient.&lt;br /&gt;
&lt;br /&gt;
=== Improved Incentives for Projects ===&lt;br /&gt;
&lt;br /&gt;
The matching system provides a more compelling incentive structure for projects. Knowing that increased direct funding will be matched (up to a point) by the NF, encourages projects to be more proactive in their fundraising efforts.&lt;br /&gt;
&lt;br /&gt;
== Detailed specification of the matching function ==&lt;br /&gt;
[[File:Matching function.png|thumb|Graph of the matching function|alt=|900x900px]]&lt;br /&gt;
=== Cap ===&lt;br /&gt;
&lt;br /&gt;
The contribution should be capped by 10% of the NF maturity at proposal execution time and also by a global NF contribution cap being equivalent to 1M USD and thus 333k ICP. In other words we have cap = min (10% of NF maturity, global NF contribution cap)&lt;br /&gt;
&lt;br /&gt;
The global NF contribution cap should be a configurable parameter of the NNS and eventually it should be specified in units of XDR.&lt;br /&gt;
&lt;br /&gt;
=== Thresholds ===&lt;br /&gt;
&lt;br /&gt;
For specifying the shape of the matching function &#039;&#039;f&#039;&#039;, we define the following thresholds&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: Up to this point, a project receives no contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: Projects get a 2:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: Projects receive a 1:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_4&#039;&#039; = 2 * cap: Projects get a 2:1 contribution from the NF. (and afterwards the contribution of the NF remains flat).&lt;br /&gt;
&lt;br /&gt;
The thresholds should be configurable parameters of the NNS. For example they could be part of the NetworkEconomics record.&lt;br /&gt;
&lt;br /&gt;
Eventually, it should be possible to specify these thresholds in XDR and then convert them to ICP thresholds at the execution of the SNS swap proposal. For the initial implementation, it is sufficient to have these thresholds in ICP.&lt;br /&gt;
&lt;br /&gt;
For the time being, the following values are suggested&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: 100k USD corresponding to 33k ICP&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: 300k USD corresponding to 100k ICP&lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: 500k USD corresponding to 167k ICP&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Matching function polynomials ===&lt;br /&gt;
The matching should be realized by set of polynomials&lt;br /&gt;
&lt;br /&gt;
* f_1: for function values between t_1 and t_2 &lt;br /&gt;
* f_2: for function values between t_2 and t_3&lt;br /&gt;
* f_3: for function values between t_3 and t_4. &lt;br /&gt;
&lt;br /&gt;
Formulas for the polynomials can be derived from constraints on the f and f’.  &lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=6726</id>
		<title>Matched Funding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Matched_Funding&amp;diff=6726"/>
		<updated>2023-11-24T11:24:09Z</updated>

		<summary type="html">&lt;p&gt;Bjoern.assmann: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
This wiki page describes the ‘Matched Funding’ scheme, in which the contribution of the Neurons’ Fund to SNS swaps scales in line with direct participation, allowing for a more accurate reflection of market signals.&lt;br /&gt;
&lt;br /&gt;
== The Matching function, f ==&lt;br /&gt;
&lt;br /&gt;
The scheme is implemented through a matching function &#039;&#039;f&#039;&#039;, where the input &#039;&#039;x&#039;&#039; represents the amount of direct participation, and the output &#039;&#039;f(x)&#039;&#039; denotes the corresponding contribution from the Neurons&#039; Fund (NF).&lt;br /&gt;
&lt;br /&gt;
The function &#039;&#039;f&#039;&#039; is designed to have three distinct phases and will be a continuous function to ensure a smooth transition between these phases. Importantly, the rules for these phases will be globally consistent, applicable to all SNS launches.&lt;br /&gt;
&lt;br /&gt;
* Initial Lag Phase (I): The function starts at 0, and grows slowly until it reaches a set threshold. This design encourages projects to accumulate enough direct participation before receiving substantial contributions from the NF.&lt;br /&gt;
* Growth Phase (II): After crossing the threshold, the NF&#039;s contribution increases at a faster rate, signifying more significant support for projects that have demonstrated viability through direct participation.&lt;br /&gt;
* Saturation Phase (III): Beyond a certain point, &#039;&#039;f(x)&#039;&#039; will level off and will not surpass 10% of the NF&#039;s total maturity, which ensures that no single SNS will excessively deplete the NF&#039;s resources.&lt;br /&gt;
* Bounding Condition: The matching function &#039;&#039;f(x)&#039;&#039; is bounded by &#039;&#039;g(x)=x&#039;&#039;, meaning that it will never exceed a 1:1 ratio with &#039;&#039;x&#039;&#039;. In practical terms, the NF&#039;s contribution will always be less than or equal to the amount of direct participation.&lt;br /&gt;
* Audability: The shape of &#039;&#039;f&#039;&#039; (which can change over time due to varying NF size) should be audible.&lt;br /&gt;
&lt;br /&gt;
These design principles aim  to create a fair and sustainable system for allocating NF contributions to various SNS initiatives.&lt;br /&gt;
&lt;br /&gt;
== Benefits of matched funding ==&lt;br /&gt;
&lt;br /&gt;
=== Better Reflection of Market Signals ===&lt;br /&gt;
&lt;br /&gt;
The matched funding system is designed to closely align with market sentiment. Specifically, a project that successfully raises more direct contributions will correspondingly receive a greater contribution from the Neurons&#039; Fund (NF), up to a predetermined threshold.&lt;br /&gt;
&lt;br /&gt;
=== Simpler Decision-making for NF NNS Neurons ===&lt;br /&gt;
&lt;br /&gt;
The automated adjustment feature in the NF&#039;s contributions lessens the decision-making burden on NF NNS neurons. As a result, these neurons have fewer instances where they need to opt out, making the process more efficient.&lt;br /&gt;
&lt;br /&gt;
=== Improved Incentives for Projects ===&lt;br /&gt;
&lt;br /&gt;
The matching system provides a more compelling incentive structure for projects. Knowing that increased direct funding will be matched (up to a point) by the NF, encourages projects to be more proactive in their fundraising efforts.&lt;br /&gt;
&lt;br /&gt;
== Detailed specification of the matching function ==&lt;br /&gt;
[[File:Matching function.png|thumb|Graph of the matching function|alt=|900x900px]]&lt;br /&gt;
=== Cap ===&lt;br /&gt;
&lt;br /&gt;
The contribution should be capped by 10% of the NF maturity at proposal execution time and also by a global NF contribution cap being equivalent to 1M USD and thus 333k ICP. In other words we have cap = min (10% of NF maturity, global NF contribution cap)&lt;br /&gt;
&lt;br /&gt;
The global NF contribution cap should be a configurable parameter of the NNS and eventually it should be specified in units of XDR.&lt;br /&gt;
&lt;br /&gt;
=== Thresholds ===&lt;br /&gt;
&lt;br /&gt;
For specifying the shape of the matching function &#039;&#039;f&#039;&#039;, we define the following thresholds&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: Up to this point, a project receives no contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: Projects get a 2:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: Projects receive a 1:1 contribution from the NF.&lt;br /&gt;
*&#039;&#039;t_4&#039;&#039; = 2 * cap: Projects get a 2:1 contribution from the NF. (and afterwards the contribution of the NF remains flat).&lt;br /&gt;
&lt;br /&gt;
The thresholds should be configurable parameters of the NNS. For example they could be part of the NetworkEconomics record.&lt;br /&gt;
&lt;br /&gt;
Eventually, it should be possible to specify these thresholds in XDR and then convert them to ICP thresholds at the execution of the SNS swap proposal. For the initial implementation, it is sufficient to have these thresholds in ICP.&lt;br /&gt;
&lt;br /&gt;
For the time being, the following values are suggested&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;t_1&#039;&#039;: 100k USD corresponding to 33k ICP&lt;br /&gt;
*&#039;&#039;t_2&#039;&#039;: 300k USD corresponding to 100k ICP&lt;br /&gt;
*&#039;&#039;t_3&#039;&#039;: 500k USD corresponding to 167k ICP&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Matching function polynomials ===&lt;br /&gt;
The matching should be realized by set of polynomials&lt;br /&gt;
&lt;br /&gt;
* f_1: for function values between t_1 and t_2 &lt;br /&gt;
* f_2: for function values between t_2 and t_3&lt;br /&gt;
* f_3: for function values between t_3 and t_4. &lt;br /&gt;
&lt;br /&gt;
Formulas for the polynomials can be derived from constraints on the f and f’.  &lt;/div&gt;</summary>
		<author><name>Bjoern.assmann</name></author>
	</entry>
</feed>