Decentralized Key/Value Storage

Background Info

What is a key/value store database?

Blockstack Server: A Key-Value Store on Bitcoin

just made KV assetchain, will be added to list of coins
it will have the smart function of Key Value storage
took 15 minutes from concept to notaries funded with KV coin so they can dPoW

but it has no smart functionality yet, that will be added as I can, in order to solve some DEX and PAX issues, I need a KV storage, so I figured might as well make a decentralized KV to help out.

KV storage is a low level way a lot of things that need a database do things
KV chain will be a decentralized KV storage that can be used by anything that uses the KV API

decentralized data storage is relatively important as it allows for long term state to be securely created and modified, it will mimic an append only database, so changing data will be supported.

There are 1 million KV coins and its value will reflect the value of decentralized KV storage. Of course, KV is dPoW’ed and supports zcash shielded transactions. Record size will be limited to 8192 bytes, but multiple records can be combined to create larger sized storage. txfee is standard bitcoin txfee model, and if the capacity becomes an issue, a fee market will develop.

In order to reward the long time SuperNET investors, I will be sharedropping 20% of KV coin to SuperNET coin holders. We will need to create a migration path from the SuperNET NXT asset to the SUPERNET assetchain first,but that is already in the works for the migration of the various NXT assets. Once that is done, then we can do a KV sharedrop. You must hold the SUPERNET coin (not NXT asset) to get the sharedrop as there is no way to directly sharedrop a KMD assetchain coin in NXT.

If you are interested to be a part of KV coin team, please contact me, I certainly wont have time to do much with KV coin (other than technical) and I think it has a relatively large possibility for usage due to the popularity of KV storage. KV coin bounties and even some KMD will be made available

KV coin is an example of how I see the komodo ecosystem developing. As coins such as KV get established and succeed, KMD will gain value as the underlying coin.

The KV functionality didnt take long to add to komodod. It works for all the blockchains, komodod and all its assetchains. This allows each chain to have its own KV storage.

Initially, it does no protections for keys, so anybody can update any key at any time. Still thinking about the best way to give update rights to the creator and not to others. I am leaning toward having a signature in the value portion. That way we can use an external signature system to manage this. Using utxo sigs just seems a bit too messy.

The API is as simple as can be:

kvupdate key value
kvsearch key

For now, everything is a string, didnt want to complicate things to deal with binary key/values. It does waste about 12% of space, I can always add encoding modes later. The following is a simple test sequence. I first assign the value of “bar” to the key “foo”. Then I overwrite it with the value of “spam”

To make the behavior identical on all nodes, until the block with the KV entry is processed, it wont take effect.

See code block

I added support of a flags parameter to kvupdate.

The least significant bit is a write protect bit, so if it is set, it cant be updated until it expires.

The next bit is reserved, will become a binary data flag for signed data

The rest is currently use as a duration multiplier. The normal fee is multiplied by the the duration multiplier. The default is 1 day (1440 blocks)

Using the write protect bit, it is a bit of a first come first served free-for all, but with the duration all things will expire when the payment is used up.

I think with a signed binary option, we can get all that we need as the signed entries wont be able to be changed without a valid signature.

Bitcointalk Topic Entries: 1, 2, 3

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *

fourteen + 19 =