Created
May 4, 2021 16:56
-
-
Save spikeekips/6dc13ed104fc58a650ba86f46045b675 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
mitum | |
technical overview; Mon May 3 01:19:30 KST 2021 | |
spikeekips | |
developer | |
[email protected] | |
https://github.com/spikeekips | |
* consensus protocol | |
_ISAAC+_: consensus protocol | |
- based on _PBFT_ | |
- at least `3/4` threshold | |
- *finality* | |
`INIT` ⟶ `Proposal` ⟶ `ACCEPT` ⟶ `INIT` ... | |
- round voting | |
- no new block without agreement | |
- no new round without agreement | |
* suffrage | |
_suffrage_ nodes: | |
- participate consensus process | |
- processing operations | |
_none-suffrage_ nodes: | |
- syncing | |
- can watch suffrage nodes | |
- can validate block data | |
* model | |
- simply mitum only do save data by consensus | |
*model* defines, | |
- data shape | |
- *operation* message for new data | |
- how to validate operation and it's data | |
- etc | |
will support *multiple* *models* | |
* mitum-currency: model | |
[[https://github.com/spikeekips/mitum-currency][https://github.com/spikeekips/mitum-currency]] | |
- cryptocurrency model, based on mitum | |
- account-based | |
features, | |
- create account | |
- transfer | |
- update account key | |
- weight based multisig | |
* state | |
- base unit of block data | |
- arbitrary data type | |
_state_ contains, | |
- hash | |
- unique key | |
- data as value | |
- block height | |
- operations | |
each block has states, which are *updated* | |
states in block are stores as tree: [[https://github.com/spikeekips/mitum/blob/cfd2cf4b53f0b2cd9550559f590880bb1f3414d4/util/tree/fixedtree.go#L105][_fixed_ _ordered_ _tree_]](not _avl_ or not _iavl_ tree) | |
* operations processing | |
- mitum processes multiple _operation_(_transaction_) for new block | |
- asyncronous processing | |
- distributed processing | |
for higher performance , will support distributed processing in multiple nodes processing pool | |
_mitum-currency_ shows almost 1,000 ~ 2,000 OPS(TPS) in my test machinem which is not good or not bad :) | |
* tech spec | |
- _POSIX_ compliant OSes: _linux_, _darwin_ | |
- golang: (will be rust?) | |
- database: _mongodb_ (_leveldb_ for testing) | |
- (raw) block data: filesystem by default; supports remote storage for maintenance | |
- _QUIC_: [[https://quicwg.org][https://quicwg.org]], _UDP_ based | |
* public network | |
- what is public network in _PBFT_? | |
- is *ideal* public network possible in _PBFT_? | |
main issues: | |
- how to elect and maintain (healthy) _suffrage_ nodes? | |
- how to exile unhealthy _suffrage_ nodes? | |
in mitum, | |
- designer of network designs their own network | |
- mitum will support designing network | |
* example public network | |
- ruled by external authority: governance | |
- governance, controlled by secret voting | |
* future plan | |
- *easy* documentation | |
- public network | |
- secret voting | |
- rock solid *stability* | |
- extreme operation processing |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment