Я запустил клиент geth, используя приведенный ниже клиент (я уже создал две учетные записи:
geth --datadir datadir --networkid 123 --rpc --rpcaddr="localhost" --rpccorsdomain="*" --unlock <my account> --minerthreads="1" --maxpeers=0 --mine console
Я открыл кошелек ethereum и развернул оттуда смарт-контракт. Идентификатор транзакции и адрес контракта получены на моей консоли geth.
Затем я запустил свое Dapp и создал экземпляры контракта, и я вызываю контракт, вызывая функцию контракта через API web3. Функция контракта вызывается, но транзакция не отправляется в блок, пока я не начну майнинг. Поэтому я запустил miner.start() Это начало добычи множества блоков.
Мой вопрос в том, откуда берутся эти блоки, если у меня есть собственная частная сеть и я отправил только одну транзакцию. Это добавляет слишком много блоков, и мой размер блока увеличивается без необходимости. Как майнить только ту транзакцию, которую я отправил?
Эти блоки добываются вашим клиентом с помощью miner.start()
блоков, которые добываются до тех пор, пока ваша транзакция не будет включена в один из этих блоков. Чтобы остановить операцию ленты, miner.stop()
даже журнал не дал вам подсказки. Однако лучше всего использовать скрипт, который добывает только ожидающие транзакции (вы добываете только несколько блоков, пока ваша транзакция не будет добыта).
такой скрипт будет содержать
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();
при использовании гетами
loadScript("C:/Users/Tera_pc/Desktop/demo/mine_pending.js")
Лакшми
Лакшми
Бадр Беллай