簡體   English   中英

有沒有一種安全的方法可以將 API 密鑰傳遞給 Chainlink 中的 oracle?

[英]Is there a secure way to pass API keys to an oracle in Chainlink?

我正在編寫一個合約(下面的函數代碼),它通過 Chainlink GET function 從 API 中提取數據。我讀過 Provable (Oraclize) 有一個加密 API 請求參數的選項。 Chainlink 是否提供類似的服務? 我一直在谷歌搜索很多,但到目前為止還沒有找到任何有用的東西。 出於顯而易見的原因,我真的很想避免在公共鏈上發送我的 API 密鑰。

    function requestVolumeData(string memory apiurl, string memory jsonpath) public returns (bytes32 requestId) 
{
    Chainlink.Request memory request = buildChainlinkRequest(jobId, address(this), this.fulfill.selector);
    
    // Set the URL to perform the GET request on
    request.add("get", apiurl);
    
    request.add("path", jsonpath);
    
    // Multiply the result by 1000000000000000000 to remove decimals
    int timesAmount = 10**18;
    request.addInt("times", timesAmount);
    
    // Sends the request
    return sendChainlinkRequestTo(oracle, request, fee);
}

理想情況下,您根本不想將 API 密鑰放在鏈上,但這里是您使用 Chainlink oracle 處理敏感數據的選項。

1. 將您的 API 密鑰傳遞給節點操作員

當然,這是一個受信任的操作,因為您必須用您的密鑰信任節點操作員。 但是,這將阻止世界看到您的密鑰,節點操作員只能在后端使用它。

2. 使用前加密您的密鑰

您仍然需要為 Chainlink 節點運營商提供一種在后端解密數據的方法,這被認為不太安全,因為您仍在為人們提供訪問您的數據的方法,並且您正在使用它-鏈。

3. 做一個受保護的API,只能被節點操作者調用。

因此,您將運行一個包含另一個 API 的 API。

4. DECO(還沒上線)

有計划在某個時候讓 DECO 出現,這將有助於保護私人數據的安全,即使是來自 Chainlink 節點運營商。

唯一安全的方法是使用機密計算。 這就是我們在 Verifiably 所做的。

我猜 Chainlink 最終會添加此功能。 我不確定他們為什么在收購 Town Crier 之后不這樣做,這似乎是很自然的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM