上一篇文章讲解详细的lotus节点搭建步骤,在文章最后通过命令行。
lotus auth create-token --perm admin
创建了具有admin权限的token。
token:
token有四种权限类型:read、write、sign、admin。权限依次递增:
- read只能读取链上数据
- write包括read权限同时还可以在链上写入数据
- sign包含read、write权限,同时可以使用私钥进行签名数据
- admin拥有以上所有权限,并且可以对权限进行管理。
创建完了之后如果忘了,可以在 ~/lotusdata目录下的 token文件中得到。
在接口调用是,它提供了JSON-RPC方式请求(官方接口文档入口 )。下面对一些开发常用的接口进行讲解。
注:以下接口统一使用curl访问格式。格式如下,其中数据信息即后续接口内容
curl -X POST -H "Content-Type: application/json" -d '数据信息' http://ip:port/rpc/v0
需要权限的需要补充头部参数
-H 'Authorization:Bearer token值'
token值指的就是上面获取的tokens
- Filecoin.Version 获取节点版本信息
{
"jsonrpc": "2.0",
"method": "Filecoin.Version",
"params": [],
"id": 1
}
- Filecoin.WalletNew 获取一个新的钱包地址
签名类型 选择secp256k1,(注:bls已被弃用)
{
"jsonrpc": "2.0",
"method": "Filecoin.WalletNew",
"params": [
"secp256k1"
],
"id": 1
}
- Filecoin.WalletList 获取钱包的所有地址
- Filecoin.GasEstimateMessageGas 获取gas
- Filecoin.WalletBalance 获取钱包地址余额
{
"jsonrpc": "2.0",
"method": "Filecoin.WalletBalance",
"params": ["钱包地址"],
"id": 1
}
- Filecoin.MpoolPush 将签名消息推入内存池(转账需要用到)
[
{
"Message": {
"Version": 42,
"To": "f01234",
"From": "f01234",
"Nonce": 42,
"Value": "0",
"GasLimit": 9,
"GasFeeCap": "0",
"GasPremium": "0",
"Method": 1,
"Params": "Ynl0ZSBhcnJheQ==",
"CID": {
"/": "bafy2bzacebbpdegvr3i4cosewthysg5xkxpqfn2wfcz6mv2hmoktwbdxkax4s"
}
},
"Signature": {
"Type": 2,
"Data": "Ynl0ZSBhcnJheQ=="
},
"CID": {
"/": "bafy2bzacebbpdegvr3i4cosewthysg5xkxpqfn2wfcz6mv2hmoktwbdxkax4s"
}
}
]
- Filecoin.WalletSignMessage 使用指定地址签名消息
{
"jsonrpc": "2.0",
"method": "Filecoin.WalletSignMessage",
"params": [
"地址",
{
"消息"
}
],
"id": 1
}
消息格式如下:
{
"Version": 42,//版本
"To": "f01234",//to
"From": "f01234",//from
"Nonce": 42,//随机数
"Value": "0",//数量
"GasLimit": 9,
"GasFeeCap": "0",
"GasPremium": "0",
"Method": 1,
"Params": "Ynl0ZSBhcnJheQ==",//参数,可空
"CID": {
"/": "bafy2bzacebbpdegvr3i4cosewthysg5xkxpqfn2wfcz6mv2hmoktwbdxkax4s"
} //CID,可空
}
]
- Filecoin.WalletSetDefault 设置钱包默认地址
{
"jsonrpc": "2.0",
"method": "Filecoin.WalletSetDefault",
"params": [
"地址"
],
"id": 1
}
- Filecoin.WalletDefaultAddress 获取钱包默认地址
- Filecoin.WalletValidateAddress 地址校验
- Filecoin.WalletExport 导出钱包地址私钥
- Filecoin.ChainHead 返回当前区块头信息
- Filecoin.ChainGetTipSetByHeight 返回指定高度的区块集合信息
{
"jsonrpc": "2.0",
"method": "Filecoin.ChainGetTipSetByHeight",
"params": [
10001
],
"id": 1
}
- Filecoin.ChainGetBlockMessages 根据区块CID返回改区块内的所有信息
- Filecoin.ChainGetMessage 根据消息CID返回消息详情
- Filecoin.StateGetReceipt 获取交易收据
[
{
"/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4"
},
[
{
"/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4"
},
{
"/": "bafy2bzacebp3shtrn43k7g3unredz7fxn4gj533d3o43tqn2p2ipxxhrvchve"
}
]
]
这里面有个坑,使用java写的时候,前面的 "/" 和后面的 [{},{}]都需要写入为参数
List<Object> params = new ArrayList<>();
HashMap<String, String> cidParam = new HashMap<>();
cidParam.put("/", messageCid);
params.add(cidParam);
params.add(null);
- Filecoin.MpoolClear 清空内存池
- Filecoin.MpoolPending 返回内存池待定消息
- Filecoin.StateReplay 消息重放
以上比较常用的接口,具体其他接口可自行翻阅文档