filecoin: 常用API接口应用详解

        上一篇文章讲解详细的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 消息重放

以上比较常用的接口,具体其他接口可自行翻阅文档

猜你喜欢

转载自blog.csdn.net/dandelionLYY/article/details/120090696