Following neurons
Since version | 1.5.0 |
Idempotent? | yes |
Minimal access level | hotkey |
This section will show you how to use Rosetta to follow existing neurons. If you do not want to have to vote on every proposal yourself, you can decide to follow other neurons. This essentially means that you are going to vote the same way on a given proposal as the neuron that you are following.
How to follow neurons
The FOLLOW
operation sets a follow rule for a neuron.
The governance canister smart contract will automatically deduce the vote of the following neurons from the votes of the followees during the voting.
The followees
metadata field contains the list of neurons to follow.
If the list contains more than one neuron, the neuron will vote according to the majority of followed neurons votes (or abstain in case of draw).
If the list is empty, the rule for this topic will be discarded (i.e., the neuron will not follow any other neuron for proposals of this type).
You can get a list of publicly known neurons through the DATA-API
.
You can restrict the rule to a specific topic by specifying the topic
metadata field.
The topic is an integer between 0 and 10 (inclusive).
The default value for the topic
field is 0.
Each topic can have at most one rule associated with it.
The topic codes are listed below.
- Undefined (all topics).
- Neuron management.
- Exchange rate.
- Network economics.
- Governance.
- Node administration.
- Participant management.
- Subnet management.
- Network canister management.
- KYC.
- Node provider rewards.
Prerequisites:
account.address
is the ledger address of the neuron controller or hotkey.metadata.followees
contains an array of valid neuron identifiers.metadata.topic
is a valid topic identifier.
Postconditions:
- Neuron votes according to specified follow rule.
Calling FOLLOW
as a controller:
curl --location '0.0.0.0:8081/construction/payloads' --header 'Content-Type: application/json' --data '{
"network_identifier": {
"blockchain": "Internet Computer",
"network": "00000000000000020101"
},
"public_keys": [
{
"hex_bytes": "047a83e378053f87b49aeae53b3ed274c8b2ffbe59d9a51e3c4d850ca8ac1684f7131b778317c0db04de661c7d08321d60c0507868af41fe3150d21b3c6c757367",
"curve_type": "secp256k1"
}
],
"operations": [
{
"operation_identifier": {
"index": 0
},
"type": "FOLLOW",
"account": {
"address": "8b84c3a3529d02a9decb5b1a27e7c8d886e17e07ea0a538269697ef09c2a27b4"
},
"metadata": {
"neuron_index": 1,
"followees": [
3094748712371737240
],
"topic": 0
}
}
],
"metadata": null
}'
Calling FOLLOW
with a hotkey:
curl --location '0.0.0.0:8081/construction/payloads' --header 'Content-Type: application/json' --data '{
"network_identifier": {
"blockchain": "Internet Computer",
"network": "00000000000000020101"
},
"public_keys": [
{
"hex_bytes": "047a83e378053f87b49aeae53b3ed274c8b2ffbe59d9a51e3c4d850ca8ac1684f7131b778317c0db04de661c7d08321d60c0507868af41fe3150d21b3c6c757367",
"curve_type": "secp256k1"
}
],
"operations": [
{
"operation_identifier": {
"index": 0
},
"type": "FOLLOW",
"account": {
"address": "8b84c3a3529d02a9decb5b1a27e7c8d886e17e07ea0a538269697ef09c2a27b4"
},
"metadata": {
"neuron_index": 1,
"followees": [
3094748712371737240
],
"topic": 0,
"controller": {
"public_key": {
"hex_bytes": "047a83e378053f87b49aeae53b3ed274c8b2ffbe59d9a51e3c4d850ca8ac1684f7131b778317c0db04de661c7d08321d60c0507868af41fe3150d21b3c6c757367",
"curve_type": "secp256k1"
}
}
}
}
],
"metadata": null
}'
The followees
metadata field contains list of unique neuron identifiers assigned by the governance canister smart contract, not the list of neuron indices chosen by the caller.
You can obtain unique neuron identifiers of your neurons from the neuron_id
metadata field of the STAKE
and NEURON_INFO
operations.