Remove
Nodes can remove themselves from a subnet on-chain as long as they are not the current epoch's validator; otherwise, it will remove them from the current epoch's attestation data, if it exists.
Call remove_subnet_node
to remove
remove_subnet_node
to removepub fn remove_subnet_node(
origin: OriginFor<T>,
subnet_id: u32,
subnet_node_id: u32,
)
Inserted & Updated Storage
...
// Remove node from attestations
...
PeerIdSubnetNode::<T>::remove(subnet_id, &peer_id);
BootstrapPeerIdSubnetNode::<T>::remove(subnet_id, subnet_node.bootstrap_peer_id);
HotkeySubnetNodeId::<T>::remove(subnet_id, &hotkey);
SubnetNodeIdHotkey::<T>::remove(subnet_id, subnet_node_id);
// Update total subnet peers by subtracting 1
TotalSubnetNodes::<T>::mutate(subnet_id, |n: &mut u32| n.saturating_dec());
// Reset sequential absent subnet node count
SubnetNodePenalties::<T>::remove(subnet_id, subnet_node_id);
TotalActiveNodes::<T>::mutate(|n: &mut u32| n.saturating_dec());
Last updated