lotus api 查询 错误扇区
Filecoin.StateMinerFaults
vim minerFaults.sh
#!/bin/bash
# 设置变量
API_ENDPOINT="http://127.0.0.1:1234/rpc/v0"
MINER_ID="矿工号"
# 发送API请求并保存响应
response=$(curl -s -X POST \
-H "Content-Type: application/json" \
--data "{ \"jsonrpc\": \"2.0\", \"method\": \"Filecoin.StateMinerFaults\", \"params\": [\"$MINER_ID\", null], \"id\": 3 }" \
"$API_ENDPOINT")
# 从响应中提取结果数组
result=$(echo $response | jq -r '.result | @sh')
# 解析结果并打印错误扇区
echo "错误扇区列表:"
current_sector=0
eval "array=($result)"
for ((i=0; i<${#array[@]}; i+=2)); do
if [ $i -eq 0 ]; then
current_sector=${array[i]}
else
current_sector=$((current_sector + ${array[i]}))
fi
for ((j=0; j<${array[i+1]}; j++)); do
echo $current_sector
current_sector=$((current_sector + 1))
done
done
@sh: 这是一个 jq 内置函数,它将输入格式化为适合在 shell 中使用的字符串。
{
"result": [78891, 1, 123, 1, 16, 1, 618, 1, 284, 1]
}
jq -r '.result | @sh'
78891 1 123 1 16 1 618 1 284 1
1、API 调用
使用的是 Filecoin 的 StateMinerFaults 方法,这个方法返回指定矿工的错误扇区列表。
2、返回结果
"result": [
78891,
1,
123,
1,
16,
1,
618,
1,
284,
1
]
3、数据解释
这个结果使用了一种压缩格式来表示连续的扇区范围。它的工作方式如下:
第一个数字是起始扇区号
第二个数字是连续的扇区数量
可以这样解读:
78891, 1: 表示扇区 78891
123, 1: 表示从 78891 + 123 = 79014 开始的 1 个扇区
16, 1: 表示从 79014 + 16 = 79030 开始的 1 个扇区
618, 1: 表示从 79030 + 618 = 79648 开始的 1 个扇区
284, 1: 表示从 79648 + 284 = 79932 开始的 1 个扇区
4、错误扇区编号
错误的扇区编号是:
78891
79015 (78891 + 123 + 1)
79032 (79015 + 16 + 1)
79651 (79032 + 618 + 1)
79936 (79651 + 284 + 1)

4331

被折叠的 条评论
为什么被折叠?



