postech-dao / simperby Goto Github PK
View Code? Open in Web Editor NEWThe ultimate BFT blockchain engine for decentralized organizations with powerful trustless interoperability.
License: MIT License
The ultimate BFT blockchain engine for decentralized organizations with powerful trustless interoperability.
License: MIT License
The ideal medium of the human communication for the DAO (which's using simperby)
will be p2p gossip, not Discord or something.
In order to realize it, simperby should support a chatting system leveraging the existing p2p network.
Also, chat logs for a height will be an important historical record that deserves to be saved in the block of the very height..
i.e. HeightInfo::this_node_index
must be Option
.
They sometimes fail in CI, so currently #[ignore]
is set.
tokio::sync::mpsc
HashMap<SockAddr, Send>
https://github.com/postech-dao/simperby/blob/main/common/src/lib.rs#L30
Update
pub delegation: Vec<(PublicKey, PublicKey)>,
to
pub delegation: Vec<(usize, usize)>,
where usize
is the index to validator_set
.
This will decrease the header size which's important.
Those two crates will be imported by the contract side, so there must be no dependencies that breaks WASM compatibility.
Having a CI pipeline that checks such integrity would help.
Broadcasted packet must be re-broadcasted even if the original broadcaster goes offline.
As Tendermint is the most likely consensus to adopt, we have to research about the existing implementation of it.
We could either directly use it, or just take it as a reference for our original implementation.
The followings are what we have to research:
tendermint-rs
is capable of them.tendermint-rs
abstracted (or embed) the network layer, and should be aware of how it differs from our abstraction of networking.We need comprehensive comparisons with the Hyperledger protocol.
mitigation of the prevention of multi-level delegation would be helpful
They should encode into a pretty and simple way, like 0123456789ABCDEF
, using the hex
crate.
You will have to remove #[derive(Serialize, Deserialize]
and manually implement them.
Due to the special property of Vetomint, it's common to refer both nil votes and non nil votes.
Here we decided the naming rule that is applied universally throughout our project.
/// The hash of aggregation of all the commits for this block.
pub commit_hash: Hash256,
/// The Merkle root of transactions.
pub tx_merkle_root: Hash256,
/// The Merkle root of the chat log.
pub chat_merkle_root: Hash256,
/// The Merkle root of the non-essential state.
pub repository_merkle_root: Hash256,
to
/// The merkle root of all the commits for this block.
pub commit_merkle_root: Hash256,
/// The Merkle root of the state.
pub repository_merkle_root: Hash256,
repository_merkle_root
now contains the reserved state as well, though it will not be calculated in the MVP anyway.As I talked with @junha1, FloodSub seems to be inefficient, fragile, and an experimental feature, so we decided to use libp2p-GossipSub instead of FloodSub.
todo
todo
todo
Simperby's consensus MUST be implemented as a simple, safe, and live BFT algorithm.
Here are some conditions and relaxations (compared to ordinary blockchain consensuses)
let proposal = if state.valid_value.is_some() {
state.valid_value.unwrap()
}
can be rewritten as
let proposal = if let Some(x) = state.valid_value {
x
}
example: https://github.com/postech-dao/simperby/blob/main/vetomint/src/progress.rs#L354
Change the comparison condition to be inclusive.
This will be helpful in testing or if it's not easy to determine the increasing timestamp sequence,
while not compromising any security.
HeightInfo
must be carried by ConsensusState
itself.
The node operator would check how well his message is broadcasted, and decide whether to turn off his node.
The return value could be
I think the option 1 will be sufficient for now.
It is not used for now.
If the leaderless design makes the implementation simpler, we can consider to use.
(Additionally, being leaderless makes the UX better in our case)
/// Queries the total size of bytes occupied in the file system.
async fn get_total_size_in_bytes(&self) -> Result<u64, Error>;
Discord, Build status, ...
simperby_node::ConsensusStatus
It must contain useful information for the user.
Note that ConsensusStatus
is strictly for a single height.
It must be print in a nice and human-readable way.
Compared to Tendermint.
That checks every markdown file in the repo for
It will make the EVM light client much more cheap on its gas price.
/// If true, all voting powers are ignored.
/// Note that once granted, Simperby keeps all members forever in the reserved state.
/// If you want to remove a member, you must set this to true instead of removing the member.
///
/// TODO: consider this in various verification functions.
pub expelled: bool,
This will be useful for testing and special configurations.
depends on #57
This is a variation of the Tendermint protocol, with few small tweaks.
Currently it is using blocking methods (which MUST be fixed)
We need a brief overview of the functionality of the library, which should be enough to finalize the interface of networking module
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.