All Projects → statechannels → Statechannels

statechannels / Statechannels

Licence: mit
Development monorepo for the State Channels project.

Programming Languages

typescript
32286 projects

Labels

Projects that are alternatives of or similar to Statechannels

Coin registry
A global registry of JSON formatted files on 1500+ cryptocurrency tokens. Provides information like chat rooms, communities, explorers, and contact information on each coin. Used by https://blockmodo.com, DEXs, developers, and exchanges.
Stars: ✭ 85 (-11.46%)
Mutual labels:  ethereum
Vue Ethereum Ipfs
Distributed Application Starter: Vue front-end, Ethereum / IPFS Backend
Stars: ✭ 1,312 (+1266.67%)
Mutual labels:  ethereum
Merkle Tree Solidity
JS - Solidity sha3 merkle tree bridge. Generate proofs in JS; verify in Solidity.
Stars: ✭ 94 (-2.08%)
Mutual labels:  ethereum
Awesome Ethereum
A Curated List of Awesome Ethereum Resources
Stars: ✭ 85 (-11.46%)
Mutual labels:  ethereum
Coincurve
Cross-platform Python bindings for libsecp256k1
Stars: ✭ 89 (-7.29%)
Mutual labels:  ethereum
Deepblockchains
Deep Blockchains - reference implementation of Plasma, Stark, SMT and more
Stars: ✭ 93 (-3.12%)
Mutual labels:  ethereum
Cljs Web3
Clojurescript API for Ethereum Web3 API
Stars: ✭ 84 (-12.5%)
Mutual labels:  ethereum
Coinwink
Crypto Alerts, Watchlist and Portfolio Tracking App
Stars: ✭ 95 (-1.04%)
Mutual labels:  ethereum
Aira
Autonomous intelligent robot agent (AIRA) project implements the standard of economic interaction between human-robot and robot-robot.
Stars: ✭ 91 (-5.21%)
Mutual labels:  ethereum
Soltsice
Solidity & TypeScript Integration, Configuration and Examples
Stars: ✭ 94 (-2.08%)
Mutual labels:  ethereum
Eltwallet
Non-custodial decentralized mobile wallet
Stars: ✭ 88 (-8.33%)
Mutual labels:  ethereum
Plasma Chamber
Plasma Chamber is a DApps development framework that guarantees security, scalability, and usability utilizing Plasma technology.
Stars: ✭ 91 (-5.21%)
Mutual labels:  ethereum
Rlp
Recursive Length Prefix Encoding in JavaScript
Stars: ✭ 93 (-3.12%)
Mutual labels:  ethereum
Awesome Privacy On Blockchains
A curated list of privacy on blockchains resources
Stars: ✭ 86 (-10.42%)
Mutual labels:  ethereum
Dapp
Censorship resistant democracies.
Stars: ✭ 1,326 (+1281.25%)
Mutual labels:  ethereum
Contracts
Band Protocol's Solidity smart contracts
Stars: ✭ 85 (-11.46%)
Mutual labels:  ethereum
Securify2
Securify v2.0
Stars: ✭ 92 (-4.17%)
Mutual labels:  ethereum
Myetherapi
An API by MyEtherWallet. ETH / Ropsten / JSON RPC / Web3
Stars: ✭ 95 (-1.04%)
Mutual labels:  ethereum
0x Monorepo
0x protocol monorepo - includes our smart contracts and many developer tools
Stars: ✭ 1,328 (+1283.33%)
Mutual labels:  ethereum
Abyss Daico
DAICO is an innovative fundraising model that merges some of the benefits of Decentralized Autonomous Organizations (DAOs), aimed at upgrading and making the initial ICO concept more transparent.
Stars: ✭ 94 (-2.08%)
Mutual labels:  ethereum


State Channels

Simple off-chain applications framework for Ethereum.

circleci license


statechannels is a simple off-chain framework for building state channel applications on top of the Ethereum blockchain. It aims to make it simpler to build permissionless applications that have instant finality with zero-fee transactions.

You can learn more about what state channels are by reading one or other of the whitepapers underpinning the project, or a less technical written description.

Packages

This repository is a monorepo, and contains the following packages maintained with lerna and yarn workspaces:

  • docs-website : Documentation website
  • client-api-schema : JSON-RPC based schema definitions for the Client API with TypeScript typings
  • devtools : Developer tooling
  • jest-gas-reporter : Reports the gas used by various calls to ethereum contracts
  • nitro-protocol : Smart contracts and typescript support
  • wallet-core : Core wallet code that works in node-js and browser contexts
  • wire-format : Format of messages that are sent over the wire between wallets

Contributing

Installing dependencies

  • yarn - version 1.22.4, for easy management of specific Yarn versions, we recommend using Yarn Version Manager (YVM).
  • node - version 12.16.3, for easy management of specific versions, we recommend using n.
  • postgres - we recommend the postgres app. If you choose this installation, make sure you follow the following steps to add postgres tools to you $PATH, better verify commands like 'createdb', 'dropdb' runs correctly in your terminal before proceeding.
sudo mkdir -p /etc/paths.d &&
echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresap

The rest of the dependencies can be installed by running

yarn

from the monorepo root.

Building packages

To build all packages:

yarn build

Clean

To clean all packages:

yarn clean

Lint

To lint all packages:

yarn lint:check

To also apply automatic fixes:

yarn lint:write

Tests

To create and migrate test db:

cd ./packages/server-wallet/
./src/test_db.sh server_wallet_test

To run all tests:

yarn test

Authoring conventional commits

We follow the convention at https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional. Your commits will be linted against this convention. You can do this yourself locally by running

yarn commitlint --from=HEAD~1 --verbose

For help authoring commits, you can check out https://commitizen.github.io/cz-cli/.

Publishing packages

To publish you will need to trigger a github action:

publishing via a github

  1. Select the actions tab
  2. Select whether you want to do a regular publish (Publish Packages) or a pre-release (Publish Packages (canary))
  3. Click on Run workflow
  4. Select the branch (regular publishes will fail unless on master)
  5. For regular publishes, a PR will be created to get the updated version and changelog info back into master. You should merge this immediately!

Fixing a failed publish

Sometimes things will go wrong on CI and the git tags will be created but the package will not be published. To fix this you can do the following locally:

# fetch down any publish tags
git fetch --tags

# push packages to the registries, without creating new releases
npx lerna publish from-package

You might need a npm login --registry https://testnet.thegraph.com/npm-registry/ if you don't already have an access token in your .npmrc.

Typescript doc comments

These should adhere to the TSDoc standard. You can try the TSDoc playground.

Doc comments will appear in our documentation at https://docs.statechannels.org.

API reports

We use api-extractor to help us track changes to the API of some of the packages in this repo. The tool is run via yarn lerna run generate-api during our continuous integration suite, and generates an api report. If you make changes to the external API of a package, you should run this command locally and check in the reports to source control, else you will get a test failure.

The checked-in report helps faciliate PR review.

Community

State Channels Forums: https://research.statechannels.org/

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].