Denarius provides a service for storing name->value pairs in its blockchain (Name-Value Storage, or NVS). The initial concept was inherited from the NameCoin cryptocurrency yet while NameCoin is mostly focused on supporting decentralized domain zone *.bit in their extension, Denarius provides a universal, extensible service to store and maintain name->value pairs without imposing a narrow specialization.
Denarius also supports a distributed alternative DNS service too (DDNS), and each Denarius wallet contains a built-in simple DNS server, supporting the standard RFC1034 UDP DNS protocol.
Denarius Names Overview
Denarius stores data in the blockchain by a set of name->value pairs:
- name – label for the stored data, up to a length of 512 bytes.
- value – the data itself, up to a length of 20*1024 (20kb).
Denarius allocates up to 20kB for value, enough to fit public keys for most modern cryptographic applications. We consider a cryptocurrency blockchain to be an extremely reliable place to publish and maintain public keys for many cryptographic applications such as SSH/SSL certificates. Like regular payment transactions, NVS pairs stored in the blockchain also get confirmations during block generation, and are virtually immune to being altered in a Man-In-the-Middle attack.
Since the blockchain is a trusted data store protected from unauthorized modification it is a great foundation for the deployment of cryptographic Public Key Infrastructure (PKI), Proof-of-Data (POD), immutable recordkeeping, timestamps, IPFS, and other distributed services.
The Denarius blockchain will accept NVS pairs without any restrictions to the data format of either the name or value. However, for standardization purposes we recommend the following format for names:
Each NVS pair has its owner. Each owner is specified by the Denarius payment address stored together with the pair. Only the owner of the payment address is able to modify or delete the pair, or transfer ownership to another address. When a new pair is created, a new payment address for the pair is created in the local wallet.
You can manage Denarius NVS entries either through the Denarius wallet QT, or denariusd JSON RPC.
Denarius Service abbreviations
While you are free to create your own services using Denarius’s NVS, we recommend using the following supported service abbreviations:
dns: – Denarius DNS – DDNS
ssh: – Denarius SSH – DSSH (Coming soon)
gpg: – Denarius GPG – DGPG (Coming Soon)
nft: – Denarius NFT – DNFT (Coming Soon)
magnet: – Torrent Magnet Link
video: – IPFS Video Hash
@ – Denarius Aliases/Names – Used with Denarius Addresses for sending funds/verifying identities, etc.
Managing Denarius Name entries with the QT
The “Manage Names” tab will include the following elements:
- name: If this NVS entry will be used with a particular service abbreviation (dns:, etc) then characters allowed by the appropriate service prefix should be used. e.g.
- days: How many days to register the name (between 1 and 9999). Upon expiration, the name can be taken by another user.
- Operation type:
- NAME_NEW – create a new name.
- NAME_UPDATE – update values, change owner, or extend the registration.
- NAME_DELETE – delete a name.
- value: To be filled with the content to be associated with the name. The percentage indicator shows how much of the 20kb maximum space is used. This field can contain ANY type of data, although conventions should be observed when the name-value pair is to be used by a particular service. e.g.
A=192.168.0.123|TXT=example txt record
- Import: This button allows you to choose any file (not more than 20kb), to be inserted in the value field.
- new address: To enter the D-address you wish to transfer the name to. Applicable only for the NAME_UPDATE operation.
- Submit: This button confirms the operation and submits the data to the Denarius blockchain.
- Names in your wallet: This table displays a list of your names. Yellow fields indicate the name is pending or when less than a month remains before expiry. Red fields indicate expired names.
- Owned by me – displays only names owned by the wallet.
- Owned by others – displays names transferred to others.
- Expired – displays expired names previously owned by the wallet.
Managing Denarius Name entries with the daemon
Below is the list of Denarius JSON RPC commands for managing NVS entries. Parameters in square brackets [ ] are optional.
name_new <name> <value> <days> [toaddress]
Create a new Denarius NVS pair and publish it into the blockchain.
days: initial lease time in days. (Max ~100 Years)
toaddress: address to register new name to
name_update <name> <value> <days> [toaddress]
Update the value for an existing name.
days: adds lease days. (Max ~100 Years)
toaddress: transfer name ownership to another Denarius address.
Delete a Denarius NVS pair from the blockchain.
Retrieve a Denarius NVS pair and transaction info for specified
List all matching NVS pairs belonging to the current wallet and those that were owned in the past. If
name is not specified, then it lists all names:
name_scan [start-name] [max-returned]
List Denarius NVS pairs existing in the blockchain, returning
max-returned entries (default 500):
start-name: An integer. Skip this number of names. This is useful to download the list in chunks.
sendtoname <name> <amount> [comment] [comment-to]
Send an D payment to the address associated with the specified
amount: D amount, rounded to the nearest 0.01.
comment-to: will be stored in the local wallet, not in the blockchain.
name_filter [regexp] [maxage=0] [from=0] [nb=0]
Scan and filter names.
regexpon names, empty means all names.
maxage: look in last
from: show results from number
nbresults, 0 means all.
stat: show some stats instead of results.
Denarius NVS Name Fees
The cost to do any NVS operations on the Denarius blockchain is roughly 1 D.
0.9 D goes to miners in the network to help support the network by doing any name operation
0.1 D goes to the address for the name operation and is non-spendable
Denarius NVS name as a payment alias
It is possible to send D currency directly to a name, without knowing the address.
To create a name alias for payment address, just create an NVS pair with a specified unique name and any value. We recommend entering a text description as the value.
All payments made to that name will be sent to the appropriate payment address, to which the name is registered. e.g:
name_new "@buzz" "Donation name registration for an awesome person" 365
You can then send @buzz D payments with the JSON RPC command:
sendtoname @buzz (amount)