initial
This commit is contained in:
commit
504439b79f
10 files changed
+85
No files matched your search
@@ -0,0 +1,2 @@
|
||||
distrins: main.cpp core/ api/ resolver/ cluster/
|
||||
g++ main.cpp -o distrins
|
||||
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
@@ -0,0 +1,77 @@
|
||||
|
||||
# Bootstraping DNS via Distributed Ledger
|
||||
|
||||
## Table of Contents
|
||||
<toc max-level="6" />
|
||||
<br>
|
||||
|
||||
|
||||
## Introduction
|
||||
Bootstraping the DNS system using a distributed ledger, removing the inherent flaw that is its centralized nature while binding in neatly with current dns infrastructure.
|
||||
|
||||
## Requirements
|
||||
- Bind into current infrastructure without requireing more then an extra root hint on resolvers.
|
||||
- Existing domains need to be able to migrate (pre-registering .com, .net and all the others might be the way to go here.
|
||||
- A zone needs to be secured using one or more keys.
|
||||
- A key needs the be revokable.
|
||||
- Keys need to have a hirarchy: have a ranking assigned that decides which key can revoke which other keys.
|
||||
- Keys need to be restrictable to records or entire zones (scoped)
|
||||
- ~~Only top-level domains are allowed. Otherwise the chain size grows too large. Using ns records to delegate instead.~~
|
||||
- Set allowed level of subdomains in settings with default of 0 (Only root zones like com, net etc.)
|
||||
- Peer cluster communication needs to be secure, with each client having a private key.
|
||||
|
||||
## Considerations
|
||||
|
||||
### Some calculations
|
||||
|
||||
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,z,y
|
||||
0,1,2,3,4,5,6,7,8,9
|
||||
and -
|
||||
= 26 + 10 + 1 = 37
|
||||
|
||||
Max combined length: 255
|
||||
37^255 = too large
|
||||
|
||||
Limiting to 5 characters (no numbers) brings the posibilities down to 11'881'376 Domains
|
||||
|
||||
64 bytes per ecc key
|
||||
|
||||
|
||||
|
||||
## System Parts
|
||||
|
||||
### DNS Resolver
|
||||
To facilitate queries from current infrastructure for the authoritative zone (set when peer joins the cloud)
|
||||
|
||||
### HTTP API
|
||||
To create/update/delete zones.
|
||||
|
||||
### Peer Cloud
|
||||
#### Peering
|
||||
- Node discovery
|
||||
- Tracking node uptime
|
||||
- Rate node quality based on uptime
|
||||
- DNS record of peers allowed to join are added via transactions
|
||||
- Allow manual joining of new peer with a token
|
||||
- Network transparency: Nodes are identified by their public key, not ip address.
|
||||
- Keep track of which node authorized the joining of a new peer. Allows removal of entire tree of nodes if problematic joins happen.
|
||||
|
||||
#### Consensus
|
||||
- Limit new zone registrations per time spent part of peer cluster.
|
||||
- Only allow changes to existing zones once a node has been online for a while.
|
||||
- Resources may be dropped from local storage once they are superceeded after a certain time period
|
||||
- Virtual Voting
|
||||
|
||||
### Ledger
|
||||
|
||||
#### Type
|
||||
- blockchain
|
||||
- transaction table
|
||||
|
||||
#### Resource Types (Transactions)
|
||||
- DNS Zone
|
||||
- DNS Record?
|
||||
- TLS Certificate
|
||||
- Resource Access Key
|
||||
- Authorized Peer (public key of host allowed to join the cluster)
|
||||
|
||||
Whitespace-only changes.
Reference in new issue
Block a user