原文链接:https://developer.bandprotocol.com/providers/custom-driver.html
虽然提供者节点的默认实现带有预构建的驱动程序,可以连接到各种数据源,但是您可以实现自己的驱动程序来满足您的需要。在本小节中,我们将讨论两种可能的方法。
PriceHttp驱动
连接到外部price服务的更简单方法是将服务实现为REST端点,然后使用PriceHttp驱动程序将其连接到提供者节点。要利用PriceHttp驱动程序,请将以下配置添加到配置文件中。
name: PriceHttp
endpoint: YOUR_HTTP_ENDPOINT
method: GET_OR_POST
使用此配置文件,每当提供者节点向PriceHttp驱动程序发出查询时,驱动程序将根据method向您的端点发出请求。
- GET: 发送GET请求到 {endpoint}?symbol={...}&type={SPOTPX}.
- POST: 发送POST请求, 数据 { "symbol": "...", "type": "SPOTPX" }.
成功查询后,HTTP服务必须使用以下JSON格式进行回复。PriceHttp驱动程序代表您将浮点结果转换为适当的32字节值。
{
"price": 10000.0
}
或者,如果查询不成功,端点必须返回一个带有错误的JSON对象。
{
"error": "Failed due to ...”
}
更多“HTTP”驱动程序的变体正在开发阶段。期待更多即将到来!
你自己的驱动
如果你是一个Go-hacker,你可以fork Band的provider节点来开始实现你自己的驱动。我们在下面提供了详细的步骤。注意,在编辑代码库之后,需要重新构建二进制文件。另外,一定要经常与master重新建立基地,以确保您总是收到最新的更新。
- 编写一个驱动程序
驱动程序指定获取实际数据的方式。您可以向驱动程序包中添加一个新的驱动程序实现。要被划分为驱动程序,必须实现由两个函数组成的驱动程序接口。
Configure(*viper.Viper)
: 此函数在初始化期间仅调用一次。它以viper对象的形式接收YAML文件中指定的驱动程序配置。Query([]byte) (common.Hash, error): 只要有数据查询,就会调用这个函数。它接受数据集规范中指定的任意长度的字节数组,并以32字节值的形式返回结果,如果发生错误则返回错误。
2.编辑driver/types.go
接下来,要使节点知道新添加的驱动程序,请修改驱动程序/类型。通过添加一个新的案件链接到您的驱动程序。
3.更新您的YAML配置
最后,将驱动程序添加到配置文件中。它看起来是这样的:
name: ADAPTER_NAME_AS_SPECIFIED_IN_types.go
key1: KEY1_CONFIG
key2: KEY2_CONFIG