Wie verschlüsselt man einen API-Schlüssel, wenn man oracalize für eine API in einem Smart Contract verwendet?

In meinem Smart Contract möchte ich die random.org-API verwenden, um eine Zufallszahl zu generieren, aber wenn ich den verifizierten Quellcode veröffentliche, möchte ich nicht, dass jemand sieht, welchen API-Schlüssel ich verwende. Der Etheroll-Vertrag verwendet die random.org-API und tut dies wie folgt:

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);

Ich bin verwirrt, wie das funktioniert - woher kommt decryptes und wenn es funktioniert, wie erhalte ich eine verschlüsselte Version meines API-Schlüssels, den ich decryptwie oben verwenden kann?

Antworten (1)

Dies wird ausführlich in den Oracalize-Dokumenten in Ethereum > Fortgeschrittene Themen > Verschlüsselte Abfragen erklärt

Sie verwenden ein bereitgestelltes Python-Skript, um eine Zeichenfolge mit dem öffentlichen Schlüssel von Oracalize zu verschlüsseln, der in diesem Abschnitt aufgeführt ist, und nur Oracalize kann ihn entschlüsseln. Sie sind auf nur einen verschlüsselten Abfrageparameter beschränkt.

Das ist die Antwort, aber das von Oraclize bereitgestellte Python-Verschlüsselungsskript mag den öffentlichen Schlüssel nicht, den die Webseite bereitstellt ethereum.stackexchange.com/questions/27318/…