PUFFSnet DECENTRALIZED NAME SERVER
The Puffscoin DNS is a suite of smart contracts running on the PUFFScoin blockchain administering the .puffs top-level-domain registry. Swarm uses this suite to permit content addresses (their Swarm hash) to be referred to and accessed by a human-readable name. By registering a site name and setting it to resolve to the content hash of the root manifest of a website, users can access the PUFFS resident site in their web browser via a URL accessing the bzz protocol. EG:(bzz://thedailystoner.puffs/).
The basic model for the Puffscoin DNS characterizes a simple resolution protocol for PUFFScoin wallet addresses and Swarm content hashes. This system is extendible by design, permitting various resource types and classes to be resolved in future without the core components of the protocol requiring upgrades. The Puffscoin DNS is similar to the Internet DNS services most users are currently familiar with, it is structured a system of dot-separated hierarchical names referred to as domains. The owner of a domain maintains full control over the distribution of subdomains from their domain. EG: (bzz://legalize.thedailystoner.puffs or bzz://bestbongs.thedailystoner.puffs)
The Puffscoin ENS has two principal components: the Registry, and the participating Resolvers.
Investment Strategy and Consulting
The registry consists of a single central smart contract on the PUFFScoin blockchain which maintains a list of all domains and subdomains, and stores information such as the owner and resolver of each domain, as well as its “time to live” estimate. Top-level domains, like ‘.puf’ and ‘.test’, are owned by registrars, which are also smart contracts that set out the rules governing the allocation of their subdomains.
Domain owners may be either an external account (a user) or a smart contract. The registrar itself is nothing more than a smart contract which owns a domain, and issues subdomains of that domain to users that follow some set of rules as defined in the contract. Owners of domains in the registry may set the resolver and TTL for the domain, transfer ownership of the domain to another address or change the ownership of subdomains.
Resolvers are smart contracts responsible for the actual process of translating names into addresses. General-purpose resolver contracts deployed by the PUFFScon Foundation will be offered for users whose requirements are straightforward, but any contract that implements the relevant standards may participate as a resolver for the Puffscoin DNS. Thanks to its scalability, the PUFFScoin DNS can add, though the EIP standardization process, other methods that a resolver may implement in order to provide a mapping from a name to the responsible resolver can be added in without changing the underlying registry or existing resolver smart contracts in order to support them.
The PUFFScoin DNS allows users to register a unique domain name for their wallet address, allowing the transfer of funds to be made directly to a name instead of an address. The DNS will also be used for Swarm and IPFS content hashes, as well as other identifiers when they become useful or available, allowing users to easily browse and access files on these networks while providing metadata about names, such as ABIs for contracts, and whois information service for users.
Anyone can register a .puffs domain name for themselves by participating in an auction process, mediated by smart contracts deployed on the PUFFScoin blockchain. Users are required to wait for the name to become available, then they must bid on the said name and reveal their bid later. The highest bid will win the name and sees the auctioned PUFFS locked in a smart contract for a one-year period during which the successful bidder will be able to add extra data, create subdomains, lease, loan, sell it or (do anything with another smart contract).
As an example, a PUFFScoin DNS address would typically look like [your-name.puffs], although each registrar can assign subdomains. Thus, a user who owned the domain [is-the-dopest.puffs] could provide a reputation based marketing or consumer reports application by simply giving preferred brands or friends simple addresses as subdomains such as [gorrila-glue.is-the-dopest.puffs] or [snoopdog.is-the-dopest.puffs]. Subdomains can even be auctioned off by the owner using sub-registrar smart contracts.
Registrants of these secondary subdomains can maintain confidence in the availability of their content through smart contract verified transfer of ownership. Expansion towards smart contract renewals can be built to allow secondary subdomain owners to pay towards sustainability of their immediate top-level domain in the case of negligence on the part of the original contract owner.
Resolvers are responsible for resource lookups, returning contract addresses, content hashes or IP addresses as appropriate. Resolvers are also smart contracts and can be as simple as one that acts as its own name resolver. Stand-alone resolvers can be set to allow only its owner to update records. Public (Foundation-maintained) resolvers will be initiated, using the PUFFScoin ENS registry to determine and govern allowable entry updates.
PUFFScoin DNS names will be distributed through an auction process on the .puffs top-level domain. This registrar executes a “blind-auction” when the hash of the desired name is submitted to the PUFFScoin Initial Registrar. Auctions will last 5 days, with bidders submitting payment in PUFFS, with all bids closed 48 hours before auction close. Bids are revealed and payments for losing bids can be returned to the users who placed them. After this period has passed, the winning bidder can call the auction contract’s ‘finalize’ function to record the winning bidder’s address as the owner of the hash of the name.
All PUFFS sent to the Registrar will be held in separate “deed contracts”. These deeds are associated with the bidder and their bid, with the deed registered for the winning bid being exchanged for the ownership of the name-hash. The deeds for non-winning bids can be closed by various means, at which time the PUFFS held will be returned to the bidder. Some scenarios for deed closure will permit the held PUFFS to be sent to a burn address, a contract address, or in specific cases – sent to another user as a reward.
When a valid, non-winning bid is unsealed, upon deed closure, the bidder will receive a 99.9% refund of the held PUFFS. In the case of invalid bids, the bidder will receive a 1% refund upon deed closure. If a sealed bid is canceled, the canceller will receive a 0.5% refund against the escrowed PUFFS, with the remainder being burned or forwarded to a philanthropic DAO contract address such as the Veterans Endowment. Bids which are “abandoned” and remain sailed for at least 12 weeks may be canceled through contract calls by anyone to collect the reward. If a registered hash is reported as invalid, (ie: an invalid name), the reporter of this will receive a 10% reward of the held PUFFS. This is put in place as names are hashed on the user-level prior to being placed up for auction, and the registrar contract is not constructed to enforce character length restrictions independently.
The Registrar contract will initially be a temporary construct, as issues regarding name allocation will crop up, and we will implement improvements as they become available, expanding the available namespace to allow shorter names (less than seven characters) or to permit users to build separate PUFFScoin DNS top-level domains.
We will be initializing the PUFFScoin ENS with a five-letter TLD, which may slow integration into pre-existing DNS systems, but will allow for an integrated quality within the PUFFScoin DNS, ensuring that everybody connecting directly to the PUFFScoin network (ie: installs and interacts with the gpuffs client) already has the EVM established for applications and thus, has inherent visibility and interoperability into the .puffs namespace.
Reverse name resolution will also be supported, allowing a user account or a contract address to associate data with its canonical name, a sort of “PUFFScoin caller ID”. Other use-cases which are obvious on present-day internet usage under third-party DNS providers, such as the provision of multiple services under a single domain name will be realized on the PUFFSweb as well using Swarm hosted-dApps and Whisper addresses and mail servers.
While the Foundation will maintain user-friendly interfaces for interacting with the auction contract, this process can be achieved thru command line interface on your gpuffs console as well.
The auction process occurs in three steps:
First, you will open an auction for the name you wish to purchase and place a bid. This initiates a 72-hour timer wherein other users may place bids on the name. This period is run as a blind auction, with bid details obscured.
Secondly, following the conclusion of this period, a 48-hour “reveal” period initiates. All users who placed a bid on the name up for auction MUST reveal their bid, or lose the funds placed. Valid non-winning bids are refunded, less a 0.5% fee which is transferred to the Veterans Cannabis Endowment.
Finally, when the reveal period ends, the winning bidder can claim the name, paying the amount bid by the SECOND-HIGHEST BIDDER. This expense is locked in the deed smart contract for as long as the winning bidder retains control of the name for the duration of the Initial Registrar, although they may release the name after one year if they choose and recover the entire deposit initially made.
The PUFFScoin DNS Initial Registrar will be launched on the main net and will be set at [contract address]. At public launch, the PUFFScoin DNS will maintain an automated registrar that permits anyone to register names ending in “.puffs” using a smart-contract driven auction process. This page will be updated at that time with the proper contract address and API.
This registrar is designed to be an interim step in the long-term development of this service, to enable a fair and straightforward process in the .puffs top-level-domain initial formation, and to provide an opportunity for the community to develop experience and insight into the operation of a decentralised name registry with a focus on cannabis-related ventures.
A Permanent Registrar should be launched no later than two years following deployment of the Initial Registrar. The PUFFScoin Foundation team will follow various EIP (Ethereum Improvement Proposal) standardization processes and implement those as they are codified into the PUFFSnet. The changeover to the Permanent Registrar will provide a fair process for transferring names registered with the initial registrar to the permanent registrar.
The PUFFScoin DNS root contract will be, during the nascent stages of the PUFFScoin blockchain, owned by a multisig wallet, with members of the PUFFScoin Foundation and the overall development community as keyholders. Long term, we would prefer a further decentralization of this service once contracts can be ascertained to manage the governance of the Permanent Registrar.
A state muct also be maintained in the case of unforseen issues on the PUFFScoin DNS. While the incorporated resistance to censorship and content deletion make the blockchain the ideal forum for preserving the integrity of cannabis-related data, the probability of abuse and mission creep will demand a mechanism be in place for when a domain needs to be removed from the blockchain. A requirement for vigilance against societally agreed-upon limits to content will require arbiters for dispute resolution and abuse management systems built as a second layer to the PUFFScoin ENS, which can potentially allow clients and users to “subscribe” to registries that will implement blacklists for abusive and illegal content on .puffs TLD subdomains.