ssvlabs / ssv-spec Goto Github PK
View Code? Open in Web Editor NEWLicense: GNU General Public License v3.0
License: GNU General Public License v3.0
How do we ensure, in protocol, that change operator doesn't cause slashing.
For example we can sync the new group with the highest decided and put that in their slashing db
depends on #40
a decided msg (quorum of commit msgs) should always terminate the instance
used for restricting calling start instance once on qbft
Move key management out from ssv node
Currently remote signers do not include an IsSlashable call so the ssv node needs to manage internal slashing protection
Signers in all signed objects should be unique (no duplicates)
Should the contract indicate if the operators sign blinded blocks or regular blocks?
A commit message should be added to the container if valid: height, type and signature.
This will allow to achieve a quorum and terminate the instance whenever there is a quorum regardless of when commit messages arrive: late, future and decided messages.
This pends a discussion with Roberto
Current spec holds the graffiti in the share data, that needs to be represented in the contracts
// SignBeaconObject returns signature and root.
SignBeaconObject(obj ssz.HashRoot, domain spec.Domain, pk []byte) (Signature, []byte, error)
Should follow up a spec
It will enable starting height from 0 and make it uint
Between nodes sync protocol:
per ssvlabs/SIPs#5
https://entethalliance.github.io/client-spec/qbft_spec.html#dfn-qbftspecification (function roundTimeout(round:nat):nat)
Current SSV runner is too complicated, it needs to be generalized to all duties and with a clear pipeline for all duties
Check and evaluate different topologies, based on topologies that are detailed here.
Currently the included round change justification includes all round change msgs, we should only include relevant quorum
Decided with 3 returns decided true and than when receive decided with 4 also return decided true
There is no use case in which the PartialSignatureMessage signer is different than the SignedPartialSignatureMessage signer
Missing test for instance that start from height higher than 0. in case of previews decided in storage
otherwise it's an attack vector and complicates the code significantly
When a node decides it should broadcast a post consensus msg with decided justifications in it so when another node receives it it can serve both as a post consensus partial signature but also as a decided msg.
This can reduce msg overhead
Go over all pubsub and libp2p configs and align/ explain differences from eth networking spec
Finalize implementation of DKG
qbft signed commit messages can have multiple signers, a decided message is just a commit msg with 2f+1 signers.
Should consider removing it, just use qbft signed messages
When uponRoundChange is called we should check if the msg is valid and also the justification is.
When round changes are checked in isProposalJustification the justifications are not checked (as part of proposal check)
we should separate the 2 checks so we can add round change justifications as part of the new SignedMessageHeader SIP
https://github.com/bloxapp/ssv-experiments/blob/master/ssz_encoding/qbft/messages.go#L82-L89
Currently decided is handled by the instance which doesn't enable accepting higher height decided msgs.
First round should be 0 not 1
Harden the node against malicious P2P activity (remember an attacker can also register his own validator with 3 malicious nodes and 1 honest node to attack)
A node receiving a decided msg from a higher height should trigger sync
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.