No se puede hacer un comando personalizado de Bitcoin

Estoy escribiendo una tesis sobre el sistema Bitcoin y, como parte de mi tarea, tengo que explorar el código fuente del núcleo de Bitcoin.

He descargado el código, lo he compilado y logro ejecutarlo. Sin embargo, quería hacer un cambio trivial en el código y agregar un comando personalizado simple como parte de blockchain.cpp . El problema es que mis cambios no son visibles después de ejecutar make y cuando ejecuto bitcoin-cli -testnet .

Siempre obtengo: código de error: -32601 mensaje de error: Método no encontrado

Además, intenté comentar un método ya funcional e intenté ejecutar bitcoin-cli y llamar a esa función y se ejecuta correctamente. NOTA: el comando "hacer" se ejecuta sin problemas y detecta errores, si los hay.

¿Alguien puede explicarme cuál es la forma adecuada de realizar cambios en bitcoin-core? No planeo impulsar ninguno de esos cambios en la rama maestra, solo estoy interesado en experimentar con el código.

Gracias de antemano :)

Respuestas (1)

Para agregar un nuevo RPC, debe escribir la función que implementa su acción, agregar la función a la tabla de despacho y actualizar la bitcoin-clitabla de conversión de tipos.

En la parte inferior del archivo RPC al que agregó su función (en este caso, src/rpc/blockchain.cppverá una tabla que tiene todos los RPC en ese archivo, así como información adicional sobre ellos, como la categoría, el nombre y los nombres de los argumentos). Agregue su nuevo RPC a esa tabla.

A continuación, si su comando tiene argumentos que no son cadenas, abra src/rpc/client.cppy agregue esos argumentos a la vRPCConvertParamslista allí. En esa lista, le asigna el nombre RPC, el índice del argumento que debe convertirse y el nombre de ese argumento.

Hola, antes que nada, gracias por tu respuesta. En segundo lugar, creo que hice todo lo que mencionaste. Para ser más específico, seguí los pasos en este enlace: tecnología.finra.org/code /…
Para ser más precisos, agregué una función con randomName a blockchain.cpp, la agregué al comando vectorial [] en la parte inferior del archivo y la agregué a client.cpp. Me parece que cuando llamo "make" al repo bitcoin-master, los cambios son visibles (porque tuve algunos errores), pero cuando llamo a bitcoin-cli -testnet methodName, la función es invisible. Es por eso que traté de comentar, por ejemplo, la función "getblockhash" de blockchain.cpp y de client.cpp solo para ver si mis cambios son visibles. El comando make fue exitoso, pero aún pude llamar a bitcoin-cli -testnet getblockhash <randomNumber>
¿Reinició bitcoind después de volver a compilar? Los comandos son parte de bitcoind, no de bitcoin-cli. bitcoin-cli es simplemente una forma de acceder a la interfaz RPC de bitcoind a través de la línea de comandos. En realidad, no tiene el comando implementado en él.
Muchas gracias Andrew por su apoyo, pero... Después de mi cambio, ingreso: bitcoind -testnet --daemon que da como resultado: Bitcoin Core comenzando Cuando realizo un cambio en medio de la ejecución de BitcoinCore, primero escribo: bitcoin- cli -testnet stop Qué resultados: Bitcoin Core se detiene Y luego escriba el comando para iniciar bitcoin nuevamente ¿Estoy haciendo algo mal?
Hm, el secreto está en llamar a sudo make install , no make Ahora mis cambios son visibles por bitcoin-cli Gracias Andrew Chow por tu apoyo, pero ¿sabes quizás la diferencia entre make y make install ?
makelo compila make installcompila y luego copia los archivos binarios compilados en una ubicación de instalación. Si no estaba usando directamente los binarios especificando una ruta hacia ellos (es decir, src/bitcoindy src/bitcoin-cli), entonces su sistema intentará encontrarlos buscándolos en el archivo PATH. make installcopia los archivos binarios en una ubicación que se encuentra en el archivo PATH.