Not a Propaganda Machine

    @counterfactual/machine
    TypeScript icon, indicating that this package has built-in type declarations

    0.1.6 • Public • Published

    @counterfactual/machine

    This is the TypeScript implementation of the Counterfactual protocol. It is responsible for executing the Counterfactual protocols specified here and producing correctly constructed signed commitments that correspond to state transitions of the users' state channels.

    The specific design philosophy it adopts is the middleware pattern. That is, all of these protocols are naturally broken down into steps, for each of which there is a middleware responsible for executing that step.

    Given this design, it's easy to extend the machine to support additional protocols, replace a default middleware with an alternative implementation, and for the machine to rely on yet delegate more advanced logic to external services.

    Some specific examples of this include:

    • delegating to a signing module that verifies whether a given action is safe to sign & countersign
    • storing state commitments (delegating to an arbitrary, possibly non-local service implementing a desired interface)
    • implementing a custom Write-Ahead-Log to tweak performance/security properties

    Note that because of this architecture, the machine becomes embeddable and its surrounding context can decide how to implement/extend needed functionality/services.

    Usage

    Make sure you have Yarn v1.10.1 installed or higher. Refer to Yarn's installation guide for setup instructions for your operating system.

    To install the dependencies:

    yarn

    Building the package

    To build the machine package:

    yarn build

    Tests

    To run all tests:

    yarn test

    To run only specific tests:

    yarn test <pattern that jest can recognize>

    will run tests in files whose filename matches <pattern> (see Jest's CLI reference).

    Keywords

    none

    Install

    npm i @counterfactual/machine

    DownloadsWeekly Downloads

    0

    Version

    0.1.6

    License

    MIT

    Unpacked Size

    2.33 MB

    Total Files

    214

    Last publish

    Collaborators

    • alonbukai
    • cf19drofxots
    • ebryn
    • joelalejandro
    • snario