Wo kann ich die lokale Merkle-Patricia-Tree-Wurzel meiner Kette bekommen, um sie in Nodejs zu sehen?

Zusätzlich zu meiner vorherigen Frage ...

Ich möchte also Daten von meiner lokalen Kette erhalten. Dafür verwende ich das Beispielformular wanderer.github.io . Ich öffne meine Kette und bekomme Rohdaten, also diese Daten, laut Beispiel - nur Rohknoten aus Kette. Als nächstes muss ich den Wert der Schlüssel in diesem Knoten sehen. Dazu habe ich verstanden: Alle Schlüssel sind im Grunde eines Merkle-Patricia-Baums versteckt.

Reden wir über mein Problem. Ich möchte wie in Github vorgehen: Öffnen Sie meine lokale Brieftasche und sehen Sie sich Informationen darüber an, dafür habe ich mir das Beispiel angesehen:

//the genesis state root
var root = '12582945fc5ad12c3e7b67c4fc37a68fc0d52d995bb7f7291ff41a2739a7ca16';
var trie = new Trie(db, root);

//gav's address
var gav = new Buffer('8a40bfaa73256b60764c1bf40675a99083efb075', 'hex');

trie.get(gav, function (err, val) {
  var decoded = rlp.decode(val);
  console.log(decoded);
});

und schrieb meinen eigenen Code mit dem Fix-Problem Invalid root length. Roots are 32 bytes:

var root = new Buffer('e5be92145a301820111f91866566e3e99ee344d155569e4556a39bc71238f3bc', 'hex'), 
    wallet = new Buffer('234132b22de7037e50b9fc4ebd7476315647869e', 'hex');

// work normally and get tree
var trie = new Trie(db, root);

trie.get(

    // what need to view
    wallet,

    // function which work with wallet info
    function (err, value)
    {
        console.log(err);
        console.log(value);

        var decoded = rlp.decode(value);
        console.log(decoded);
    }
);

Es ist Arbeit, aber keine Informationen erhalten. Ich habe rootin meiner lokalen Kette nicht gefunden, wie im Beispiel:

//the genesis state root
var root = '12582945fc5ad12c3e7b67c4fc37a68fc0d52d995bb7f7291ff41a2739a7ca16';
var trie = new Trie(db, root);

Jeder, lasst uns Dora helfen, die richtige Wurzel der lokalen Kette zu finden, die richtig ist. Hier meine 0, 1 und letzten Blöcke aus der Kette - vielleicht hilft es dir:

debug.printBlock(0)

"Block(#0): Size: 507.00 B { MinerHash: e521eab0c63dfd8bc7c6007e8b2ce954a66f9df3ab72ccf059e5aa49aeb149d8 Header(e5be92145a301820111f91866566e3e99ee344d155569e4556a39bc71238f3bc):[ParentHash: 0000000000000000000000000000000000000000000000000000000000000000 UncleHash: 1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347 Coinbase:0000000000000000000000000000000000000000 Root: 9178d0f23c965d81f0834a4c72c6253ce6830f4022b1359aaebfc1ecba442d4e TxSha 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421 ReceiptSha: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421 Bloom:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Difficulty:131072 Number:0 GasLimit:4712388 GasUsed:0 Time:0 Extra: MixDigest: 0000000000000000000000000000000000000000000000000000000000000000 Nonce:000000000000002a] Transactions:[] Uncles:[] }"

debug.printBlock(1)

"Block(#1): Size: 536.00 B {MinerHash: d8cebba1edfdd6f0364183ace1c5bdd8b5efb2999068aa8084c84043c4a5eb5e Header(3ab5cb6c29e583c50b90e413dca4a6df802d87dd0eb9569dff926f856d011375):[ParentHash: e5be92145a301820111f91866566e3e99ee344d155569e4556a39bc71238f3bc UncleHash: 1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347 Coinbase: 234132b22de7037e50b9fc4ebd7476315647869e Root: 9c12c460f11fcf78d993119e08727e3e45266b3287e68fd42ef90bc730d275f6 TxSha 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421 ReceiptSha: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421 Bloom:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Difficulty: 131072 Number: 1 GasLimit: 4712388 GasUsed: 0 Time: 1511614605 Extra: \u0603\x01\a\x02�geth�go1.9.2�darwin MixDigest: 1d51851bf1fca11a0e670fb359b7420f1393074c8c2f1760edfa3a638652a7f7 Nonce: 33c0052eafe0f837] Transactions:[] Uncles:[]} "

> debug.printBlock(81)

"Block(#81): Size: 536.00 B { MinerHash: 5fc817cc85c1ca755186f81e7a96699b68e43e53dc834a529de53bb8adcccaad Header(0dc9b40ee5b8039f2caad3542289000b22319aba762ae854208e3c73c7a31954): [ ParentHash: d9e010a5154b44cd18706decb2d47b739c71d83e4b9b53d2d14d19b6aa423001 UncleHash: 1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347 Coinbase: 234132b22de7037e50b9fc4ebd7476315647869e Root: 2aeb24f3daa4f2ed2accc00ca9af287784cc9f7292bb1bc42641490f56e235e2 TxSha 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421 ReceiptSha: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421 Bloom:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Difficulty: 132928 Number: 81 GasLimit: 4712388 GasUsed: 0 Time: 1511643645 Extra: \u0603\x01\a\x02�geth�go1.9.2�darwin MixDigest: 486a097820216125cfe87aa9e8f67b7f64b51591026db5e205aec9e8bf4f1d5e Nonce: 21ac7e333ca8a7c4 ] Transactions: [] Uncles: [] } "

Ich habe versucht, Genesis als Root zu verwenden, aber das funktioniert nicht:

"0xe5be92145a301820111f91866566e3e99ee344d155569e4556a39bc71238f3bc"

Hmm. Versuchen Sie d7f8974fb5ac78d9ac099b9ad5018bedc2ce0a72dad1827a1709da30580f0544es als Genesis State Root und sehen Sie, ob das funktioniert.
Versucht: es müssen 32 Bytes sein: AssertionError: Invalid root length. Roots are 32 bytes. Wo hast du es bekommen?
kann Ihnen auch meine lokale Kette geben, wenn es nötig ist
Warte mal - verwendest du die öffentlichen Chaindata oder ist es ein privates Netzwerk?
online, privat nicht öffentlich
Nur zur Überprüfung: Sie meinen, Sie haben Ihr eigenes privates Netzwerk mit eigenen Knoten erstellt? Oder meinen Sie, Sie haben Ihren eigenen Knoten erstellt, der im öffentlichen Netzwerk läuft, für den Sie die Kettendaten heruntergeladen haben?
erste Variante: "erstellt Ihr eigenes privates Netzwerk mit eigenen Knoten"
Ah, ok, in diesem Fall wird Ihr State Root anders sein - der, den ich gepostet habe, war der State Root der öffentlichen Kette. Lass mich überlegen, wie ich deine Wurzel bekomme...
Okay, ich denke, Sie können die dumpFunktion von Geth verwenden und an leiten head. Also sowas wiegeth dump 0 | head
schau mal wie man es mit lokaler kette macht, auch öffentlich ist wie du gesagt hast:d7f8974fb5ac78d9ac099b9ad5018bedc2ce0a72dad1827a1709da30580f0544
Derselbe Befehl sollte auf einer lokalen Kette funktionieren (solange Sie Geth verwenden).
verstanden, jetzt schau in Nodejs geth dump 0 --datadir "/Users/User/EthereumTestNet/" | head... "root": "9178d0f23c965d81f0834a4c72c6253ce6830f4022b1359aaebfc1ecba442d4e", ...
Super - das sollte es sein :-)

Antworten (1)

Sie können den dumpBefehl von Geth verwenden, um block zu greifen 0und dann den oberen Teil der Ausgabe zu greifen:

$ geth  dump  0  | head
INFO [11-26|19:58:18] Allocated cache and file handles         database=/home/richard/.ethereum/geth/chaindata cache=128 handles=1024
INFO [11-26|19:58:18] Disk storage enabled for ethash caches   dir=/home/richard/.ethereum/geth/ethash count=3
INFO [11-26|19:58:18] Disk storage enabled for ethash DAGs     dir=/home/richard/.ethash               count=2
INFO [11-26|19:58:18] Loaded most recent local header          number=18048 hash=a57baa…6c2b4d td=8705769076450279
INFO [11-26|19:58:18] Loaded most recent local full block      number=0     hash=d4e567…cb8fa3 td=17179869184
INFO [11-26|19:58:18] Loaded most recent local fast block      number=18048 hash=a57baa…6c2b4d td=8705769076450279
{
    "root": "d7f8974fb5ac78d9ac099b9ad5018bedc2ce0a72dad1827a1709da30580f0544",
    "accounts": {
        "000d836201318ec6899a67540690382780743280": {
            "balance": "200000000000000000000",
            "nonce": 0,
            "root": "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
            "codeHash": "c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
            "code": "",
            "storage": {}

Der erste rootsollte der Hash des Zustandsstamms sein.

(Wenn sich Ihre Kettendaten an einer nicht standardmäßigen Stelle befinden, müssen Sie auch das --datadirFlag verwenden.)

Habe es verstanden und nach Informationen in der lokalen Privatkette gesucht. Diese Konten = lokale Brieftaschen, aber wenn Sie sich die Mist-Nummer der Brieftasche ansehen! = Konto-Hash. Zum Beispiel habe ich eine Brieftasche 0xf032868db0633790166e3d6282914e48E4d908c7mit 12 eth, ich habe sie nach dem Mining erhalten, ich möchte diese Brieftasche im Dump sehen, aber nicht sehen, nur Brieftasche "9d373a0f53648a114f3fbc92ce8d144d05f71ab0": { "balance": "12000000000000000000", "root": "56e81f .." } Warum das?