目前Mirror上已经有两篇中文教程,分别是Silent的《Connext testnet Router中文教程》以及Crypto Owl的《Connext 测试网路由器设置》。除此之外的中文教程资源还包括gexiao上传到Youtube上的视频教程,如下所示。
这些教程都很有参考价值,不过我当初设置的时候,参考的是这篇英文文章。本文仍以英文教程为蓝本,兼顾官方文档,来记录自己设置路由时的一些经验教训。
这算是我无意触发的BUG,第一次设置的时候我选用的是AWS的r6gd.medium示例类型。选这款服务器的理由很简单:它是符合8G内存虚拟机里第二便宜的,而且自带59G存储空间,正好同时符合内存和磁盘存储的要求。不过我当时没注意到它采用的是arm64架构,即使注意到也肯定不以为意。结果在安装完成后,遇到以下报错,谷歌一下发现可能是CPU架构的问题。然后又部署在一款X86机器上,就没再遇到此类错误。

在配置.env文件的时候,犯了一个低级错误,那就是路由版本的格式搞错了。当时前往镜像发布页面看到最新版本是v0.2.0-alpha.16,于是就按照这个版本设置参数:
错误尝试:
ROUTER_VERSION=v0.2.0-alpha.16
结果报错找不到该版本,后来试着把v去掉,运行成功。
正确设置:
ROUTER_VERSION=0.2.0-alpha.16
在这里我顺带介绍下ROUTER_EXTERNAL_PORT这个参数,由于路由运行在容器内,它在容器内的监听端口是8080。而在宿主机,也就是运行容器的服务器上,会有一个映射端口。该参数,作为可选项,就是配置这个映射端口。本着可选项就不设置的原则,我刚开始并没有填写该参数。结果官方文档里有一步验证路由是否成功设置:
# assumes ROUTER_EXTERNAL_PORT is 8080, on the container itself it will be 8080
$ curl localhost:8080/config
{"signerAddress":"0x627306090abaB3A6e1400e9345bC60c78a8BEf57"}
我按照官方文档验证,一直提示端口不通。。后来执行docker ps,查看镜像后发现如果不显示设置映射端口,docker会随机给匹配一个宿主机端口,如下图所示。

显然,我这里映射的是宿主机的8000端口,于是执行curl localhost:8000/config后,就可查看配置结果。

起初我看到Discord里有人分享自己设置的config文件,但是后来跟官方的示例代码一对比好像几乎一样,我一度不知道是谁参考了谁。不过问题不大,直接把config.example.json代码复制到config.json中即可。
单纯从懒的角度看,官方文档都无需解释Web3Signer是干啥的,因为给出Web3Signer的官方链接还让我以为需要用户自己去阅读官方文档,结果官方文档里正好在醒目的位置提到部署Web3Signer。于是,我就忙不停歇的去部署Web3Signer,最后发现原来key.yaml中的privateKey指的就是钱包私钥。最好选一个新钱包,查看私钥后填在此处即可。而我一开始走了弯路,原因在于把privateKey理解成一种需要安装Web3Signer后再以某种方式获取的东东。
当打印出以下日志的时候,表明你的路由已经设置成功。至此,走着弯路也通向成功,一切探索都是值得的。

最后,我将各位路由贡献者在Discord里分享的链接整理在一起,放在Github上,供大家学习参考。

