marigold-dev / deku

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Deku V1 Mega-issue

d4hines opened this issue · comments

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
  • Check all usages of deriving
  • How to signal to users the results of operations, especially failures (transfers that fail, contract calls that fail, etc. etc.)

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
  • 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).
  • write unit tests for protocol and consensus.
  • Check all usages of signature.t and possibly replace them with verified_signature.t

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
  • 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?
  • Nonce's aren't used! We need to fix this. Duh. They're part of the operation hash. We're good.