技术向 | 如何使用OFMF API 进行BTC/LTC跨链

OFMF查询服务API是面向用户的公开的跨链查询接口,用户可以通过交易哈希查询到准确的跨链信息也可以用条件筛选的方法查询多组数据。API文档详见:OFMF查询服务API

本文通过Python3实现的简单示例展示如何使用OFMF API 跨链并查询跨链的结果。在示例中,我们通过LTC跨链和查询的例子告诉你,如何使用OFMF API 进行跨链。为此,我们需要做如下准备:

Python: 演示代码使用Python编写,使用前请确保在你有 Python3 开发环境。本教程所有过程使用的版本为 Python 3.9.0


详细演示


为了详细的演示,我们通过Demo来讲解如何使用OFMF API 进行跨链。每一个API都会对应一个函数。

1、用户若想通过API跨链,首先需要创建一个跨链地址,目前暂时只支持BTC、LTC两个币种,以LTC为例。我们需要POST 接口:/api/v1/create-cross-address 针对接口,用户可以使用API请求工具(如Postman)或是自己编写程序进行访问。

需要注意的是:本文档中的所有API在使用的时候都需要accessToken:

Username:summary Password:ofmf

Demo请求函数中对于accessToken的添加已经封装完成,但如果用户使用Postman软件来调用接口,则需要在Authorization中选择Basic Auth 并输入Username和Password,如图:

Python Demo的请求方法如下:

def create_cross_address(chain_name, vapor_address):
url = "https://ofmf.movapi.com/api/v1/create-cross-address"
params = {
"chain_name": chain_name,
"vapor_address": vapor_address
}
encoded_data = json.dumps(params).encode('utf-8')
res = requests.post(url, encoded_data, auth=('summary', 'ofmf'))
print(res.json())

Demo调用的示例:

create_cross_address("LTC",
"vp1qphgfqj9wyvcnqnfts3gdtp9ecms3shdkq7zcws")

目前本接口接入IP有白名单限制,如果非白名单IP内的请求,会报错“Permission denied”,如下:

目前IP白名单暂未对普通用户开放。
白名单下正确访问,则返回如下结果:

{
"code": 200,
"msg": "",
"data": {
"cross_address": "MA4eeeSuThwCu4Jmf12DPuNUBqbjPvD1Hz"
}
}

用户可以对创建的跨链地址转入对应资产,收到转账后,合约会将相应侧链资产转入用户设置的侧链地址。
以下是资产跨链的示例:

LTC交易哈希:2cbf2aa6f9b8a6f3643d3ddab41f61cdd9ca6d0a9d2c2a06398061fcc0ca8437

Vapor交易哈希:

884d5196e26d21b4c7667ba03f56430c429a3eb4cc765ee23a55e37b1376ed3e

2、在上一步中,我们成功完成跨链,接下来我们通过交易哈希查询跨链信息,需要请求的接口:POST /api/v1/life-cycle

Demo示例:

def list_cycle(hash):
url = "https://ofmf.movapi.com/api/v1/life-cycle"
params = {
"tx_hash": hash
}
encoded_data = json.dumps(params).encode('utf-8')
res = requests.post(url, encoded_data, auth=('summary', 'ofmf'))
print(res.json())

通过如下方法使用

list_cycle("884d5196e26d21b4c7667ba03f56430c429a3eb4cc765ee23a55e37b1376ed3e")

3.用户如果需要对历史的跨链数据按条件查询,可以通过接口:POST /api/v1/life-cycles实现
以下所有筛选项都使用,但是必选其中一项:

  • chain_name - 币种,目前支持的币种:BTC、LTC、ETH、USDT、DAI、USDC
  • direction - 跨链方向,in - 跨入, out - 跨出
  • before_timestamp - 跨入交易所入区块时间戳之前的跨链信息(跟after_timestamp配置使用,可以查询特定时间范围的跨链信息)
  • after_timestamp - 跨入交易所入区块时间戳之后的跨链信息

Demo请求方法:

def list_cycles(chain_name="", direction="", before_timestamp="", after_timestamp=""):
url = "https://ofmf.movapi.com/api/v1/life-cycles"
params = {}
if chain_name != "":
params["chain_name"] = chain_name
if direction != "":
params["direction"] = direction
if before_timestamp != "":
params["before_timestamp"] = before_timestamp
if after_timestamp != "":
params["after_timestamp"] = after_timestamp
encoded_data = json.dumps(params).encode('utf-8')
res = requests.post(url, encoded_data, auth=('summary', 'ofmf'))
print(res.json())

请求示例:

list_cycles(chain_name="ETH", direction="in")

由于查询返回的数据较多,文中仅做部分展示。

以上内容通过例子完成了跨链及查询的基本过程,用户如需要文章中源码文件,请点击:ofmfQueryDemo

写评论,请先登录