# Command-Line tools
In order to help developers interact with the network, both locally and on real networks, the GSN library includes a set of command-line tools.
# Installing CLI
The CLI commands are in a package @opengsn/cli
, so you must install it separately:
yarn add --dev @opengsn/cli
# start
Run GSN on a local test network. These commands deploy GSN contracts, and then starts a relay server
npx gsn start [--workdir <directory>] [-n <network>]
The <network>
defaults to "http://localhost:8545".
Contract addresses are written into <directory>
, which is ./build/gsn
by default.
From a test script, use
const { GsnTestEnvironment } = require( '@opengsn/dev')
const { paymasterAddress, forwarderAddress } = GsnTestEnvironment.loadDeployment()
To load the deployed addresses into a test application.
Note
GSN is already deployed on most public test and mainnet networks, so you don't need to deploy it there
# deploy
Deploy the singleton RelayHub instance, as well as other required GSN contracts (StakeManager, Penalizer, TestPaymaster). Saves the deployment results to the <workdir> directory.
npx gsn deploy [--from <account>] [--workdir <directory>] [--network <url>]
Parameter | Default value | Description |
---|---|---|
from | first account with balance | account to send transactions from |
workdir | build/gsn | where to write json files with addresses |
network | 'http://localhost:8545' | url to the local Ethereum node |
# relayer-register
Fund and register the relay server.
You need to run it after you start your own relayer on a public network
npx gsn relayer-register [--from <account>] [--relayUrl <url>] [--stake <stake>] [--unstakeDelay <delay>] [--funds <funds>] [--network <url>] [ --gasPrice <gasPrice>] [--mnemonic <mnemonic-file>] [--token <tokenAddress>] [--wrap]
Parameter | Default value | Description |
---|---|---|
relayUrl | http://localhost:8090 | relayer to register. |
stake | 1 Ether | amount to stake for the relayer |
unstakeDelay | 1000 | time to wait between deregistering and withdrawing the stake, in blocks |
funds | 2 Ether | amount to transfer to the relayer to pay for relayed transactions |
network | localhost | network to connect to (name or rpc url) |
gasPrice | 1 gwei | gas price for registration transactions |
mnemonic | Mnemonic file for the relayer "owner" account (with ether) | |
token | Token to use for staking. defaults to first registered token (usually "wrapped eth" token) | |
wrap | If the owner doesn't own enough tokens, then assume the token is a "wrapped eth" and call deposit() on it to convert eth into tokens. |
# paymaster-fund
Fund a paymaster contract so that it can receive relayed calls.
npx gsn paymaster-fund [--from <account>] [--hub <address>] [--paymaster <address>] [--amount <amount>] [--network <url>] [ --gasPrice <gasPrice>] [--mnemonic <mnemonic-file>]
Parameter | Default value | Description |
---|---|---|
paymaster | address from build/gsn/Paymaster.json if exists | address of the paymaster contract |
amount | 1 Ether | amount of funds to deposit for the paymaster contract, in wei |
network | localhost | network to connect to (name or rpc url) |
gasPrice | 1 gwei | gas price for registration transactions |
mnemonic | Mnemonic file for the relayer "owner" account (with ether) |
# paymaster-balance
Query a paymaster or relayer owner GSN balance.
npx gsn paymaster-balance [--hub <address>] [--paymaster <address>] [--network <url>]