chain-validation

module
v0.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 11, 2019 License: MIT

README

Chain-Validation

This library provides tools for validating the correctness of a Filecoin implementation according to the specification.

To maintain consensus, all Filecoin implementations must produce identical state transformations for any (state, message) pair. Further, they must implement the same block reward and chain selection logic. Validating correctness in this respect requires extensive coverage over (state, message) pairs, message sequences, and blockchain structures, and is important in maintaining the security and integrity of the network.

This library designed to allow any implementation of Filecoin to import it, implement a simple “driver” interface, and then run the tests provided by the testing library, passing the driver in as the parameter.

For a comprehensive project description refer to the Filecoin Chain-Validation Tools Design Doc.

Goals

  • A validation library that is implementation-independent enabling validation suites to be written once and used by different Filecoin implementations.
  • High-level script-like methods for constructing long and complex message sequences, and making semantic assertions about the expected state resulting from their application.
  • High-level script-like methods for constructing complex blockchain structures containing those messages, and making assertions about the expected state from their evaluation.
  • Validation suites with significant coverage over actor state and code paths.
  • Integration with both Go-filecoin and Lotus, enabling importing and use of the validation suites.
  • Incremental utility to both these implementations while they are in development (rather than requiring an implementation to be complete before validation is useful)

Non-Goals

  • Immediate integration with Filecoin implementations not written in Go (though there should be a path towards this). Other implementations will be expected to write code for their implementation to work with this tool.
  • High-performance execution, if this comes at a cost of timeliness or comprehensiveness

Usage

TODO

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL