AIP 11: Behavior for KVS data
Author | Aleksei Lebedev |
---|---|
Discussions-To | https://github.com/Adamant-im/AIPs/issues/27 |
Status | Draft |
Type | Standards |
Category | ARC |
Created | 2019-02-18 |
Requires | 3 |
Simple Summary
Describes how clients should process stored data for different content, allowing to write and read it faster.
Abstract
As AIP-3 stands, users save its public and private information in ADAMANT blockchain. To write and read it faster and cheaper, different types of records should be introduced, including full re-write and incremental.
Specification
When sending KVS transaction, type
field of state
object must be as follows:
0
for full re-writing of contents by specifiedkey
value1
for incremental appending contents
Client apps should decide wether to use 0
or 1
write type by themselves. It depends on content type key
, and volume of updated information. For example, if user updates one’s contact name, it is faster and cheaper to store only updated record with 1
type. When significant quantity of contact names updated, it is reasonable to re-write all of contact list with single store transaction with 0
type.
Nodes API should process KVS properly. Values type
and key
are public, so node must filter and return KVS records on client’s demand. This will reduce traffic and processing time. For every key
value, node must return latest transactions with 0
type, following updates with 1
type.
Client app should process received KVS records in reasonable way.
Examples
{
"transaction": {
"type": 9,
"amount": 0,
"senderId": "U15677078342684640219",
"senderPublicKey": "e16e624fd0...",
"asset": {
"state": {
"key": "contact_list",
"value":"{
\"message\": \"6df8c172feef228d930130...\",
\"nonce\": \"f6c7b76d55db945bb026cd221d5...\"}",
"type": 0
}
},
"timestamp": 45603645,
"signature": "dbafce549f1..."
}
}
Sends private (encrypted) full contact list for U15677078342684640219.
{
"transaction": {
"type": 9,
"amount": 0,
"senderId": "U15677078342684640219",
"senderPublicKey": "e16e624fd0...",
"asset": {
"state": {
"key": "contact_list",
"value":"{
\"message\": \"6df8c172feef228d930130...\",
\"nonce\": \"f6c7b76d55db945bb026cd221d5...\"}",
"type": 1
}
},
"timestamp": 45603645,
"signature": "dbafce549f1..."
}
}
Sends private (encrypted) updated contact records for U15677078342684640219.
Rationale
Using type
of storing and reading KVS offers performance upgrade for client apps.
Copyright
Copyright and related rights waived via CC0.