Solidity

如果在智能合約中對某些 API 使用 oracalize,如何加密 API 密鑰?

  • September 28, 2017

在我的智能合約中,我想使用 random.org API 生成一個隨機數,但是在發布經過驗證的原始碼時,我不希望任何人看到我正在使用的 API 密鑰。etheroll合約 使用 random.org API 並按如下方式執行此操作:

bytes32 rngId = oraclize_query("nested", "[URL] ['json(https://api.random.org/json-rpc/1/invoke).result.random[\"serialNumber\",\"data\"]', '\\n{\"jsonrpc\":\"2.0\",\"method\":\"generateSignedIntegers\",\"params\":{\"apiKey\":${[decrypt] BLTr+ZtMOLP2SQVXx8GRscYuXv+3wY5zdFgrQZNMMY3oO/6C7OoQkgu3KgfBuiJWW1S3U/+ya10XFGHv2P7MB7VYwFIZd3VOMI/Os8o1uJCdGGZgpR0Dkm5QoNH7MbDM0wa2RewBqlVLFGoZX1PJC+igBPNoHC4=},\"n\":1,\"min\":1,\"max\":100,\"replacement\":true,\"base\":10${[identity] \"}\"},\"id\":1${[identity] \"}\"}']", gasForOraclize);

我很困惑這是如何工作的 -decrypt來自哪裡,如果這有效,我如何獲得我可以decrypt像上面一樣使用的 API 密鑰的加密版本?

這在乙太坊中的 Oracalize 文件> 高級主題 > 加密查詢中有詳細說明

您使用提供的 python 腳本使用該部分中列出的 Oracalize 公鑰加密字元串,並且只有 Oracalize 可以解密它。您僅限於一個加密查詢參數。

引用自:https://ethereum.stackexchange.com/questions/27222