¿La forma más sencilla de usar una variable en una consulta de Oracle?

Tengo una variable numberen mi contrato de Solidity que cambia y necesito incorporar esto en una consulta oraclize. Mi consulta oraclize se parece a lo siguiente:

oraclize_query(60, "URL", "json(https://api.random.org/json-rpc/1/invoke).result.random.data.0", '\n{"jsonrpc":"2.0","method":"generateIntegers","params":{"apiKey":${[decrypt]BF8gEz7O4gvAdzdJK/FTWHheGo3TuV5VIFku1rAEG78AxzX6AFEbWJSLZ0sCdEwGzppPsPltUXvIvxNaV5Yvnh3qfmzndRy/nfGjlWESfvNL3S1Fl4y2zqGmGi9DA4D+UokY83Awrw6tZd918KtRAvKe2Bos},"n":1,"min":0,"max":10,"replacement":true,"base":10},"id":1}');

Quiero que el valor de maxen lo anterior oraclize_querysea number - 1(en lugar de 10).

¿Cuál es la forma más sencilla de hacer esto? Me di cuenta de esta pregunta Cómo poner una variable dentro de una cadena en solidez, pero la respuesta no está del todo clara para mí (obtengo muchos errores al copiar/pegar ese código y no estoy seguro de cómo se debe implementar).

Intenté usar la strConcatfunción en el contrato de Oraclize (línea 601 en https://github.com/oraclize/ethereum-api/blob/master/oraclizeAPI_0.4.sol ) convirtiendo mi numberuint en bytes32 y luego una cadena, luego poniendo todo junto, así:

    string string1 = '\n{"jsonrpc":"2.0","method":"generateIntegers","params":{"apiKey":${[decrypt]BF8gEz7O4gvAdzdJK/FTWHheGo3TuV5VIFku1rAEG78AxzX6AFEbWJSLZ0sCdEwGzppPsPltUXvIvxNaV5Yvnh3qfmzndRy/nfGjlWESfvNL3S1Fl4y2zqGmGi9DA4D+UokY83Awrw6tZd918KtRAvKe2Bos},"n":1,"min":0,"max":';

    string string3 = ',"replacement":true,"base":10},"id":1}';

    function update() payable {

         bytes32 data = bytes32(number - 1);

         strConcat(string1, bytes32ToString(data), string3);

        oraclize_query(60, "URL", "json(https://api.random.org/json-rpc/1/invoke).result.random.data.0", strConcat(string1, bytes32ToString(data2), string3));

Esto no funciona (entonces no se llama a oraclize).

Respuestas (1)

Marco de Oracle aquí. Debe utilizar la función uint2string para convertir un número en una cadena.

oraclize_query(60, "URL", "json(https://api.random.org/json-rpc/1/invoke).result.random.data.0", strConcat(string1, uint2str(5), string3));