Re-implementation of Patricia-Merkle Trie (#203)

* Start of trie-db re-implementation

* WIP commit

* More WIP

* WIP, seems complete, untested

* Ported trie-db operational

* Add Ethereum trie tests

* Use u8aConcat to construct u8a

* Basic RocksDb interface

* Combine engines into DB, expand tests

* Update Trie with transaction wrapper

* LevelDb (sync) interface

* Remove unused (for now) package (compatibility)

* trie-d -> trie-db-old, trie-db-ext -> trie-db

* Version bump

* Skip old trie tests (package to be removed)

* Skip tests (fixed)

* Remove non-used RocksDb spec

* Skip FileFlat tests (deprecated?)
This commit is contained in:
Jaco Greeff
2018-09-01 22:17:57 +02:00
committed by GitHub
parent 29ddd7d357
commit e1135a665b
87 changed files with 3091 additions and 823 deletions
+54
View File
@@ -0,0 +1,54 @@
// Copyright 2017-2018 @polkadot/db authors & contributors
// This software may be modified and distributed under the terms
// of the ISC license. See the LICENSE file for details.
import { BaseDb, ProgressCb } from '../types';
// import logger from '@polkadot/util/logger';
// import u8aToHex from '@polkadot/util/u8a/toHex';
type Storage = {
[index: string]: Uint8Array
};
// const l = logger('db/memory');
export default class MemoryDb implements BaseDb {
private storage: Storage;
constructor () {
this.storage = {};
}
close (): void {
// noop
}
open (): void {
// noop
}
maintain (fn: ProgressCb): void {
fn({
isCompleted: true,
keys: Object.keys(this.storage).length,
percent: 100
});
}
del (key: Uint8Array): void {
delete this.storage[key.toString()];
}
get (key: Uint8Array): Uint8Array | null {
// l.debug(() => ['get', u8aToHex(key)]);
return this.storage[key.toString()] || null;
}
put (key: Uint8Array, value: Uint8Array): void {
// l.debug(() => ['put', u8aToHex(key), u8aToHex(value)]);
this.storage[key.toString()] = value;
}
}