$ dfx --identity proposals canister --network ic --no-wallet call rrkah-fqaaa-aaaaa-aaaaq-cai manage_neuron '(record {id = null; command=opt variant {MakeProposal=record {url=""; title=”In the NNS Frontend dapp, add cycle_dao’s neuron (5967494994762486275) so people can follow cycle_dao”;action=opt variant {Motion=record {motion_text=""}}; summary=”As part of liquid democracy, neuron holders can choose to follow the voting choices of other neurons. This can be done manually, but a very common and consumer-friendly way is to use the ‘follow neuron’ functionality in the NNS Frontend dapp. To further decentralization, this proposal is to add cycle_dao’s neuron: 5967494994762486275.”}}; neuron_id_or_subaccount=opt variant {NeuronId=record {id=5241875388871980017:nat64}}})'
Is it necessary to follow step 1 to create a neuron that has permission to make a proposal? Is it possible to use a neuron that was created with the NNS app? @diegop
I set up the neuronID using dfx, quill, and keysmith and can see the neuron in ic.rocks with over 1 ICP and a dissolve delay of 1 year. When I run the call below in the Candid UI, I get the error message below. What else needs to be done to enable this neuron to make a motion proposal?
manage_neuron(record {id=null; command=opt variant {MakeProposal=record {url=""; title=opt “This is a test title”; action=opt variant {Motion=record {motion_text=""}}; summary=“This is a test summary”}}; neuron_id_or_subaccount=opt variant {NeuronId=record {id=12008772471346176261}}})
(record {command=opt variant {Error=record {error_message=“Caller not authorized to propose.”; error_type=3}}})
The error is because the candid ui always sends calls as the anonymous caller. To call the manage_neuron method is with the caller/identity that controls the neuron. In Diego’s case he is using the identity he created called ‘proposals’
So just to make sure I understand, this error message will always occur when trying to call manage_neuron with Candid UI because I can’t send it (and therefore authorize it) with the identity that I created for this neuron ID. Basically, it sounds like I have come as far as possible with testing short of submitting an actual proposal and losing 1 ICP for the test because of a Rejected proposal. Does that sound about right or are there other ways of testing the manage_neuron command with my neuron and identity without actually making a proposal? I suppose this may be the reason why several people have submitted test proposals in the past. @levi
Sounds right, I dont know of a way to test it without making a live one. maybe on a local replica if you can get the governance canister running on it.
I will be honest, I actually created a live one while testing since I started creating them a few months ago when the IC was still baking, and it was my job to actually help write the docs.
Of course, it cost me ICP, but i figured “hey that is the cost of sending proposals”.
Could I have started up a local version of the Governance Canister? I guess so, but i found it easier to do this for testing:
@diegop unless I’m missing something, the title in step 1.2 ("… ensure the principals are the same") should be to ensure the account IDs are the same because $ dfx --identity proposals ledger account-id only returns the account ID, right?
Yes you are right those only return account IDs. I must have meant “check accounts”. I need to do a review of the intent, but quick glance leads me to believe you are right.
Here is the command to initiate a proposal using dfx.
I need to replace $SUMMARY with proposal content,But the proposals are multi-line, so I can’t enter them in one command. I can only use ‘\n’ to replace all newlines in the proposal. Is there any way to make it simpler