Wie sende ich Transaktionen an ein privates Netzwerk?

Ich habe eine private Blockchain in einem lokalen Netzwerk eingerichtet. Ich habe einen Knoten auf einem Android-Smartphone und einen anderen auf Windows 7, ich verwende Geth auf beiden.

Ich sende Ether mit der Methode eth.sendTransaction() vom Android-Knoten und bekomme als Ergebnis einen Tx-Hash. Dann starte ich das Mining auf dem Windows-Knoten, aber die Transaktion wird keinem Block hinzugefügt.

Ich weiß, dass meine Nodes wegen der Rückgabe von admin.peers() und der Tatsache, dass ich Ether übertragen kann, wenn ich Transaktionen vom Mining-Node sende, verbunden sind.

Gibt es noch etwas zu tun, damit der Mining-Knoten die Transaktionen der anderen Knoten sieht?

BEARBEITEN : die Informationen der Knoten

So führen Sie den Knoten unter Windows aus:

geth --identity "ethRpi" --genesis "genesis.json" --rpc --rpcport "8080" --rpccorsdomain "*" --datadir "eth" --port "30303" --rpcapi "db,eth,net,web3" --networkid 2016 console

Und auf Android:

geth --ipcdisable --identity "ethRpi" --genesis genesis.json --fast --rpc --rpcport 8545 --rpcaddr 0.0.0.0 --port 30303 --rpcapi admin,db,eth,miner,net,personal,web3 --networkid 2016 --datadir=eth

Auf Android

>admin.peers
[{
    caps: [←[32m"eth/61"←[0m, ←[32m"eth/62"←[0m, ←[32m"eth/63"←[0m],
    id: ←[32m"efaa00ffc1d7955e97f4883d8497f4705520eca5a0f7ea63b3d2e2bcf9536fa0edd0cc2ebcf9974d6b2a90790491eefb351b0e135a61e8228f042c16d57d2df0"←[0m,
    name: ←[32m"Geth/v1.5.0-unstable-4f3f6e28/windows/go1.6.2/ethRpi"←[0m,
    network: {
      localAddress: ←[32m"192.168.68.111:30303"←[0m,
      remoteAddress: ←[32m"192.168.68.107:50740"←[0m
    },
    protocols: {
      eth: {
        difficulty: ←[31m9659008←[0m,
        head: ←[32m"163f33b0b9ba7c04cbef8e36796b6b2ef0bcb9af1fe1fa5be8fd05979cbcdc57"←[0m,
        version: ←[31m63←[0m
      }
    }
}]
>eth.pendingTransactions
[{
    blockHash: ←[1mnull←[0m,
    blockNumber: ←[1mnull←[0m,
    from: ←[32m"0xacc8770ed788bcb76fc14c570251585dd83925a8"←[0m,
    gas: ←[31m90000←[0m,
    gasPrice: ←[31m20000000000←[0m,
    hash: ←[32m"0x1d5ec2db286c52440b94e0d596467a15076c1a3ea2cb0995639d85677d051d69"←[0m,
    input: ←[32m"0x"←[0m,
    nonce: ←[31m0←[0m,
    to: ←[32m"0x52fa5791e401a4a33f045d5e34aea9976e5afd4f"←[0m,
    transactionIndex: ←[1mnull←[0m,
    value: ←[31m1000000000000000000←[0m
}]

An Fenstern

> admin.peers
[{
    caps: ["eth/61", "eth/62", "eth/63"],
    id: "a7ae958bf83ad6c659567110abd8a15535a23acd66cd2ccc5bf2333b5f2b4a49a35e80450c9848e658b625b69078ab675882b51e44c17cea4c278746381c0447",
    name: "Geth/v1.5.0-unstable-4f3f6e28/android/go1.6.2/\"ethRpi\"",
    network: {
      localAddress: "192.168.68.107:50740",
      remoteAddress: "192.168.68.111:30303"
    },
    protocols: {
      eth: {
        difficulty: 9659008,
        head: "163f33b0b9ba7c04cbef8e36796b6b2ef0bcb9af1fe1fa5be8fd05979cbcdc57",
        version: 63
      }
    }
}]
> eth.pendingTransactions
[]
>miner.start()
I0628 09:54:58.658192 miner/miner.go:119] Starting mining operation (CPU=4 TOT=5)
I0628 09:54:58.660192 miner/worker.go:555] commit new work on block 74 with 0 txs & 0 uncles. Took 999.8µs
I0628 10:00:26.560682 miner/worker.go:337] ??  Mined block (#74 / 0bebfb50). Wait 5 blocks for confirmatio
I0628 10:00:26.562682 miner/worker.go:555] commit new work on block 75 with 0 txs & 0 uncles. Took 999.9µs
I0628 10:00:26.562682 miner/worker.go:555] commit new work on block 75 with 0 txs & 0 uncles. Took 0
I0628 10:00:26.608677 miner/worker.go:337] ??  Mined stale block (#74 / 0bd0e716).
I0628 10:00:26.647674 miner/worker.go:555] commit new work on block 75 with 0 txs & 0 uncles. Took 0
I0628 10:00:29.670371 miner/worker.go:337] ??  Mined block (#74 / cd692c59). Wait 5 blocks for confirmation
I0628 10:00:29.671371 miner/worker.go:555] commit new work on block 75 with 0 txs & 0 uncles. Took 0
I0628 10:00:29.687370 miner/worker.go:337] ??  Mined block (#74 / c082d521). Wait 5 blocks for confirmation
I0628 10:00:29.688369 miner/worker.go:555] commit new work on block 75 with 0 txs & 0 uncles. Took 0
I0628 10:00:29.703368 miner/worker.go:555] commit new work on block 75 with 0 txs & 0 uncles. Took 0
I0628 10:00:31.953143 miner/worker.go:337] ??  Mined block (#75 / 542384a4). Wait 5 blocks for confirmation
I0628 10:00:35.181820 miner/worker.go:555] commit new work on block 76 with 0 txs & 2 uncles. Took 8.9991ms
I0628 10:00:35.183820 miner/worker.go:555] commit new work on block 76 with 0 txs & 2 uncles. Took 999.9µs
I0628 10:00:35.185820 miner/worker.go:555] commit new work on block 76 with 0 txs & 2 uncles. Took 0
I0628 10:00:39.623376 miner/worker.go:337] ??  Mined block (#76 / 18796f50). Wait 5 blocks for confirmation
I0628 10:00:39.743364 miner/worker.go:555] commit new work on block 77 with 0 txs & 0 uncles. Took 999.9µs
I0628 10:00:39.750363 miner/worker.go:555] commit new work on block 77 with 0 txs & 0 uncles. Took 0
I0628 10:00:42.795059 miner/worker.go:337] ??  Mined block (#77 / 651df4a0). Wait 5 blocks for confirmation
I0628 10:00:42.796059 miner/worker.go:555] commit new work on block 78 with 0 txs & 0 uncles. Took 999.9µs
I0628 10:00:42.815057 miner/worker.go:555] commit new work on block 78 with 0 txs & 0 uncles. Took 0
I0628 10:00:43.384000 miner/worker.go:337] ??  Mined block (#78 / 021c7f6a). Wait 5 blocks for confirmation
I0628 10:00:43.400998 miner/worker.go:555] commit new work on block 79 with 0 txs & 0 uncles. Took 0
I0628 10:00:43.444994 miner/worker.go:555] commit new work on block 79 with 0 txs & 0 uncles. Took 0
mI0628 10:00:43.923946 miner/worker.go:337] ??  Mined block (#79 / 8eef4802). Wait 5 blocks for confirmation
Haben Sie überprüft, ob die Transaktion initiiert wurde und darauf wartet, mit eth.pendingTransactions abgebaut zu werden ? Gibt dieser Befehl etwas zurück? Wie starten Sie den Miner auf dem Windows-Knoten?
Ja, die Transaktion befindet sich in den schwebenden Transaktionen auf dem Android-Knoten, aber nicht auf dem Windows-Knoten. Und der Miner ist gestartet, ich habe neue Blöcke aber mit 0 Txs
Können Sie die vollständigen Befehle posten, die Sie verwendet haben, um Geth-Instanzen auf beiden Knoten zu starten?
Ich denke, Sie müssen unterschiedliche Portnummern haben. Überprüfen Sie dies .
Ok, ich habe versucht, die Ports zu ändern, ich habe jetzt --rpcport 8080 --port 30304auf Windows und --rpcport 8545 --port 30303auf Android. Ich kann die Transaktionen vom Android-Knoten immer noch nicht abbauen. Ich habe die Datenbank nicht gelöscht, denken Sie, dass es notwendig ist?
Ja. Entfernen Sie die vorhandenen Kettendaten mit geth --datadir /path/to/database removeb . Sie können es auch manuell tun. Wenn Sie diese Daten benötigen, können Sie die Geth-Instanzen einfach mit einem anderen leeren Verzeichnis starten.
Wie sind Ihre Knoten verbunden? Warum gibt es nur 1 Peer in der Liste?
Ich habe den Knoten mit admin.addPeer(enode) hinzugefügt und sie sind die einzigen zwei Knoten in meinem Netzwerk, deshalb gibt es nur 1 Peer in jeder Liste

Antworten (1)

Ich habe die Lösung dank @karalabe in dieser Nachricht: https://gitter.im/ethereum/go-ethereum?at=57737aed1ac8bd1a4d8c8fef

Tatsächlich muss der Mining-Knoten synchronisiert werden, bevor Transaktionen von anderen Knoten abgebaut werden können. Wenn es nur einen Miner im Netzwerk gibt, erhält er keine Blöcke von anderen Knoten und betrachtet sich selbst als nicht synchronisiert, sodass er keine Transaktionen vor der vollständigen Synchronisierung enthält.

Also habe ich einfach einen Knoten zum Netzwerk hinzugefügt (Ubuntu Virtual Machine) und einige Blöcke damit abgebaut. Sobald beide Knoten synchronisiert sind, können sie Blöcke mit Transaktionen von jedem Knoten im Netzwerk abbauen.