Canvas is a instant-sync database with an embedded runtime and sync engine, that makes it possible to write web applications like smart contracts.
Canvas applications are easy to configure and have several useful properties:
- Off-chain. No transaction fees or confirmation wait times. Any number of peers can concurrently execute new actions, without waiting for consensus.
- Real-time p2p. Peers connect and sync directly with each other over libp2p, and use GossipSub topics to broadcast actions.
- Eventually consistent. Actions can freely read and write to a relational database. Every peer's database state will deterministically converge regardless of the order in which the actions are received.
- Self-authenticating. Every action is signed by a session key authorized by an end user identity, using e.g. SIWE for Ethereum identities. The entire action log can be verified and replayed by anyone at any time; applications are trustless and portable.
- Cross-platform. Canvas apps run in the browser or server, with NodeJS. They persist data to IndexedDB in-browser, SQLite with on-disk storage, or Postgres with an in-memory Merkle index.
Canvas is designed to be maximally interoperable and data-agnostic. We expect to support a wide range of signed data formats, plus the ability to sync Canvas networks to non-blockchain data sources.
For more information, see the Canvas documentation. Please note that the system is in active development and docs may not always be up-to-date.
To install the latest published CLI:
npm install -g @canvas-js/cli
canvas init <path>
: Initialize a sample applicationcanvas info <path>
: Display application metadatacanvas run <path>
: Run an applicationcanvas export <path>
: Export the action log as JSON to stdoutcanvas import <path>
: Import an action log from stdin
You can run each command with --help for more detailed documentation.
Canvas is currently developed and maintained by a small team. For suggestions or contributions, we recommend first opening an issue or discussing with an existing contributor before opening a pull request.
For information about how to build this repo, see DEVELOPING.md.
MIT © Canvas Technologies, Inc.