整个测试分两部分,第1部分是配置和启动miner-server服务和storgenode服务,此部分完成了,即矿机启动成功,在Lambda网络上提供了空间出售服务。客户就可以根据需求来购买你的空间,付给你LAMB。
当你的空间被购买了,并且客户存储的有效容量超过1G,你就获得了算力,有算力就可以或者出块奖励。(自己也可以购买自己的空间,即刷单。)第2部分就是刷单。
配置和启动miner-server服务和storgenode服务
两者的关系如下图,可以在同一台矿机同时安装miner服务和node服务,也可以在一台矿机上安装miner服务,其他需要出售空间的矿机上不安装miner服务只安装node服务,只要node服务指向这台miner矿机就可以。这么设计有安全和方便管理的优势。
1. miner-server服务
下载地址:
https://github.com/LambdaIM/launch/releases/download/v0.4.0/lambda-storage-0.4.0-testnet.tar.gz
1.1配置环境
./lambdacli config node tcp://47.93.196.236:26657
./lambdacli config chain-id lambda-chain-test4.0
./lambdacli config trust-node true
1.2 添加账户
将[your-account-name]替换成您自定义的账户名称,需要设置您的账户密码,不用加中括号
./lambdacli keys add [your-account-name]
例子:./lambdacli keys add minertest
记得把助记词写下来,养成好习惯。
成功后如下图
如果是钱包创建的账户导入,则通过钱包创建账户时候的助记词进行操作
./lambdacli keys add [your-account-name] –recover
输入命令后按照提示输入密码和助记词即可
1.3创建矿工
1)质押空间
./lambdacli tx staking delegate
lambdavaloper1prrcl9674j4aqrgrzmys5e28lkcxmntxuvjpcl 20000000utbb \
–from [your-account-name] –broadcast-mode block –y
红色的地址为验证节点地址,因为现在是测试网,暂时只有3个可选,可以就用此处默认的即可。
20000000utbb为质押的总容量,20T,即需要你的账号上面有至少20TBB,测试可以1T就可以,出错了还可以有更多选择。
例子:
./lambdacli tx staking delegate
lambdavaloper1prrcl9674j4aqrgrzmys5e28lkcxmntxuvjpcl 1000000utbb –from minertest –broadcast-mode block -y
成功后如图
2)初始化矿工
./lambdacli tx market create-miner –from [miner-name] –broadcast-mode block -y
[miner-name] 是您在第3步创建的账户名称, 矿工配置这里使用[miner-name]代称。
例子:
./lambdacli tx market create-miner –from minertest –broadcast-mode block -y
3)启动miner-server服务
./lambdacli miner-server –from [miner-name] –query-interval 5 –laddr tcp://0.0.0.0:26670 –gas 500000
例子:
因为需要在后台一直启动矿工服务,可进行如下操作步骤:
1. ./lambdacli miner-server –from minertest –query-interval 5 –laddr tcp://0.0.0.0:26670 –gas 500000 >> miner.log
2. 输入密码并回车后按Ctrl+Z
3. 紧接着输入bg(如按Ctrl+Z以后方括号中不是1,可输入bg %对应数值,例如:显示 [3]+ 已停止 ,可输入bg %3)
然后查看输出的日志是否正常
tail –f miner.log
正常的效果如下图
到此miner-server的服务启动好了,建议查看日志这个终端不要关闭,方便随时查看是否有报错。另外再开终端进行后面的操作。
2. Storagenode服务
刚才前面的操作是在链上声明你要用矿工minertest一共出售1T空间,但是并没有指出你要出售的空间在哪里,用户买了你的空间也不知道数据往哪里上传。
这后面的一通骚操作大概的意思就是告诉lambda网,你要将部署node服务的这台矿机的哪些空间拿来出售存储购买空间的用户数据。
1) 创建存储节点
初始化
./storagenode init
查看节点信息
./storagenode info
创建节点
./lambdacli tx market create-machine –dht-id [dht-id] –name [machine-name] –peer-id [peer-id] –pub-key [pub-key] –from [miner-name] –broadcast-mode block -y
例子
./lambdacli tx market create-machine –dht-id
7P1NrBmbZrSeYKu4PsuJi39bcnFDAotjwwfeL5NzgowC –name MachineX –peer-id
eebb0f9a7c41d5fde5be3e071a1b5238f15ada11 –pub-key 1624de64207f097892b3323b179236a9bbe3a0042bdda403dc3ae48e0cb29d5c10e94fa2e1 –from minertest –broadcast-mode block -y
效果图如下
2)修改配置文件
vi ~/.lamborage/config/node.toml
如果是不太理解字段意思的,miner-server和node同一台机器的按下面修改红色部分,其他默认的即可。
# This is a TOML config file.
# For more information, see https://github.com/toml-lang/toml
[server]
# this should listen at 0.0.0.0
address = “0.0.0.0:13000”
# this should listen at local IP
private_address = “127.0.0.1:13001”
debug_log_traffic = “false”
[kad]
# address you want kad to connect with
bootstrap_addr = “39.105.148.217:13000”
# time you would wait to connect dht seed node
bootstrap_backoff_max = “30s”
bootstrap_backoff_base = “1s”
db_path = “/root/.lamborage/node_kad”
# this should listen at Public IP
external_address = “122.51.82.38:13000″(node矿机的外网IP)
alpha = 3
[kad.routing_table_config]
bucket_size = 20
replacement_cache_size = 5
[log]
level = “info”
output_file = “stdout”
[gateway]
# this should listen at 0.0.0.0
address = “0.0.0.0:9000”
# this should listen at Public IP
external_address = “122.51.82.38:9000” (node矿机的外网IP)
# absolute path
conf_dir = “/root/.lamborage/gateway”
data_dir = “/root/.lamborage/store”
# dir for keeping mining data
mining_dir = “/root/.lamborage/store/mining”
# a local address gateway will connect to
backend_server = “127.0.0.1:9001”
[message]
# For communicate with miner
storage_name = “MachineX”
# MINER REST address
miner_address = “127.0.0.1:26670″(miner-server的IP,同一台机器可以这么写)
# let’s say if you want a interval 1 minute and 30 seconds, you should set ‘1m30s’
poll_interval = “10s”
修改保存后,即可启动服务。
nohup ./storagenode server >> sserver.out 2>&1 &
nohup ./storagenode gateway >> sgateway.out 2>&1 &
然后查看两个服务的日志文件是否报错,正常应该如下图
此时切换到刚才没有关闭的miner-server服务的日志终端,也可以看到有变化了
到这里miner服务和node服务都正常启动了,建议保持miner日志和sgateway日志文件的终端不要关闭,方便随时查看。再开应该终端进行后面的上传操作。
这时我们可以尝试创建卖单,注意:一个node节点只能创建一个卖单,当你不想要前面的卖单是只有先取消,才能在这个节点上创建新的。
3) 创建卖单
赔付比率rate为1的是普通卖单;赔付比率大于等于3的为优质卖单,优质卖单可指定卖单价格。
设置指定storagenode的machine-name需要卖出的空间大小size;
最小购买空间min-size不能小于1GB;
最小购买时长min-buy-duration不能小于1month;
最大购买时长max-buy-duration不能大于60month。
注意:测试网中尽量挂rate=3的优质卖单,这样创建买单时才能指定匹配到自己矿工的卖单。
./lambdacli tx market create-sellorder –price 5000000ulamb \
–rate [rate] \
–size [size]GB \
–market-name LambdaMarket –machine-name [machine-name] \
–min-size [min-size]GB \
–min-buy-duration [min-buy-duration]month \
–max-buy-duration [max-buy-duration]month \
–from [miner-name] –broadcast-mode block -y
例子:
./lambdacli tx market create-sellorder –price 5000000ulamb –rate 3 –size 10GB –market-name LambdaMarket –machine-name MachineX –min-size 1GB –min-buy-duration 1month –max-buy-duration 6month –from minertest –broadcast-mode block –y
成功后如下图
卖单查询
查询账户地址:
./lambdacli keys show [miner-name] –address
根据账户地址查看矿工卖单:
./lambdacli query market miner-sellorders [address] [page] [limit]
例如:
查看账户名为miner2的地址:./lambdacli keys show miner2 –address
返回结果:
lambda1k6rxrmly7hz0ewh7gth2dj48mv3xs9yz8ffauw
./lambdacli query market miner-sellorders
lambda1k6rxrmly7hz0ewh7gth2dj48mv3xs9yz8ffauw 1 10
这样我们就可以随时获得这个矿工的卖单号SellOrderID,方便我们进行创建买单,然后定点上传文件。
上传文件测试,刷单
上传文件可以在任意机器,不一定要在刚才配置的矿机里,上传文件和之前的节点配置是完全分开的两部分内容。配置矿机是提供服务,得到lamb,即挖矿使用的。上传文件我们是作为普通用户来购买矿机提供的存储服务。
1、创建买单
矿工不能买自己的卖单,所以要新建一个其他账户来挂买单。(如何创建账户返回前面。)
创建优质买单需要指定对应优质卖单SellOrderID。
account-name为当前账户的名称;duration为购买时长;size为需要购买的空间,不小于对应卖单指定的最小购买空间。
创建优质买单
./lambdacli tx market create-buyorder –sellorder-id [orderId] \
–from [your-account-name] –duration [buy-duration]month \
–market-name LambdaMarket –size [size]GB –broadcast-mode block –y
例子:
这里我先查看了我机器的矿工是minertest,所以我用blue这个账户来创建买单。
./lambdacli tx market create-buyorder
–sellorder-id A77E0BE48154ADE83F9024FB3DBF8C2B9453E2C2 –from blue –duration 1month –market-name LambdaMarket –size 1GB –broadcast-mode block -y
查询账户地址:
./lambdacli keys show blue –address
根据账户地址查看匹配订单:
./lambdacli query market matchorders [address] [page] [limit]
例如:
./lambdacli keys show buyaccount –address
返回结果:
lambda1vcc0qzlujr8jccuxu7t3rh4g58nqkaku3smnc3
./lambdacli query market matchorders
lambda1vcc0qzlujr8jccuxu7t3rh4g58nqkaku3smnc3 1 10
MatchOrder
OrderId: 1897A9561CAFA48E6CD6885A065DC4063BB1BCF8
(这个匹配ID为我们上传用到的订单号)
2、配置
1) 初始化storagecli
./storagecli init
初始化storagecli 后会默认生成配置文件~/.lamborage/config/user.toml,修改user.toml
不熟悉的可以使用下面的配置
# This is a TOML config file.
# For more information, see https://github.com/toml-lang/toml
[broker]
# dht service address
dht_gateway_addr = “39.105.148.217:13000”
# validator rest address
validator_addr = “39.105.148.217:13659”
extra_key_file = “”
[gateway]
# local listen address
address = “127.0.0.1:9002”
# for login web UI
access_key = “accesskey”
secret_key = “secretkey”
2)同步所有订单的token
account-name 为发起买单账户名称
./storagecli token sync blue
同步成功即可利用匹配订单上传文件
Node服务和上传文件的账号同一台机器,可以用内部ip
LAMBDA_ORDER_ID=1897A9561CAFA48E6CD6885A065DC4063BB1BCF8 ./storagecli cp blue /root/lambda-storage-0.4.0-testnet.tar.gz lamb://
–provider_node_address 127.0.0.1:13000
–provider_storage_address 127.0.0.1:9000
再用一台外部的机器测试端口和公网ip是否正确
LAMBDA_ORDER_ID=1897A9561CAFA48E6CD6885A065DC4063BB1BCF8 ./storagecli cp blue /root/lambda-storage-0.4.0-testnet.tar.gz lamb://
至此全部流程通了,中间我们如果有报错我们也可以随时切换到刚才没有关闭的日志终端去查看。比如刚才同步订单的时候,在sgateway.out的日志文件里面就可以看到同步订单的信息。