¿Dónde puedo obtener la raíz local de merkle-patricia-tree de mi cadena para buscarla en Nodejs?

Además de mi pregunta anterior ...

Así que quiero obtener datos de mi cadena local. Para eso, uso el formulario de ejemplo wanderer.github.io . Abro mi cadena y obtengo datos sin procesar, por lo que estos datos, según el ejemplo, solo nodo sin procesar de la cadena. A continuación, necesito ver el valor de las claves en ese nodo. Para hacer eso, entendí: todas las llaves escondidas en el fondo de un árbol merkle-patricia.

Hablemos de mi problema. Quiero hacer como en github: abrir mi billetera local y buscar información al respecto, para eso miré el ejemplo:

//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);
});

y escribí mi propio código con el problema de las correcciones 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 trabajo, pero no obtener información. No encontré rooten mi cadena local como en el ejemplo:

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

Alguien, ayudemos a Dora a encontrar la raíz correcta de la cadena local que sea correcta. Aquí mi 0, 1 y los últimos bloques de la cadena - tal vez te ayude:

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: [] } "

Intenté usar genesis como root, pero no funcionó:

"0xe5be92145a301820111f91866566e3e99ee344d155569e4556a39bc71238f3bc"

Mmm. Pruebe d7f8974fb5ac78d9ac099b9ad5018bedc2ce0a72dad1827a1709da30580f0544como la raíz del estado de génesis y vea si eso funciona.
Probado: debe ser de 32 bytes: AssertionError: Invalid root length. Roots are 32 bytes. ¿Dónde lo obtuviste?
También puedo darte mi cadena local si es necesario.
Espera, ¿estás usando la cadena de datos pública o es una red privada?
en línea, privado no público
Solo para verificar: ¿quiere decir que ha creado su propia red privada, con sus propios nodos? ¿O quiere decir que ha creado su propio nodo que se ejecuta en la red pública, para el cual ha descargado los datos de la cadena?
primera variante: "creó su propia red privada, con sus propios nodos"
Ah, está bien, en ese caso, su raíz de estado será diferente: la que publiqué fue la raíz de estado de cadena pública. Déjame pensar cómo conseguir tu root...
De acuerdo, creo que puedes usar la dumpfunción de Geth y canalizarla a head. Entonces algo comogeth dump 0 | head
mira ahora cómo hacerlo con cadena local, también público es como dijiste:d7f8974fb5ac78d9ac099b9ad5018bedc2ce0a72dad1827a1709da30580f0544
El mismo comando debería funcionar en una cadena local (siempre que esté usando Geth).
lo tengo, ahora busca en Nodejs geth dump 0 --datadir "/Users/User/EthereumTestNet/" | head... "root": "9178d0f23c965d81f0834a4c72c6253ce6830f4022b1359aaebfc1ecba442d4e",...
Genial, eso debería ser todo :-)

Respuestas (1)

Puede usar el dumpcomando de Geth para tomar block 0y luego tomar la parte superior de la salida:

$ 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": {}

El primero rootdebe ser el hash de la raíz del estado.

(Si su cadena de datos está en un lugar no estándar, también deberá usar la --datadirbandera).

Lo tengo y busqué información en la cadena privada local. Entonces, estas cuentas = billeteras locales, pero si miras ¡Número de billetera Mist! = hash de cuenta. por ejemplo, tengo una billetera 0xf032868db0633790166e3d6282914e48E4d908c7con 12 eth, la obtuve después de minar, quiero ver esa billetera en el volcado, pero no verla, solo billetera "9d373a0f53648a114f3fbc92ce8d144d05f71ab0": { "balance": "120000000000000000000", "root": "56e81f .." } ¿por qué eso?