¿Puedo minar en mi cadena de bloques privada usando geth con rpc?

Estoy usando la API web3 y quiero probar la minería usando rpc. El miner.start() habitual (que se usa en la terminal) no funciona incluso después de incluir la API del minero al iniciar geth y aparece el siguiente error.

Error: no se puede leer el inicio de propiedad de indefinido.

¿Qué me estoy perdiendo?

Por favor, comparta el código exacto.
Tengo una instancia web3 y he escrito var mine = web3.miner.start();

Respuestas (3)

Web3 no está exponiendo un objeto minero como propio. Consulte aquí

Puede hacer esto desde ipcel socket con la ayuda de javascript.

  • Guardar la función como un archivomine.js
  • Cargue el script en ipcla consola usandoloadScript('YOURPATH/mine.js');
  • Asegúrese de tener cargados los módulos necesarios.geth --rpc --rpcapi web3,eth,net,personal,miner,admin,debug--rpcaddr="localhost" --rpcport="8545" --rpccorsdomain="localhost:8545" console

un ejemplo seria

/*
 * Mine when there are transactions!
 */

var mining_threads = 1

function checkWork() {
  if (eth.getBlock("pending").transactions.length > 0) {
    if (eth.mining) return;
    console.log("== Pending transactions! Mining...");
    miner.start(mining_threads);
  } else {
    miner.stop(0);  // This param means nothing
    console.log("== No transactions! Mining stopped.");
  }
}

eth.filter("latest", function(err, block) { checkWork(); });
eth.filter("pending", function(err, block) { checkWork(); });

checkWork();

Puede consultar más fragmentos de utilidad de ethereum

Lo siento por la respuesta tardía. No puedo entender cómo usar tal script. Explique cómo funcionará esto.

intenta cargar geth con el módulo minero:

p.ej :--ipcapi "admin,db,eth,debug,miner,personal,web3"

Es posible que necesite need --rpcapien su lugar, si se trata de RPC.
intenté que todavía no funciona. Esto es lo que escribí geth --rpc --rpcapi web3,eth,net,personal,miner,admin,debug--rpcaddr="localhost" --rpcport="8545" --rpccorsdomain=" localhost:8545 " console
intente obtener --rpc --rpcaddr="0.0.0.0" --rpccorsdomain="*" --rpcapi="db,eth,net,web3,personal,web3" --ipcapi "admin,eth,debug,personal, web3, minero"
Intenté esto pero todavía no hay resultado.

Finalmente usé un módulo web3 extendido. Usé npm install web3admin y luego en mi código de servidor escribí web3Admin.extend (web3). Esto me permite usar la api del minero.