Skip to content
subtly edited this page Jun 28, 2014 · 22 revisions

Very soon

  • Check VM unit tests are good.
  • VM unit tests should include calls.
  • Full state unit tests.
  • Tests for trie ref counting.

Fairly soon

  • Include files in LLL.
  • Compiler & code-gen library for LLL.

Soon

GUI

  • Make address/block chain list model-based, JIT populated.
  • Make everything else model-based.
  • Qt/QML class.

Core

  • Signalling for changes to State.

Thread-Safety

  • BlockChain
  • TransactionQueue
  • State

Cleanups & caching

  • All caches should flush unused data (I'm looking at you, BlockChain) to avoid memory overload.

Network:

  • "Error sending: Broken pipe" should only display once before killing session.
  • Genesis block to encode network/PoC version.

Soonish

Crypto stuff:

  • kFromMessage
  • Check all the tweak instructions.

Network:

  • *** Exponential backoff on bad connection.
  • *** Handle exception when no network.
  • *** Only download blocks from one peer at once.
    • Parallelise block download.
  • Better handling of bad blocks
    • Track which peers passed which blocks and punish them.
    • Don't pass on block until they're known good.
  • NotInChain will be very bad for new peers - it'll run through until the genesis.
    • Check how many it has first.
  • Crypto on network - use id as public key?
  • Make work with IPv6
  • Peers rated.
    • Useful/useless - new blocks/transactions or useful peers?
    • Solid communications?
  • Strategy for peer suggestion?

Cleanups & caching

  • State DB should keep only last few N blocks worth of nodes (except for restore points - configurable, defaults to every 30000th block - all blocks that are restore points should be stored so their stateRoots are known good).
  • Logger: cleanup windows-specific code, determine impact of Release vs Debug, settings

General:

  • Better logging.
    • Colours.
    • Move over to new system.

Robustness

  • Remove aborts
  • Recover from all exceptions.
    • Especially RLP & other I/O.
  • RLP should never assert; only throw.
  • Better handling of corrupt blocks.
    • Kill DB & restart.

GUI:

  • Turn on/off debug channels.

Later

Trie on DB.

  • Move the restore point stuff into block restore points
    • i.e. keep all nodes from last 127 blocks with counter, at 128, kill but keep every (60247)th or so i.e. one per week as a restore point.
    • maybe allow this to be configured.
Clone this wiki locally