Gibt es außer Geth und Mist noch andere Software, die die Javascript-Konsole anbietet? Ich möchte die Konsole verwenden, aber ich möchte nicht all diese Synchronisierungen durchführen

Gibt es außer Geth und Mist noch andere Software, die die Javascript-Konsole anbietet? Ich möchte die Konsole verwenden, aber ich möchte nicht all diese Synchronisierungen durchführen.

Parity hat meines Wissens keine Konsole und MetaMask auch nicht. Gibt es noch andere Software?

Sie könnten erwägen, Geth mit einer privaten Kette zu betreiben. Es gibt einige Tutorials, wie man es einrichtet. Das Wesentliche ist 1) Initialisieren Sie die Datenbank 2) Starten Sie den Knoten 3) Beginnen Sie mit dem Mining. Mining ist wichtig, denn wenn niemand schürft, erhalten Sie nicht die erwarteten Ergebnisse und das führt zu Verwirrung. Mining ist ziemlich ausführlich und obwohl Sie eine Konsole erhalten, werden Ihnen die Nachrichten im Weg stehen, also 4) verbinden Sie sich von einem anderen Terminal aus mit dem Knoten.

Antworten (6)

Versuchen Sie geth --light console, verfügbar seit v1.5.2, aber unter "Experimentelle Funktionen" aufgeführt. Synchronisierung in Minuten , wenn nicht Sekunden .

Update - Die anfängliche Synchronisierung dauerte 11 Minuten. Anschließend dauerte die Synchronisierung von Blöcken im Wert von 7 Stunden 8 Sekunden.

Ich werde unten einige leichte Client-Statistiken dokumentieren.

Hier sind einige Statistiken (der aktuelle Block ist 2972534 :

Iota:geth user$ geth --light console
...
 I0111 08:34:43.034258 eth/downloader/downloader.go:326] Block synchronisation started
I0111 08:34:48.181285 core/headerchain.go:331] imported 192 headers in    2.083s. #2609343 [20a7f505… / f422ad5d…]
...
0111 08:37:30.529558 core/headerchain.go:331] imported 384 headers in  68.146ms. #2695167 [eeb0e8b4… / b3e90f82…]
I0111 08:37:30.750613 core/headerchain.go:331] imported 192 headers in  36.462ms. #2695359 [f19dec17… / 2d39932d…]
...
I0111 08:42:07.574887 core/headerchain.go:331] imported 768 headers in 145.734ms. #2854143 [3878698c… / a6998900…]
I0111 08:42:07.643398 core/headerchain.go:331] imported 192 headers in  57.545ms. #2854335 [6a726c3c… / 96647a62…]
...
I0111 08:43:32.513446 core/headerchain.go:331] imported 384 headers in  70.834ms. #2900991 [db81a3ae… / 2da617ae…]
I0111 08:43:34.986411 core/headerchain.go:331] imported 1344 headers in 295.133ms. #2902335 [49e9082a… / a59aa59f…]
...
I0111 08:45:47.420502 core/headerchain.go:331] imported 143 headers in 240.806ms. #2972558 [ab60d4f7… / 86202d19…]
I0111 08:45:52.135652 core/headerchain.go:331] imported 1 headers in   5.174ms. #2972559 [0a53cdc5… / 0a53cdc5…]
I0111 08:45:58.738955 core/headerchain.go:331] imported 1 headers in   5.570ms. #2972560 [1a98b864… / 1a98b864…]

Überprüfen des belegten Speicherplatzes:

Iota:geth user$ pwd
/Users/user/Library/Ethereum/geth
Iota:geth user$ ls -al
total 0
drwx------      5 user staff      170 11 Jan 08:34 .
drwxr-xr-x     10 user staff      340 11 Jan 08:46 ..
-rw-r--r--      1 user staff        0 19 Nov 00:30 LOCK
drwxr-xr-x  61204 user staff  2080936 11 Jan 08:28 chaindata
drwxr-xr-x     69 user staff     2346 11 Jan 08:45 lightchaindata
Iota:geth user$ du -hs *
  0B      LOCK
109G      chaindata
139M  lightchaindata

Überprüfen eines zufälligen Kontostands 0x5d03a3e0ab0fd3b00f1c3654b0765d923960c464 , der derzeit 4,03604217 ETH von EtherScan beträgt.

Iota:geth user$ geth --light console
...
> eth.syncing
{
  currentBlock: 2972561,
  highestBlock: 2972575,
  knownStates: 0,
  pulledStates: 0,
  startingBlock: 2972561
}
I0111 08:50:26.838756 core/headerchain.go:331] imported 0 headers (1 ignored) in  92.695µs. #2972578 [0da2ff52… / 0da2ff52…]
> web3.fromWei(eth.getBalance("0x5d03a3e0ab0fd3b00f1c3654b0765d923960c464"), "ether")
4.03604217

Überprüfen des Abrufs von The DAO-Ereignissen mit dem Code von Wie rufe ich die Voted-Ereignisse von The DAO ab , aber nur für 10 Blöcke, es dauerte 12 Sekunden:

I0111 08:59:06.052210 core/headerchain.go:331] imported 0 headers (1 ignored) in  73.395µs. #2972619 [952243d6… / 952243d6…]
> var theDAOInterfaceABI = [{ "constant": true, "inputs": [{ "name": "", "type": "uint256" }], "name": "proposals", "outputs": [{ "name": "recipient", "type": "address" }, { "name": "amount", "type": "uint256" }, { "name": "description", "type": "string" }, { "name": "votingDeadline", "type": "uint256" }, { "name": "open", "type": "bool" }, { "name": "proposalPassed", "type": "bool" }, { "name": "proposalHash", "type": "bytes32" }, { "name": "proposalDeposit", "type": "uint256" }, { "name": "newCurator", "type": "bool" }, { "name": "yea", "type": "uint256" }, { "name": "nay", "type": "uint256" }, { "name": "creator", "type": "address" }], "type": "function" }, { "constant": true, "inputs": [], "name": "rewardAccount", "outputs": [{ "name": "", "type": "address" }], "type": "function" }, { "constant": true, "inputs": [], "name": "daoCreator", "outputs": [{ "name": "", "type": "address" }], "type": "function" }, { "constant": false, "inputs": [{ "name": "_proposalID", "type": "uint256" }, { "name": "_transactionData", "type": "bytes" }], "name": "executeProposal", "outputs": [{ "name": "_success", "type": "bool" }], "type": "function" }, { "constant": false, "inputs": [], "name": "unblockMe", "outputs": [{ "name": "", "type": "bool" }], "type": "function" }, { "constant": true, "inputs": [], "name": "totalRewardToken", "outputs": [{ "name": "", "type": "uint256" }], "type": "function" }, { "constant": true, "inputs": [{ "name": "", "type": "address" }], "name": "allowedRecipients", "outputs": [{ "name": "", "type": "bool" }], "type": "function" }, { "constant": false, "inputs": [{ "name": "_to", "type": "address" }, { "name": "_amount", "type": "uint256" }], "name": "transferWithoutReward", "outputs": [{ "name": "success", "type": "bool" }], "type": "function" }, { "constant": false, "inputs": [{ "name": "_recipient", "type": "address" }, { "name": "_amount", "type": "uint256" }, { "name": "_description", "type": "string" }, { "name": "_transactionData", "type": "bytes" }, { "name": "_debatingPeriod", "type": "uint256" }, { "name": "_newCurator", "type": "bool" }], "name": "newProposal", "outputs": [{ "name": "_proposalID", "type": "uint256" }], "type": "function" }, { "constant": true, "inputs": [{ "name": "", "type": "address" }], "name": "DAOpaidOut", "outputs": [{ "name": "", "type": "uint256" }], "type": "function" }, { "constant": true, "inputs": [], "name": "minQuorumDivisor", "outputs": [{ "name": "", "type": "uint256" }], "type": "function" }, { "constant": false, "inputs": [{ "name": "_newContract", "type": "address" }], "name": "newContract", "outputs": [], "type": "function" }, { "constant": false, "inputs": [{ "name": "_recipient", "type": "address" }, { "name": "_allowed", "type": "bool" }], "name": "changeAllowedRecipients", "outputs": [{ "name": "_success", "type": "bool" }], "type": "function" }, { "constant": false, "inputs": [], "name": "halveMinQuorum", "outputs": [{ "name": "_success", "type": "bool" }], "type": "function" }, { "constant": true, "inputs": [{ "name": "", "type": "address" }], "name": "paidOut", "outputs": [{ "name": "", "type": "uint256" }], "type": "function" }, { "constant": false, "inputs": [{ "name": "_proposalID", "type": "uint256" }, { "name": "_newCurator", "type": "address" }], "name": "splitDAO", "outputs": [{ "name": "_success", "type": "bool" }], "type": "function" }, { "constant": true, "inputs": [], "name": "DAOrewardAccount", "outputs": [{ "name": "", "type": "address" }], "type": "function" }, { "constant": true, "inputs": [], "name": "proposalDeposit", "outputs": [{ "name": "", "type": "uint256" }], "type": "function" }, { "constant": true, "inputs": [], "name": "numberOfProposals", "outputs": [{ "name": "_numberOfProposals", "type": "uint256" }], "type": "function" }, { "constant": true, "inputs": [], "name": "lastTimeMinQuorumMet", "outputs": [{ "name": "", "type": "uint256" }], "type": "function" }, { "constant": false, "inputs": [{ "name": "_toMembers", "type": "bool" }], "name": "retrieveDAOReward", "outputs": [{ "name": "_success", "type": "bool" }], "type": "function" }, { "constant": false, "inputs": [], "name": "receiveEther", "outputs": [{ "name": "", "type": "bool" }], "type": "function" }, { "constant": true, "inputs": [{ "name": "_proposalID", "type": "uint256" }], "name": "getNewDAOAddress", "outputs": [{ "name": "_newDAO", "type": "address" }], "type": "function" }, { "constant": false, "inputs": [{ "name": "_proposalID", "type": "uint256" }, { "name": "_supportsProposal", "type": "bool" }], "name": "vote", "outputs": [{ "name": "_voteID", "type": "uint256" }], "type": "function" }, { "constant": false, "inputs": [], "name": "getMyReward", "outputs": [{ "name": "_success", "type": "bool" }], "type": "function" }, { "constant": true, "inputs": [{ "name": "", "type": "address" }], "name": "rewardToken", "outputs": [{ "name": "", "type": "uint256" }], "type": "function" }, { "constant": false, "inputs": [{ "name": "_from", "type": "address" }, { "name": "_to", "type": "address" }, { "name": "_amount", "type": "uint256" }], "name": "transferFromWithoutReward", "outputs": [{ "name": "success", "type": "bool" }], "type": "function" }, { "constant": false, "inputs": [{ "name": "_proposalDeposit", "type": "uint256" }], "name": "changeProposalDeposit", "outputs": [], "type": "function" }, { "constant": true, "inputs": [{ "name": "", "type": "address" }], "name": "blocked", "outputs": [{ "name": "", "type": "uint256" }], "type": "function" }, { "constant": true, "inputs": [], "name": "curator", "outputs": [{ "name": "", "type": "address" }], "type": "function" }, { "constant": true, "inputs": [{ "name": "_proposalID", "type": "uint256" }, { "name": "_recipient", "type": "address" }, { "name": "_amount", "type": "uint256" }, { "name": "_transactionData", "type": "bytes" }], "name": "checkProposalCode", "outputs": [{ "name": "_codeChecksOut", "type": "bool" }], "type": "function" }, { "anonymous": false, "inputs": [{ "indexed": true, "name": "proposalID", "type": "uint256" }, { "indexed": false, "name": "recipient", "type": "address" }, { "indexed": false, "name": "amount", "type": "uint256" }, { "indexed": false, "name": "newCurator", "type": "bool" }, { "indexed": false, "name": "description", "type": "string" }], "name": "ProposalAdded", "type": "event" }, { "anonymous": false, "inputs": [{ "indexed": true, "name": "proposalID", "type": "uint256" }, { "indexed": false, "name": "position", "type": "bool" }, { "indexed": true, "name": "voter", "type": "address" }], "name": "Voted", "type": "event" }, { "anonymous": false, "inputs": [{ "indexed": true, "name": "proposalID", "type": "uint256" }, { "indexed": false, "name": "result", "type": "bool" }, { "indexed": false, "name": "quorum", "type": "uint256" }], "name": "ProposalTallied", "type": "event" }, { "anonymous": false, "inputs": [{ "indexed": true, "name": "_newCurator", "type": "address" }], "name": "NewCurator", "type": "event" }, { "anonymous": false, "inputs": [{ "indexed": true, "name": "_recipient", "type": "address" }, { "indexed": false, "name": "_allowed", "type": "bool" }], "name": "AllowedRecipientChanged", "type": "event" }];
undefined
> var theDAOAddress = "0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413";
undefined
> var theDAOInterface = web3.eth.contract(theDAOInterfaceABI).at(theDAOAddress);
undefined
> var theDAOVotedEvent = theDAOInterface.Voted({}, { fromBlock: 1630418, toBlock: 1630428 });
undefined
> var i = 0;
undefined
> theDAOVotedEvent.watch(function (error, result) {
    console.log(i++ + ": " + JSON.stringify(result));
});
...
0: {"address":"0xbb9bc244d798123fde783fcc1c72d3bb8c189413","args":{"position":false,"proposalID":"3","voter":"0x89dbadfc48054057b6c9c378f6edf9d15d8b1d68"},"blockHash":null,"blockNumber":null,"event":"Voted","logIndex":0,"removed":false,"transactionHash":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionIndex":0}
1: {"address":"0xbb9bc244d798123fde783fcc1c72d3bb8c189413","args":{"position":true,"proposalID":"15","voter":"0xcd0a161bc367ae0927a92aac9cf6e5086714efca"},"blockHash":null,"blockNumber":null,"event":"Voted","logIndex":0,"removed":false,"transactionHash":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionIndex":0}
2: {"address":"0xbb9bc244d798123fde783fcc1c72d3bb8c189413","args":{"position":true,"proposalID":"15","voter":"0x89dbadfc48054057b6c9c378f6edf9d15d8b1d68"},"blockHash":null,"blockNumber":null,"event":"Voted","logIndex":0,"removed":false,"transactionHash":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionIndex":0}
I0111 08:59:18.066685 core/headerchain.go:331] imported 1 headers in   9.304ms. #2972620 [591a881e… / 591a881e…]

Ich werde jetzt versuchen, die Ereignisse für 1.000 Blöcke abzurufen:

I0111 09:07:13.141814 core/headerchain.go:331] imported 0 headers (1 ignored) in  91.993µs. #2972655 [aca94ac7… / aca94ac7…]
> var theDAOVotedEvent = theDAOInterface.Voted({}, { fromBlock: 1630428, toBlock: 1631428 });
undefined
> var i = 0;
undefined
> theDAOVotedEvent.watch(function (error, result) {
    console.log(i++ + ": " + JSON.stringify(result));
});
I0111 09:07:32.414297 core/headerchain.go:331] imported 1 headers in   5.613ms. #2972656 [4de4e836… / 4de4e836…]
// Still no data
I0111 09:12:04.476901 core/headerchain.go:331] imported 1 headers in   5.037ms. #2972686 [e8742c05… / e8742c05…]
// Still no data. Exiting program.
I0111 09:14:20.093697 core/headerchain.go:331] imported 1 headers in   5.376ms. #2972690 [c86f8399… / c86f8399…]

Ich beendete gethund startete neu geth --light consoleund führte den gleichen Befehl wie im vorherigen Abschnitt aus, um Ereignisse aus 1.000 Blöcken abzurufen, und die Ergebnisse kamen in 15 Sekunden zurück.

I0111 09:15:39.512646 core/headerchain.go:331] imported 0 headers (1 ignored) in  75.565µs. #2972693 [7321330d… / 7321330d…]
> var theDAOInterfaceABI = [{ "constant": true ...
...
var theDAOVotedEvent = theDAOInterface.Voted({}, { fromBlock: 1630428, toBlock: 1631428 });
undefined
> var i = 0;
undefined
> theDAOVotedEvent.watch(function (error, result) {
    console.log(i++ + ": " + JSON.stringify(result));
});
I0111 09:15:52.424066 core/headerchain.go:331] imported 1 headers in   6.768ms. #2972694 [40492702… / 40492702…]
I0111 09:15:52.543705 core/headerchain.go:331] imported 0 headers (1 ignored) in   73.79µs. #2972694 [40492702… / 40492702…]
I0111 09:16:10.304987 core/headerchain.go:331] imported 1 headers in   5.613ms. #2972695 [60cc2682… / 60cc2682…]
0: {"address":"0xbb9bc244d798123fde783fcc1c72d3bb8c189413","args":{"position":true,"proposalID":"17","voter":"0x89dbadfc48054057b6c9c378f6edf9d15d8b1d68"},"blockHash":null,"blockNumber":null,"event":"Voted","logIndex":0,"removed":false,"transactionHash":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionIndex":0}
1: {"address":"0xbb9bc244d798123fde783fcc1c72d3bb8c189413","args":{"position":true,"proposalID":"5","voter":"0x1a51e74e25825b4ff2d0110ced7a46e0405259cd"},"blockHash":null,"blockNumber":null,"event":"Voted","logIndex":0,"removed":false,"transactionHash":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionIndex":0}
...
29: {"address":"0xbb9bc244d798123fde783fcc1c72d3bb8c189413","args":{"position":true,"proposalID":"17","voter":"0xeef5d8bb8391dccfc606047cf65e3fb24379acf5"},"blockHash":null,"blockNumber":null,"event":"Voted","logIndex":0,"removed":false,"transactionHash":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionIndex":0}
I0111 09:16:25.950938 core/headerchain.go:331] imported 1 headers in   5.576ms. #2972696 [59f8d25c… / 59f8d25c…]
I0111 09:16:31.604916 core/headerchain.go:331] imported 1 headers in   7.879ms. #2972697 [5b8f6907… / 5b8f6907…]

Fazit:

  1. geth --lightscheint derzeit etwas instabil für das Abrufen von Ereignissen aus einem historischen Teil der Blockchain. Der erste Abruf von Ereignissen aus 1.000 Blöcken lieferte die Daten nicht in angemessener Zeit (ich habe 7 Minuten gewartet). Ich habe es angehalten gethund neu gestartet und den gleichen Befehl erneut ausgeführt. Die Blockdaten für die 1.000 Blöcke wurden bereits heruntergeladen und die Ereignisse wurden das zweite Mal in 15 Sekunden abgerufen.
  2. Aber die Synchronisierung und Leistung scheint ziemlich gut zu sein, wenn Sie nur die aktuellen Daten benötigen.

Aktualisieren

Das Synchronisieren von Blöcken im Wert von 7 Stunden dauerte 8 Sekunden:

> I0111 16:10:43.598515 eth/downloader/downloader.go:326] Block synchronisation started
I0111 16:10:47.586689 contracts/release/release.go:134] Failed to retrieve current release: Missing trie node f62d536cd4f1bfd9b0b5d2d1a989ea2ca40f9fb4bbdee93fc346addf0d83b9c3
I0111 16:10:49.137822 core/headerchain.go:331] imported 576 headers in    2.053s. #2973345 [d94df51e… / d096138a…]
I0111 16:10:49.209909 core/headerchain.go:331] imported 192 headers in  62.450ms. #2973537 [2fefee19… / d3bfd1eb…]
I0111 16:10:49.323178 core/headerchain.go:331] imported 384 headers in  89.319ms. #2973921 [f7365657… / d3b513bb…]
I0111 16:10:49.942067 core/headerchain.go:331] imported 192 headers in  39.532ms. #2974113 [8f08532d… / 971d6b2c…]
I0111 16:10:52.490579 core/headerchain.go:331] imported 192 headers in  43.145ms. #2974305 [ddd9974a… / 92a3086d…]
I0111 16:10:55.263782 core/headerchain.go:331] imported 121 headers in 155.070ms. #2974426 [907785ea… / f2daed7b…]
> eth.syncing
false
> I0111 16:11:17.416889 core/headerchain.go:331] imported 1 headers in   7.214ms. #2974427 [3dbe6f83… / 3dbe6f83…]
I0111 16:11:17.467800 core/headerchain.go:331] imported 0 headers (1 ignored) in  63.661µs. #2974427 [3dbe6f83… / 3dbe6f83…]
I0111 16:11:17.765045 core/headerchain.go:331] imported 0 headers (1 ignored) in  81.887µs. #2974427 [3dbe6f83… / 3dbe6f83…]
I0111 16:11:25.297098 core/headerchain.go:331] imported 1 headers in   5.074ms. #2974428 [f8717170… / f8717170…]
I0111 16:11:25.435765 core/headerchain.go:331] imported 0 headers (1 ignored) in  72.059µs. #2974428 [f8717170… / f8717170…]
Hallo @BokkyPooBah. Ich habe web3.fromWei(eth.getBalance("0x5d03a3e0ab0fd3b00f1c3654b0765d923960c464"), "ether") 4.03604217 getestet aber leider bekomme ich von Geth die falsche Antwort, nämlich "0" und nicht den Wert den du oben gepostet hast. Warum und kann es behoben werden?
Warte ab! Ich habe gerade bei Etherscan nachgesehen und festgestellt, dass die von Ihnen verwendete Adresse nachträglich geleert wurde. Als ich mit einer anderen halbzufälligen Adresse nachgesehen habe, habe ich die richtige Menge erhalten: web3.fromWei(eth.getBalance("0x4366dDc115d8cF213c564da36e64C8ebaA30CdBD"), "ether") Also scheint es tatsächlich zu funktionieren und vielleicht kann ich tatsächlich anfangen, Geth für zu verwenden sinnvolles Zeug; ) Hurra!

Was ich jetzt mache, ist die Verwendung von TestRPC als Web3-Provider für Browser Solidity als Chrome-Erweiterung .

Sie können dann DAPP-Front-Ends entwickeln und ausführen und die Chrome-Konsole verwenden, um mit web3 zu interagieren.

Der einfachste Weg, den ich gefunden habe, wäre, eine virtuelle Serverinstanz einzurichten, nodejs zu installieren, testrpc über npm zu installieren und auch das Web3-Modul zu verwenden, wie im obigen Beitrag erwähnt.

In diesem Video wird beschrieben, wie Sie testrpc auf einer AWS EC2-Instanz einrichten und mit ihm über die nodejs-Konsole und Web3 interagieren.

http://www.decypher.tv/series/ethereum-development/video/1

Hier sind die für das Video verwendeten GitHub-Befehle und -Hinweise.

https://gist.github.com/AlwaysBCoding/9ce09281e5e097ce8ab7add2602c2fc7#file-scripts-txt

Während dies die Frage theoretisch beantworten kann, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Danke, ging weiter und fügte vor den Link-Posts etwas mehr Kontext hinzu. Es sind viele Befehle zu befolgen, also habe ich den Link zu den Notizen gepostet, die zum Einrichten der Entwicklungsumgebung verwendet werden.

Es ist möglich, für nahezu jeden Client eine eigene JS-Konsole einzurichten.

Erwerben Sie zuerst web3.js . Entweder mit npm zum Installieren oder mit einer HTML-Datei, die die eigentliche web3.jsDatei enthält, funktioniert.

Stellen Sie dann über RPC eine Verbindung zu Ihrer Instanz her. Mit Knoten sieht das etwa so aus:

var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'))
web3.isConnected() // should return true.

Wenn Sie mit node.js nicht vertraut sind, können Sie einfach eine Konsole nodein einem Terminal erhalten. Stellen Sie sicher, dass Sie dies in dem Verzeichnis tun, in dem Sie npm zur Installation von web3 verwendet haben.

Wenn Sie web3 in eine HTML-Datei eingefügt haben, können Sie alternativ nur Folgendes verwenden:

var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))
web3.isConnected() // also should return true.

Und dann können Sie die eigene JS-Konsole des Browsers verwenden.

Aber vielleicht kannst du auch einfach Metamask verwenden. Versuchen Sie web3.isConnected(), die eigene JS-Konsole des Browsers einzugeben, während Sie Metamask verwenden, und sehen Sie, was passiert.

Es stellt sich heraus , dass Sie Parity mit verwenden könnenparity --geth , damit es mit Mist oder funktioniert geth attach. So können Sie Paritys Warp-Sync verwenden und dann --gethdie Konsole verwenden.

Ein Beitrag oben erwähnt die decyphertv-Tutorial-Serie. http://decypher.tv/series/ethereum-development Die Serie wird mit einem Open-Source-Befehlszeilenprogramm geliefert, mit dem Sie sichere signierte Transaktionen zum Bewegen von Ether erstellen oder Verträge bereitstellen und manipulieren können. Es sendet sie dann auf Wunsch an INFURA, ohne dass ein Knoten ausgeführt werden muss.

Ich bin ein Schüler dieser Reihe und kann sie sehr empfehlen.