没节操的先广告一波,如果觉得这个教程对你有那么一点帮助,欢迎点击 点赞专用链接 帮我去点个赞(小心心)咯,对,就是那个龙猫头像的!
首先,这是一个韭菜的教程,也是第一次写这种教程,有问题请轻喷,中间遇到了好几个问题,感谢群里的 @可 @Orange @stwith 的帮助支持~
另外可能会有人问 Docker 跟 Vmware这种虚拟机的区别,简单点说 Docker 更轻量,对硬件要求更低,用起来应该更丝滑,具体请大家自行 Google:Docker和虚拟机的区别。
OK,Let’s go~
下载安装Docker
既然是Docker,那么首先肯定是下载安装了,这里别问我Docker是什么,请自行Google。
具体的大家可以直接参考这篇文章,我就不重复造轮子了:
写的很详细,应该没有问题,如果有,请私聊我,收 CKB 解决,哈哈哈
对了,有个问题,安装完需要注销或者重启才能打开Docker(对就是那个背着集装箱的小鲸鱼),教程中没提到,即使你能打开,也建议注销或重启再打开。
获取CKB镜像
在开始菜单中找到“命令提示符”或者Win+R键输入“CMD”打开命令行界面
在命令提示符中输入:docker run --rm -it nervos/ckb:latest run
配置
Win+R输入“CMD”新打开一个命令行
挂载目录:docker volume create ckb-testnet
查看是否挂在成功:docker volume ls
,成功的话可以看到VOLUM NAME叫ckb-testnet
的。
初始化目录:docker run --rm -it -v ckb-testnet:/var/lib/ckb nervos/ckb:latest init --spec testnet --force
创建一个节点并运行:docker create -it -v ckb-testnet:/var/lib/ckb –-name ckb-testnet-node nervos/ckb:latest run
这个指出一下:酒馆里的教程这里有个小错误,--name
中少了一个-
,会让小白一脸懵逼。
接下来把配置文件复制出来:
docker cp ckb-testnet-node:/var/lib/ckb/ckb.toml .
docker cp ckb-testnet-node:/var/lib/ckb/ckb-miner.toml .
然后需要编辑配置文件,*修改ckb.toml文件中的args
和hash_code
参数,
这里可能会出现韭菜三问:文件在哪?怎么编辑?这两个参数哪里来??
我们一个个解答:
** 1. 文件在哪?**
默认在C盘-用户(Users)-当前登录用户名的文件夹根目录:
2. 怎么编辑?
记事本也可以,但是不推荐,小白的话可以尝试下一个Notepad++] (https://notepad-plus-plus.org/download/v7.7.html)这个编辑器进行编辑。
编辑器打开后,不要动,我们去获得这两个参数。
3. 这两个参数哪里来?
简单点说这两个参数需要用一个随机生成的私钥然后通过CKB来加密生成。
好,继续操作,首先新打开一个命令行,这里我们需要用Docker跑起来一个简单的Ubuntu系统:
用Docker下载Ubuntu镜像
docker pull ubuntu
然后运行Ubuntu系统
docker run -ti ubuntu bash
先更新Ubuntu的下载源,防止后面安装软件出现奇怪问题
apt-get update
安装openssl
和xxd
两个依赖包:
apt-get -y install openssl
apt-get -y install xxd
接下来通过运行下面的命令获得一个公钥(PubKey)和私钥(PrivKey)。
openssl ecparam -genkey -name secp256k1 -text -noout -outform DER | \
xxd -p -c 1000 | \
sed 's/41534e31204f49443a20736563703235366b310a30740201010420/PrivKey: /' | \
sed 's/a00706052b8104000aa144034200/\'$'\nPubKey: /'
得到的公钥和私钥:
这两个一定要复制保存好,后面有用,另外这个命令行窗口别关闭,后面也有用。接下来我们需要再回到CBK。
tips: 很多人如果第一次用可能不知道怎么复制,这里不要用Crtl+C复制,按住鼠标左键,选择要复制的内容,然后到命令行的顶部边框,右键-编辑-复制。如下图:
我们再新开一个命令行,使用docker ps -a
查看当前所有的容器,找到一个有端口的镜像是nervos/ckb:latest
的容器,记住它的ID,然后执行docker exec -it <ckb_id> /bin/bash
,将中间的<ckb_id>
换成刚刚记住的ID,进入CBK的命令行。
进入后执行命令
ckb cli secp256k1-lock <pubkey>
将其中的<pubkey>
改成前面自己生成的公钥。
这时候就能得到自己的code_hash
和args
继续复制保存好。
然后回到前面在电脑上打开的ckb.toml
文件,将其中(最后三行)的code_hash和args替换成自己的并解除注释(删除前面的#号,如果前面有#的话)。
然后使用exit
命令退出CKB的命令行界面,回到Docker,执行
tar -cf - ckb.toml ckb-miner.toml | docker cp - ckb-testnet-node:/var/lib/ckb
将改过的配置文件放回去。
>这里如果不确定有没有改成功,可以按如下步骤校验:
新开一个命令提示行,通过docker ps -a
找到NAMES是 ckb-testnet-node
的容器,确定ID,然后执行docker exec -it <ckb_id> /bin/bash
,<ckb_id>
替换为对应的ID。
这样就进入了节点的命令提示行,输入ls
命令执行,可以看到ckb.toml文件,再通过tail -n 4 ckb.toml
命令查看文件最后4行,确认是自己填的内容即可。
挖矿!挖矿!挖矿!
新开一个命令行,执行下面命令,启动CKB节点,开始同步区块
docker start -i ckb-testnet-node
再开一个命令行,执行下面的命令,启动挖矿程序开始挖矿
docker exec ckb-testnet-node ckb miner
OK,上面如果没有啥报错,并且你的内容跟我的显示差不多话,恭喜你,你已经成功挖矿了!
tips:这里还需要注意一下,必须等上面节点的区块全部同步好,才能正确的查到相关数据,可以通过查看上面的
block:
后面的最新的数字,跟区块浏览器上的最新区块对比,如果一样表示已经同步好了。
我的钱包呢?
上面其实已经可以挖矿了,但是还是有个大问题的,那就是我的钱包地址是多少?怎么去查挖到多少CKB了?
这里就告诉大家怎么获得钱包地址。
获得钱包地址,需要用到前面Ubuntu系统和在里面随机生成privkey
,所以前面让大家保存好~
OK,回到上面用Docker运行的Ubuntu的命令行窗口,希望你没关,关了的话,把那个步骤重新跑一下吧。
在Ubuntu命令行执行以下命令安装依赖:
apt install -y git-core curl build-essential libssl-dev libreadline-dev libyaml-dev libcurl4-openssl-dev libffi-dev autoconf autogen libtool pkg-config libsodium-dev libsecp256k1-dev
安装Ruby环境:
apt install -y ruby-full
完成后再执行:
gem install bundler
上面完成后,继续执行:
git clone https://github.com/nervosnetwork/ckb-sdk-ruby && cd ckb-sdk-ruby
git checkout master
最后执行下面的命令,这一步可能需要花比较久的时间,大家保持耐心:
bundle
执行完成后,窗口别管!
再开一个命令行运行:docker ps
查看当前运行的docker 容器(这一步可以跟上一步同步进行),我们会看到一个NAMES是ckb-testnet-node
的容器。
运行命令:docker inspect --format='{{.NetworkSettings.IPAddress}}' ckb-testnet-node
会得到一个IP地址。
请记住这个IP地址。
这里我们再回到上面Ubuntu的命令行,
运行命令行:curl -d '{"id": 2, "jsonrpc": "2.0", "method":"get_tip_header","params": []}' -H 'content-type:application/json' 'http://<ip>:8114'
,把中间的<ip>
换成你刚刚得的IP。
不报错并且得到跟图片里差不多的结果后,运行bin/console
,进入 CKB 的ruby命令行,大概是这样子的,注意前面的区别:
就下来就是关键时刻了,我们要开始生成我们的钱包地址了
在ruby命令行中,输入命令:
rpc = CKB::RPC.new(host: 'http://<ip>:8114')
把中间的<ip>
换成你前面得到的IP。
tips: 这里可以通过
rpc.get_tip_header
查看是否调用成功,成功的样子如下:
再输入下面的命令得到钱包对象:
wallet = CKB::Wallet.from_hex(rpc, privkey)
这里注意了,privkey
要换成我们前面在Ubuntu里随机生成privkey
,并且要在前面加上0x
。
再通过wallet.address
得到钱包地址。
tips: 假如生成的privkey是
4381aee933174c34162edcebccc9d7bcfd40921a962f4d501425305990938aab
,则命令的样子应该是wallet = CKB::Wallet.from_hex(rpc, "0x4381aee933174c34162edcebccc9d7bcfd40921a962f4d501425305990938aab")
,前面加上了0x
,并外围包裹着英文输入法的双括号
到这里,我们就获得了钱包的地址,可以去区块浏览器上搜索查看了~
OK,教程差不多到这里,上面的步骤是一遍遍并能正确跑出来的,但依然不确定是否有遗漏,如果有遗漏或者错误欢迎留言指出来,感谢~
最后欢迎点击 点赞专用链接 去帮我去点个赞(小心心)咯,对,就是那个龙猫头像的!
-EOF-