Deku V1 Mega-issue
d4hines opened this issue · comments
Daniel Hines commented
This is an issue to track the stuff we're working on over the next 4 weeks as part of the "deku v1" effort. It's not exhaustive, but mainly to make write down the stuff we're likely to forget.
- tests to catch when the genesis hash changes. (In consensus library)
- benchmark all the things
- A nice tilt setup
- deku-bootstrapper binary. This can be built against
main
first. - Confirm 2 confirmations (i.e single additional block) is enough with tenderbake.
- Separate secrets from non secrets in config (for easier K8's management)
- #773
Daniel Hines commented
- Check all usages of
deriving
Daniel Hines commented
- How to signal to users the results of operations, especially failures (transfers that fail, contract calls that fail, etc. etc.)
Daniel Hines commented
Deku alphanet debugging-related issues.
- our debugger is only capturing applied blocks, which is missing most of the trickier failures in Alphanet.
- Laurent says Deku nodes are exiting with status 0 (PL has an easy fix)
- Our log levels aren't right and aren't consistent. We need standardize them. Soon infra is going to send us slack nottications for every error and this going to get annoying real fast. Another issue with our logs is that
info
only shows up with-v
which hides a bunch of meaningful logs and causes us headaches when we forget to add the flag. - Lwt.async will crash our program if there's an exception, and there are currently lots of opportunities for this in Deku v0
Daniel Hines commented
- What do we do if State.bin is corrupted?
- Why is state.bin getting corrupted so frequently? (PL checked and
Lwt.write
is named to be atomic in the documentation).
Daniel Hines commented
- write unit tests for protocol and consensus.
InfiniteSwerve commented
- Check all usages of
signature.t
and possibly replace them withverified_signature.t
Daniel Hines commented
Testing
Protocol
- Many operations
- Duplicated operation in same block
- Duplicated operation in different blocks
- Early duplicated operation(before includable window)
- Late duplicated operation(after includable window)
- Balances are actually correct
- Invalid string operation
- Invalid signed operation
- Valid key, signature to different source operation
- Ensure receipt is only in place if operation was applied
Here is the PR about those tests:
#783
Consensus
- Old unsigned blocks are ignored
- Old signeds blocks are ignored
- Old blocks are never valid
- Ensure previous should point to previous block
- Valid blocks with not expected author are not signed
- Valid blocks with expected author are signed
- Invalid blocks with not expected author are not signed
- Invalid blocks with expected author are not signed
- On timeout next producer actually produces blocks
- Verify if the validators are rotating properly when not producing(when timeout happens)
- Ensure 2/3+1 signatures is needed to verifier to accept a block
- Ensure Block is always signed by author on
- Test Validators.skip
- Ensure producer only produces if he is the expected producer
- Ensure producer always produces if he is the expected producer
Networking
- Ensure a node always sends a packet once, but never twice
- Test packet is ignored when packet doesn't contain a valid hash or content
Daniel Hines commented
- Nothing seems to ever fail to parse with the
uri
library. I'm concerned this will bite us later. Perhaps we roll our own uri validator?
Daniel Hines commented
Nonce's aren't used! We need to fix this.Duh. They're part of the operation hash. We're good.