This repository contains both the specification and a Node.js based reference implementation of the blockchain-agnostic Sidetree protocol
See the latest spec for the full Sidetree protocol specification.
See The test vectors for input fixtures that are expected by all sidetree implementations.
See the implementation document for the detailed description of this implementation.
- Must pass
npm run test
. - Must pass
npm run lint
. - Prefix an interface that require implementation with
I
. e.g.ITransactionProcessor
. - Suffix a data-holder interface (without definition of methods) with
Model
. e.g.TransactionModel
. - Use default export if class/interface name matches the file name.
- Sort imports.
Refer to here for details on the release process of the artifacts in this repository.
NOTE: 2019-08-13: docker-compose out-of-date, needs to be udpated.
The Sidetree components are available via docker containers . Please see the docker document to find out details on building and running.
- Clone the repo.
- Create a topic branch for your spec contributions.
- run
npm install
- run
npm run spec:edit
- If you see errors like
UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, open './www/spec/index.html'
... create the missing directories and files and try again (they will be overritten). - Type
npx serve .
in the root directory and openhttp://localhost:5000/www/spec
. - Modify files in the
spec/markdown/
directory to make changes, refresh to see changes. - Do not commit build assets.
- Try and make blocks of text small so that changes can be suggested easily on specific lines.
- When you are happy with your changes, commit to your topic branch and open a Pull Request on GitHub and reviewers will be alerted to review for a potential merge.
- Make sure to tag people continiously to ensure your PR is reviewed in a timely manner.
- PRs that sit open without comments / reviews, will be closed at the editors discretion.