dfinity / nns-dapp

The Dapp of the Internet Computer's Network Nervous System.
https://nns.ic0.app/
Other
111 stars 37 forks source link

Clear description and separate section for Manage Neuron Topic #261

Open skilesare opened 2 years ago

skilesare commented 2 years ago

For ICDevs.org we'd like for it to be easy for users to "dedicate" their neurons to us in a way that they maintain ownership of the underlying ICP but we are able to harvest the maturity for community and code development tasks that benefit the Internet computer. Current instruction can be found at https://icdevs.org/donations.html and as you can see it is a poor user experience. It would be nice to have a specific section in the NNS that explains what this functionality does and how to use it. This was in the NNS previously...I know because I gave dfinity control of my neurons on accident because it was just lumped in with the other topics. It would be great to have it back in a proper context.

icdev2dev commented 2 years ago

This would be awesome. Could you please explain how do you currently harvest this maturity. Perhaps we can utilize this opportunity to document it's usage?

origyndev commented 2 years ago

The current details are on the page https://icdevs.org/donations.html

We need 2 things:

  1. The user to add us as a hot key so that we can see their neuron and know it is ready to be harvested. We don't technically need this, but without it we don't know when we should harvest.
  2. The user needs to follow us on the Manage Neuron topic. When we are ready to harvest, we submit an NNS proposal and since we are the only one they follow it gets executed immediately:

222222222 is our neuron 111111111111 is their neuron zzzzzz is us as the controller of the new neuron so we can disburse it to ourselves after the 7 day dissolve.

dfx canister --network=ic --no-wallet call rrkah-fqaaa-aaaaa-aaaaq-cai manage_neuron \
"(record \
{\
    id=opt (record {id=222222222:nat64}); \
    neuron_id_or_subaccount = null; \
    command=opt (\
      variant {MakeProposal=(\
        record {\
          action=opt (variant {\
            ManageNeuron=record {\
              id=opt (record {id =111111111111:nat64}); \
              neuron_id_or_subaccount = null; \
              command =  opt( variant {\
                Spawn = record{\
                  new_controller= opt(principal \"zzzzzz\")\
                }\
              })\
            }});\
          url = \"icdevs.org\";\
          summary = \"donation\";\
        })\
      })\
  })";
icdev2dev commented 2 years ago

Perfect . Just so that I understand this better... if you were to call MergeMaturity at 100% (use case: you didn't need the funds right away), you would use something like this?


(record \
 {\
    id=opt (record {id=222222222:nat64}); \
    neuron_id_or_subaccount = null; \
    command=opt (\
      variant {MakeProposal=(\
        record {\
          action=opt (variant {\
            ManageNeuron=record {\
              id=opt (record {id =111111111111:nat64}); \
              neuron_id_or_subaccount = null; \
              command =  opt( variant {\
            MergeMaturity = record { percentage_to_merge = 100 : nat32 }\
              })\
            }\
      });\
          url = \"icdevs.org\";\
          summary = \"donation\";\
        })\
      })\
 }\
)