#
On-chain Network IdentityDIP | 196 |
Title | On-chain Network Identity |
Author | Greg Nazario (@gregnazario) |
Status | Draft |
Type | Informational |
Created | 07/06/2021 |
#
SummaryDip-6 defines a method for downstream nodes to learn about validator full nodes and gain access to the Diem network. In turn, validator full nodes would benefit by being able to distinguish known nodes from unknown nodes. This DIP describes the ability for node operators to self register their network identity on-chain, and allow other nodes to lookup this data for discovery of other nodes. An example use case is the ability for validator node operators to provide privileged clients prioritized access to validator full nodes. Validator full nodes can subscribe to an event stream to learn about changes and determine which nodes to prioritize.
#
Specification#
On-chain Network Identity FormatThe identities shall be a vector of BCS encoded NetworkIdentity
objects.
However, the vector shall be a set, and any duplicates will be ignored.
The NetworkIdentity
struct shall be a tuple of peer_id
and a x25519 public_key
that represents the identity
for a single node.
#
Updating Network Identity - operatorThe NetworkIdentity
for an account shall be updated by only the operator of the account. At this point, the
consumers of this identity must update their local use of identity within a reasonable amount of time.
#
Consuming Network IdentityConsumers of NetworkIdentity
may keep track of a list of accounts to watch. The consumers then can watch the
event streams of each account's NetworkIdentity
for updates and update accordingly.
#
Backwards CompatibilityAs this only applies to discovery of future nodes, there are no concerns for backwards compatibility. The onchain identity for VFNs work with already existing prioritzation in connection limiting for the network. Additionally, rate limiting can use this information for prioritization.
#
Copyright NoticeThis documentation is made available under the Creative Commons Attribution 4.0 International (CC BY 4.0) license (available at https://creativecommons.org/licenses/by/4.0/).