折腾之:测试命令行钱包(cli_wallt) HTTP RPC访问

昨天在见证人群里看大佬巨佬们讨论命令行钱包的事情,说是v1.26.0(rc5)的版本导致以前的一些功能不好用,于是好奇测试了一番。

image.png
(图源 :pixabay)

测试环境

测试用到的环境以及工具如下:

  • Ubuntu 22.04 LTS
  • Hived (v1.26.0rc5)
  • cli_wallet_v1.25.0 以及cli_wallet_v1.26.0rc5
  • curl

首先,因为HF26已经生效,已经无法连接到v1.25.x的节点啦,所以只能测试连接v1.26.0rc5的节点啦。

Hived中配置如下参数:

webserver-ws-endpoint = 127.0.0.1:8091
webserver-http-endpoint = 127.0.0.1:8081

分别是ws监听的地址与端口、http监听的地址与端口。

另外,主要测试HTTP RPC方式连接使用钱包,而不是直接使用命令行钱包

测试cli_wallet_v1.25.0

打开钱包:

cli_wallet_v1.25.0 -w mywallet -s ws://127.0.0.1:8091 -H --rpc-http-allowip 127.0.0.1

其中:

  • -w指定钱包(包含签名用的私钥)
  • -s 指定连接节点的ws地址和端口
  • -H 表示启用钱包HTTP RPC(默认端口为8093)
  • --rpc-http-allowip 表示只允许特定的IP地址

打开钱包后出现类似如下界面:

Reveal spoiler

image.png

使用如下请求进行测试:

curl -d '{"jsonrpc": "2.0", "method": "get_block", "params": [1], "id": 1}' http://127.0.0.1:8093

会正常返回创世块的信息:

Reveal spoiler

1665557810894.png

以上测试表明:使用v1.25.0版本钱包,连接v1.26.0版本节点,没有问题

需要注意的是,如果钱包启动时,没加--rpc-http-allowip参数,那么访问时就会出现类似如下提示内容:

rejected connection from 127.0.0.1:42064 because it isn't in allowed set []

测试cli_wallet_v1.26.0rc5

使用v1.26.0命令行钱包和相应参数打开钱包:

cli_wallet_v1.26.0rc5 -w mywallet -s ws://127.0.0.1:8091 -H --rpc-http-allowip 127.0.0.1

提示信息看起来一切正常:

Reveal spoiler

image.png

但是当我们尝试以发送请求时,发现请求发送后,没有任何响应,钱包端也无任何输出信息。

所以说,至少v1.26.0版本的命令行钱包,与v1.25.0版本的命令行钱包,行为表现上,是不一致的

很多大佬、巨佬、或者交易所,可能都在使用命令行钱包(HTTP PRC方式)进行一些操作,比如交易所处理充值提现等。

钱包行为表现不一致,可能会给交易所等带来一些麻烦。好在v1.25.0版本的钱包还可以用,这大概算是个好消息。

测试cli_wallet_v1.26.0rc5 + -d参数

以上两个版本命令行钱包,都有一个-d参数可用,帮助信息如下:

-d [ --daemon ] Run the wallet in daemon mode

也就是说,以守护进程模式运行钱包。

我们加上-d参数进行测试:

cli_wallet_v1.26.0rc5 -w mywallet -s ws://127.0.0.1:8091 -H --rpc-http-allowip 127.0.0.1 -d

启动后提示信息如下:

Reveal spoiler

1665558668336.png

这时我们发送如下请求:

curl -d '{"jsonrpc": "2.0", "method": "get_block", "params": [1], "id": 1}' http://127.0.0.1:8093

如果节点没开启wallet_bridge_api,会被提示找不到wallet_bridge_api,部分提示信息如下:

exception: unspecified\nAssert Exception:api_it r != data._registered_apis.end(): Could not find API wallet_bridge_api\n

在节点配置文件中加上如下语句:

plugin = wallet_bridge_api

重启节点后,重新发送上述请求:

curl -d '{"jsonrpc": "2.0", "method": "get_block", "params": [1], "id": 1}' http://127.0.0.1:8093

可以正常返回创世块信息:

Reveal spoiler

1665559426284(1).png

也就是说,使用-d参数,以守护进程方式启动命令行钱包,钱包是可以正常接受HTTP RPC请求的

另外,就是v1.26.0版本的命令行钱包,依赖于wallet_bridge_api插件,这个依赖无关HTTP RPC或者命令行方式。所以,如果计划使用v1.26.0版本的命令行钱包,对应节点中一定要打开wallet_bridge_api插件。

这也是v1.25版本与v1.26版本命令行钱包,又一处行为不一致的地方。当然了,如果使用的是官方节点或者第三方节点,那么就不用自己关心这个问题啦。

总结

  • v1.25.0版本的命令行钱包连接v1.26.0节点后可以正常使用HTTP RPC
  • v1.26.0版本的命令行钱包必须使用-d参数后才可以使用HTTP RPC
  • v1.26.0版本的命令行钱包依赖于节点的wallet_bridge_api插件

image.png
(图源 :pixabay)

有关命令行方式直接使用命令行钱包,可以参考文末链接。钱包HTTP RPC的使用方式,参考了@abit 大神的早期文档,感兴趣的可以去学习一下。

相关链接

Sort:  

Your content has been voted as a part of Encouragement program. Keep up the good work!

Use Ecency daily to boost your growth on platform!

Support Ecency
Vote for new Proposal
Delegate HP and earn more

我轻轻地来了,又轻轻地走了~

膜拜大佬😉

过来学习了😸😸

I can relate.

o哥。那现在使用钱包,需要插件。wallet_bridge_api在谷歌浏览器能不能扩展