Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

NEO-CLI 命令参考

朋友一起走
299 0 0
CLI 命令参考
0 u. Z# S  N4 F( Y, s; }              ) `8 J8 `- ?& u9 s
打开命令行,定位到 NEO-CLI 所在目录,输入下面代码即可启动 NEO 的命令行钱包。; {7 e  `( A. R  t, A
dotnet neo-cli.dll- h4 f2 @1 z) }: F, w# H
本篇教程将介绍命令行钱包的所有命令,你可以通过输入命令的形式操作钱包,如创建打开钱包、导入导出私钥、转账、启动共识等。在命令行中输入 help 可以查看所有命令。) }/ s# G  c& R. U! q6 W; @; S2 q
Note命令中尖括号  表示参数,方括号 [] 表示可选参数,或符号 | 表示所填的参数可以是其中任意一种,等号 = 表示可选参数在不输入情况下的默认值。
+ }2 `" v, z# {- ~3 i7 w- U8 Q9 G5 Q9 x- P5 A$ a
控制台指令9 o3 P6 t8 v( f& ?
命令功能说明
version显示当前软件的版本
help帮助菜单
clear清除屏幕
exit退出程序
- N" a8 q' r) Y+ g- M3 Y# Y- \8 }
钱包操作/ v- ?) c% V( c4 `. Z, L
命令功能说明备注
create wallet 创建钱包文件
open wallet 打开钱包文件
upgrade wallet 升级旧版钱包文件
rebuild index重建钱包索引需要打开钱包
list address列出钱包中的所有账户需要打开钱包
list asset列出钱包中的所有资产需要打开钱包
list key列出钱包中的所有公钥需要打开钱包
show utxo [id|alias]列出钱包中指定资产的 UTXO需要打开钱包
show gas列出钱包中的所有可提取及不可提取的 GAS需要打开钱包
claim gas [all]提取钱包中可提取状态的 GAS(前50个地址或所有地址)需要打开钱包
create address [n=1]创建地址 / 批量创建地址需要打开钱包
import key 导入私钥 / 批量导入私钥需要打开钱包
export key [address] [path]导出私钥需要打开钱包
send   |all [fee=0]向指定地址转账 参数分别为:资产 ID,对方地址,转账金额,手续费需要打开钱包
import multisigaddress m pubkeys...创建多方签名合约需要打开钱包
sign 签名  参数为:记录交易内容的 json 字符串需要打开钱包
relay 广播  参数为:记录交易内容的 json 字符串需要打开钱包
; H( J3 b# q) ~6 k5 K
命令说明
, S5 @7 Z3 ?( W4 S3 Z0 z👉 upgrade wallet  ; d. }( ^2 M+ j/ ?: f8 \6 @
升级旧版钱包文件/ {; H1 q' ^4 {, \
neo>upgrade wallet cli.db38 ~7 ]& U3 A/ [5 `% d; ]; K/ M
Wallet file upgrade complete. Old file has been auto-saved at: cli.old.db3! d3 h* d* K# ]
👉 rebuild index 9 I' d0 i% E4 p! I1 k
重建钱包索引。为什么要重建钱包索引,重建钱包索引有什么用?
3 n7 p. A" N4 D$ B' `0 {  Y, a钱包中有一个字段,记录了当前钱包同步的区块高度,每新增加一个区块,钱包客户端就会同步区块,将钱包中的资产和交易更新。假设当前记录的区块高度为 100,然后你执行了 import key 命令导入了私钥,这时钱包仍然是从区块高度为 100开始计算你的资产。如果导入的地址在区块高度小于 100的时候有一些交易,这些交易和对应的资产将不会体现在钱包中,所以要重建钱包索引,强制让钱包从区块高度为0开始计算你的资产。; O  D8 ~& m/ l
假如由于种种原因,钱包中的某笔交易未确认,这时资产已经从钱包中扣除,但并未经过整个区块链网络的确认。如果想删掉这笔未确认的交易使钱包中的资产正常显示也需要重建钱包索引。2 Q7 N% ~( z) n% U. c" b4 h
新创建的钱包不用重建钱包索引,只有要导入私钥或者钱包中资产显示异常时才需要重建钱包索引。
3 B' b$ s" n+ V/ }7 Z👉 show utxo [id|alias]( U9 Y5 @0 J! l* z
列出钱包中指定资产的 UTXO,示例输出如下所示:7 u2 s9 Q$ E5 i7 m
neo>show utxo neo/ y% o( o9 \  n. W2 M
8674c38082e59455cf35cee94a5a1f39f73b617b3093859aa199c756f7900f1f:2
3 x' ?% p+ Y% i7 q1 C! utotal: 1 UTXOs) w1 ~, c, D/ D0 D3 w
neo>show utxo gas) m  M: X* |* a! j' f9 ^* O& c
8674c38082e59455cf35cee94a5a1f39f73b617b3093859aa199c756f7900f1f:1
+ o6 W7 n9 ]$ l' b' @, U8 E. Ztotal: 1 UTXOs% G0 [1 r) N& Y3 y; k4 f
neo>show utxo 025d82f7b00a9ff1cfe709abe3c4741a105d067178e645bc3ebad9bc79af47d4
% P2 N& K# w7 C: Y7 N, ~8674c38082e59455cf35cee94a5a1f39f73b617b3093859aa199c756f7900f1f:0
$ _1 U4 Z6 y, Q( E7 t) b: Ttotal: 1 UTXOs- C: R& \+ W8 ?# p9 S0 y2 X( ]2 `
👉 show gas , ^, H5 Z3 A; R1 v2 F# H
列出钱包中的所有可提取及不可提取的 GAS,输出结果如下:
/ X, V. J; Z. J1 g! q3 e2 v: lunavailable: 133.0240 v, _# F! U4 }0 m& @# M+ B9 M
  available: 10.123
0 q$ F0 {/ q1 C# a9 t; D其中 unavailable 表示不可提取的 GAS,available 表示可提取(待提取)的 GAS。
: K2 ^( Z1 y4 m7 H9 H
  • 注:这里不包含已提取的 GAS,查看已提取的 GAS 请用 list asset 命令。# D( V( N- Z! Y; `. V
    7 |2 s2 j- e9 O  z
    什么是可提取的 GAS,什么是不可提取的 GAS?% b* v- z% @: m1 d/ q) K+ t% R) ^5 g
    每一个 NEO 都有两种状态:unspent 和 spent。每一个未提取的 GAS 也有两种状态,available 和 unavailable。一个 NEO 的生命周期以转入地址起始,转出地址截止,转入时状态变为 unspent,转出时状态变为 spent。当 NEO 处于 unspent 状态时,所产生的 Gas 为 unavailable 状态,即不可提取。当 NEO 处于 spent 状态时,期间所产生的 GAS 变为 available,用户可以提取。) h. X5 d4 t& L
    如何将钱包中的所有 unavailable GAS 转为 available GAS 呢,很简单,将钱包中的所有 NEO 转到钱包中的任意一个地址即可。
      S8 Z$ F/ f5 e8 I👉 claim gas   v+ q: R4 D) z+ ^; v
    提取钱包中可提取状态下的 GAS,该过程是通过一个特殊的交易 Claim Transaction 完成的,输入命令后,客户端会输出 Claim Transaction 的 ID(提取 GAS 这笔交易的 ID)。用户可以有两种选择,如末尾不带参数,则默认提取钱包前50个地址中的可提取状态的 GAS。如果指定参数 [all],则会提取钱包中所有地址的可提取状态的 GAS。
    + X$ d8 M* a2 W6 u% q4 b- C执行完 claim gas 命令后,再执行 list asset 会显示 GAS 有增加。6 T( E. m' }5 m& Q
    👉 create address [n=1]
    ; G& x- w& E2 R可以输入 create address  来创建一个地址,也可以输入 create address 100 来批量创建 100个地址,批量创建的地址会自动导出到 address.txt 文件中。4 x, z, E+ @2 a( m* c* b
    👉 export key [address] [path]
    ( g1 b# p  j7 t4 Z7 r) y你可以指定导出哪个地址对应的私钥,也可以指定导出至指定的文件中,例如下面的命令都是合法的。该命令需要验证钱包密码。
    * f+ D5 e& S" o7 ^: B- P7 J' xexport key8 s6 _: j7 A2 P( T- ^. O
    export key AeSHyuirtXbfZbFik6SiBW2BEj7GK3N62b. X" ]& R7 o8 Z2 B& z0 V- u( k
    export key key.txt
    ; ?6 T6 V8 z, l* r& Wexport key AeSHyuirtXbfZbFik6SiBW2BEj7GK3N62b key.txt
    2 g: f$ ^% j7 t/ B( Z👉  import key # o1 @0 j5 w: u* H; w
    导入私钥,你可以指定导入一个私钥,或者是导入一个文件中的多个私钥,例如下面的命令都是合法的。
    9 R8 S) d+ p+ G- w/ N4 Himport key L4zRFphDJpLzXZzYrYKvUoz1LkhZprS5pTYywFqTJT2EcmWPPpPH- P5 l# w, s7 |3 }: x+ q9 |
    import key key.txt- ?+ z& v' }* r
    如果是指定文件的话,文件里的私钥格式请参考 export key key.txt 的输出。
    $ l+ [) O2 C& n7 f👉 send   |all [fee=0]5 B! H" `$ s( ?% _0 _
    转账,一共有 4 个参数,第一个参数是资产 ID,第二个参数是收款地址,第三个参数是转账金额(当输入 all 即为钱包中该资产的全部数量),第四个参数是手续费(这个参数可不填,默认为0)。该命令需要验证钱包密码。假如我想转 100 NEO 转到这个地址“AeSHyuirtXbfZbFik6SiBW2BEj7GK3N62b”,我需要输入以下命令。7 {9 G9 Q7 C4 D
    send c56f33fc6ecfcd0c225c4ab356fee59390af8560be0e930faebe74a6daff7c9b AeSHyuirtXbfZbFik6SiBW2BEj7GK3N62b 100* t: k- H0 c4 E4 |' V/ s) }( R
    因为第二个参数除了资产 ID,还可以填写资产缩写,如 neo,gas,所以以上命令可以写成:) C5 w4 Y4 W( P0 Z
    send neo AeSHyuirtXbfZbFik6SiBW2BEj7GK3N62b 100
    4 B3 C' {  w: M- d) q1 G不知道资产 ID 怎么办?请输入 list asset 命令查看钱包中的所有资产。; O2 i/ T2 n# C1 _2 y5 c9 ?
    👉 import multisigaddress m pubkeys...
    , l4 ~  Y" _: N! Y! B& t$ s5 p; ~以 m 个最小签名数量来创建多方签名的合约地址,例如两个公钥创建的多方签名地址, m 可以为 1 或 2, 后面的参数就是两方的公钥。
    " h/ |3 |0 _: K1 c; S& w例如:import multisigaddress 1 037ebe29fff57d8c177870e9d9eecb046b27fc290ccbac88a0e3da8bac5daa630d 03b34a4be80db4a38f62bb41d63f9b1cb664e5e0416c1ac39db605a8e30ef270cc
    " t0 n! h  k9 G' F- P1 w% I% |- P👉 sign  1 O3 k  a$ ^( q& z& K# T
    从签名数量为 1 以上的多方签名合约中提取资产时,需要多方进行签名,参数为记录这段交易的 json 字符串。 签名完整后才能广播出去。/ Z1 Y7 z) w; }  X
    👉 relay  ) ~; ?/ C6 U+ T8 o$ m
    签名完整后,可以将这段交易信息进行广播。参数同样为记录这段交易的 json 字符串。
    , B( f. O6 A- {! i插件安装/ j6 n! H3 D6 Q5 u0 z7 j
    命令功能说明备注
    install [Plugin name]安装指定插件
    uninstall [Plugin name]卸载指定插件
    . \9 H' }9 T0 ]1 f
    命令说明7 s1 o3 Y- r6 ]! a
    👉 install [Plugin name] 7 r  I- B% @" f' U' Y
    安装指定插件,如下所示。卸载插件与此类似。
    1 T5 ~, G2 d' d) ]neo>install ImportBlocks$ r- D. L/ z1 y4 y
    Downloading from https://github.com/neo-project/neo-plugins/releases/download/v2.9.4/ImportBlocks.zip
    & U) h; I' f! XInstall successful, please restart neo-cli.% y& S5 u" ~( s7 i; l  j
    neo>install ApplicationLogs/ H7 ?' U( z1 z/ n
    Downloading from https://github.com/neo-project/neo-plugins/releases/download/v2.9.4/ApplicationLogs.zip5 }5 l' d, |- a! M3 l  z
    Install successful, please restart neo-cli.0 I9 w3 U) P3 y1 m) U( B
    以上只是示例插件,更多插件请访问 NEO 客户端插件。! E6 o) b4 |0 a8 T# |6 z2 T
    查看节点信息
    ( [7 Y' b2 |! F$ J; r! i* K( v* K
    命令功能说明
    show state显示当前区块链同步状态
    show node显示当前已连接的节点地址和端口
    show pool显示内存池中的交易(这些交易处于零确认的状态)
    export blocks [path=chain.acc]导出全部区块数据,导出的结果可以用作离线同步
    export blocks  [count]从指定区块高度导出指定数量的区块数据,导出的结果可以用作离线同步
      D  o3 H3 O5 H
    高级指令
    3 x' s5 j- E; Y1 q0 d! q
    命令功能说明
    start consensus启动共识

    : L; t5 C' b( r5 `$ G0 ]) d8 k启动共识的前提是该钱包有共识的权限,在 NEO 主网上可以通过投票选举获得共识的权限,如果自己部署的私有链可以在 protocol.json 中设置共识节点的公钥,详情可参考 私链搭建。
  • BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
    声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    成为第一个吐槽的人