# Should SNS controlled ICP neurons be public by default?

**URL:** <https://forum.dfinity.org/t/should-sns-controlled-icp-neurons-be-public-by-default/35981>\
**Category:** Developers\
**Tags:** Discussing, nns, sns\
**Created:** [October 9, 2024, 7:35am UTC](https://forum.dfinity.org/t/should-sns-controlled-icp-neurons-be-public-by-default/35981 "2024-10-09T07:35:37Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![rem.codes](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/rem.codes/32/40260_2.png) [@rem.codes](https://forum.dfinity.org/u/rem.codes)\
**Post date:** [October 9, 2024, 7:35am UTC](https://forum.dfinity.org/t/should-sns-controlled-icp-neurons-be-public-by-default/35981/1 "2024-10-09T07:35:37Z")

</div>

While adding some features to the [toolkit](https://toolkit.rem.codes) so that SNSes can manage neurons from other SNSes through proposals I ended up in a discussion to do the something similar for ICP neurons, while exploring the possibilities in ran into the following issue;

In relation to SNS neurons, ICP neurons are not public by default and can only be fetched based on the caller. Because the SNS governance canister is be the owner of these neurons it’s not possible to retrieve them.

There was an big discussion going on regarding public ICP neurons but i didn’t spot any mention of SNSes that own ICP neurons. For sake of transparency I would expect that these SNS controlled ICP neurons are public.

Did notice that @GOLDDAO🥇 has a [custom implementation](https://dashboard.internetcomputer.org/canister/j4jiq-sqaaa-aaaap-ab23a-cai#list_neurons) for this by creating a canister that also holds references to their ICP neurons (creating semi-transparency themselves).

If i’m off with my findings, please correct me, if not, I think the least invasive approach to make this happen is by adding a call to the SNS governance canister that fetches the neurons from the NNS governance canister by caller.

---

<div class="post-metadata">

**Author:** ![Lorimer](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/lorimer/32/17601_2.png) [@Lorimer](https://forum.dfinity.org/u/Lorimer)\
**Post date:** [October 9, 2024, 7:57am UTC](https://forum.dfinity.org/t/should-sns-controlled-icp-neurons-be-public-by-default/35981/2 "2024-10-09T07:57:22Z")

</div>

> [@How to create a decentralized community neuron](https://forum.dfinity.org/t/how-to-create-a-decentralized-community-neuron/12564/45):
>
> Currently, neuron information such as the controller and the following graph are generally only **queryable for the controller or hotkeys associated with a neuron**. This will change soon with the advent of _public_ neurons.

If the SNS governance canister is the controller or hotkey for the NNS neuron, the neuron information should already be exposed to it, shouldn’t it?

Perhaps you could facilitate (using your Toolkit) a generic nervous system function that queries the NNS governance cansiter for these neurons (making the information ‘public’ to that SNS, which can use that information however it needs to).

I think the functionality you’re after may be something that the Toolkit could implement. What do you think?

Longer term, with the public neuron index, I guess this will be less necessary.

---

<div class="post-metadata">

**Author:** ![rem.codes](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/rem.codes/32/40260_2.png) [@rem.codes](https://forum.dfinity.org/u/rem.codes)\
**Post date:** [October 9, 2024, 8:34am UTC](https://forum.dfinity.org/t/should-sns-controlled-icp-neurons-be-public-by-default/35981/3 "2024-10-09T08:34:06Z")

</div>

I’m not sure if the `generic_nervous_system_function` to query the NNS governance canister would work in this scenerio, but might need to dive a little deeper.

Regarding the quote from @bjoern, i guess that would solve it if both public and private neurons are fetch-able by controller or hotkey passed in as an argument.

---

<div class="post-metadata">

**Author:** ![Lorimer](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/lorimer/32/17601_2.png) [@Lorimer](https://forum.dfinity.org/u/Lorimer)\
**Post date:** [October 9, 2024, 5:20pm UTC](https://forum.dfinity.org/t/should-sns-controlled-icp-neurons-be-public-by-default/35981/4 "2024-10-09T17:20:09Z")

</div>

> [@rem.codes](#):
>
> I’m not sure if the `generic_nervous_system_function` to query the NNS governance canister would work in this scenerio, but might need to dive a little deeper.

I guess because `generic_nervous_system_functions` can only be executed via proposal? That makes sense. I think I was having a bit of a brain fart, imagining that an SNS governance canister could be prompted to execute a `generic_nervous_system_function` without using a proposal (which would defeat the point of the DAO 😅).

My understanding is that you’d like to be able to programmatically detect the NNS neurons owned by the governance canister in order to display them in the Toolkit UI?

For the time-being at least, if you’re an SNS user and you’d like to raise a proposal to manage an NNS neuron owned (or hotkeyed) by the SNS governance canister, as long as you know the NNS neuron ID then you should be fine (it just means the UI won’t be able to display the neuron to you up front). If the NNS neuron in question is made a known neuron (particularly with a naming convention), then this shouldn’t be too difficult to manage from a user perspective, but I understand you want to make the UX as smooth as possible.

---

<div class="post-metadata">

**Author:** ![daniel-wong](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/daniel-wong/32/6248_2.png) [@daniel-wong](https://forum.dfinity.org/u/daniel-wong)\
**Post date:** [October 10, 2024, 1:21pm UTC](https://forum.dfinity.org/t/should-sns-controlled-icp-neurons-be-public-by-default/35981/5 "2024-10-10T13:21:30Z")

</div>

If I’m understanding this suggestion, I think it is technically _possible_ to add a `list_nns_neurons` method to SNS governance. Not sure what actual problem that solves. In other words, this _might_ be a YAGNI feature.

`list_nns_neurons` would not actually _force_ an SNS to make its neurons public, because an SNS can do what GOLDDAO did: they can create another canister to be the controller of their NNS neurons. Then, `list_nns_neurons` would return nothing.

At the same time, SNSs that actually _want_ to make their neurons public _can_ do that already without adding `list_nns_neurons` to SNS governance. One option is for the SNS to [set the visibility of its NNS neurons to Public](https://forum.dfinity.org/t/request-for-comments-api-changes-for-public-private-neurons/33360).
