# 节点程序手册

# 介绍

本文档为NULS2.0 beta1版本测试网Linux版全节点钱包的使用指南,阅读本文档前用户需了解Linux系统的基本操作和使用方式,本文介绍了在Linux系统中如何利用NULS钱包创建账户、导入账户、转账、建立节点、委托等操作。我们建议用户利用Linux系统服务器建立稳定的NULS节点。

# 版本更新记录

版本 更新日期 内容
V0.9.0 2018-03-18 alpha
V0.9.1 2019-07-08 Beta
V1.0.0 2019-09-08 Mainnet

# 准备

# 服务器硬件配置

建立NULS节点的服务器不低于如下配置:

CPU 内存 硬盘 宽带
四核 3.0GHz 16G 256G硬盘 20M上行

推荐配置:

CPU 内存 硬盘 宽带
八核 3.0GHz 32G 256G硬盘 100M上行

# 系统及内核版本

Linux系统

  • CentOS 6,7
  • Ubuntu 14 +

Linux内核版本推荐使用 2.6.32及以上

# 开始

# 下载

  • NULS2.0 beta1版本GitHub地址:https://github.com/nuls-io/nuls-v2/releases

  • Linux系统中下载beta1版的钱包可以使用如下命令:

    $ wget http://nuls-usa-west.oss-us-west-1.aliyuncs.com/2.0/NULS-Wallet-linux64-beta1-main.tar.gz
    

    注:如果后续有其他版本,下载地址可能会不同。

# 安装

  • 在Linux中解压已下载的文件

    $ tar -zxf NULS-Wallet-linux64-beta1-main.tar.gz
    

# 运行

  • 进入解压后的目录,并运行启动脚本,启动节点钱包

    $ cd NULS-Wallet-linux64-beta1
    $ ./start
    

# 使用钱包

# 快速入门

  • 在确定钱包已经启动后,启动钱包的命令行程序,可对钱包进行操作。

    进入钱包根目录,执行如下命令:

    $ ./cmd
    

    将会出现NULS命名输入提示符nuls>>> ,然后可直接输入NULS钱包操作命令,来进行操作。

    例如,创建账户的示例如下:

    nuls>>> create
    Please enter the new password(8-20 characters, the combination of letters and numbers).
    Enter your new password:********
    Please confirm new password:********
    [ "tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8" ]
    

    执行create命令表示创建单个账户,然后输入密码,以及再次确认输入的密码,创建成功后将会返回账户的地址。

# 约定

  • 设置密码规则:密码长度在8至20位,必须同时包含字母和数字。
  • 命令参数说明: <parameter> 表示必填参数;[parameter] 表示选填参数。"|" 在参数中表示或者,表示前后参数只能选其一。

# 钱包命令

# 帮助命令

输出打印所有的命令,

  • 命令: help [-a]|[group]|[command]
参数 说明
-a 格式化打印命令,选填
command 查看指定命令使用说明
group 查看指定命令组的所有命令使用说明

返回信息 help

getaccount <address> --get account information

返回信息 help -a

getaccount <address> --get account information
	OPTIONS:
	<address> the account address - Required

示例

nuls>>> help
nuls>>> help -a
nuls>>> help account
nuls>>> help create

# 创建账户

创建账户,返回账户地址集合

  • 命令: create [number]
参数 说明
[number] 创建账户的数量,选填

创建账户时,将会提示输入密码,为了保证资产安全,必须给账户设置密码;

返回账户集合

[ "tNULSeBaMmhBVJnJqcB7S7gKsPEoikZo2W89pm", "tNULSeBaMhUKHmueWB1h87vpWr62vrAjPshwTs", "tNULSeBaMvXiStrcQc4SF3rWGS8fyPqhUQXoS4" ]

示例

创建1个账户

nuls>>> create
Please enter the new password(8-20 characters, the combination of letters and numbers).
Enter your new password:********
Please confirm new password:********
[ "tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8" ]

一次创建多个账户

nuls>>> create 3
Please enter the new password(8-20 characters, the combination of letters and numbers).
Enter your new password:********
Please confirm new password:********
[ "tNULSeBaMmhBVJnJqcB7S7gKsPEoikZo2W89pm", "tNULSeBaMhUKHmueWB1h87vpWr62vrAjPshwTs", "tNULSeBaMvXiStrcQc4SF3rWGS8fyPqhUQXoS4" ]

# 备份账户

备份账户,将生成一个名称为账户地址,扩展名为.keystore的文件,该文件为账户的备份文件

  • 命令:backup <address> [path]
参数 说明
<address> 账户地址,必填
[path] 文件生成备份文件的目标文件夹,默认为当前文件夹,选填

返回信息

The path to the backup file is /home/nuls2/nuls-v2/tNULSeBaMmhBVJnJqcB7S7gKsPEoikZo2W89pm.keystore

示例 备份一个有密码的账户

nuls>>> backup tNULSeBaMmhBVJnJqcB7S7gKsPEoikZo2W89pm /home/nuls2/nuls-v2/NULS-Wallet-linux64-beta1
Please enter the password.
Enter your password:********
The path to the backup file is /home/nuls2/nuls-v2/tNULSeBaMmhBVJnJqcB7S7gKsPEoikZo2W89pm.keystore

# 移除账户

根据账户地址移除本地账户,需要输入密码

  • 命令:remove <address>
参数 说明
<address> 账户的地址,必填

返回信息

Success

示例

nuls>>> remove tNULSeBaMhUKHmueWB1h87vpWr62vrAjPshwTs
Please enter the password.
Enter your password:********
Success

# 修改账户密码

根据账户地址和账户密码重新设置新密码。

  • 命令:resetpwd <address>
参数 说明
<address> 账户的地址,必填

返回信息

Success

示例

nuls>>> resetpwd tNULSeBaMvXiStrcQc4SF3rWGS8fyPqhUQXoS4
Enter your old password:********
Enter new password*********
Please confirm new password:*********
Success

# 设置别名

给账户设置一个别名,如果用此账户建立节点,别名将作为节点来源显示

  • 命令:setalias <address> <alias>
参数 说明
<address> 账户的地址,必填
<alias> 别名名称,必填

返回信息 交易hash

txHash:0020f94f36aefd59f9cca9bff3c018fc287dc6c0bcd7fbeb047133cadb5747e7d98d"

示例

nuls>>> setalias tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8 nuls
Enter your account password**********
txHash:0020830971e02527f18f8f9e32f974d8c73ce6bd249de859cae170476b87d0ec9582

# 导入账户keystore

导入账户keystore文件,生成本地账户,如果本地已有该账户将无法导入。

  • 命令:importkeystore <path>
参数 说明
<path> 待导入的keystore文件地址,必填

注意:导入keystore文件生成账户时,需要原始密码

返回信息 导入的账户地址

"tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8"

示例

nuls>>> importkeystore /home/nuls2/nuls-v2/tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8.keystore
Please enter the password (password is between 8 and 20 inclusive of numbers and letters), If you do not want to set a password, return directly.
Enter your password:********
tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8

# 导入账户私钥

导入账户私钥,生成本地账户,如果本地已有该账户将覆盖,导入时需要给账户设置密码。此功能可以用于忘记账户密码后,通过私钥重新找回账户。

  • 命令:import <privatekey>
参数 说明
<privatekey> 账户的私钥,必填
"tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8"

示例

nuls>>> import 74ca3facb66e5e9f2b78e86507d1f36cf601bc3de1d5f5e5b515c4f995d53873
Please enter the password (password is between 8 and 20 inclusive of numbers and letters), If you do not want to set a password, return directly.
Enter your password:********
Please confirm new password:********
tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8

# 查询账户信息

根据账户地址查询账户信息

  • 命令:getaccount <address>
参数 说明
<address> 账户地址,必填

返回信息

{
  "encryptedPrikeyHex" : "4026dc6c3b92fb18b4e87c8aac1efedf1bb6a1cd8f623d163f45209b07911dcf6cbd4141f5294035b8f6739a3dce299c", //加密后私钥
  "alias" : null,//别名
  "baglance" : {
    "available" : "5000000",//可用资产数量
    "total" : "5000000",//总资产数量
    "freeze" : "0"//冻结的资产数量
  },
  "address" : "tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8",//地址
  "pubkeyHex" : "02f2df94a1197f7bce4ea78f28fa7be8e8067377fcd13daef9c548e1a0402fb4de" //加密后公钥
}

示例

nuls>>> getaccount tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8
{
  "encryptedPrikeyHex" : "4026dc6c3b92fb18b4e87c8aac1efedf1bb6a1cd8f623d163f45209b07911dcf6cbd4141f5294035b8f6739a3dce299c", //加密后私钥
  "alias" : null,//别名
  "baglance" : {
    "available" : "5000000",//可用资产数量
    "total" : "5000000",//总资产数量
    "freeze" : "0"//冻结的资产数量
  },
  "address" : "tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8",//地址
  "pubkeyHex" : "02f2df94a1197f7bce4ea78f28fa7be8e8067377fcd13daef9c548e1a0402fb4de" //加密后公钥
}

# 查询账户列表

根据分页参数查询账户列表,所有账户以创建时间倒序输出。

  • 命令:getaccounts <pageNumber> <pageSize>
参数 说明
<pageNumber> 页数,需要获取第几页的数据,必填
<pageSize> 每一页显示的数据条数,必填

返回信息,将输出账户集合

[ {
  "address" : "tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8",
  "alias" : null,
  "pubkeyHex" : "02f2df94a1197f7bce4ea78f28fa7be8e8067377fcd13daef9c548e1a0402fb4de",
  "encryptedPrikeyHex" : "4026dc6c3b92fb18b4e87c8aac1efedf1bb6a1cd8f623d163f45209b07911dcf6cbd4141f5294035b8f6739a3dce299c"
}, {
  "address" : "tNULSeBaMvXiStrcQc4SF3rWGS8fyPqhUQXoS4",
  "alias" : null,
  "pubkeyHex" : "03ad08ca4f73178c4e3e6d7126cb61e3a4c9b4dec95e4077112f085797eadc808a",
  "encryptedPrikeyHex" : "e97dedb7697a6d37a8dfe9e2aa41543161f63d0740c4b5a72a0e1df2cc85ef99949e6f8ce41667587225df8cff0aae17"
}, {
  "address" : "tNULSeBaMmhBVJnJqcB7S7gKsPEoikZo2W89pm",
  "alias" : null,
  "pubkeyHex" : "039abe58d5a20bac72ebb1fd80cac6a1012d17ad04a131a8a2350ea4df9ea4416e",
  "encryptedPrikeyHex" : "fee6f590fc900aee4f3aa84437701d406d00c3045b1d0ce074efa1b42a6db8d5925e3a10272041b5f3c0c2d2572c0f42"
}, {
  "address" : "tNULSeBaMt7c7sybfvP7iAC2p9d1ickHZvH9Sc",
  "alias" : null,
  "pubkeyHex" : "023b8834bceb1228711ed6301322f5617e1b2d2e5197bc9832744af41191096c39",
  "encryptedPrikeyHex" : "d9b4704c5b6470b51ca09c8cca888a4c9e7abea32aad17cc91f1c20c74a30632cb38d759129abea1d3c3f8080fc11f01"
} ]

示例 获取账户列表

nuls>>> getaccounts
[ {
  "address" : "tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8",
  "alias" : null,
  "pubkeyHex" : "02f2df94a1197f7bce4ea78f28fa7be8e8067377fcd13daef9c548e1a0402fb4de",
  "encryptedPrikeyHex" : "4026dc6c3b92fb18b4e87c8aac1efedf1bb6a1cd8f623d163f45209b07911dcf6cbd4141f5294035b8f6739a3dce299c"
}, {
  "address" : "tNULSeBaMvXiStrcQc4SF3rWGS8fyPqhUQXoS4",
  "alias" : null,
  "pubkeyHex" : "03ad08ca4f73178c4e3e6d7126cb61e3a4c9b4dec95e4077112f085797eadc808a",
  "encryptedPrikeyHex" : "e97dedb7697a6d37a8dfe9e2aa41543161f63d0740c4b5a72a0e1df2cc85ef99949e6f8ce41667587225df8cff0aae17"
}, {
  "address" : "tNULSeBaMmhBVJnJqcB7S7gKsPEoikZo2W89pm",
  "alias" : null,
  "pubkeyHex" : "039abe58d5a20bac72ebb1fd80cac6a1012d17ad04a131a8a2350ea4df9ea4416e",
  "encryptedPrikeyHex" : "fee6f590fc900aee4f3aa84437701d406d00c3045b1d0ce074efa1b42a6db8d5925e3a10272041b5f3c0c2d2572c0f42"
}, {
  "address" : "tNULSeBaMt7c7sybfvP7iAC2p9d1ickHZvH9Sc",
  "alias" : null,
  "pubkeyHex" : "023b8834bceb1228711ed6301322f5617e1b2d2e5197bc9832744af41191096c39",
  "encryptedPrikeyHex" : "d9b4704c5b6470b51ca09c8cca888a4c9e7abea32aad17cc91f1c20c74a30632cb38d759129abea1d3c3f8080fc11f01"
} ]

# 查询账户私钥

根据账户地址个密码查询账户私钥

  • 命令:getprikey <address>
参数 说明
<address> 账户的地址,必填

返回信息 导入的账户的私钥(未加密)

74ca3facb66e5e9f2b78e86507d1f36cf601bc3de1d5f5e5b515c4f995d53873

示例

nuls>>> getprikey tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8
Enter your account password********
74ca3facb66e5e9f2b78e86507d1f36cf601bc3de1d5f5e5b515c4f995d53873

# 查询账户余额

根据账户地址查询账户余额

  • 命令:getbalance <address>
参数 说明
<address> 账户的地址,必填

返回信息 导入的账户地址

nuls>>> getbalance tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8
{
  "available" : "4999998.999",
  "total" : "4999998.999",
  "freeze" : "0"
}

示例

nuls>>> getbalance tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8
{
  "available" : "4999998.999",
  "total" : "4999998.999",
  "freeze" : "0"
}

# 转账

根据账户地址或别名将NULS转入另一账户地址或别名中

  • **命令:transfer <formAddress>|<formAlias> <toAddress>|<toAlias> <amount> [remark] **
参数 说明
<formAddress> 转出地址(与formAlias任选一项)
<formAlias> 转出地址别名(与formAddress任选一项)
<toAddress> 接收地址(与toAlias任选一项)
<toAlias> 接收地址别名(与toAddress任选一项)
<amount> 转账数量,必填
[remark] 备注信息,选填

返回信息 转账交易hash

"41d8b78214ad9e34beba420248dfc4f282d5d46166fe6d67e3c7006f2990de0e"

示例

nuls>>> transfer tNULSeBaMoodYW7AqyJrgYdWiJ6nfwfVHHHyXm tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8 5000000
Enter your account password********
41d8b78214ad9e34beba420248dfc4f282d5d46166fe6d67e3c7006f2990de0e

# 查询交易详情

根据交易hash查询交易详细信息

  • 命令:gettx <hash>
参数 说明
<hash> 交易hash,必填

返回信息 交易详细信息

{
  "type" : 3,//交易类型(枚举说明见下表【type 枚举类型说明】)
  "time" : "2019-07-11 11:34:24.024",
  "transactionSignature" : "2102f2df94a1197f7bce4ea78f28fa7be8e8067377fcd13daef9c548e1a0402fb4de4730450221008def105209cf7b32da777686a98a06359f80baf2887e8b1c2d5258feac3a70880220538e9fc2fc2a239d1fdced4de3239b762a1decf67f026fc5a93f59d6e281c5c8",
  "remark" : null,
  "hash" : "1a12a2499ec805956ce074e42ce29c64ea1194addc65a68cb186d519d3ed4f43",
  "blockHeight" : 3806, //交易高度
  "status" : "CONFIRMED", //确认状态
  "size" : 285,
  "inBlockIndex" : 0,
  "form" : [ {
    "address" : "tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8",
    "assetsChainId" : 2,
    "assetsId" : 1,
    "amount" : 100100000,
    "nonce" : "0000000000000000"
  } ],
  "to" : [ {
    "address" : "tNULSeBaMtx5Dex2BNURMXdA2HkMZy9uXNf5cZ",
    "assetsChainId" : 2,
    "assetsId" : 1,
    "amount" : 100000000,
    "nonce" : null
  } ]
}

示例 查询转账交易

nuls>>> gettx 1a12a2499ec805956ce074e42ce29c64ea1194addc65a68cb186d519d3ed4f43
{
  "type" : 3,//交易类型(枚举说明见下表【type 枚举类型说明】)
  "time" : "2019-07-11 11:34:24.024",
  "transactionSignature" : "2102f2df94a1197f7bce4ea78f28fa7be8e8067377fcd13daef9c548e1a0402fb4de4730450221008def105209cf7b32da777686a98a06359f80baf2887e8b1c2d5258feac3a70880220538e9fc2fc2a239d1fdced4de3239b762a1decf67f026fc5a93f59d6e281c5c8",
  "remark" : null,
  "hash" : "1a12a2499ec805956ce074e42ce29c64ea1194addc65a68cb186d519d3ed4f43",
  "blockHeight" : 3806, //交易高度
  "status" : "CONFIRMED", //确认状态
  "size" : 285,
  "inBlockIndex" : 0,
  "form" : [ {
    "address" : "tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8",
    "assetsChainId" : 2,
    "assetsId" : 1,
    "amount" : 100100000,
    "nonce" : "0000000000000000"
  } ],
  "to" : [ {
    "address" : "tNULSeBaMtx5Dex2BNURMXdA2HkMZy9uXNf5cZ",
    "assetsChainId" : 2,
    "assetsId" : 1,
    "amount" : 100000000,
    "nonce" : null
  } ]
}

# type 枚举类型说明

交易类型 枚举值
全部交易 0
共识奖励 1
转账交易 2
设置别名 3
创建节点 4
加入共识 5
退出共识 6
黄牌 7
红牌 8
注销节点 9
跨链 10
注册跨链 11
注销链 12
为链新增资产 13
删除链资产 14
创建合约 15
调用合约 16
删除合约 17
合约内部转账 18
合约执行手续费返还 19
合约创建共识节点 20
合约加入共识 21
合约退出共识 22
合约注销节点 23

# 创建节点

根据账户地址创建节点,创建节点时需要提供两个地址,第一个地址为节点地址,需要输入节点地址账户密码。同时需要至少20000NULS的保证金。

  • 命令:createagent <agentAddress> <packingAddress> <commissionRate> <deposit> [RewardAddress]
参数 说明
<agentAddress> 创建节点的账户地址,必填
<packingAddress> 节点打包账户地址,必填(注:该账户默认密码:nuls123456,可以通过配置文件设置,否则节点不能打包出块)
<commissionRate> 代理佣金比例,范围:10~100之间的整数,必填
<deposit> 创建节点的保证金,不能低于20000NULS,必填
[RewardAddress] 奖励地址,默认为节点创建地址(选填)

返回信息 返回节点的agent hash

"33aeffd4e55203d91183939ad35a9f0a2b0dc80cf1d63c93d4237102d1308a35"

示例 创建一个节点,佣金比例为10%,押金20000NULS。

nuls>>> createagent tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8 tNULSeBaMotNcjQ8E72uh6XituC8CFV2UBBAHo 10 20000
Enter agent address password********
"33aeffd4e55203d91183939ad35a9f0a2b0dc80cf1d63c93d4237102d1308a35"

# 查询共识节点信息

根据agentHash查询指定节点信息

-命令:getagent <agentHash>

参数 说明
<agentHash> 节点hash

返回值

略 见示例

示例

nuls>>> getagent 33aeffd4e55203d91183939ad35a9f0a2b0dc80cf1d63c93d4237102d1308a35
{
  "agentAddress" : "tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8",
  "agentId" : "D1308A35",
  "commissionRate" : 10.0,
  "delHeight" : -1,
  "agentHash" : "33aeffd4e55203d91183939ad35a9f0a2b0dc80cf1d63c93d4237102d1308a35",
  "totalDeposit" : "0",
  "memberCount" : 0,
  "agentName" : null,
  "packingAddress" : "tNULSeBaMotNcjQ8E72uh6XituC8CFV2UBBAHo",
  "version" : null,
  "blockHeight" : 4262,
  "rewardAddress" : "tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8",
  "deposit" : "20000",
  "time" : "1970-01-19 10:07:05.005",
  "creditVal" : 0.0,
  "txHash" : "33aeffd4e55203d91183939ad35a9f0a2b0dc80cf1d63c93d4237102d1308a35",
  "status" : "unconsensus"
}

# 查询共识节点列表

查询共识节点列表 -命令:getagents [pageNumber] [pageSize] [keyWord]

参数 说明
[pageNumber]; 列表页号位置
[pageSize]; 每页显示条数
[keyWord]; 匹配节点别名关键字

返回值

略 见示例

示例 获取第1页,共10条的节点列表

nuls>>> getagents 1 10
[ {
  "agentAddress" : "tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8",
  "agentId" : "D1308A35",
  "commissionRate" : 10.0,
  "delHeight" : -1,
  "agentHash" : "33aeffd4e55203d91183939ad35a9f0a2b0dc80cf1d63c93d4237102d1308a35",
  "totalDeposit" : "0",
  "memberCount" : 0,
  "agentName" : null,
  "packingAddress" : "tNULSeBaMotNcjQ8E72uh6XituC8CFV2UBBAHo",
  "version" : null,
  "blockHeight" : 4262,
  "rewardAddress" : "tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8",
  "deposit" : "20000",
  "time" : "1970-01-19 10:07:05.005",
  "creditVal" : 0.0,
  "txHash" : "33aeffd4e55203d91183939ad35a9f0a2b0dc80cf1d63c93d4237102d1308a35",
  "status" : "unconsensus"
} ]

# 加入共识(委托节点)

根据账户地址和节点agentHash,加入共识,至少需要2000NULS

  • 命令:deposit <address> <agentHash> <deposit>
参数 说明
<address> 账户地址,必填
<agentHash> 节点的agentHash,必填
<deposit> 加入共识保证金,不能低于2000NULS,必填

返回信息 加入共识的交易hash,如果要退出这笔共识,则需要该hash。

"f5b2622a2ca23710a0a1f28bd0cb9c054220ba0719275abca5e4a7750dcf933a"

示例

nuls>>> deposit tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8 33aeffd4e55203d91183939ad35a9f0a2b0dc80cf1d63c93d4237102d1308a35 200000
Please enter the password.
Enter your password:********
"f5b2622a2ca23710a0a1f28bd0cb9c054220ba0719275abca5e4a7750dcf933a"

# 退出共识(退出委托)

根据账户地址和加入共识时的交易hash来退出共识(委托),单个账户多次委托节点时,每次委托的交易是独立的,所以退出时也要通过单次委托时的交易hash来退出对应的那一次委托,而不会一次退出所有委托。

  • 命令:withdraw <address> <txHash>
参数 说明
<address> 账户地址,必填
<txHash> 委托时的交易hash,必填

返回信息 退出共识交易hash

"d8e1784239d73e064e83e448adcf0feec9ba8e56a4b55280d7a0a8149d9da545"

示例

nuls>>> withdraw tNULSeBaMjxVA6QijNXjEf3RYxwTbTLSqXvpa8 f5b2622a2ca23710a0a1f28bd0cb9c054220ba0719275abca5e4a7750dcf933a 
Please enter the password.
Enter your password:********
"d8e1784239d73e064e83e448adcf0feec9ba8e56a4b55280d7a0a8149d9da545"

# 停止节点

停止节点,所有委托给节点的NULS将被退回,节点创建者账户的保证金将会被锁定72小时。

  • 命令:stopagent <address>
参数 说明
<address> 账户地址,必填

返回信息 停止节点交易hash

"0020f15eecd7c85be76521ed6af4d58a3810f7df58e536481cff4a96af6d4fddec5f"

示例

nuls>>> stopagent Nse2TpVsJd4gLoj79MAY8NHwEsYuXwtT
Please enter the password.
Enter your password:**********
"0020f15eecd7c85be76521ed6af4d58a3810f7df58e536481cff4a96af6d4fddec5f"

# 获取最新的区块头信息

获取最新的区块头信息

  • 命令:getlatestblockheader

返回信息

{
  "hash" : "c244a7936821a58eff6daf117a6acf398d1c959c1b11edbb2abf01d753f01a45",//区块hash
  "preHash" : "3c775846e93468119aa73c9a84b712875d0730f8e9579cc2535be4662d415b46",//上一个区块hash
  "merkleHash" : "00edec12b2382d47829e3685b04c109aeac651ee7d2dbda40c1ea1245b8bb953",//merkle hash
  "time" : "1970-01-19 10:07:05.005", //打包时间
  "height" : 4295,//区块高度
  "txCount" : 1, //包含的交易数
  "blockSignature" : "463044022027db8f20882d0b37be2981587213f15fdd49110ad9e80c15b90485ad487372c902201e3eae9eca8fb6fde7424ab656300c42185923f0bae10120b58019e3bfb79456", //区块签名
  "size" : 246, //区块大小
  "packingAddress" : "tNULSeBaMt7c7sybfvP7iAC2p9d1ickHZvH9Sc",//打包地址
  "roundIndex" : 78141245,
  "consensusMemberCount" : 2,
  "roundStartTime" : "1970-01-19 10:07:05.005",
  "packingIndexOfRound" : 2,
  "mainVersion" : 1,
  "blockVersion" : 1,
  "stateRoot" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"
}

示例

nuls>>> getlatestblockheader
{
  "hash" : "c244a7936821a58eff6daf117a6acf398d1c959c1b11edbb2abf01d753f01a45",//区块hash
  "preHash" : "3c775846e93468119aa73c9a84b712875d0730f8e9579cc2535be4662d415b46",//上一个区块hash
  "merkleHash" : "00edec12b2382d47829e3685b04c109aeac651ee7d2dbda40c1ea1245b8bb953",//merkle hash
  "time" : "1970-01-19 10:07:05.005", //打包时间
  "height" : 4295,//区块高度
  "txCount" : 1, //包含的交易数
  "blockSignature" : "463044022027db8f20882d0b37be2981587213f15fdd49110ad9e80c15b90485ad487372c902201e3eae9eca8fb6fde7424ab656300c42185923f0bae10120b58019e3bfb79456", //区块签名
  "size" : 246, //区块大小
  "packingAddress" : "tNULSeBaMt7c7sybfvP7iAC2p9d1ickHZvH9Sc",//打包地址
  "roundIndex" : 78141245,
  "consensusMemberCount" : 2,
  "roundStartTime" : "1970-01-19 10:07:05.005",
  "packingIndexOfRound" : 2,
  "mainVersion" : 1,
  "blockVersion" : 1,
  "stateRoot" : "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"
}

# 查询区块头信息

根据区块高度或者区块hash,查询区块头信息,必须并且只能选择一种参数作为查询条件。

  • 命令:getblockheader <hash> | <height>
参数 说明
<hash> 区块的hash值
<height> 区块的高度

返回信息

见示例

示例 根据高度获取区块头

nuls>>> getblockheader 28115
{
  "hash" : "0020c40f471756c88e7487fcc0d428545232120071b58f35e450891237d7b41eb817",
  "preHash" : "0020fb1fd03cda7e2b6585256f4da85bdac7d8fc8bafa0740b8eb0ed577f3020b954",
  "merkleHash" : "0020474c5a353f235e8e8514328e1e98d6b653d4a5445473d160691e39121cd8b158",
  "time" : "2018-07-16 16:29:30",
  "height" : 28115,
  "txCount" : 2,
  "packingAddress" : "NsdyF8gBxAfxCyiNbLzsENUvbJZ27mWw",
  "roundIndex" : 662578,
  "consensusMemberCount" : 1,
  "roundStartTime" : "2018-07-16 16:29:20",
  "packingIndexOfRound" : 1,
  "reward" : "0.001",
  "fee" : "0.001",
  "confirmCount" : 6280,
  "size" : 204,
  "scriptSig" : "210381e44e0c2fffadc94603a41514f3e5b1c5fd53166be73eb8f49ce8c297059e5600473045022100d25b815fa30376247692fad856d3984acf45c9b49edd3d222e3afdab3169520c02200565a486e33358301848bf3d704c187ff8b2d1e859c93b704f713abb984584bf"
}

# 创建智能合约

调用此接口在链上创建一个智能合约

  • 命令:createcontract <sender> <gaslimt> <price> <contractCode><alias> [remark]
参数 说明
<sender> 创建智能合约的账户地址
<gaslimt> 本次创建合约最大消耗的Gas
<price> 单价,每一个Gas值多少Na,Na是NULS的最小单位,1Nuls=1亿Na,系统最小单价是25Na/Gas
<contractCode< 合约代码的hex编码
<alias< 合约别名
[remark] 备注

返回信息 创建合约的交易hash和合约的地址

{
  "txHash" : "00205fb44fd0924a57857e71d06ec0549366b5d879b2cbd68488ed88a2dbf96c130f",  //交易hash
  "contractAddress" : "tNULSeBaN6ofkEqsPJmWVaeMpENTgmC5ifWtz9" //合约地址
}

示例 创建一个合约(contractCode 省略中间部分)

nuls>>> createcontract tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD 200000 25 504b03040a........000000800080051020000b31600000000 remarkdemo
The arguments structure: 
[ {
  "type" : "String",
  "name" : "name",
  "required" : true
}, {
  "type" : "String",
  "name" : "symbol",
  "required" : true
}, {
  "type" : "BigInteger",
  "name" : "initialAmount",
  "required" : true
}, {
  "type" : "int",
  "name" : "decimals",
  "required" : true
} ]
Please enter the arguments you want to fill in according to the arguments structure(eg. "a",2,["c",4],"","e" or "'a',2,['c',4],'','e'").
Enter the arguments:"KQB","KQB",10000,2
{
  "txHash" : "0020ec1d68eaed63e2db8649b0a39f16b7c5af24f86b787233f6ba6d577d7d090587",
  "contractAddress" : "tNULSeBaNBYK9MQcWWbfgFTHj2U4j8KQGDzzuK"
}

# 获取合约基本信息

获取智能合约的描述信息以及构造函数、调用方法的参数列表

  • 命令:getcontractinfo <contract address>
参数 说明
<contract address> 合约地址

返回信息

略 ,见示例

示例


nuls>>> getcontractinfo tNULSeBaMz7vkyhgqLXVdcT75dC5udULVs1D2L
getcontractinfo tNULSeBaMz7vkyhgqLXVdcT75dC5udULVs1D2L
{
  "createTxHash" : "00203a48dcfc26426152805be49830c72005b4648d0182bbf6c2e8980380364eb59f",
  "address" : "tNULSeBaMz7vkyhgqLXVdcT75dC5udULVs1D2L",
  "creater" : "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD",
  "createTime" : 1553563706022,
  "blockHeight" : 46,
  "isNrc20" : true,
  "nrc20TokenName" : "QKB",
  "nrc20TokenSymbol" : "QKB",
  "decimals" : 2,
  "totalSupply" : "200000000",
  "status" : "normal",
  "method" : [ {
    "name" : "<init>",
    "desc" : "(String name, String symbol, BigInteger initialAmount, int decimals) return void",
    "args" : [ {
      "type" : "String",
      "name" : "name",
      "required" : true
    }, {
      "type" : "String",
      "name" : "symbol",
      "required" : true
    }, {
      "type" : "BigInteger",
      "name" : "initialAmount",
      "required" : true
    }, {
      "type" : "int",
      "name" : "decimals",
      "required" : true
    } ],
    "returnArg" : "void",
    "view" : false,
    "event" : false,
    "payable" : false
  },{
    "name" : "transfer",
    "desc" : "(Address to, BigInteger value) return boolean",
    "args" : [ {
      "type" : "Address",
      "name" : "to",
      "required" : true
    }, {
      "type" : "BigInteger",
      "name" : "value",
      "required" : true
    } ],
    "returnArg" : "boolean",
    "view" : false,
    "event" : false,
    "payable" : false
  }]
}

# 调用智能合约

调用智能合约提供的函数

  • 命令:callcontract <sender> <gasLimit> <price> <contractAddress> <methodName> <value> [-d methodDesc] [-r remark]
参数 说明
<senderAddress> 调动合约的账户地址
<gasLimit> 本次合约执行最大消耗的Gas
<price> 单价,每一个Gas值多少Na,Na是NULS的最小单位,1Nuls=1亿Na,系统最小单价是25Na/Gas
<contractAddress 调用的合约地址
<methodName> 合约的方法名
<value> 如果要向合约转账,转账的数量
[-d methodDesc] 如果合约中有同名方法时,使用此方法来描述参数列表
[-r remark] 备注信息

返回信息 本次调用的交易hash

"0020c9079e0f0454103adceed798d40171c41a8db04586dba966fbe7f2ab722583ad" //交易hash

示例 调用一个指定合约的NRC20-Token转账函数, 示例中tNULSeBaMz7vkyhgqLXVdcT75dC5udULVs1D2L为NRC20合约地址,输入的参数为 接收地址和转账数量

nuls>>> callcontract tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD 200000 25 tNULSeBaMz7vkyhgqLXVdcT75dC5udULVs1D2L transfer 0 -r call
callcontract tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD 200000 25 tNULSeBaMz7vkyhgqLXVdcT75dC5udULVs1D2L transfer 0 -r call
Please Enter your account passwordzhoujun172
**********
Please enter the arguments according to the arguments structure(eg. "a",2,["c",4],"","e" or "'a',2,['c',4],'','e'"),
If this method has no arguments(Refer to the command named "getcontractinfo" for the arguments structure of the method.), return directly.
Enter the arguments:"tNULSeBaMvEtDfvZuukDf2mVyfGo3DdiN8KLRG",2
"0020c9079e0f0454103adceed798d40171c41a8db04586dba966fbe7f2ab722583ad"

# 删除智能合约

停止一个可用的智能合约

  • 命令:deletecontract <senderAddress> <contractAddress>
参数 说明
<senderAddress> 调用合约的账户地址
<contractAddress> 调用的合约地址

返回值 交易hash

"0020c55e885dd910dad0b2c49f5b71b62691b57884ca21fd47668f1f5cadc84daad6" //交易hash

示例

nuls>>> deletecontract tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD tNULSeBaMz7vkyhgqLXVdcT75dC5udULVs1D2L
deletecontract tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD tNULSeBaMz7vkyhgqLXVdcT75dC5udULVs1D2L
Please enter your account passwordzhoujun172
**********
"0020c55e885dd910dad0b2c49f5b71b62691b57884ca21fd47668f1f5cadc84daad6"

# 调用合约视图方法

调用合约的视图方法,会立即返回结果,不会产生交易

  • 命令:deletecontractviewcontract <contractAddress> <methodName> [-d methodDesc] --view contract
参数 说明
<contractAddress> 调用的合约地址
<methodName> 调用的方法
[-d methodDesc] 如果合约中有同名方法时,使用此方法来描述参数列表

返回值

根据具体调用函数返回值不同

示例 调用NRC20-Token合约的查询Token余额函数查询指定地址的Token余额

nuls>>> viewcontract tNULSeBaN6pwyVwXjfpm5BMH5eiirvthoZDVEc balanceOf
viewcontract tNULSeBaN6pwyVwXjfpm5BMH5eiirvthoZDVEc balanceOf
Please enter the arguments according to the arguments structure(eg. "a",2,["c",4],"","e" or "'a',2,['c',4],'','e'"),
If this method has no arguments(Refer to the command named "getcontractinfo" for the arguments structure of the method.), return directly.
Enter the arguments:"tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"
"tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD"
{
  "result" : "20000000"
}

# 向合约地址转账

向指定的合约地址转入主网币

  • 命令:transfertocontract <senderAddress> <contractAddress> <amount> [remark]
参数 说明
<senderAddress> 转出账户地址
<contractAddress 转入的合约地址
<amount> 转入数量
[remark] 备注

返回值 交易hash

"0020f5d6b87c246595d1b060a3fa8bac6a2992490e38fdfcad40db2a3908297e7979"

示例 向指定合约转入2个NULS

nuls>>> transfertocontract tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD tNULSeBaN1NRtaj1ZPAmEmTqcpkyCLqv64PR7U 2 remark
Please enter your account password
**********
"0020f5d6b87c246595d1b060a3fa8bac6a2992490e38fdfcad40db2a3908297e7979"

# token转账

NRC20 token转账

  • 命令:tokentransfer <formAddress> <toAddress> <contractAddress> <amount> [remark]
参数 说明
<formAddress> 转出账户地址
<toAddress 转入的账户地址
<contractAddress> 合约地址
<amount> 转入数量
[remark] 备注

返回值 交易hash

"002022dffd96026b493945d2cf9ad276c4bc9655c735b72e6fcc85a2d19f6cbe25e8"

示例 token转账:

nuls>>> tokentransfer tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD  tNULSeBaNBh9RUsVrVmMy8NHcZJ2BhNVsM1Vta  tNULSeBaN6pwyVwXjfpm5BMH5eiirvthoZDVEc 200000 25 10000
Please enter your account password
**********
"002022dffd96026b493945d2cf9ad276c4bc9655c735b72e6fcc85a2d19f6cbe25e8"

# 获取合约交易

获取合约的交易信息, 包含交易详情,合约调用参数,合约执行结果

  • 命令:getcontracttx <hash>
参数 说明
<hash> 交易hash

返回值

略 见示例

示例

nuls>>> getcontracttx 00203a48dcfc26426152805be49830c72005b4648d0182bbf6c2e8980380364eb59f
getcontracttx 00203a48dcfc26426152805be49830c72005b4648d0182bbf6c2e8980380364eb59f
{
  "hash" : "00203a48dcfc26426152805be49830c72005b4648d0182bbf6c2e8980380364eb59f",
  "type" : "100",
  "time" : "2019-03-26 09:28:26",
  "blockHeight" : 46,
  "fee" : 0.0,
  "value" : 0.0,
  "remark" : null,
  "scriptSig" : "210318f683066b45e7a5225779061512e270044cc40a45c924afcf78bb7587758ca0004630440220112a446b2a684510b4016fa97b92d2f3fead03128f0f658c99a6a8d230d05d4e02201e23a2f6e68aacdff2d117bd5bbe7ce2440babfe4211168eafbae41acad5d505",
  "status" : "confirm",
  "confirmCount" : 0,
  "size" : 6686,
  "inputs" : [ {
    "address" : "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD",
    "assetsChainId" : 2,
    "assetId" : 1,
    "amount" : "5700000",
    "nonce" : "ffffffff",
    "locked" : 0,
    "value" : 0.0
  } ],
  "outputs" : [ ],
  "txData" : {
    "data" : {
      "sender" : "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD",
      "contractAddress" : "tNULSeBaMz7vkyhgqLXVdcT75dC5udULVs1D2L",
      "value" : 0.0,
      "hexCode" : "504b03040a0000080...........31600000000",
      "gasLimit" : 200000,
      "price" : "0.00000025",
      "args" : [ [ "QKB" ], [ "QKB" ], [ "2000000" ], [ "2" ] ]
    }
  },
  "contractResult" : {
    "success" : true,
    "errorMessage" : null,
    "contractAddress" : "tNULSeBaMz7vkyhgqLXVdcT75dC5udULVs1D2L",
    "result" : null,
    "gasLimit" : 200000,
    "gasUsed" : 14029,
    "price" : "0.00000025",
    "totalFee" : 0.0,
    "txSizeFee" : 0.0,
    "actualContractFee" : 0.0,
    "refundFee" : 0.0,
    "stateRoot" : "be76399c41a8cb4be5ecf80e04dab36830b124cb1c43fea6ca69ae62259899ba",
    "value" : 0.0,
    "stackTrace" : null,
    "balance" : 0.0,
    "transfers" : [ ],
    "events" : [ "{\"contractAddress\":\"tNULSeBaMz7vkyhgqLXVdcT75dC5udULVs1D2L\",\"blockNumber\":46,\"event\":\"TransferEvent\",\"payload\":{\"from\":null,\"to\":\"tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD\",\"value\":\"200000000\"}}" ],
    "tokenTransfers" : [ {
      "contractAddress" : "tNULSeBaMz7vkyhgqLXVdcT75dC5udULVs1D2L",
      "from" : null,
      "to" : "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD",
      "value" : "200000000",
      "name" : "QKB",
      "symbol" : "QKB",
      "decimals" : 2
    } ],
    "remark" : "create"
  }
}


# 获取合约执行结果

获取一个合约的执行结果

  • 命令:getcontractresult <hash>
参数 说明
<hash> 交易hash

返回值

略 见示例

示例

nuls>>> getcontractresult 00203a48dcfc26426152805be49830c72005b4648d0182bbf6c2e8980380364eb59f
{
  "success" : true,
  "errorMessage" : null,
  "contractAddress" : "tNULSeBaMz7vkyhgqLXVdcT75dC5udULVs1D2L",
  "result" : null,
  "gasLimit" : 200000,
  "gasUsed" : 14029,
  "price" : "0.00000025",
  "totalFee" : 0.0,
  "txSizeFee" : 0.0,
  "actualContractFee" : 0.0,
  "refundFee" : 0.0,
  "stateRoot" : "be76399c41a8cb4be5ecf80e04dab36830b124cb1c43fea6ca69ae62259899ba",
  "value" : 0.0,
  "stackTrace" : null,
  "balance" : 0.0,
  "transfers" : [ ],
  "events" : [ "{\"contractAddress\":\"tNULSeBaMz7vkyhgqLXVdcT75dC5udULVs1D2L\",\"blockNumber\":46,\"event\":\"TransferEvent\",\"payload\":{\"from\":null,\"to\":\"tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD\",\"value\":\"200000000\"}}" ],
  "tokenTransfers" : [ {
    "contractAddress" : "tNULSeBaMz7vkyhgqLXVdcT75dC5udULVs1D2L",
    "from" : null,
    "to" : "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD",
    "value" : "200000000",
    "name" : "QKB",
    "symbol" : "QKB",
    "decimals" : 2
  } ],
  "remark" : "create"
}

# 获取合约构造函数

获取创建指定合约时需要传入的参数列表

  • 命令:getcontractcontructor <contractCode>
参数 说明
<contractCode> 合约代码的hex编码

返回值

略 见示例

示例

nuls>>> getcontractcontructor 504b03040a000008000.........20000b31600000000
{
  "constructor" : {
    "name" : "<init>",
    "desc" : "(String name, String symbol, BigInteger initialAmount, int decimals) return void",
    "args" : [ {
      "type" : "String",
      "name" : "name",
      "required" : true
    }, {
      "type" : "String",
      "name" : "symbol",
      "required" : true
    }, {
      "type" : "BigInteger",
      "name" : "initialAmount",
      "required" : true
    }, {
      "type" : "int",
      "name" : "decimals",
      "required" : true
    } ],
    "returnArg" : "void",
    "view" : false,
    "event" : false,
    "payable" : false
  },
  "isNrc20" : true
}

# 获取指定账户创建的合约列表

获取指定账户地址所创建的合约列表

  • 命令:getaccountcontracts <createAddress>
参数 说明
<createAddress> 账户地址

返回值

{
  "contractAddress" : "tNULSeBaMz7vkyhgqLXVdcT75dC5udULVs1D2L",
  "createTime" : "2019-03-26 09:28:26.026",
  "height" : 46,
  "confirmCount" : 402,
  "remarkName" : null,
  "status" : 2,
  "msg" : null,
  "create" : true
}

示例

nuls>>> getaccountcontracts tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD
[ {
  "contractAddress" : "tNULSeBaMz7vkyhgqLXVdcT75dC5udULVs1D2L",
  "createTime" : "2019-03-26 09:28:26.026",
  "height" : 46,
  "confirmCount" : 402,
  "remarkName" : null,
  "status" : 2,
  "msg" : null,
  "create" : true
}, {
  "contractAddress" : "tNULSeBaMzsHrbMy2VK23RzwjkXS1qo2ycG5Cg",
  "createTime" : "2019-03-25 16:08:25.025",
  "height" : 253,
  "confirmCount" : 195,
  "remarkName" : null,
  "status" : 0,
  "msg" : null,
  "create" : true
}, {
  "contractAddress" : "tNULSeBaNBYK9MQcWWbfgFTHj2U4j8KQGDzzuK",
  "createTime" : "2019-03-25 15:33:54.054",
  "height" : 46,
  "confirmCount" : 402,
  "remarkName" : null,
  "status" : 0,
  "msg" : null,
  "create" : true
} ]

# 查询网络信息

查询网络基本信息

  • 命令:network info

返回信息

{
  "localBestHeight" : 35317,//本地最新区块高度
  "netBestHeight" : 35317,//网络最新区块高度
  "timeOffset" : "0ms",//网络时间偏移值
  "inCount" : 0,//被动连接节点数量
  "outCount" : 1//主动连接节点数量
}

示例

nuls>>> network info
{
  "localBestHeight" : 35317,
  "netBestHeight" : 35317,
  "timeOffset" : "0ms",
  "inCount" : 0,
  "outCount" : 1
}

# 查询网络节点IP

查询网络节点IP

  • 命令:network nodes

返回信息

见示例

示例 根据高度获取区块

nuls>>> network nodes
[ {
  "blockHash" : "8c3a57eeda7ed74926eba6e007b11fca9363dc22019da19415e0a7731a9b1bdf",
  "blockHeight" : 4401,
  "peer" : "192.168.1.191:18001"
}, {
  "blockHash" : "8c3a57eeda7ed74926eba6e007b11fca9363dc22019da19415e0a7731a9b1bdf",
  "blockHeight" : 4401,
  "peer" : "192.168.1.143:18001"
} ]

# 在主链注册侧链

侧链需要进行跨链交易,需要先在主链完成注册,此命令需要在主网节点运行

  • 命令: registercrosschain <address> <chainId> <chainName> <addressPrefix> <magicNumber> <maxSignatureCount> <signatureBFTRatio><verifierList><assetId> <symbol> <assetName> <initNumber> [decimalPlaces] [minAvailableNodeNum] [txConfirmedBlockNum]
参数 说明
<address> 注册跨链费用支付账户
<chainId> 注册的链id
<chainName> 注册的链名称
<addressPrefix> 地址前缀
<magicNumber> 注册链的运行的网络魔法参数
<maxSignatureCount> 注册链最大签名数量
<signatureBFTRatio> 拜占庭比例 [67-100]
<verifierList> 注册链的初始验证人列表
<assetId> 注册的资产id
<symbol> 资产简称 e.g. BTC
<assetName> 资产名称
<initNumber> 资产发现总量
[decimalPlaces] 资产小数位数 默认8
[minAvailableNodeNum] 跨链交易可用条件:最小可用节点数量,默认5

返回值

{
  "mainNetVerifierSeeds" : "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp",#主网验证人列表
  "txHash" : "25b3a57507086d5d895895b41ef744a160f3251f4e5db118b7ca833eb6c9fff3",#交易hash
  "mainNetCrossConnectSeeds" : "192.168.1.192:8088"#主网跨链种子连接节点
}

示例

nuls>>>registercrosschain tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn 12 nbtc btc 20197777 12  67 LJScusmPf5EfdEwbA8nRZEYqMbRXKp6y3oCb 1 btc bt 100000000 8 1

Please enter the password.
Enter your password:**********
{
  "mainNetVerifierSeeds" : "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp",
  "txHash" : "25b3a57507086d5d895895b41ef744a160f3251f4e5db118b7ca833eb6c9fff3",
  "mainNetCrossConnectSeeds" : "192.168.1.192:8088"
}

# 在主链添加需要跨链交易的侧链资产

侧链是多资产的,需要在已存在的链上进行跨链资产的添加,此命令需要在主网节点运行

  • **命令: addcrossasset <address> <chainId> <assetId> <symbol> <assetName> <initNumber> [decimalPlaces] **
参数 说明
<address> 添加资产指令费用支付账户
<chainId> 注册的链id
<assetId> 注册的资产id
<symbol> 资产简称 e.g. BTC
<assetName> 资产名称
<initNumber> 资产发现总量
[decimalPlaces] 资产小数位数 默认8

返回值

  "txHash" : "25b3a57507086d5d895895b41ef744a160f3251f4e5db118b7ca833eb6c9fff3",#交易hash

示例

nuls>>>addcrossasset tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn  10 2 yuer CCY 300000000 8

Please enter the password.
Enter your password:**********
 "25b3a57507086d5d895895b41ef744a160f3251f4e5db118b7ca833eb6c9fff3"
  

# 在主链移除跨链交易的侧链资产

侧链是多资产的,在主网上要停止该资产的跨链交易时,使用移除指令,如果剩下最后一个资产,则该指令执行后,对应的链也将停止工作。此命令需要在主网节点运行

  • 命令: disablecrossasset <address> <chainId> <assetId>
参数 说明
<address> 添加资产时候使用的地址
<chainId> 移除注册的链id
<assetId> 移除注册的资产id

返回值

  "txHash" : "25b3a57507086d5d895895b41ef744a160f3251f4e5db118b7ca833eb6c9fff3",#交易hash

示例

nuls>>>disablecrossasset tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn  10 3
Please enter the password.
Enter your password:**********
 "25b3a57507086d5d895895b41ef744a160f3251f4e5db118b7ca833eb6c9fff3"
  

# 在主链恢复侧链

侧链在主网注册并且删除后,需要恢复,则可以通过如下命令进行恢复并更新信息,此命令需要在主网节点运行

  • **命令: updatecrosschain <address> <chainId> <chainName> <addressPrefix> <magicNumber> <maxSignatureCount> <signatureBFTRatio><verifierList><assetId> <symbol> <assetName> <initNumber> [decimalPlaces] [minAvailableNodeNum] **
参数 说明
<address> 注册跨链费用支付账户
<chainId> 注册的链id
<chainName> 注册的链名称
<addressPrefix> 地址前缀
<magicNumber> 注册链的运行的网络魔法参数
<maxSignatureCount> 注册链最大签名数量
<signatureBFTRatio> 拜占庭比例 [67-100]
<verifierList> 注册链的初始验证人列表
<assetId> 注册的资产id
<symbol> 资产简称 e.g. BTC
<assetName> 资产名称
<initNumber> 资产发现总量
[decimalPlaces] 资产小数位数 默认8
[minAvailableNodeNum] 跨链交易可用条件:最小可用节点数量,默认5

返回值

{
  "mainNetVerifierSeeds" : "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp",#主网验证人列表
  "txHash" : "25b3a57507086d5d895895b41ef744a160f3251f4e5db118b7ca833eb6c9fff3",#交易hash
  "mainNetCrossConnectSeeds" : "192.168.1.192:8088"#主网跨链种子连接节点
}

示例

nuls>>>registercrosschain tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn 12 nbtc btc 20197777 12  67 LJScusmPf5EfdEwbA8nRZEYqMbRXKp6y3oCb 1 btc bt 100000000 8 1

Please enter the password.
Enter your password:**********
{
  "mainNetVerifierSeeds" : "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp",
  "txHash" : "25b3a57507086d5d895895b41ef744a160f3251f4e5db118b7ca833eb6c9fff3",
  "mainNetCrossConnectSeeds" : "192.168.1.192:8088"
}

# 查询侧链注册信息

在主网查询某条侧链的注册信息

  • 命令:crosschaininfo <chainId>
参数 说明
<chainId> 注册链的id

返回值

 {
  "chainId" : 3,
  "chainName" : "testchain",
  "addressType" : "1",
  "addressPrefix" : "TBTC",
  "magicNumber" : 123456,
  "minAvailableNodeNum" : 5,
  "regAddress" : "tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD",
  "regTxHash" : "6c29d99c2b02cfc766ef25bee2ea619610a5fce1d778c3038885111f590ae312",
  "createTime" : 1557739548367,
  "verifierList" : [ "TBTCdusmPf5EfdEwbA8nRZEYqMbRXKp6y3oCb" ],
  "signatureByzantineRatio" : 67,
  "maxSignatureCount" : 12,
  "selfAssetKeyList" : [ "3-10" ],
  "totalAssetKeyList" : [ "3-10" ],
  "mainNetVerifierSeeds" : "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp",
  "mainNetCrossConnectSeeds" : "192.168.1.192:8088",
  "enable" : true
}

返回参数说明

parameter required type description
chainId true int 链标识
assetId true int 资产id
chainName true string 链名称
addressType true int 链上创建的账户的地址类型:1生态内2非生态内
addressPrefix true string 地址前缀 1-5个 大写字母或数字
magicNumber true string 网络魔法参数
minAvailableNodeNum true int 最小可用节点数量
regAddress true string 注册支付地址
regTxHash true string 交易hash
createTime true long 交易提交时间 ,1970相差的秒数
verifierList true string 验证人列表
signatureByzantineRatio true int 拜占庭比例 [67-100]
maxSignatureCount true int 最大签名数
symbol true string 资产符号
assetName true string 资产名称
initNumber true string 资产初始值
decimalPlaces true int 最小资产可分割位数
mainNetVerifierSeeds true string 主网种子验证人地址
mainNetCrossConnectSeeds true string 主网种子连接节点地址
enable true string 是否使用中

示例

nuls>>> crosschaininfo 10
{
  "chainId" : 10,
  "chainName" : "nuls10",
  "addressType" : "1",
  "addressPrefix" : "LJS2",
  "magicNumber" : 2019888,
  "minAvailableNodeNum" : 1,
  "regAddress" : "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn",
  "regTxHash" : "14539bbcb00b26e545168aa241c4484cf8aff42f373a2019959681e73f0acea8",
  "createTime" : 1565229647,
  "verifierList" : [ "LJS2dusmPf5EfdEwbA8nRZEYqMbRXKp6y3oCb" ],
  "signatureByzantineRatio" : 67,
  "maxSignatureCount" : 12,
  "selfAssetKeyList" : [ "10-1" ],
  "totalAssetKeyList" : [ "10-1" ],
  "mainNetVerifierSeeds" : "tNULSeBaMkrt4z9FYEkkR9D6choPVvQr94oYZp",
  "mainNetCrossConnectSeeds" : "192.168.1.192:8088",
  "enable" : true
}

# 查询侧链注册资产信息

在主网查询某条侧链资产的注册信息

  • 命令:crossassetinfo<chainId><assetId>
参数 说明
<chainId> 注册链的id
<assetId> 资产id

返回值

 {
  "chainId" : 10,
  "assetId" : 2,
  "symbol" : "CCY",
  "assetName" : "yuer",
  "depositNuls" : "100000000000",
  "destroyNuls" : "20000000000",
  "initNumber" : "30000000000",
  "decimalPlaces" : 2,
  "enable" : false,
  "createTime" : 1565229428,
  "address" : "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn",
  "txHash" : "612eda872c6ca16c5a5f63cce70a64ac15852e2b3a403309b0d963d22d6391bc"
}

返回参数说明

parameter required type description
chainId true int 链标识
assetId true int 资产id
<symbol> true string 资产简称 e.g. BTC
assetName true string 资产名称
depositNuls true long 抵押的主网资产数量
destroyNuls true long 销毁的主网资产数量
initNumber true string 资产初始值
decimalPlaces true int 资产可切割位数
enable true boolean 是否可用 true可用,false 停用
createTime true long 交易产生时间
address true String 交易支付地址
txHash true String 交易hash

示例

nuls>>> crossassetinfo 10 2
{
  "chainId" : 10,
  "assetId" : 2,
  "symbol" : "CCY",
  "assetName" : "yuer",
  "depositNuls" : "100000000000",
  "destroyNuls" : "20000000000",
  "initNumber" : "30000000000",
  "decimalPlaces" : 2,
  "enable" : false,
  "createTime" : 1565229429,
  "address" : "tNULSeBaMqywZjfSrKNQKBfuQtVxAHBQ8rB2Zn",
  "txHash" : "612eda872c6ca16c5a5f63cce70a64ac15852e2b3a403309b0d963d22d6391bc"
}

# 创建跨链交易

  • 命令:createcrosstx <formAddress> <toAddress> <assetChainId> <assetId> <amount> [remark]
参数 说明
<formAddress> 转出地址
<toAddress> 转入地址
<assetChainId> 转账资产的chainId
<assetId> 转账资产id
<amount> 转账资产数量
<remark> 转账备注

返回值:交易hash

529bb34c0f4760fa55dd98b92d3e913ed2306b7ac1f93c4491007e266bb04ef5

示例

nuls>>> createcrosstx tNULSeBaMnrs6JKrCy6TQdzYJZkMZJDng7QAsD M9busmFhQeu1Efn6rDyeQkFjHxv2dSzkuH8 2 1 1
Please enter the password.
Enter your password:**********
529bb34c0f4760fa55dd98b92d3e913ed2306b7ac1f93c4491007e266bb04ef5

# 查询跨链交易确认状态

  • 命令:getcrosstxstate <txHash>
参数 说明
<txHash> 交易hash

返回值

Confirmed | Unconfirmed

示例

nuls>>> getcrosstxstate 529bb34c0f4760fa55dd98b92d3e913ed2306b7ac1f93c4491007e266bb04ef5
Unconfirmed

# 退出钱包命令程序

退出操作钱包的命令行程序,不会退出已启动的钱包节点。

  • 命令:exit

示例

nuls>>> exit
Last Updated: 2022/6/27 上午10:07:01