Skip to content

Instantly share code, notes, and snippets.

@spikeekips
Created May 4, 2021 16:56
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save spikeekips/6dc13ed104fc58a650ba86f46045b675 to your computer and use it in GitHub Desktop.
mitum
technical overview; Mon May 3 01:19:30 KST 2021
spikeekips
developer
spikeekips@gmail.com
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