@cerc-io/nitro-protocol (2.1.0-alpha.0)

Published 2024-10-10 10:33:58 +00:00 by adwait

Installation

@cerc-io:registry=
npm install @cerc-io/nitro-protocol@2.1.0-alpha.0
"@cerc-io/nitro-protocol": "2.1.0-alpha.0"

About this package

Nitro Protocol

Smart contracts which implement nitro protocol for state channel networks on Ethereum, Filecoin and other EVM-compatible chains. Includes javascript and typescript support.

🆕 There is an accompanying documentation website.

Installation

.../my-statechannel-app> npm install --save @statechannels/nitro-protocol

Getting started

Building your state channel application contract against our interface:

Please see this section of our docs.

Import precompiled artifacts for deployment/testing

const {NitroAdjudicatorArtifact, ConsensusAppArtifact, VirtualPaymentAppArtifact} =
  require('@statechannels/nitro-protocol').ContractArtifacts;

Import typescript types

import {State} from '@statechannels/nitro-protocol';

const state: State = {
  channelNonce: 0,
  participants: ['0xalice...', '0xbob...'],
  appDefinition: '0xabc...',
  challengeDuration: '0x258',
  outcome: [],
  appData: '0x',
  turnNum: 0,
  isFinal: false,
};

For more information see this section of our docs

Import javascript helper functions

import {getChannelId, getFixedPart} from '@statechannels/nitro-protocol';

const channelId = getChannelId(getFixedPart(state));

Development (GitHub)

We use hardhat to develop smart contracts. You can run the solidity compiler in watch mode like this:

npx hardhat watch compilation

For the goerli testnet:

After successfully deploying you should see some changes to addresses.json. Please raise a pull request with this updated file.

INFURA_TOKEN=[your token here] RINKEBY_DEPLOYER_PK=[private key used for rinkeby deploy] yarn contract:deploy-goerli

For mainnet

WARNING: This can be expensive. Each contract will take several million gas to deploy. Choose your moment and gas price wisely!

INFURA_TOKEN=[your token here] MAINNET_DEPLOYER_PK=[private key used for mainnet deploy] yarn contract:deploy-mainnet --gasprice [your-chosen-gasPrice-here]

To a local blockchain (for testing)

Contract deployment is handled automatically by our test setup scripts. Note that a different set of contracts is deployed when testing. Those contracts expose some helper functions that should not exist on production contracts.

Verifying on etherscan

This is a somewhat manual process, but easier than using the etherscan GUI.

After deployment, run

ETHERSCAN_API_KEY=<a-secret> INFURA_TOKEN=<another-secret> yarn hardhat --network rinkeby verify <DeployedContractAddress> 'ConstructorArgs'

for each contract you wish to verify. Swap rinkeby for mainnet as appropriate!

You need to provide both ETHERSCAN_API_KEY and INFURA_TOKEN for this to work. For more info, see the docs.

Verifying NitroAdjudicator on Filecoin Calibration testnet

CALIBRATION_DEPLOYER_PK="<deploy_priv_key>" npx hardhat deploy --tags deploy-fvm --network calibration
npx hardhat starboard-verify NitroAdjudicator <nitro_adjudicator_address>

Starboard is a Filecoin blockchain explorer. The above command utilizes a hardhat plugin called starboard-verify to verify the contract on that explorer.

Dependencies

Dependencies

ID Version
@openzeppelin/contracts ^4.7.3
@statechannels/exit-format ^0.2.0
@typechain/ethers-v5 ^9.0.0

Development Dependencies

ID Version
@nomicfoundation/hardhat-network-helpers ^1.0.3
@nomiclabs/hardhat-ethers ^2.1.1
@nomiclabs/hardhat-etherscan ^3.0.0
@nomiclabs/hardhat-waffle ^2.0.2
@starboardventures/hardhat-verify ^1.0.1
@statechannels/devtools ^0.5.7
@typechain/hardhat ^4.0.0
@types/jest 29.5.0
@types/lodash.isequal ^4.5.5
@types/lodash.shuffle ^4.2.6
@types/mocha ^9.1.0
@types/node ^18.11.3
@types/wait-on ^5.3.1
@typescript-eslint/eslint-plugin ^5.59.0
@typescript-eslint/parser ^5.59.0
axios 0.25.0
chai ^4.3.6
dotenv ^14.3.2
eslint 7.17.0
eslint-config-prettier ^8.5.0
eslint-plugin-import ^2.26.0
eslint-plugin-prettier 3.3.1
ethereum-waffle ^3.4.0
hardhat ^2.17.2
hardhat-deploy ^0.10.4
hardhat-deploy-ethers ^0.3.0-beta.13
hardhat-gas-reporter ^1.0.7
hardhat-watcher ^2.3.0
jest 29.5.0
lodash.isequal ^4.5.0
lodash.shuffle ^4.2.0
prettier ^2.6.2
prettier-plugin-solidity ^1.0.0-beta.19
solhint ^3.3.7
solidity-coverage ^0.8.4
ts-jest 29.1.0
ts-node ^10.4.0
typechain ^8.0.0
typescript ^4.6.3
wait-on ^6.0.1
Details
npm
2024-10-10 10:33:58 +00:00
0
statechannels.org
MIT
latest
69 KiB
Assets (1)
Versions (1) View all
2.1.0-alpha.0 2024-10-10