将 hyperledger fabric 链代码连接到外部 API (oracle)

问题描述 投票:0回答:1

如何使用 hyperledger v2.* 从链代码进行外部调用?

有点像

callApi("api_url)

之前可证或oraclize提供了解决方案但是不再维护了?

有线索吗?

我试过oraclize但是已经不再维护了

hyperledger-fabric hyperledger
1个回答
0
投票

在 Hyperledger Fabric v2.* 中,您可以使用 Fabric Contract API 从链代码进行外部调用。 Contract API 为链代码提供了一种通过客户端应用程序与外部系统交互的方法。

这是一个示例,说明如何从 Hyperledger Fabric 链代码进行外部 API 调用:

首先导入这些包

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)

定义一个函数来进行API调用:

func callAPI(apiURL string) (string, error) {
    resp, err := http.Get(apiURL)
    if err != nil {
        return "", err
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        return "", err
    }

    return string(body), nil
}

从您的链代码调用 callAPI 函数:

func (s *SmartContract) Invoke(APIURL string) (string, error) {
    response, err := callAPI(APIURL)
    if err != nil {
        return "", err
    }

    return response, nil
}

在此示例中,Invoke 函数将 API URL 作为参数,并调用 callAPI 函数进行外部 API 调用。 API 调用的响应返回给客户端应用程序。

请注意,从链代码进行外部 API 调用可能会产生安全隐患,应谨慎进行。重要的是要确保链代码只调用受信任的外部系统,并采取适当的安全措施来保护网络。

希望对您有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.