Cómo dejar de minar bloques no deseados en una red privada en geth ethrereum [duplicado]

Comencé un cliente geth usando el siguiente cliente (ya había creado dos cuentas:

geth --datadir datadir --networkid 123 --rpc --rpcaddr="localhost" --rpccorsdomain="*" --unlock <my account> --minerthreads="1" --maxpeers=0 --mine console

Abrí la billetera ethereum y desplegué el contrato inteligente desde allí. El ID de transacción y la dirección del contrato se reciben en mi consola geth.

Luego comencé mi Dapp y creé las instancias del contrato y estoy llamando al contrato invocando una función de contrato a través de la API web3. Se invoca la función de contrato, pero la transacción no se envía en el bloque a menos que comience a minar. Por lo tanto, comencé miner.start() Esto comenzó a extraer numerosos bloques.

Mi pregunta es de dónde vienen estos bloqueos si tengo mi propia red privada y solo he enviado una transacción. Esto está agregando demasiados bloques y mi tamaño de bloque está aumentando innecesariamente. ¿Cómo minar solo la transacción que he enviado?

Respuestas (1)

Su cliente extrae estos bloques utilizando miner.start()los bloques hasta que su transacción se incluye en uno de estos bloques. Para detener la cinta de operación, miner.stop()incluso el registro no le dio el aviso. Sin embargo, lo mejor es usar un script que extraiga solo las transacciones pendientes (usted extrae solo unos pocos bloques hasta que se extrae su transacción).

dicho script contendrá

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();
            console.log("== No transactions! Mining stopped.");
        }
    }
    console.log("checkWork() is defined");
    eth.filter("latest", function(err, block) { checkWork(); });
    eth.filter("pending", function(err, block) { checkWork(); });

    checkWork();

en uso geth

 loadScript("C:/Users/Tera_pc/Desktop/demo/mine_pending.js")
¿Tengo que cargar script() para cada transacción?
Intenté esto; ahora la minería está tardando demasiado; No estoy seguro de por qué es así; He desarrollado un Dapp basado en el ejemplo de ethereum de criptomonedas. cuando estoy transfiriendo el token a otra cuenta, está tomando demasiado tiempo extraerlo ahora. :( . ¿Esto se debe a que el tamaño del bloque ha aumentado? Actualmente, el tamaño del bloque es 97.
esto no tiene ninguna relación con el tamaño del bloque, solo necesita esperar unos segundos hasta que su transacción sea minada, en su lugar, podría usar el script anterior: miner.start(8); admin.sleepBlocks(10); minero.stop() ; tu precisas cuantas cuadras a la mia