You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Erik Grinaker 4298bbcc4e
add support for block pruning via ABCI Commit response (#4588)
5 years ago
..
README.md abci/examples: switch from hex to base64 pubkey in kvstore (#3641) 5 years ago
helpers.go lint: golint issue fixes (#4258) 5 years ago
kvstore.go add support for block pruning via ABCI Commit response (#4588) 5 years ago
kvstore_test.go example/kvstore: return ABCI query height (#4509) 5 years ago
persistent_kvstore.go format: add format cmd & goimport repo (#4586) 5 years ago

README.md

KVStore

There are two app's here: the KVStoreApplication and the PersistentKVStoreApplication.

KVStoreApplication

The KVStoreApplication is a simple merkle key-value store. Transactions of the form key=value are stored as key-value pairs in the tree. Transactions without an = sign set the value to the key. The app has no replay protection (other than what the mempool provides).

PersistentKVStoreApplication

The PersistentKVStoreApplication wraps the KVStoreApplication and provides two additional features:

  1. persistence of state across app restarts (using Tendermint's ABCI-Handshake mechanism)
  2. validator set changes

The state is persisted in leveldb along with the last block committed, and the Handshake allows any necessary blocks to be replayed. Validator set changes are effected using the following transaction format:

"val:pubkey1!power1,pubkey2!power2,pubkey3!power3"

where pubkeyN is a base64-encoded 32-byte ed25519 key and powerN is a new voting power for the validator with pubkeyN (possibly a new one). To remove a validator from the validator set, set power to 0. There is no sybil protection against new validators joining.