从本小节开始,所有的命令都需要在终端程序里面执行,如果你想学习下终端的基本用法,请移步这里。
因为不同读者使用的操作系统、登录操作系统的用户身份不同,安装的准备工作及安装步骤可能略有不同,下面根据登录系统的用户(也就是你)是否为管理员(root)给出两种安装步骤,大致的步骤基本相同:
- 安装 Node.js:得到
node
和npm
这两个可执行程序 - 安装 Forge CLI:得到
forge
这个可执行程序 - 检查安装是否成功
在 Linux 系统中判断你的身份的方法是执行:whoami
,如果得到的结果不是 root
,就表示你不是 root
账户。
如果我是 root 用户?
适用于在云主机上使用 Forge CLI 的用户。因为 root
用户安装的工具通常可以被系统中的其他用户共享,所以上述几个步骤都可以用 root
身份去完成。
安装 Node.js
因为 Forge CLI 使用 Node.js 开发,所以安装前需要确保你的电脑上有 Node.js 运行环境,检查是否存在 Node.js 运行环境的最简单办法是:
node --version
npm --version
如果两条命令都有正常的输出(没有 command not found
之类字眼且输出不为空),说明你的电脑中已经有了 Node.js 的运行环境。
因为部分依赖库要求 Node.js 版本不低于 v10.x
,所以安装 Forge CLI 时也需要 v10.x
及以上的 Node.js 版本,如果 node --version
输出的结果低于 v10.x
,则需要重新安装或者更新到新版。
CentOS 下安装 Node.js
curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum install -y nodejs
Ubuntu 下安装 Node.js
curl -sL https://deb.nodesource.com/setup_11.x | bash -
apt-get install -y nodejs
安装 Forge CLI
安装好 Node.js 环境之后,可以直接执行如下命令来安装,注意其中的 --unsafe-perm 是必须的。
npm install -g @arcblock/forge-cli --unsafe-perm
检查安装是否成功
执行 forge --version
,如果输出了 Forge CLI 的版本号说明安装成功了。
准备非 root 账户
虽然可以使用 root 身份安装 Forge CLI,但是不能用 root 身份去执行任何 Forge CLI 的子命令,更不能用 root 身份去创建、启动链节点,这是 Forge 的一个安全限制。所以为了执行后续操作,我们需要准备 1 个非 root 身份:
假设我们要用来执行 Forge CLI 的系统账户名为 arcblock
,可以分两步:
- 创建用户:执行
adduser arcblock
即可添加用户 - 切换用户:执行
su arcblock
即可切换到该用户
接下来,就可以按后续教程发链发币。
视频教程
在 CentOS 下安装 ForgeCLI 的过程如下所示:
如果我不是 root 用户?
对于 Mac 系统,或者有图形界面的 Linux 系统,登录用户通常不是 root,而 Node.js 和 Forge CLI 都可以安装到用户自己的目录下。
安装 Node.js
建议这类用户直接使用 NVM 来安装 Node.js,NVM 能自动帮你选择系统对应的版本。下面是先安装 NVM,然后使用 NVM 和淘宝的源来安装 Node.js v10.16.3 的基本步骤:
# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
# 加载 nvm 命令,如果你使用的是 zsh,应该使用 `source ~/.zshrc`
source ~/.bashrc
# 设置 nvm 镜像
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node/
# 安装 Node.js LTS 最新版
nvm install v10.16.3
安装 Forge CLI
Node.js 环境安装好之后,可以直接用如下命令安装 Forge CLI:
npm install -g @arcblock/forge-cli
如果是中国大陆用户,使用淘宝的 npm 镜像来安装 Forge CLI 可能会更快,使用 npm install -g @arcblock/forge-cli --registry https://registry.npm.taobao.org
即可。
如果你更喜欢使用 yarn 来安装,则可以执行 yarn global add @arcblock/forge-cli
来完成安装。
使用 NVM 安装的 Node.js 和 Forge CLI 只属于当前用户,系统的其他用户是不能访问的。
检查安装是否成功
安装完成之后,你的系统里面就多出来一个叫 forge
的命令行工具(Forge CLI 安装完产生的命令叫做 forge
而不是 forge-cli
),直接执行 forge
,没有报错且得到如下输出,说明你已经安装成功:
██████╗ ██╗ ██╗ █████╗ ██████╗ ██████╗██████╗ ██╗ ██████╗ ██████╗██╗ ██╗
██╔══██╗╚██╗ ██╔╝ ██╔══██╗██╔══██╗██╔════╝██╔══██╗██║ ██╔═══██╗██╔════╝██║ ██╔╝
██████╔╝ ╚████╔╝ ███████║██████╔╝██║ ██████╔╝██║ ██║ ██║██║ █████╔╝
██╔══██╗ ╚██╔╝ ██╔══██║██╔══██╗██║ ██╔══██╗██║ ██║ ██║██║ ██╔═██╗
██████╔╝ ██║ ██║ ██║██║ ██║╚██████╗██████╔╝███████╗╚██████╔╝╚██████╗██║ ██╗
╚═════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═════╝ ╚══════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝
Usage: forge [options] [command]
Options:
-V, --version output the version number
-v, --verbose Output runtime info when execute subcommand, useful for debug
-c, --chain-name <chainName> Execute command use specific chain
-i, --config-path <path> Forge config used when starting forge node and initializing gRPC clients
-r, --npm-registry <registry> Specify a custom npm registry
-y, --yes Assume that the answer to any confirmation question is yes
-d, --defaults Run command using default values for all questions
-m, --mirror <url> Mirror host used to download forge release
-g, --socket-grpc <endpoint> Socket gRPC endpoint to connect, with this you can use forge-cli with a remote node
-h, --help output usage information
Commands:
account <address> Get an account info by address
account:create Interactively create an account, guarded by a passphrase
account:delete <address> Delete an account by address
account:list [role] List all accounts stored in this node
asset <address> Get asset info by address
block [options] [height] Get the block info from the running node
blocklet:init Init a blocklet project
blocklet:use|project:create [options] Download and install a blocklet
chain:config [options] [action] Read/write chain/node config
chain:create|create-chain [chainName] Create a new chain instance
chain:ls|chains List all chains
chain:remove <chainName> Remove chain state and config
chain:reset <chainName> Reset chain state, but keeps the config
checkin Send a poke tx to the network to get tokens for test
config [options] [key] [value] Config forge cli configs
declare:node Declare the current node to be a validator candidate
download [options] [version] Download a forge release without activate it
help [subcommand] Show help of a sub command
install|init [options] [version] Download and setup forge release on this machine
join <endpoint> Join a network by providing a valid forge web graphql endpoint
logs [type] Show logs for various forge components
ls List forge releases installed locally
ls:remote List remote forge releases available for install
prepare [options] Prepare node for deploying a multi-node chain
protocol:activate [name|address] Activate a transaction protocol by name or address
protocol:compile [sourceDir] Compile a forge transaction protocol
protocol:deactivate [name|adderss] Deactivate a transaction protocol
protocol:deploy [itxPath] Deploy a compiled transaction protocol to ABT Node
protocol:ls List transaction protocols
ps List running forge component processes
remote [shellName] Connects to the running system via a remote shell
simulator [action] Start/stop simulator and generate random traffic
start [options] [<chainName>] Start a chain daemon, if does not specify a chain name, it will start a default chain
status [type] List info of the running chain/node
stop [options] [<chainName>] Stop the forge daemon and all forge components, if does not specify a chain name, it will start a default chain
tx [hash] Get a tx detail and display
tx:list List latest transactions
upgrade [<chainName>] Upgrade chain node to new version without reset
use [version] Activate an already downloaded forge release
version [<chainName>] Output version for all forge components
wallet:create Create a local wallet and dump its public/private key
web [options] [action] Start/stop the web interface of running forge chain/node
workshop [action] Start/stop the dApps workshop
Examples:
Please install a forge-release before running any other commands
> forge install latest
> forge install --mirror https://releases.arcblockio.cn
Curious about how to use a subcommand?
> forge help install
执行 forge help
也能得到如上输出。
视频教程
用非 root 账户身份安装 Node.js 和 Forge CLI 的整个过程如下:
如何升级 Forge CLI?
Forge CLI 默认启用了自动检查更新的机制,在有新版的时候会提示更新,如果你没有通过全局配置关闭自动检查更新,按照提示操作即可。如果你需要手动额更新,执行和安装完全相同的命令就可以覆盖更新了。
- 如果你是用
root
账户安装的,先切换到root
身份,然后执行:npm install -g @arcblock/forge-cli --unsafe-perm
- 如果你不是用
root
账户安装的,直接在对应账户下执行:npm install -g @arcblock/forge-cli
即可
安装过程常见报错解决办法
使用 yarn 安装失败?
如果你使用 yarn
安装之后,执行 forge
报错了,大概率是因为 grpc
的库没有本地编译成功,这时候请尝试用 npm
去安装。
TODO: 这里还需要更新
已经迫不及待要用 Forge CLI 来发链和发币了?继续往下看。