Sunset Jesus
sunsetjesus0@gmail.com
ddnrs is a domain name system which data components exists in the bitcoin blockchain and it's protocol works on top of the bitcoin (bsv) protocol
The current domain name system is not efficient in certain areas. Such as -
The structure is far more complicated than it needs to be. For example to register a domain name for a server address first go thru certified authority setting name servers and modify dns records for the required specification etc. And to resolve a domain name the client has top send request to individual tld name servers which have layers of complexities that needs to be eliminated for the next gen of internet with the integration of iot space.
In the current centralised dns system it's very difficult to create and register new tlds that can represent a service or application in meaningful way. For example if a service requires the domain "bitcoin.wallet" with the tld "wallet" it's going to be very difficult to acquire that tld in order to represent that service. This whole process is very lengthy as well as costs a lot of money. This type of limitation does not make sense for a system that maps IP address to human friendly address
The current DNS registration process cost a lot of money which is not ideal for the new emerging economy with internet of things. With blockchain based domain name such a ddnrs it cost get reduced to tiny fraction of what average registration cost of the current system.
One technical issue with the current domain name system is that the root servers not much distributed and due to which they still prone to ddos man in the middle attack and other attack vectors
With ddnrs decentralised public ledger it's possible to have a open,non-complicated , robust, secure and inexpensive domain name system that can power the future internet with iot space.
The ddnrs domain name system and the ddnrs protocol is fully open sourced with MIT licence
Due to simple and lightweight nature of the protocol ddnrs provides more degrees of freedom to build complicated utilities on top of it.
The ddnrs protocol is designed to work with the bsv blockchain in order to take advantages distributed immutable nature of the global database. It doesn't have it's own blockchain or a sidechain hence no requirements for using another coins or tokens.
By providing greater byte size for tld,sld and extension it's possible to generate much greater range of domain names which is simply not possible with the current system.
Because of the fact that it exists on the blockchain, it's immune to to attack vectors such as ddos,man in the middle, dns hijacking etc.
With average tx fees on bitcoin blockchain (bsv) being less than $0.002, creating a dnr (domain name record) in ddnrs is almost free.
The ddnrs protocol works on top of the bitcoin's op_return transaction. A ddnrs dnr (domain name record) looks like this - op_return < ddnrs prefix > < dnr hex string >
ddnrs prefix : 1NCSMuVcq33nRDLa5LNGkQY2PgfzMVhPp6 (generated with the bitcom protocol)
The ddnrs prefix is generated using the bitcom protocol. A domain name in ddnrs looks like this - sub_ext.sld.ext It has three components appended with the delimiter '.' . sub_ext : subext reffers to sub extention or subdomain sld : second level domain ext : domain extention or top level domain
The ddnrs uses JSON syntax to represent a dnr -
{ header : { hash : hash, pubkey : pub_key, sig : signature },
payload : {
"v" : v (INTEGER),
"dnr_id" : dnr_id (INTEGER),
"genesis_dnr_id" : genesis_dnr_id (INTEGER),
"ext" : ext (STRING),
"sld" : sld (STRING),
"sub_ext": sub_ext (STRING)
}
}
- All dnr prior to block n is invalid
- All dnr from block n is considered valid (block n is yet to be determined)
- The hash must be valid
- The signature must be valid with respect to the hash of the dnr
- The ddnrs prefix must be "1NCSMuVcq33nRDLa5LNGkQY2PgfzMVhPp6"
- The dnr ID must contain a valid unix timestamp
- The genesis dnr ID must be unique for each dnr chain
- The dnr is hashed using sha-256
- the hash is sighned using rsa-512
- A dnr is considered valid if it fulfils all the data structure rules && genesis rules && auth rules && cryptography rules
- A dnr pool is set of all valid dnr with the same sld
- A valid dnr is considered to be genesis dnr if it's dnr ID and have genesis dnr ID of 0 and have the least tx height in a dnr pool
- A valid dnr chain is formed when records of a dnr pool points to the same genesis dnr and signed by the private key which was used to sign the genesis dnr.
- The genesis dnr in a dnr chain must have height 0
- The dnr height is increased by a sum of 1 for each new record added to the chain
- When multiple valid records in a dnr pool have the same dnr ID, the record with greater tx height excluded from the dnr chain
- When multiple valid dnr in dnr pool have the same dnr ID with the same tx height, only one is included in the dnr chain.
- When multiple valid dnr in a dnr pool have the same sld, ext and sub-ext, the record with smallest dnr ID and smallest tx height is included in the dnr chain.