Ethereum: Transaction Trie, Receipt Trie, eventos, logs en la base de datos levelDB, transacciones internas

En algunas entradas anteriores hemos visto cómo leer la base de datos levelDB que un nodo Ethereum almacena (en su disco) e interpretado el State Trie (cuentas) y el Storage Trie (almacenamiento de los smart contracts), Ethereum: explorando base de datos leveldb, Ethereum: leer LevelDB, Smart Contract y Storage Trie

Ahora vamos a analizar un poco los datos que se almacenan en relación con las transacciones y con los receipts. En ambos casos para cada bloque de la blockchain existe una estructura de datos de árbol de Merkel Patrice Trie para las transacciones y otra además para los receipts (para garantizar la integridad de las transacciones y los eventos que emiten los smart contracts). En ambos casos, el bloque sí almacena en su header el valor del hash de la raíz del trie (transaction y receipt)

Es importante tener en cuenta que los eventos o logs se generan en los smart contracts y aunque no se almacenan en los bloques, sí se van creando los tries. Sin embargo, los datos de los logs están presentes en las bases de datos leveldb de los nodos, y no se almacenan hasheados, sino codificados (RLP) por lo que podrían almacenar información que podría no ser deseada y revelar por ejemplo otras cuentas.

Veremos:

Prueba en blockchain privada y Smart Contract del tipo ERC20 (token)

Para explorar la base de datos usamos el entorno de pruebas de una blockchain privada tal como en la entrada Ethereum: leer LevelDB, Smart Contract y Storage Trie, y conectaremos Remix (https://remix.ethereum.org/) para desplegar el smart contract y efectuar las transacciones (para esta prueba ambos nodos geth ejecutándose en el mismo portátil conectados entre ellos como peers).

Smart Contract ERC20 simplificado con cuenta depósito

El smart contract a usar va a ser uno muy sencillo de tipo ERC20 (token) donde vamos a poner varios eventos/logs. Además para estudiar las transacciones internas, este smart contract va a tener como una de las propiedades una cuenta de tipo EOA que actuará como depósito de los ETH pagados por un usuario al comprar tokens. Es decir, un usuario compra tokens pagando con ETH, el smart contract le asigna un balance de tokens a ese usuario (según el precio y lo que paga) y transfiere esos ETH que el usuario paga a una cuenta depósito. Esta última transacción lanzada por el smart contract es una transacción interna y no aparece en los bloques de la blockchain.

Este es el smart contract:

// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.0;
 
contract Token {
    // Eventos
    event Transfer(address indexed from, address indexed to, uint256 value);	
 
	// atributos
    string public name = "Token";
    string public symbol = "TKN";
    uint256 public decimals = 0;
    uint256 tokenPrice = 1000000000000000;
 
    uint256 public supply;
    address public founder;
    address payable public deposit;
 
	mapping(address => uint256) public balances;
 
    // el creador es quien llama al constructor
    // deposit es una cuenta EOA donde se transfieren los eth al comprar tokens
	constructor(address payable _deposit) {    
		supply = 300000;
        deposit = _deposit;
		founder = msg.sender;
        balances[deposit] = supply;
        }
 
	// Enviar tokens a otra cuenta (desde la cuenta que ejecuta esta transacción del Smart contract)
	function transfer(address recipient, uint256 amount) public returns (bool) {
        balances[msg.sender] -= amount;
        balances[recipient] += amount;
		// lanzar el evento / log
        emit Transfer(msg.sender, recipient, amount);
        return true;
    }
 
	// comprar tokens
    function buy(address buyer) public payable {
        uint256 tokens = msg.value / tokenPrice;
        // el inversor adquiere tokens del creador del SC, y lo que le cuesta va a la cuenta del depósito
        balances[buyer] += tokens;
        balances[deposit] -= tokens;
 
		// transacción interna, para ver luego en LevelDB
        deposit.transfer(msg.value);
		//lanzar evento/log de esta transferecnia al depósito
		emit Transfer(address(0), deposit, tokens);
		//lanzar evento/log de esta compra de tokens
		emit Transfer(buyer,address(0), tokens);
    }
	// simplemente obtener el balance
	function balanceOf(address account) public view returns (uint256) {
        return balances[account];
    }
}

Para compilarlo en Remix sin errores hay que bajar de versión el compilador usado

Previamente al despliegue, con los nodos ejecutándose, creamos en la consola geth (en una nueva ventana de comandos la obtenemos con el comando geth.exe attach) una nueva cuenta, que será la del depósito del smart contract (y que le pasamos como argumento a la función de desplegar el contrato).

Las cuentas que teníamos de los nodos son:

Desplegamos el contrato con la cuenta del Nodo 1:

Ya podemos efectuar las transacciones para esta prueba, que van a ser:

  1. Comprar 5 tokens por la cuenta del Nodo 1
  2. Transferir 2 tokens por la cuenta del Nodo 1 a la cuenta del Nodo 2
  3. Transferir 2 tokens por la cuenta del Nodo 1 a la cuenta del Nodo 2
  4. Comprar 3 tokens por la cuenta del Nodo 1

Nota: la transacción 3 repite la 2 porque Remix mostraba un error al no usar como argumento de cuenta de destino una cuenta Ethereum con checksum correcto (mayúsculas/minúsculas, una herramienta para calcularla es https://web3-tools.netlify.app/), aunque realmente sí se ejecuta la transacción y es indiferente a la hora de estudiar los tries, simplemente habrá más transacciones y logs.

Esta captura muestra los balances de las cuentas del Nodo 1 y Depósito antes y después de las transacciones:

Tras efectuar las transacciones, el Nodo 2 dispone de tokens en su balance en el smart contract (4)

Base de datos LevelDB

Volcando la base de datos levelDB del Nodo 1, con el script en go, tal como en los posts anteriores.

La base de datos es:

Key: 09f7396d5786c8b4ed90375befcb946f5d4171751a923e1150d59e26e5f065b7 
Value: f870a030a8fb8879e438ba06a316511b6cb80492c75e441fdfe3b12a73c0a421d5e976b84df84b80871c6bf526340000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470

Key: 14bda78e1d1c59da8f22091dbdb9aa85aa49e1fbc91480891a59b278666606c1 
Value: f851808080808080808080808080a06eb41bdb1e67124df99586217acccbf8cc2b8c86d115dd9ab9387ab5d94644aca06b942ece4d7f9a0a438b4c4398c7aa0759659f423ce0ea1ebd1a99a1ed8b0a06808080

Key: 1850bddee67862a9af2082e4d07694b9ed03aa38bebf19987408df8742f2e726 
Value: f7a0336b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db09594598b65946815ae60c68ec34d747bae6d16690287

Key: 19c741fc9e48c28af06e35e49efa5d3ddab55115444e2ee2fdf4e5e6c0c137c3 
Value: e2a0200a0377e72367b06a8043bc4fbdcb9b34acae35e8bfad9d2ea69cfef5b30fe504

Key: 446174616261736556657273696f6e 
Value: 08

Key: 45d986e4459942ad7e5369c6e7aef44ab611cb0aeafb9131713fc71741c26259 
Value: f7a03652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f95949e37da22a361029be5602428170bf51285709d25

Key: 48094042e0f05f0b12139e7a50453b6ea3441abb0355698506b6bc521d5de88eb3 
Value: 0000000000000015

Key: 480f225c53282f5e1171feeeb3fa87ef688285fab54e034824eb2a843a0015bf43 
Value: 0000000000000014

Key: 480f4bd51e9c373f627732948b3485131fab74684859ba26094d98921baca44ee6 
Value: 0000000000000002

Key: 480f8f7f364bfcd1bf3ce7fab7a1c4e21730a8ca55065dc497d3bce642adec5789 
Value: 0000000000000001

Key: 4811b7b604d201333882701930394dbccd25f4996a742fb22a07533dc780a93868 
Value: 0000000000000008

Key: 4812f5563cd14570e5a04f6c1d32887233ab994890ec073b460a3efda8d56dbcfd 
Value: 0000000000000010

Key: 481e73f235740358a61fe456920c065f196a0a8ba89a02df915748ebb3cf8cdc1e 
Value: 0000000000000000

Key: 48269345a7cf00a00c3c20a91016c58052480cfec7e99f4e0ca98e706d3dee8a29 
Value: 0000000000000012

Key: 4838f9a6cf897be7c50b606dc83ada097a592af5462e0d6d3e428430c01eddd3c0 
Value: 0000000000000001

Key: 48550ef95d4b0df69b7acac84df7ed1be580cade4f70a767a60094067df51c7fa0 
Value: 000000000000000d

Key: 4869b716aa64e971e2c8ee7bd15e34ac76e24019cdad1d60aed05ac6694b716822 
Value: 0000000000000011

Key: 48712a534784721b2cb73ce844c480d012b24960b973cd2e3b181117839a3d3733 
Value: 0000000000000005

Key: 487e6ea810a133555934ef8429718081436cc64ed61abf0466755ea11f63466fa4 
Value: 0000000000000003

Key: 4880631a0e1e3f5ba3c24730f087a7480d373350b99033351cc41b83dd5ba3fcf0 
Value: 0000000000000004

Key: 489c9dca1a408081a40a50ca777ed28ff99cabfc708b7fb9b494cb61ba1b223d20 
Value: 0000000000000018

Key: 48aacc4e5cd69d19645a864422673937691773ea3fcacd7302104bcc62641f8b4c 
Value: 0000000000000017

Key: 48ae10829085b804b7666f3da5404b81d2272893052ee6724bec0bbe527cbd94a7 
Value: 0000000000000006

Key: 48b1df49b5d210232a80d70dbc8cdb217deccab7a1d424663d7ca12ffa27551ff6 
Value: 000000000000000a

Key: 48bb96f2170d6b0daaf577061567d8df87bba8d754596d8d0ec1b6888555bfae3a 
Value: 000000000000000f

Key: 48c9f96daadaa33e8a5ec9eb3b9f89c0041d134396a963b84ce080d2725fe6b10d 
Value: 0000000000000009

Key: 48dcd3222d2acb09103cafbd07fd1de9c4bd9c619a537ffc81dc4e23bebb53b5d5 
Value: 0000000000000007

Key: 48e4771621b2aab6ea457166c05c33cefe1801c4d957dd5c94182919a90fb0bb9a 
Value: 0000000000000013

Key: 48e75a247eea47bca5c5906509210b54b8394f33979e2cd97601baeb323c29a009 
Value: 000000000000000e

Key: 48e9c7020f01a8ac23758adb687da79eef8ef681aae1554a45740e557045c46fb6 
Value: 000000000000000c

Key: 48ec4db3244096d0a5cc56c63d33703d711c03b0db43ebdde19a9dc10595725943 
Value: 000000000000000b

Key: 48ecd849b1dc96d1a672e3689b86eb5272b9c006662d5455e816b62439c124c54f 
Value: 0000000000000016

Key: 4c617374426c6f636b 
Value: 9c9dca1a408081a40a50ca777ed28ff99cabfc708b7fb9b494cb61ba1b223d20

Key: 4c61737446617374 
Value: 9c9dca1a408081a40a50ca777ed28ff99cabfc708b7fb9b494cb61ba1b223d20

Key: 4c617374486561646572 
Value: 9c9dca1a408081a40a50ca777ed28ff99cabfc708b7fb9b494cb61ba1b223d20

Key: 536e617073686f7447656e657261746f72 
Value: c6800180808080

Key: 536e617073686f744a6f75726e616c 
Value: 80a014bda78e1d1c59da8f22091dbdb9aa85aa49e1fbc91480891a59b278666606c1a00b394ecf9c7b1fb0d8835b4455f76e7c6a8e2c5f0d75da9006cb7016ddc4a7a5c0f89cf0a0c264245df25118b8c2b07f8d67fab2bcdc6ea50a250f89e4aacf5cab94b3bc8c8ecd018902b5e3af16b18800008080f869a0307ef5b6f524d86f4783223cca2f67baceec4cdd95d073742263d86cd5d97b1ab846f8440180a0d6322e80d25e17ca14af2080bfcbb635419dc6eeb93ce48c4db2790254e85b14a0d7932f095f367134b7211f1d08fafb449b2f13aac2bda58fb63023e9ec7fd024f90192f9018fa0307ef5b6f524d86f4783223cca2f67baceec4cdd95d073742263d86cd5d97b1af8e7a0f652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3fa0036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0a0b81fea19e0df371950d99277e1357bd6afdf82d711b435f64a5f3564d35ea894a0290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563a0b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6a0c2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85ba08a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19bf88395949e37da22a361029be5602428170bf51285709d259594598b65946815ae60c68ec34d747bae6d1669028784830493e0a1a0546f6b656e00000000000000000000000000000000000000000000000000000aa1a0544b4e00000000000000000000000000000000000000000000000000000000068887038d7ea4c6800084830493e0a065e1153724fd2f5ff59f8794fbb622f4cc8393d2a73c34c6f28d37f91bb466d6c0f1f0a0c264245df25118b8c2b07f8d67fab2bcdc6ea50a250f89e4aacf5cab94b3bc8c8ecd028902b5e3af16b18800008080c0a0bb10005672c3d6aa4789d31fc8c9974438a29d9f2c2088bf561028a0eaf0e327c0f8fcf0a0dc6e876c0166d362fb8e75d65c7e6aa3194249a28c6e185397c4065a3d4775538ecd808901a055ba12de4a0e008080f0a0c264245df25118b8c2b07f8d67fab2bcdc6ea50a250f89e4aacf5cab94b3bc8c8ecd038902b5d19a98391572008080f869a0307ef5b6f524d86f4783223cca2f67baceec4cdd95d073742263d86cd5d97b1ab846f8440180a0aa65597f36e56c54d93e90b2197d10700082248f17f81b1ec9d5c36d73856d71a0d7932f095f367134b7211f1d08fafb449b2f13aac2bda58fb63023e9ec7fd024eea070a8fb8879e438ba06a316511b6cb80492c75e441fdfe3b12a73c0a421d5e9768ccb808711c37937e080008080f86ef86ca0307ef5b6f524d86f4783223cca2f67baceec4cdd95d073742263d86cd5d97b1af842a06ecb72fb4a8a968cfe976c3e3b50582d474fd08e63c93bb32e299377a0f7db62a0b81fea19e0df371950d99277e1357bd6afdf82d711b435f64a5f3564d35ea894c60584830493dba074454d87909424b63e76ff09daba476ca16b34d53ac2a8e3bdfb8700d1f51656c0f8cdf0a0dc6e876c0166d362fb8e75d65c7e6aa3194249a28c6e185397c4065a3d4775538ecd808901a055e903f4d1f0008080f0a0c264245df25118b8c2b07f8d67fab2bcdc6ea50a250f89e4aacf5cab94b3bc8c8ecd048902b5d16ba7228d90008080f869a0307ef5b6f524d86f4783223cca2f67baceec4cdd95d073742263d86cd5d97b1ab846f8440180a05c26aad7fd3553d74897d0e03fb6be9e3643d688a11a31182714497d35da1f99a0d7932f095f367134b7211f1d08fafb449b2f13aac2bda58fb63023e9ec7fd024f86af868a0307ef5b6f524d86f4783223cca2f67baceec4cdd95d073742263d86cd5d97b1af842a0bd0a0377e72367b06a8043bc4fbdcb9b34acae35e8bfad9d2ea69cfef5b30fe5a06ecb72fb4a8a968cfe976c3e3b50582d474fd08e63c93bb32e299377a0f7db62c20203a0c346e80001d48127cdb5876f2d478c7208d414b4bca7f3ebab33978eaef919b9c0f89cf0a0c264245df25118b8c2b07f8d67fab2bcdc6ea50a250f89e4aacf5cab94b3bc8c8ecd058902b5d16ba7228d90008080f869a0307ef5b6f524d86f4783223cca2f67baceec4cdd95d073742263d86cd5d97b1ab846f8440180a0b932d25473dfa8123c0c063aca761586f82e1758f92363d1ba79861a394e525ea0d7932f095f367134b7211f1d08fafb449b2f13aac2bda58fb63023e9ec7fd024f86af868a0307ef5b6f524d86f4783223cca2f67baceec4cdd95d073742263d86cd5d97b1af842a06ecb72fb4a8a968cfe976c3e3b50582d474fd08e63c93bb32e299377a0f7db62a0bd0a0377e72367b06a8043bc4fbdcb9b34acae35e8bfad9d2ea69cfef5b30fe5c20104a0901f09473e73add9ab6fde162914917570f2ff14fa753783f3028a5517ec5335c0f8cbf0a0c264245df25118b8c2b07f8d67fab2bcdc6ea50a250f89e4aacf5cab94b3bc8c8ecd068902b5c6c32b343a10008080f869a0307ef5b6f524d86f4783223cca2f67baceec4cdd95d073742263d86cd5d97b1ab846f8440180a0645b9e6dcf179dccbfea1a351d8e57178e3c5a6dc13263cc8b1815c565a076a0a0d7932f095f367134b7211f1d08fafb449b2f13aac2bda58fb63023e9ec7fd024eea070a8fb8879e438ba06a316511b6cb80492c75e441fdfe3b12a73c0a421d5e9768ccb80871c6bf5263400008080f86ef86ca0307ef5b6f524d86f4783223cca2f67baceec4cdd95d073742263d86cd5d97b1af842a06ecb72fb4a8a968cfe976c3e3b50582d474fd08e63c93bb32e299377a0f7db62a0b81fea19e0df371950d99277e1357bd6afdf82d711b435f64a5f3564d35ea894c60484830493d8

Key: 536e617073686f74526f6f74 
Value: 14bda78e1d1c59da8f22091dbdb9aa85aa49e1fbc91480891a59b278666606c1

Key: 5472616e73616374696f6e496e6465785461696c 
Value: 0000000000000000

Key: 56445291982678df25c5543aa2235d84c0fcdbcada86ceba2821d6a938c5c348 
Value: f843a0390decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563a1a0546f6b656e00000000000000000000000000000000000000000000000000000a

Key: 61c264245df25118b8c2b07f8d67fab2bcdc6ea50a250f89e4aacf5cab94b3bc8c 
Value: cd808902b5e3af16b18800008080

Key: 61dc6e876c0166d362fb8e75d65c7e6aa3194249a28c6e185397c4065a3d477553 
Value: cd808901a055690d9db800008080

Key: 6200000000000000001e73f235740358a61fe456920c065f196a0a8ba89a02df915748ebb3cf8cdc1e 
Value: c2c0c0

Key: 6200000000000000010f8f7f364bfcd1bf3ce7fab7a1c4e21730a8ca55065dc497d3bce642adec5789 
Value: c2c0c0

Key: 62000000000000000138f9a6cf897be7c50b606dc83ada097a592af5462e0d6d3e428430c01eddd3c0 
Value: c2c0c0

Key: 6200000000000000020f4bd51e9c373f627732948b3485131fab74684859ba26094d98921baca44ee6 
Value: c2c0c0

Key: 6200000000000000037e6ea810a133555934ef8429718081436cc64ed61abf0466755ea11f63466fa4 
Value: f90fd1f90fcdf90fca80843b9aca00830d26898080b90f7660806040526040518060400160405280600581526020017f546f6b656e0000000000000000000000000000000000000000000000000000008152506000908051906020019062000051929190620001de565b506040518060400160405280600381526020017f544b4e0000000000000000000000000000000000000000000000000000000000815250600190805190602001906200009f929190620001de565b50600060025566038d7ea4c68000600355348015620000bd57600080fd5b5060405162000f5638038062000f568339818101604052810190620000e39190620002a5565b620493e060048190555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060045460076000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505062000384565b828054620001ec9062000305565b90600052602060002090601f0160209004810192826200021057600085556200025c565b82601f106200022b57805160ff19168380011785556200025c565b828001600101855582156200025c579182015b828111156200025b5782518255916020019190600101906200023e565b5b5090506200026b91906200026f565b5090565b5b808211156200028a57600081600090555060010162000270565b5090565b6000815190506200029f816200036a565b92915050565b600060208284031215620002b857600080fd5b6000620002c8848285016200028e565b91505092915050565b6000620002de82620002e5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200031e57607f821691505b602082108114156200033557620003346200033b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6200037581620002d1565b81146200038157600080fd5b50565b610bc280620003946000396000f3fe6080604052600436106100915760003560e01c806370a082311161005957806370a082311461017f57806395d89b41146101bc578063a9059cbb146101e7578063d0e30db014610224578063f088d5471461024f57610091565b8063047fc9aa1461009657806306fdde03146100c157806327e235e3146100ec578063313ce567146101295780634d853ee514610154575b600080fd5b3480156100a257600080fd5b506100ab61026b565b6040516100b8919061090f565b60405180910390f35b3480156100cd57600080fd5b506100d6610271565b6040516100e391906108ed565b60405180910390f35b3480156100f857600080fd5b50610113600480360381019061010e91906107c2565b6102ff565b604051610120919061090f565b60405180910390f35b34801561013557600080fd5b5061013e610317565b60405161014b919061090f565b60405180910390f35b34801561016057600080fd5b5061016961031d565b604051610176919061089c565b60405180910390f35b34801561018b57600080fd5b506101a660048036038101906101a191906107c2565b610343565b6040516101b3919061090f565b60405180910390f35b3480156101c857600080fd5b506101d161038c565b6040516101de91906108ed565b60405180910390f35b3480156101f357600080fd5b5061020e600480360381019061020991906107eb565b61041a565b60405161021b91906108d2565b60405180910390f35b34801561023057600080fd5b50610239610537565b60405161024691906108b7565b60405180910390f35b610269600480360381019061026491906107c2565b61055d565b005b60045481565b6000805461027e90610a8e565b80601f01602080910402602001604051908101604052809291908181526020018280546102aa90610a8e565b80156102f75780601f106102cc576101008083540402835291602001916102f7565b820191906000526020600020905b8154815290600101906020018083116102da57829003601f168201915b505050505081565b60076020528060005260406000206000915090505481565b60025481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6001805461039990610a8e565b80601f01602080910402602001604051908101604052809291908181526020018280546103c590610a8e565b80156104125780601f106103e757610100808354040283529160200191610412565b820191906000526020600020905b8154815290600101906020018083116103f557829003601f168201915b505050505081565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461046b91906109cd565b9250508190555081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104c19190610946565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610525919061090f565b60405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006003543461056d919061099c565b905080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105be9190610946565b925050819055508060076000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461063691906109cd565b92505081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156106a5573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610726919061090f565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161078c919061090f565b60405180910390a35050565b6000813590506107a781610b5e565b92915050565b6000813590506107bc81610b75565b92915050565b6000602082840312156107d457600080fd5b60006107e284828501610798565b91505092915050565b600080604083850312156107fe57600080fd5b600061080c85828601610798565b925050602061081d858286016107ad565b9150509250929050565b61083081610a13565b82525050565b61083f81610a01565b82525050565b61084e81610a25565b82525050565b600061085f8261092a565b6108698185610935565b9350610879818560208601610a5b565b61088281610b4d565b840191505092915050565b61089681610a51565b82525050565b60006020820190506108b16000830184610836565b92915050565b60006020820190506108cc6000830184610827565b92915050565b60006020820190506108e76000830184610845565b92915050565b600060208201905081810360008301526109078184610854565b905092915050565b6000602082019050610924600083018461088d565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095182610a51565b915061095c83610a51565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099157610990610ac0565b5b828201905092915050565b60006109a782610a51565b91506109b283610a51565b9250826109c2576109c1610aef565b5b828204905092915050565b60006109d882610a51565b91506109e383610a51565b9250828210156109f6576109f5610ac0565b5b828203905092915050565b6000610a0c82610a31565b9050919050565b6000610a1e82610a31565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a79578082015181840152602081019050610a5e565b83811115610a88576000848401525b50505050565b60006002820490506001821680610aa657607f821691505b60208210811415610aba57610ab9610b1e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b610b6781610a01565b8114610b7257600080fd5b50565b610b7e81610a51565b8114610b8957600080fd5b5056fea2646970667358221220eb439ff285b218b948dc0eebf95addacf92add09cc2d9b0902b68066caf18f0964736f6c634300080000330000000000000000000000009e37da22a361029be5602428170bf51285709d25820635a00c5cfc89b6e679cc252ff3ff1dc914f885c5de8c000426d8e9d53a22a3ad51c5a02545e270607328602a1204e253e4508fbd06f3426bd4556a269b267f33ba9ecbc0

Key: 62000000000000000480631a0e1e3f5ba3c24730f087a7480d373350b99033351cc41b83dd5ba3fcf0 
Value: c2c0c0

Key: 620000000000000005712a534784721b2cb73ce844c480d012b24960b973cd2e3b181117839a3d3733 
Value: c2c0c0

Key: 620000000000000006ae10829085b804b7666f3da5404b81d2272893052ee6724bec0bbe527cbd94a7 
Value: c2c0c0

Key: 620000000000000007dcd3222d2acb09103cafbd07fd1de9c4bd9c619a537ffc81dc4e23bebb53b5d5 
Value: f90fd8f90fd4f90fd101843b9aca00832dc6c0808711c37937e08000b90f7660806040526040518060400160405280600581526020017f546f6b656e0000000000000000000000000000000000000000000000000000008152506000908051906020019062000051929190620001de565b506040518060400160405280600381526020017f544b4e0000000000000000000000000000000000000000000000000000000000815250600190805190602001906200009f929190620001de565b50600060025566038d7ea4c68000600355348015620000bd57600080fd5b5060405162000f5638038062000f568339818101604052810190620000e39190620002a5565b620493e060048190555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060045460076000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505062000384565b828054620001ec9062000305565b90600052602060002090601f0160209004810192826200021057600085556200025c565b82601f106200022b57805160ff19168380011785556200025c565b828001600101855582156200025c579182015b828111156200025b5782518255916020019190600101906200023e565b5b5090506200026b91906200026f565b5090565b5b808211156200028a57600081600090555060010162000270565b5090565b6000815190506200029f816200036a565b92915050565b600060208284031215620002b857600080fd5b6000620002c8848285016200028e565b91505092915050565b6000620002de82620002e5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200031e57607f821691505b602082108114156200033557620003346200033b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6200037581620002d1565b81146200038157600080fd5b50565b610bc280620003946000396000f3fe6080604052600436106100915760003560e01c806370a082311161005957806370a082311461017f57806395d89b41146101bc578063a9059cbb146101e7578063d0e30db014610224578063f088d5471461024f57610091565b8063047fc9aa1461009657806306fdde03146100c157806327e235e3146100ec578063313ce567146101295780634d853ee514610154575b600080fd5b3480156100a257600080fd5b506100ab61026b565b6040516100b8919061090f565b60405180910390f35b3480156100cd57600080fd5b506100d6610271565b6040516100e391906108ed565b60405180910390f35b3480156100f857600080fd5b50610113600480360381019061010e91906107c2565b6102ff565b604051610120919061090f565b60405180910390f35b34801561013557600080fd5b5061013e610317565b60405161014b919061090f565b60405180910390f35b34801561016057600080fd5b5061016961031d565b604051610176919061089c565b60405180910390f35b34801561018b57600080fd5b506101a660048036038101906101a191906107c2565b610343565b6040516101b3919061090f565b60405180910390f35b3480156101c857600080fd5b506101d161038c565b6040516101de91906108ed565b60405180910390f35b3480156101f357600080fd5b5061020e600480360381019061020991906107eb565b61041a565b60405161021b91906108d2565b60405180910390f35b34801561023057600080fd5b50610239610537565b60405161024691906108b7565b60405180910390f35b610269600480360381019061026491906107c2565b61055d565b005b60045481565b6000805461027e90610a8e565b80601f01602080910402602001604051908101604052809291908181526020018280546102aa90610a8e565b80156102f75780601f106102cc576101008083540402835291602001916102f7565b820191906000526020600020905b8154815290600101906020018083116102da57829003601f168201915b505050505081565b60076020528060005260406000206000915090505481565b60025481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6001805461039990610a8e565b80601f01602080910402602001604051908101604052809291908181526020018280546103c590610a8e565b80156104125780601f106103e757610100808354040283529160200191610412565b820191906000526020600020905b8154815290600101906020018083116103f557829003601f168201915b505050505081565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461046b91906109cd565b9250508190555081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104c19190610946565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610525919061090f565b60405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006003543461056d919061099c565b905080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105be9190610946565b925050819055508060076000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461063691906109cd565b92505081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156106a5573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610726919061090f565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161078c919061090f565b60405180910390a35050565b6000813590506107a781610b5e565b92915050565b6000813590506107bc81610b75565b92915050565b6000602082840312156107d457600080fd5b60006107e284828501610798565b91505092915050565b600080604083850312156107fe57600080fd5b600061080c85828601610798565b925050602061081d858286016107ad565b9150509250929050565b61083081610a13565b82525050565b61083f81610a01565b82525050565b61084e81610a25565b82525050565b600061085f8261092a565b6108698185610935565b9350610879818560208601610a5b565b61088281610b4d565b840191505092915050565b61089681610a51565b82525050565b60006020820190506108b16000830184610836565b92915050565b60006020820190506108cc6000830184610827565b92915050565b60006020820190506108e76000830184610845565b92915050565b600060208201905081810360008301526109078184610854565b905092915050565b6000602082019050610924600083018461088d565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095182610a51565b915061095c83610a51565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099157610990610ac0565b5b828201905092915050565b60006109a782610a51565b91506109b283610a51565b9250826109c2576109c1610aef565b5b828204905092915050565b60006109d882610a51565b91506109e383610a51565b9250828210156109f6576109f5610ac0565b5b828203905092915050565b6000610a0c82610a31565b9050919050565b6000610a1e82610a31565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a79578082015181840152602081019050610a5e565b83811115610a88576000848401525b50505050565b60006002820490506001821680610aa657607f821691505b60208210811415610aba57610ab9610b1e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b610b6781610a01565b8114610b7257600080fd5b50565b610b7e81610a51565b8114610b8957600080fd5b5056fea2646970667358221220eb439ff285b218b948dc0eebf95addacf92add09cc2d9b0902b68066caf18f0964736f6c634300080000330000000000000000000000009e37da22a361029be5602428170bf51285709d25820636a07fe88542645be99a6dfdf71df018db474eca6c9614fa1fc0a1a95c3210fa0e2ca03aad95614f6e8b243b09e2f84183224904b46fa8f819e2cf92930a8ad10aa4b1c0

Key: 62000000000000000811b7b604d201333882701930394dbccd25f4996a742fb22a07533dc780a93868 
Value: f896f893f89102843b9aca0083015bfb943fca44394fbe0201b6652be4c12ca09abf6d337d8711c37937e08000a4f088d547000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287820635a05f878ef5a6537f16c6e753df1f4587770d23a6c3c42d471010a679f9c21ecdf8a0032b286b0e2467694e1bfc17f3e959e0cd4f2f8ecef7a3bcc9967ce0b537d20dc0

Key: 620000000000000009c9f96daadaa33e8a5ec9eb3b9f89c0041d134396a963b84ce080d2725fe6b10d 
Value: c2c0c0

Key: 62000000000000000ab1df49b5d210232a80d70dbc8cdb217deccab7a1d424663d7ca12ffa27551ff6 
Value: c2c0c0

Key: 62000000000000000bec4db3244096d0a5cc56c63d33703d711c03b0db43ebdde19a9dc10595725943 
Value: c2c0c0

Key: 62000000000000000ce9c7020f01a8ac23758adb687da79eef8ef681aae1554a45740e557045c46fb6 
Value: f8aff8acf8aa03843b9aca0082c99d943fca44394fbe0201b6652be4c12ca09abf6d337d80b844a9059cbb000000000000000000000000347438f5a3d26e224ca448b05e932566923ece0d0000000000000000000000000000000000000000000000000000000000000002820636a0709b8da3620dde13ce6574bd3e219251aee5ca8b216e2bb0e8d3662e9de6cf69a046ed389197239ced0b033f2b0b206c7d11386c4ad2c3e7aa81c88884a4b9d69cc0

Key: 62000000000000000d550ef95d4b0df69b7acac84df7ed1be580cade4f70a767a60094067df51c7fa0 
Value: c2c0c0

Key: 62000000000000000ee75a247eea47bca5c5906509210b54b8394f33979e2cd97601baeb323c29a009 
Value: c2c0c0

Key: 62000000000000000fbb96f2170d6b0daaf577061567d8df87bba8d754596d8d0ec1b6888555bfae3a 
Value: c2c0c0

Key: 62000000000000001012f5563cd14570e5a04f6c1d32887233ab994890ec073b460a3efda8d56dbcfd 
Value: c2c0c0

Key: 62000000000000001169b716aa64e971e2c8ee7bd15e34ac76e24019cdad1d60aed05ac6694b716822 
Value: c2c0c0

Key: 620000000000000012269345a7cf00a00c3c20a91016c58052480cfec7e99f4e0ca98e706d3dee8a29 
Value: c2c0c0

Key: 620000000000000013e4771621b2aab6ea457166c05c33cefe1801c4d957dd5c94182919a90fb0bb9a 
Value: f8aff8acf8aa04843b9aca00828f05943fca44394fbe0201b6652be4c12ca09abf6d337d80b844a9059cbb000000000000000000000000347438f5a3d26e224ca448b05e932566923ece0d0000000000000000000000000000000000000000000000000000000000000002820635a0754978db48d58102fc7ec14aaaa400db68348e3a672213a05aa725d8bf3c3564a031f2b77dbc264c9296a812b1451719a5d6fbcd8ee6e4c422733694007f77e104c0

Key: 6200000000000000140f225c53282f5e1171feeeb3fa87ef688285fab54e034824eb2a843a0015bf43 
Value: c2c0c0

Key: 620000000000000015094042e0f05f0b12139e7a50453b6ea3441abb0355698506b6bc521d5de88eb3 
Value: c2c0c0

Key: 620000000000000016ecd849b1dc96d1a672e3689b86eb5272b9c006662d5455e816b62439c124c54f 
Value: c2c0c0

Key: 620000000000000017aacc4e5cd69d19645a864422673937691773ea3fcacd7302104bcc62641f8b4c 
Value: f895f892f89005843b9aca0082bfbb943fca44394fbe0201b6652be4c12ca09abf6d337d870aa87bee538000a4f088d547000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287820636a043cee6c24edf889dbc6e058b326652b686feb3661c0d323dd98c7b331ac8f687a0403420aaf63d86a5994485b1ab08b0f226e4206062e7ae6a1177de55b530b38cc0

Key: 6200000000000000189c9dca1a408081a40a50ca777ed28ff99cabfc708b7fb9b494cb61ba1b223d20 
Value: c2c0c0

Key: 636c697175652d1e73f235740358a61fe456920c065f196a0a8ba89a02df915748ebb3cf8cdc1e 
Value: 7b226e756d626572223a302c2268617368223a22307831653733663233353734303335386136316665343536393230633036356631393661306138626138396130326466393135373438656262336366386364633165222c227369676e657273223a7b22307833343734333866356133643236653232346361343438623035653933323536363932336563653064223a7b7d2c22307835393862363539343638313561653630633638656333346437343762616536643136363930323837223a7b7d7d2c22726563656e7473223a7b7d2c22766f746573223a6e756c6c2c2274616c6c79223a7b7d7d

Key: 63d7932f095f367134b7211f1d08fafb449b2f13aac2bda58fb63023e9ec7fd024 
Value: 6080604052600436106100915760003560e01c806370a082311161005957806370a082311461017f57806395d89b41146101bc578063a9059cbb146101e7578063d0e30db014610224578063f088d5471461024f57610091565b8063047fc9aa1461009657806306fdde03146100c157806327e235e3146100ec578063313ce567146101295780634d853ee514610154575b600080fd5b3480156100a257600080fd5b506100ab61026b565b6040516100b8919061090f565b60405180910390f35b3480156100cd57600080fd5b506100d6610271565b6040516100e391906108ed565b60405180910390f35b3480156100f857600080fd5b50610113600480360381019061010e91906107c2565b6102ff565b604051610120919061090f565b60405180910390f35b34801561013557600080fd5b5061013e610317565b60405161014b919061090f565b60405180910390f35b34801561016057600080fd5b5061016961031d565b604051610176919061089c565b60405180910390f35b34801561018b57600080fd5b506101a660048036038101906101a191906107c2565b610343565b6040516101b3919061090f565b60405180910390f35b3480156101c857600080fd5b506101d161038c565b6040516101de91906108ed565b60405180910390f35b3480156101f357600080fd5b5061020e600480360381019061020991906107eb565b61041a565b60405161021b91906108d2565b60405180910390f35b34801561023057600080fd5b50610239610537565b60405161024691906108b7565b60405180910390f35b610269600480360381019061026491906107c2565b61055d565b005b60045481565b6000805461027e90610a8e565b80601f01602080910402602001604051908101604052809291908181526020018280546102aa90610a8e565b80156102f75780601f106102cc576101008083540402835291602001916102f7565b820191906000526020600020905b8154815290600101906020018083116102da57829003601f168201915b505050505081565b60076020528060005260406000206000915090505481565b60025481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6001805461039990610a8e565b80601f01602080910402602001604051908101604052809291908181526020018280546103c590610a8e565b80156104125780601f106103e757610100808354040283529160200191610412565b820191906000526020600020905b8154815290600101906020018083116103f557829003601f168201915b505050505081565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461046b91906109cd565b9250508190555081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104c19190610946565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610525919061090f565b60405180910390a36001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006003543461056d919061099c565b905080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105be9190610946565b925050819055508060076000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461063691906109cd565b92505081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156106a5573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610726919061090f565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161078c919061090f565b60405180910390a35050565b6000813590506107a781610b5e565b92915050565b6000813590506107bc81610b75565b92915050565b6000602082840312156107d457600080fd5b60006107e284828501610798565b91505092915050565b600080604083850312156107fe57600080fd5b600061080c85828601610798565b925050602061081d858286016107ad565b9150509250929050565b61083081610a13565b82525050565b61083f81610a01565b82525050565b61084e81610a25565b82525050565b600061085f8261092a565b6108698185610935565b9350610879818560208601610a5b565b61088281610b4d565b840191505092915050565b61089681610a51565b82525050565b60006020820190506108b16000830184610836565b92915050565b60006020820190506108cc6000830184610827565b92915050565b60006020820190506108e76000830184610845565b92915050565b600060208201905081810360008301526109078184610854565b905092915050565b6000602082019050610924600083018461088d565b92915050565b600081519050919050565b600082825260208201905092915050565b600061095182610a51565b915061095c83610a51565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561099157610990610ac0565b5b828201905092915050565b60006109a782610a51565b91506109b283610a51565b9250826109c2576109c1610aef565b5b828204905092915050565b60006109d882610a51565b91506109e383610a51565b9250828210156109f6576109f5610ac0565b5b828203905092915050565b6000610a0c82610a31565b9050919050565b6000610a1e82610a31565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610a79578082015181840152602081019050610a5e565b83811115610a88576000848401525b50505050565b60006002820490506001821680610aa657607f821691505b60208210811415610aba57610ab9610b1e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b610b6781610a01565b8114610b7257600080fd5b50565b610b7e81610a51565b8114610b8957600080fd5b5056fea2646970667358221220eb439ff285b218b948dc0eebf95addacf92add09cc2d9b0902b68066caf18f0964736f6c63430008000033

Key: 645b9e6dcf179dccbfea1a351d8e57178e3c5a6dc13263cc8b1815c565a076a0 
Value: f8f1a01850bddee67862a9af2082e4d07694b9ed03aa38bebf19987408df8742f2e72680a056445291982678df25c5543aa2235d84c0fcdbcada86ceba2821d6a938c5c348808080a0d2bb4990c06a9c281f404b2198ac0c82fe54b3ba2cba02293cf451a56fa947b480a0fdc6a00dce07edd22b7dde3ce0784d678f81074dec239b7e655a426d150f69748080a0cd6453f5c7b229738e3395ea246a1fc0cf94ee981e38510999ec61c97eb0259fa0b99aeecc2e339f42303b4e11c5501f8fae3d7f46a3c6cf001e18b009fb4cdafe8080a045d986e4459942ad7e5369c6e7aef44ab611cb0aeafb9131713fc71741c2625980

Key: 657468657265756d2d636f6e6669672d1e73f235740358a61fe456920c065f196a0a8ba89a02df915748ebb3cf8cdc1e 
Value: 7b22636861696e4964223a3737372c22686f6d657374656164426c6f636b223a302c22656970313530426c6f636b223a302c2265697031353048617368223a22307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030222c22656970313535426c6f636b223a302c22656970313538426c6f636b223a302c2262797a616e7469756d426c6f636b223a302c22636f6e7374616e74696e6f706c65426c6f636b223a302c2270657465727362757267426c6f636b223a302c22697374616e62756c426c6f636b223a302c22636c69717565223a7b22706572696f64223a36302c2265706f6368223a33303030307d7d

Key: 657468657265756d2d67656e657369732d14bda78e1d1c59da8f22091dbdb9aa85aa49e1fbc91480891a59b278666606c1 
Value: 7b22307833343734333866356133643236653232346361343438623035653933323536363932336563653064223a7b2262616c616e6365223a2230783161303535363930643964623830303030227d2c22307835393862363539343638313561653630633638656333346437343762616536643136363930323837223a7b2262616c616e6365223a2230783262356533616631366231383830303030227d7d

Key: 6800000000000000001e73f235740358a61fe456920c065f196a0a8ba89a02df915748ebb3cf8cdc1e 
Value: f9027ea00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a014bda78e1d1c59da8f22091dbdb9aa85aa49e1fbc91480891a59b278666606c1a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001808347b760808463ad7b9cb8890000000000000000000000000000000000000000000000000000000000000000347438f5a3d26e224ca448b05e932566923ece0d598b65946815ae60c68ec34d747bae6d166902870000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 6800000000000000001e73f235740358a61fe456920c065f196a0a8ba89a02df915748ebb3cf8cdc1e74 
Value: 01

Key: 6800000000000000006e 
Value: 1e73f235740358a61fe456920c065f196a0a8ba89a02df915748ebb3cf8cdc1e

Key: 6800000000000000010f8f7f364bfcd1bf3ce7fab7a1c4e21730a8ca55065dc497d3bce642adec5789 
Value: f90256a01e73f235740358a61fe456920c065f196a0a8ba89a02df915748ebb3cf8cdc1ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a014bda78e1d1c59da8f22091dbdb9aa85aa49e1fbc91480891a59b278666606c1a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001018347c94c808465982085b861da83010a1a846765746888676f312e31382e358777696e646f777300000000000d2b1853a51fa11a1847be4db05ecaa4fe3eaac2ebe48cfd97acff16b3fe87fe23ac08e2239a0e4635ab5a2cbb88fc6d59ff74c973e308ca4cf765cfa865bc9001a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 6800000000000000010f8f7f364bfcd1bf3ce7fab7a1c4e21730a8ca55065dc497d3bce642adec578974 
Value: 02

Key: 68000000000000000138f9a6cf897be7c50b606dc83ada097a592af5462e0d6d3e428430c01eddd3c0 
Value: f90256a01e73f235740358a61fe456920c065f196a0a8ba89a02df915748ebb3cf8cdc1ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a014bda78e1d1c59da8f22091dbdb9aa85aa49e1fbc91480891a59b278666606c1a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002018347c94c80846598204eb861da83010a1a846765746888676f312e31382e358777696e646f7773000000000018332383c8f4e98564293a2e388c75fe9bac4653eb0c76bde9c73575fb51eedb7fb73e0b76cbce4f9377c8096c2650178f67f2be2ee0b61bec449f872189da1600a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 68000000000000000138f9a6cf897be7c50b606dc83ada097a592af5462e0d6d3e428430c01eddd3c074 
Value: 03

Key: 6800000000000000016e 
Value: 38f9a6cf897be7c50b606dc83ada097a592af5462e0d6d3e428430c01eddd3c0

Key: 6800000000000000020f4bd51e9c373f627732948b3485131fab74684859ba26094d98921baca44ee6 
Value: f90256a038f9a6cf897be7c50b606dc83ada097a592af5462e0d6d3e428430c01eddd3c0a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a014bda78e1d1c59da8f22091dbdb9aa85aa49e1fbc91480891a59b278666606c1a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002028347db3d80846598208cb861da83010a1a846765746888676f312e31382e358777696e646f777300000000005e61f2c415355bda2da236c66ae557a76e3ae53f3616241b2e4dbe16aab33ad768f27752ffb3bae39547407cfadf7fe9f99ce5b84d5ab47c61643f39f04d8c3000a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 6800000000000000020f4bd51e9c373f627732948b3485131fab74684859ba26094d98921baca44ee674 
Value: 05

Key: 6800000000000000026e 
Value: 0f4bd51e9c373f627732948b3485131fab74684859ba26094d98921baca44ee6

Key: 6800000000000000036e 
Value: 7e6ea810a133555934ef8429718081436cc64ed61abf0466755ea11f63466fa4

Key: 6800000000000000037e6ea810a133555934ef8429718081436cc64ed61abf0466755ea11f63466fa4 
Value: f90259a00f4bd51e9c373f627732948b3485131fab74684859ba26094d98921baca44ee6a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a00b394ecf9c7b1fb0d8835b4455f76e7c6a8e2c5f0d75da9006cb7016ddc4a7a5a08cdca45c31df7b051a35b8bbfecd38abdf8c551acdd8802b8e215454e3d28b5fa03cf8c2e5e82a5e6315401b96c5f1b1fc61b5b6ee20517750b09d57ee16309482b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002038347ed32830d268984659820c8b861da83010a1a846765746888676f312e31382e358777696e646f77730000000000ea5ce1c846810570660343e861e531d326e74612e26d3a9b3f6ed4bd149775d018787c6f0fe268e6d7949b41f5f754feab349d5d5f3dabea04b15f5c0a0c505701a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 6800000000000000037e6ea810a133555934ef8429718081436cc64ed61abf0466755ea11f63466fa474 
Value: 07

Key: 6800000000000000046e 
Value: 80631a0e1e3f5ba3c24730f087a7480d373350b99033351cc41b83dd5ba3fcf0

Key: 68000000000000000480631a0e1e3f5ba3c24730f087a7480d373350b99033351cc41b83dd5ba3fcf0 
Value: f90256a07e6ea810a133555934ef8429718081436cc64ed61abf0466755ea11f63466fa4a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a00b394ecf9c7b1fb0d8835b4455f76e7c6a8e2c5f0d75da9006cb7016ddc4a7a5a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002048347ff2c808465982104b861da83010a1a846765746888676f312e31382e358777696e646f77730000000000a6c9a5cedbfc7afddaf699632148037b4f2aaae16e1bb60a18c878596576e6646adbced5b071daf0bac87df9be7d48e573d4b71019ec084d53398ed242337bdb01a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 68000000000000000480631a0e1e3f5ba3c24730f087a7480d373350b99033351cc41b83dd5ba3fcf074 
Value: 09

Key: 6800000000000000056e 
Value: 712a534784721b2cb73ce844c480d012b24960b973cd2e3b181117839a3d3733

Key: 680000000000000005712a534784721b2cb73ce844c480d012b24960b973cd2e3b181117839a3d3733 
Value: f90256a080631a0e1e3f5ba3c24730f087a7480d373350b99033351cc41b83dd5ba3fcf0a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a00b394ecf9c7b1fb0d8835b4455f76e7c6a8e2c5f0d75da9006cb7016ddc4a7a5a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002058348112a808465982140b861da83010a1a846765746888676f312e31382e358777696e646f77730000000000e022a819d16b2b43f755dccf639e7a06e61fd6f3273c07dc13b62153c4e7045b4dc65305cb405576357909a9cbed9a203a7f9143d2ad0e069d08ecbe1612d45c00a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 680000000000000005712a534784721b2cb73ce844c480d012b24960b973cd2e3b181117839a3d373374 
Value: 0b

Key: 6800000000000000066e 
Value: ae10829085b804b7666f3da5404b81d2272893052ee6724bec0bbe527cbd94a7

Key: 680000000000000006ae10829085b804b7666f3da5404b81d2272893052ee6724bec0bbe527cbd94a7 
Value: f90256a0712a534784721b2cb73ce844c480d012b24960b973cd2e3b181117839a3d3733a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a00b394ecf9c7b1fb0d8835b4455f76e7c6a8e2c5f0d75da9006cb7016ddc4a7a5a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002068348232d80846598217cb861da83010a1a846765746888676f312e31382e358777696e646f7773000000000088b62ae8e6f6b2b472ecb5e89ad0ffada846b9b26e58e3ac85fa95bf4427445745f0ea3374780f6418c7ed79d7bcca6765dfc8fcd3958b559152620a9884884900a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 680000000000000006ae10829085b804b7666f3da5404b81d2272893052ee6724bec0bbe527cbd94a774 
Value: 0d

Key: 6800000000000000076e 
Value: dcd3222d2acb09103cafbd07fd1de9c4bd9c619a537ffc81dc4e23bebb53b5d5

Key: 680000000000000007dcd3222d2acb09103cafbd07fd1de9c4bd9c619a537ffc81dc4e23bebb53b5d5 
Value: f90259a0ae10829085b804b7666f3da5404b81d2272893052ee6724bec0bbe527cbd94a7a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a065e1153724fd2f5ff59f8794fbb622f4cc8393d2a73c34c6f28d37f91bb466d6a0d0059d50bbf47ca32da1cbe5cb872b3710a65fbc0c136c77d9bf1d2cb512a298a07be663d402a85ccad516937ebf7dc92ad21c95586b8405e5ded195c5128de742b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000207834835348302ad3484659821b8b861da83010a1a846765746888676f312e31382e358777696e646f77730000000000e4dc0f142701cd4b80a9885d8cf6d273039fac26b0fa1033424a16da792f2e226cc6156cfff00ccd4b10b106a7042c93d9617aefac77e0c6dd7a17840c89a28b00a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 680000000000000007dcd3222d2acb09103cafbd07fd1de9c4bd9c619a537ffc81dc4e23bebb53b5d574 
Value: 0f

Key: 68000000000000000811b7b604d201333882701930394dbccd25f4996a742fb22a07533dc780a93868 
Value: f90259a0dcd3222d2acb09103cafbd07fd1de9c4bd9c619a537ffc81dc4e23bebb53b5d5a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0bb10005672c3d6aa4789d31fc8c9974438a29d9f2c2088bf561028a0eaf0e327a0b12902b5c24477e8b6fc0c746b4a85f29f27f5136831b2ccb7e1daef5d339746a05e774d709d3c52aea0b7857bc4a1c047fb0c7cdfdba190cce0023a1510498b44b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000800000000000000000000000000000010000000000000000002000000000000000000080000000000000000000002001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080200000000000010000000000000000000000000000000000000002000000000000000000000000000000000004000040000000000000000001000000002088348474083015bfb84659821f4b861da83010a1a846765746888676f312e31382e358777696e646f7773000000000065edfb3c7029036d8fffae211600bb34ec2ad6939b3b2c9a264634f98175d0406e243955b555d8c973124d578e9b8fbb082e2c5ebcbbf76b706b7eda4553a12001a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 68000000000000000811b7b604d201333882701930394dbccd25f4996a742fb22a07533dc780a9386874 
Value: 11

Key: 6800000000000000086e 
Value: 11b7b604d201333882701930394dbccd25f4996a742fb22a07533dc780a93868

Key: 6800000000000000096e 
Value: c9f96daadaa33e8a5ec9eb3b9f89c0041d134396a963b84ce080d2725fe6b10d

Key: 680000000000000009c9f96daadaa33e8a5ec9eb3b9f89c0041d134396a963b84ce080d2725fe6b10d 
Value: f90256a011b7b604d201333882701930394dbccd25f4996a742fb22a07533dc780a93868a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0bb10005672c3d6aa4789d31fc8c9974438a29d9f2c2088bf561028a0eaf0e327a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020983485950808465982230b861da83010a1a846765746888676f312e31382e358777696e646f77730000000000b92ad7708aadff15b7354578b923bc5b573270d0b766ecd19cf8c9f27d47cf684818253aa327baa7c5c53b84e2df5e1eb224d9200ad08c20d390b90d17ed148700a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 680000000000000009c9f96daadaa33e8a5ec9eb3b9f89c0041d134396a963b84ce080d2725fe6b10d74 
Value: 13

Key: 68000000000000000a6e 
Value: b1df49b5d210232a80d70dbc8cdb217deccab7a1d424663d7ca12ffa27551ff6

Key: 68000000000000000ab1df49b5d210232a80d70dbc8cdb217deccab7a1d424663d7ca12ffa27551ff6 
Value: f90256a0c9f96daadaa33e8a5ec9eb3b9f89c0041d134396a963b84ce080d2725fe6b10da01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0bb10005672c3d6aa4789d31fc8c9974438a29d9f2c2088bf561028a0eaf0e327a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a83486b6580846598226cb861da83010a1a846765746888676f312e31382e358777696e646f7773000000000053e98054fc89e5e56d8b5744782f02ce211bd9e40320b0e5a0ff3836a1e358eb366ad2b266758efcdd8b3bedbe9e879aa68b0b2066cd13ec9c2182600b8b74ce00a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 68000000000000000ab1df49b5d210232a80d70dbc8cdb217deccab7a1d424663d7ca12ffa27551ff674 
Value: 15

Key: 68000000000000000b6e 
Value: ec4db3244096d0a5cc56c63d33703d711c03b0db43ebdde19a9dc10595725943

Key: 68000000000000000bec4db3244096d0a5cc56c63d33703d711c03b0db43ebdde19a9dc10595725943 
Value: f90256a0b1df49b5d210232a80d70dbc8cdb217deccab7a1d424663d7ca12ffa27551ff6a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0bb10005672c3d6aa4789d31fc8c9974438a29d9f2c2088bf561028a0eaf0e327a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b83487d7e8084659822a8b861da83010a1a846765746888676f312e31382e358777696e646f7773000000000099e0bfd06558dd82d60e27256bac2a006237f54598cdc45cb0758ce87e4de4db074ff152f2d61e007b7e085a542802268d5daab2d995a35bbf62959e958724ab00a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 68000000000000000bec4db3244096d0a5cc56c63d33703d711c03b0db43ebdde19a9dc1059572594374 
Value: 17

Key: 68000000000000000c6e 
Value: e9c7020f01a8ac23758adb687da79eef8ef681aae1554a45740e557045c46fb6

Key: 68000000000000000ce9c7020f01a8ac23758adb687da79eef8ef681aae1554a45740e557045c46fb6 
Value: f90258a0ec4db3244096d0a5cc56c63d33703d711c03b0db43ebdde19a9dc10595725943a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a074454d87909424b63e76ff09daba476ca16b34d53ac2a8e3bdfb8700d1f51656a00927c2597e7c442cdb3990961ee87ac42f33ba896f3985a04db911a24840d3eca00668ac0b48379ef0c9873ebecd18c16d015e2d2366be6988f8dbb74465b8e71bb9010000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000400008000000100000000000000000000000100000000000000000000000000000000000000000000000000000000000020010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000002000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000010000000020c83488f9c82c99d84659822e4b861da83010a1a846765746888676f312e31382e358777696e646f777300000000009504f26bbb5683df5678ea6218271f47494ec371b2e54b2f06bd7b5398e9fa6d2dff0427f936c41635358d5923ffc9658015ce124456ba3beb55fe81552ae50601a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 68000000000000000ce9c7020f01a8ac23758adb687da79eef8ef681aae1554a45740e557045c46fb674 
Value: 19

Key: 68000000000000000d550ef95d4b0df69b7acac84df7ed1be580cade4f70a767a60094067df51c7fa0 
Value: f90256a0e9c7020f01a8ac23758adb687da79eef8ef681aae1554a45740e557045c46fb6a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a074454d87909424b63e76ff09daba476ca16b34d53ac2a8e3bdfb8700d1f51656a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d8348a1be808465982320b861da83010a1a846765746888676f312e31382e358777696e646f777300000000005af4f646b108ec291d1e7448e1f4438213c5ac114a1c046cd0202bbaac1c7c3b1cbcee37de6b6fc1ff00576a85a94aba0d91c1106acd4fcb77906f2effc70c8801a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 68000000000000000d550ef95d4b0df69b7acac84df7ed1be580cade4f70a767a60094067df51c7fa074 
Value: 1b

Key: 68000000000000000d6e 
Value: 550ef95d4b0df69b7acac84df7ed1be580cade4f70a767a60094067df51c7fa0

Key: 68000000000000000e6e 
Value: e75a247eea47bca5c5906509210b54b8394f33979e2cd97601baeb323c29a009

Key: 68000000000000000ee75a247eea47bca5c5906509210b54b8394f33979e2cd97601baeb323c29a009 
Value: f90256a0550ef95d4b0df69b7acac84df7ed1be580cade4f70a767a60094067df51c7fa0a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a074454d87909424b63e76ff09daba476ca16b34d53ac2a8e3bdfb8700d1f51656a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e8348b3e580846598235cb861da83010a1a846765746888676f312e31382e358777696e646f7773000000000031f31104a46261bcc1d492594266b73d1968e219bf6c18c2b8d95e4f2860078c287e5bce7e99f80d8a59db82597145bc588e6d2ef26d0eda00c2c279aa189f2a01a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 68000000000000000ee75a247eea47bca5c5906509210b54b8394f33979e2cd97601baeb323c29a00974 
Value: 1d

Key: 68000000000000000f6e 
Value: bb96f2170d6b0daaf577061567d8df87bba8d754596d8d0ec1b6888555bfae3a

Key: 68000000000000000fbb96f2170d6b0daaf577061567d8df87bba8d754596d8d0ec1b6888555bfae3a 
Value: f90256a0e75a247eea47bca5c5906509210b54b8394f33979e2cd97601baeb323c29a009a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a074454d87909424b63e76ff09daba476ca16b34d53ac2a8e3bdfb8700d1f51656a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f8348c610808465982398b861da83010a1a846765746888676f312e31382e358777696e646f77730000000000b4b0cd05b8013966cff7026b3c679f6837e5ba09fc6f96fb65a34bb3d7cbeb682b6318c8f2089755f04dd9f39efb668cb9c06ed6500035f86ba46652bbe3361a00a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 68000000000000000fbb96f2170d6b0daaf577061567d8df87bba8d754596d8d0ec1b6888555bfae3a74 
Value: 1f

Key: 68000000000000001012f5563cd14570e5a04f6c1d32887233ab994890ec073b460a3efda8d56dbcfd 
Value: f90256a0bb96f2170d6b0daaf577061567d8df87bba8d754596d8d0ec1b6888555bfae3aa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a074454d87909424b63e76ff09daba476ca16b34d53ac2a8e3bdfb8700d1f51656a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002108348d8408084659823d4b861da83010a1a846765746888676f312e31382e358777696e646f777300000000009ebee1abcad8d7ecb3c633e35caf3968c3a641a7c87ee6e32a32dfc3fe44847e073a05875f97dacb7737dc5726390b81b9bedbe56ec28cda62861aa2b89a0ede00a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 68000000000000001012f5563cd14570e5a04f6c1d32887233ab994890ec073b460a3efda8d56dbcfd74 
Value: 21

Key: 6800000000000000106e 
Value: 12f5563cd14570e5a04f6c1d32887233ab994890ec073b460a3efda8d56dbcfd

Key: 68000000000000001169b716aa64e971e2c8ee7bd15e34ac76e24019cdad1d60aed05ac6694b716822 
Value: f90256a012f5563cd14570e5a04f6c1d32887233ab994890ec073b460a3efda8d56dbcfda01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a074454d87909424b63e76ff09daba476ca16b34d53ac2a8e3bdfb8700d1f51656a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002118348ea75808465982410b861da83010a1a846765746888676f312e31382e358777696e646f77730000000000d557277203a6a92120d811bd03f120d4b9fa60a481726a7cfc2afd66367e529f5216acd4eac8bdbe1d2f17c14586198a470c25e355b2a4d56cf4d39cf675d0a401a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 68000000000000001169b716aa64e971e2c8ee7bd15e34ac76e24019cdad1d60aed05ac6694b71682274 
Value: 23

Key: 6800000000000000116e 
Value: 69b716aa64e971e2c8ee7bd15e34ac76e24019cdad1d60aed05ac6694b716822

Key: 680000000000000012269345a7cf00a00c3c20a91016c58052480cfec7e99f4e0ca98e706d3dee8a29 
Value: f90256a069b716aa64e971e2c8ee7bd15e34ac76e24019cdad1d60aed05ac6694b716822a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a074454d87909424b63e76ff09daba476ca16b34d53ac2a8e3bdfb8700d1f51656a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002128348fcae80846598244cb861da83010a1a846765746888676f312e31382e358777696e646f77730000000000e345d86811ecf26529f779308abab973d04020d4aa361d6476794bbce74692461d7a2cb1ef9bcbf520daeea761b69c169feb7ba7105e1ecd8a5212680b09965900a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 680000000000000012269345a7cf00a00c3c20a91016c58052480cfec7e99f4e0ca98e706d3dee8a2974 
Value: 25

Key: 6800000000000000126e 
Value: 269345a7cf00a00c3c20a91016c58052480cfec7e99f4e0ca98e706d3dee8a29

Key: 6800000000000000136e 
Value: e4771621b2aab6ea457166c05c33cefe1801c4d957dd5c94182919a90fb0bb9a

Key: 680000000000000013e4771621b2aab6ea457166c05c33cefe1801c4d957dd5c94182919a90fb0bb9a 
Value: f90258a0269345a7cf00a00c3c20a91016c58052480cfec7e99f4e0ca98e706d3dee8a29a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0c346e80001d48127cdb5876f2d478c7208d414b4bca7f3ebab33978eaef919b9a010f9c46c63924f937cc6827c81fad66888e235217ecce362ba467f4a38fe297ea0a19350f038712533ad4e581034bb36426a53a268a4ca7e7808786d264c84a575b9010000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000400008000000100000000000000000000000100000000000000000000000000000000000000000000000000000000000020010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000002000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000010000000021383490eec828f058465982488b861da83010a1a846765746888676f312e31382e358777696e646f77730000000000ac848068f33684f473148fad02967ee03fdbcf411aa7a988d78516a51163c40d0d07b53c5d4ad87140230aa3285c90843806b6178f624e123d9788957e59438e00a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 680000000000000013e4771621b2aab6ea457166c05c33cefe1801c4d957dd5c94182919a90fb0bb9a74 
Value: 27

Key: 6800000000000000140f225c53282f5e1171feeeb3fa87ef688285fab54e034824eb2a843a0015bf43 
Value: f90256a0e4771621b2aab6ea457166c05c33cefe1801c4d957dd5c94182919a90fb0bb9aa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0c346e80001d48127cdb5876f2d478c7208d414b4bca7f3ebab33978eaef919b9a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002148349212e8084659824c4b861da83010a1a846765746888676f312e31382e358777696e646f777300000000003a8a63364fd93b575679516448d15187b9cb53c1ae4761401a5721e9293b4aa8548ddb15f83ccbbc44243e8758c714619fd73686ac6caf21f2762c5dac7e99d901a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 6800000000000000140f225c53282f5e1171feeeb3fa87ef688285fab54e034824eb2a843a0015bf4374 
Value: 29

Key: 6800000000000000146e 
Value: 0f225c53282f5e1171feeeb3fa87ef688285fab54e034824eb2a843a0015bf43

Key: 680000000000000015094042e0f05f0b12139e7a50453b6ea3441abb0355698506b6bc521d5de88eb3 
Value: f90256a00f225c53282f5e1171feeeb3fa87ef688285fab54e034824eb2a843a0015bf43a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0c346e80001d48127cdb5876f2d478c7208d414b4bca7f3ebab33978eaef919b9a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021583493375808465982500b861da83010a1a846765746888676f312e31382e358777696e646f777300000000002f4dbb1baf76dc097ce0f8e369c8dde2ea94cdb88f9db8d8aa67b1e6f1a92eaf51dd72c528f644a71932019be5582642a0ca833cf5a023a87e3ac12826ba466f01a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 680000000000000015094042e0f05f0b12139e7a50453b6ea3441abb0355698506b6bc521d5de88eb374 
Value: 2b

Key: 6800000000000000156e 
Value: 094042e0f05f0b12139e7a50453b6ea3441abb0355698506b6bc521d5de88eb3

Key: 6800000000000000166e 
Value: ecd849b1dc96d1a672e3689b86eb5272b9c006662d5455e816b62439c124c54f

Key: 680000000000000016ecd849b1dc96d1a672e3689b86eb5272b9c006662d5455e816b62439c124c54f 
Value: f90256a0094042e0f05f0b12139e7a50453b6ea3441abb0355698506b6bc521d5de88eb3a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0c346e80001d48127cdb5876f2d478c7208d414b4bca7f3ebab33978eaef919b9a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000216834945c080846598253cb861da83010a1a846765746888676f312e31382e358777696e646f777300000000009dc2cdb93056954b3d8233d82c5309a3d1209df10103cbd8e96fb86cccf53a4425a426d6de2e0c2d0686ae2fcddd65286e7017e02a8146257073230432fb1d4201a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 680000000000000016ecd849b1dc96d1a672e3689b86eb5272b9c006662d5455e816b62439c124c54f74 
Value: 2d

Key: 6800000000000000176e 
Value: aacc4e5cd69d19645a864422673937691773ea3fcacd7302104bcc62641f8b4c

Key: 680000000000000017aacc4e5cd69d19645a864422673937691773ea3fcacd7302104bcc62641f8b4c 
Value: f90258a0ecd849b1dc96d1a672e3689b86eb5272b9c006662d5455e816b62439c124c54fa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0901f09473e73add9ab6fde162914917570f2ff14fa753783f3028a5517ec5335a018a6cca95f0dd357c45dfd720a31dc7230c521ce4edd973ae29e18ee41acc924a022b5ee2d993060e4340f3247e8b30ddc595ff9a46da79fcfd30987589ef16a53b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000800000000000000000000000000000010000000000000000002000000000000000000080000000000000000000002001000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080200000000000010000000000000000000000000000000000000002000000000000000000000000000000000004000040000000000000000001000000002178349581082bfbb8465982578b861da83010a1a846765746888676f312e31382e358777696e646f77730000000000a7552f2fe0246a2093c09f0da35126368b324d88b037d9023d8f4ebcca681ba8331bc61f40d5c2cccef9c910c7a7311f22f03b0e16edfda3cb4165453f449b9101a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 680000000000000017aacc4e5cd69d19645a864422673937691773ea3fcacd7302104bcc62641f8b4c74 
Value: 2f

Key: 6800000000000000186e 
Value: 9c9dca1a408081a40a50ca777ed28ff99cabfc708b7fb9b494cb61ba1b223d20

Key: 6800000000000000189c9dca1a408081a40a50ca777ed28ff99cabfc708b7fb9b494cb61ba1b223d20 
Value: f90256a0aacc4e5cd69d19645a864422673937691773ea3fcacd7302104bcc62641f8b4ca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a0901f09473e73add9ab6fde162914917570f2ff14fa753783f3028a5517ec5335a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021883496a658084659825b4b861da83010a1a846765746888676f312e31382e358777696e646f777300000000006b391898e56eb73fc892aa97af6c1567166bcec88b2b12e950650e70f41da8327f4a5b1039290ad0beebffc507c0e97399d17fc17e11a4fa84923be90e5274d101a00000000000000000000000000000000000000000000000000000000000000000880000000000000000

Key: 6800000000000000189c9dca1a408081a40a50ca777ed28ff99cabfc708b7fb9b494cb61ba1b223d2074 
Value: 31

Key: 6b942ece4d7f9a0a438b4c4398c7aa0759659f423ce0ea1ebd1a99a1ed8b0a06 
Value: f872a03c6e876c0166d362fb8e75d65c7e6aa3194249a28c6e185397c4065a3d477553b84ff84d808901a055690d9db80000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470

Key: 6c13de5befec02de33da1604762680d77043b9a91d3978965654b10d165bee3783 
Value: 07

Key: 6c2052629471a3e881f332a44eeaeab864f7448d7f01ce2a6a84d693c3c04d9f02 
Value: 13

Key: 6c27c3915e198232b2f5bf80dd8394b0a17441baa097b67f5201325db729c1b624 
Value: 0c

Key: 6c4f0c1a8dd4822735549bb046590e3be3515b0c02ccb42b46e9bd396cf7748a8f 
Value: 08

Key: 6c9ae49c4360f8848116993b7083b95ca56f70bb4a068505e2323ae78f1da02017 
Value: 03

Key: 6cf3e5864239840c8a1c61ef5edc876fd5084eb2aed8e45a0b81fd1132e65e9ef6 
Value: 17

Key: 6eb41bdb1e67124df99586217acccbf8cc2b8c86d115dd9ab9387ab5d94644ac 
Value: f872a03264245df25118b8c2b07f8d67fab2bcdc6ea50a250f89e4aacf5cab94b3bc8cb84ff84d808902b5e3af16b1880000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470

Key: 7200000000000000001e73f235740358a61fe456920c065f196a0a8ba89a02df915748ebb3cf8cdc1e 
Value: c0

Key: 7200000000000000010f8f7f364bfcd1bf3ce7fab7a1c4e21730a8ca55065dc497d3bce642adec5789 
Value: c0

Key: 72000000000000000138f9a6cf897be7c50b606dc83ada097a592af5462e0d6d3e428430c01eddd3c0 
Value: c0

Key: 7200000000000000020f4bd51e9c373f627732948b3485131fab74684859ba26094d98921baca44ee6 
Value: c0

Key: 7200000000000000037e6ea810a133555934ef8429718081436cc64ed61abf0466755ea11f63466fa4 
Value: c7c601830d2689c0

Key: 72000000000000000480631a0e1e3f5ba3c24730f087a7480d373350b99033351cc41b83dd5ba3fcf0 
Value: c0

Key: 720000000000000005712a534784721b2cb73ce844c480d012b24960b973cd2e3b181117839a3d3733 
Value: c0

Key: 720000000000000006ae10829085b804b7666f3da5404b81d2272893052ee6724bec0bbe527cbd94a7 
Value: c0

Key: 720000000000000007dcd3222d2acb09103cafbd07fd1de9c4bd9c619a537ffc81dc4e23bebb53b5d5 
Value: c7c6808302ad34c0

Key: 72000000000000000811b7b604d201333882701930394dbccd25f4996a742fb22a07533dc780a93868 
Value: f90145f901420183015bfbf9013af89b943fca44394fbe0201b6652be4c12ca09abf6d337df863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000009e37da22a361029be5602428170bf51285709d25a00000000000000000000000000000000000000000000000000000000000000005f89b943fca44394fbe0201b6652be4c12ca09abf6d337df863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000005

Key: 720000000000000009c9f96daadaa33e8a5ec9eb3b9f89c0041d134396a963b84ce080d2725fe6b10d 
Value: c0

Key: 72000000000000000ab1df49b5d210232a80d70dbc8cdb217deccab7a1d424663d7ca12ffa27551ff6 
Value: c0

Key: 72000000000000000bec4db3244096d0a5cc56c63d33703d711c03b0db43ebdde19a9dc10595725943 
Value: c0

Key: 72000000000000000ce9c7020f01a8ac23758adb687da79eef8ef681aae1554a45740e557045c46fb6 
Value: f8a5f8a30182c99df89df89b943fca44394fbe0201b6652be4c12ca09abf6d337df863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287a0000000000000000000000000347438f5a3d26e224ca448b05e932566923ece0da00000000000000000000000000000000000000000000000000000000000000002

Key: 72000000000000000d550ef95d4b0df69b7acac84df7ed1be580cade4f70a767a60094067df51c7fa0 
Value: c0

Key: 72000000000000000ee75a247eea47bca5c5906509210b54b8394f33979e2cd97601baeb323c29a009 
Value: c0

Key: 72000000000000000fbb96f2170d6b0daaf577061567d8df87bba8d754596d8d0ec1b6888555bfae3a 
Value: c0

Key: 72000000000000001012f5563cd14570e5a04f6c1d32887233ab994890ec073b460a3efda8d56dbcfd 
Value: c0

Key: 72000000000000001169b716aa64e971e2c8ee7bd15e34ac76e24019cdad1d60aed05ac6694b716822 
Value: c0

Key: 720000000000000012269345a7cf00a00c3c20a91016c58052480cfec7e99f4e0ca98e706d3dee8a29 
Value: c0

Key: 720000000000000013e4771621b2aab6ea457166c05c33cefe1801c4d957dd5c94182919a90fb0bb9a 
Value: f8a5f8a301828f05f89df89b943fca44394fbe0201b6652be4c12ca09abf6d337df863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287a0000000000000000000000000347438f5a3d26e224ca448b05e932566923ece0da00000000000000000000000000000000000000000000000000000000000000002

Key: 7200000000000000140f225c53282f5e1171feeeb3fa87ef688285fab54e034824eb2a843a0015bf43 
Value: c0

Key: 720000000000000015094042e0f05f0b12139e7a50453b6ea3441abb0355698506b6bc521d5de88eb3 
Value: c0

Key: 720000000000000016ecd849b1dc96d1a672e3689b86eb5272b9c006662d5455e816b62439c124c54f 
Value: c0

Key: 720000000000000017aacc4e5cd69d19645a864422673937691773ea3fcacd7302104bcc62641f8b4c 
Value: f90144f901410182bfbbf9013af89b943fca44394fbe0201b6652be4c12ca09abf6d337df863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000009e37da22a361029be5602428170bf51285709d25a00000000000000000000000000000000000000000000000000000000000000003f89b943fca44394fbe0201b6652be4c12ca09abf6d337df863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287a00000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000003

Key: 7200000000000000189c9dca1a408081a40a50ca777ed28ff99cabfc708b7fb9b494cb61ba1b223d20 
Value: c0

Key: 7365637572652d6b65792dc264245df25118b8c2b07f8d67fab2bcdc6ea50a250f89e4aacf5cab94b3bc8c 
Value: 598b65946815ae60c68ec34d747bae6d16690287

Key: 7365637572652d6b65792ddc6e876c0166d362fb8e75d65c7e6aa3194249a28c6e185397c4065a3d477553 
Value: 347438f5a3d26e224ca448b05e932566923ece0d

Key: 756e636c65616e2d73687574646f776e 
Value: c280c0

Key: 7bd5c1311be42d879c7635f2e2c947c4510cc56a774a46a639ff679307301647 
Value: f843a0200e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6a1a0544b4e0000000000000000000000000000000000000000000000000000000006

Key: 8f5bb97ac3912fe0d43f6a9cf3a3ad9c77cd09e160b4f49f90a85764419e974f 
Value: f872a03264245df25118b8c2b07f8d67fab2bcdc6ea50a250f89e4aacf5cab94b3bc8cb84ff84d068902b5c6c32b343a1000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470

Key: 901f09473e73add9ab6fde162914917570f2ff14fa753783f3028a5517ec5335 
Value: f891808080a093a3285c4be42ec174c50367947d2eed81517f736c41ede7bee725500eb626b5808080a009f7396d5786c8b4ed90375befcb946f5d4171751a923e1150d59e26e5f065b780808080a08f5bb97ac3912fe0d43f6a9cf3a3ad9c77cd09e160b4f49f90a85764419e974fa0c684824b36f4c9aa2c5030c4e4cd186a5bc019f67094cde180b108bddd8df17f808080

Key: 93a3285c4be42ec174c50367947d2eed81517f736c41ede7bee725500eb626b5 
Value: f869a0307ef5b6f524d86f4783223cca2f67baceec4cdd95d073742263d86cd5d97b1ab846f8440180a0645b9e6dcf179dccbfea1a351d8e57178e3c5a6dc13263cc8b1815c565a076a0a0d7932f095f367134b7211f1d08fafb449b2f13aac2bda58fb63023e9ec7fd024

Key: b99aeecc2e339f42303b4e11c5501f8fae3d7f46a3c6cf001e18b009fb4cdafe 
Value: eaa032575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8887038d7ea4c68000

Key: c684824b36f4c9aa2c5030c4e4cd186a5bc019f67094cde180b108bddd8df17f 
Value: f872a03c6e876c0166d362fb8e75d65c7e6aa3194249a28c6e185397c4065a3d477553b84ff84d808901a055e903f4d1f000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470

Key: cd6453f5c7b229738e3395ea246a1fc0cf94ee981e38510999ec61c97eb0259f 
Value: f87180a07bd5c1311be42d879c7635f2e2c947c4510cc56a774a46a639ff679307301647808080808080a0ef4506c2292c5df523ca7fa371ffaabc0ebb4ed51cb04f7f782a1333622561ae80808080a019c741fc9e48c28af06e35e49efa5d3ddab55115444e2ee2fdf4e5e6c0c137c3808080

Key: d2bb4990c06a9c281f404b2198ac0c82fe54b3ba2cba02293cf451a56fa947b4 
Value: e2a03ecb72fb4a8a968cfe976c3e3b50582d474fd08e63c93bb32e299377a0f7db6204

Key: ef4506c2292c5df523ca7fa371ffaabc0ebb4ed51cb04f7f782a1333622561ae 
Value: e6a0201fea19e0df371950d99277e1357bd6afdf82d711b435f64a5f3564d35ea89484830493d8

Key: fdc6a00dce07edd22b7dde3ce0784d678f81074dec239b7e655a426d150f6974 
Value: e6a03a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b84830493e0

Error: <nil>

Las transacciones al smart contract son (hashes de las transacciones):

La última transacción genera eventos/logs y además una transacción interna. Se valida en el bloque número 23

Los valores de los root tries son

  • transaction hash/Id:»0xf3e5864239840c8a1c61ef5edc876fd5084eb2aed8e45a0b81fd1132e65e9ef6″
  • transactionsRoot: «0x18a6cca95f0dd357c45dfd720a31dc7230c521ce4edd973ae29e18ee41acc924»
  • receiptsRoot: «0x22b5ee2d993060e4340f3247e8b30ddc595ff9a46da79fcfd30987589ef16a53»

Transaction Trie

Esta transacción aparece en el body del bloque 23:

Key: 620000000000000017aacc4e5cd69d19645a864422673937691773ea3fcacd7302104bcc62641f8b4c
Value: f895f892f89005843b9aca0082bfbb943fca44394fbe0201b6652be4c12ca09abf6d337d870aa87bee538000a4f088d547000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287820636a043cee6c24edf889dbc6e058b326652b686feb3661c0d323dd98c7b331ac8f687a0403420aaf63d86a5994485b1ab08b0f226e4206062e7ae6a1177de55b530b38cc0

Al decodificar el valor hay que tener algo de cuidado pues parece que este volcado de la leveldb herramienta introduce corchetes que luego para calcular los hashes hay que eliminar, p. ej con https://toolkit.abdk.consulting/ethereum#rlp decodificado sería

[[["0x05","0x3b9aca00","0xbfbb","0x3fca44394fbe0201b6652be4c12ca09abf6d337d","0x0aa87bee538000","0xf088d547000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287","0x0636","0x43cee6c24edf889dbc6e058b326652b686feb3661c0d323dd98c7b331ac8f687","0x403420aaf63d86a5994485b1ab08b0f226e4206062e7ae6a1177de55b530b38c"]],[]]

Elimiminando los corchetes que sobran tenemos el mismo valor decodificado qeu obtendríamos con la consola geth solicitando el RawTransaction

["0x05","0x3b9aca00","0xbfbb","0x3fca44394fbe0201b6652be4c12ca09abf6d337d","0x0aa87bee538000","0xf088d547000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287","0x0636","0x43cee6c24edf889dbc6e058b326652b686feb3661c0d323dd98c7b331ac8f687","0x403420aaf63d86a5994485b1ab08b0f226e4206062e7ae6a1177de55b530b38c"]

codificando en RLP este valor JSON:
0xf89005843b9aca0082bfbb943fca44394fbe0201b6652be4c12ca09abf6d337d870aa87bee538000a4f088d547000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287820636a043cee6c24edf889dbc6e058b326652b686feb3661c0d323dd98c7b331ac8f687a0403420aaf63d86a5994485b1ab08b0f226e4206062e7ae6a1177de55b530b38c

De esta manera tenemos el valor correcto del hash de la transacción (https://emn178.github.io/online-tools/keccak_256.html):

Para calcular el Transaction Trie hay que tener en cuenta:

  • Es un Merkle Patrice Trie como el State Trie (ver la entrada Ethereum: explorando base de datos leveldb)
  • La ruta o path para ir accediendo a los nodos del árbol es el índice de la transacción en el array de transacciones que se incluyen en el bloqueque, la primera transacción tiene índice=0, la segunda índice=1, etc. (en el State Trie la ruta o path era el hash de la address de la cuenta)
  • Hay que tener en cuenta losprefijos según el tipo de nodo (branch, leaf, extension, teniendo en cuenta que los extension se introducen cuando hay al menos 2 bytes de la ruta que se comparten por los nodos por debajo)
  • Lo que se almacena es el valor codificado RLP de la transacción raw (Nota: estamos usando transacciones de tipo Legacy, según EIP-2718)

En este caso tenemos una única transacción en el bloque, por lo que será un nodo hoja (leaf). Una búsqueda en la base de datos LevelDB del transaction Root no encuentra nada (al existir únicamente un nodo no se almacena, el hash se calcula e introduce directamente en el header del bloque)

Por tanto, la primera transacción tiene índice=0, que codificado en RLP es 0x80 (hexadecimal), el path o ruta es por tanto 0x80, con un número par de bytes. Por tanto al ser nodo hoja y ruta par el prefijo es 0x20. El trie node es por tanto el siguiente (el valor de la transacción es el que corresponde al RawTransaction, :

0x20800xf89005843b9aca0082bfbb943fca44394fbe0201b6652be4c12ca09abf6d337d870aa87bee538000a4f088d547000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287820636a043cee6c24edf889dbc6e058b326652b686feb3661c0d323dd98c7b331ac8f687a0403420aaf63d86a5994485b1ab08b0f226e4206062e7ae6a1177de55b530b38c

Por tanto, el hash que hay que calcular para el trie root node es el del JSON formado por esos valores del nodo, codificado con RLP:

Keccak256(RLP Encode (
["0x2080","0xf89005843b9aca0082bfbb943fca44394fbe0201b6652be4c12ca09abf6d337d870aa87bee538000a4f088d547000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287820636a043cee6c24edf889dbc6e058b326652b686feb3661c0d323dd98c7b331ac8f687a0403420aaf63d86a5994485b1ab08b0f226e4206062e7ae6a1177de55b530b38c"] ) )
Codificación RLP del trie node
Hash de la codificación anterior, que coincide con el transaction root que se incluye en el header del bloque:

En caso de que hubiera más transacciones en el bloque, simplemente habría que ir construyendo el Trie, incluyendo nodos branch, y extension, y teniendo en cuenta los prefijos y las rutas/paths (un nodo branch o rama no tiene prefijo, sino 17 campos).

Trie para una transacción:

Trie para 2 transacciones

Trie para 3 transacciones (se añade otro nodo branch)

Ejemplo el Transaction Node para 2 transacciones en un bloque

Para hacer una comprobación real, en otra ejecución de la blockchain con el mismo bloque génesis, y usando el mismo smart contract, efectuamos dos transacciones (compra de tokens y transferencia de tokens) que se producen en el mismo bloque. Para ello, en estas pruebas hay que poner en el génesis un valor del parámetro «period» un valor en segundos apropiado para que nos de tiempo. Además, Si usamos Remix, entonces hay que lanzar una instancia distinta para cada transacción que queramos hacer (se produce un error si desde un mismo Remix efectuamos varias transacciones a la vez sin esperar a que la primera se complete). Ambas instancias de Remix han de conectarse a la blockchain local, y cada una de ellas a su vez, cargar el archivo con el smart contract (código solidity), compilarlo, y entonces usar el menú para conectarse a un smart contract mediante su address (que conocemos cuando lo desplegamos)

Efectuamos las dos transacciones, una en cada instancia de Remix (en este caso en dos ventanas del navegador):

En la consola geth obtenemos los datos del bloque:

> eth.getBlock(6)
{
  difficulty: 2,
  extraData: "0xda83010a1a846765746888676f312e31382e358777696e646f77730000000000a41ca57faf4df3fceb34e3aad91a2fc9e9fc95919c274123bc9befb6795bdc3434ae74e3c45ca87e4b83803df905639a8cd0448a180f0dd4814cacadc1603ca601",
  gasLimit: 4727597,
  gasUsed: 55555,
  hash: "0x79270fe522c11633a57c4e9d3599d3bbec0905deb8dfcd479cb95626edad54a2",
  logsBloom: "0x00000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400008000000000000000000000000000000100000000000000000020000000000000000000800000000000000000000020010001000000400000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000020000000000000000000000000000000000040000000000000000000000010000000",
  miner: "0x0000000000000000000000000000000000000000",
  mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
  nonce: "0x0000000000000000",
  number: 6,
  parentHash: "0x1b3aa2288ead1089b70c019bf09bd0a38690fe885bcedae0e22c03ad26db57b4",
  receiptsRoot: "0xfe0329c5eb0228a0ae4da8f1a060edc7b140671bcd068e50fc6419f5ecd7102f",
  sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
  size: 921,
  stateRoot: "0xf2ce9ca457ce3bb993382c660d333aa993c64a1a3e0ea6e13244b25cbe245e5f",
  timestamp: 1704809267,
  totalDifficulty: 13,
  transactions: ["0x6103ba3e299a9a0e9e8021d2b653eb65e433678cd57377fbfe08a019227faca5", "0xa5e5aac50eb7a2b3411a6aedf7135d58b43d7a545a3ecbb57d699011c477eb16"],
  transactionsRoot: "0xa07167dc2d3c9975c70fc35b6de7b8f3d6aad365e0634ef18719c3310c8caeb1",
  uncles: []
}

El contenido en la base de datos LevelDB para este bloque es el siguiente:

Key: 62000000000000000679270fe522c11633a57c4e9d3599d3bbec0905deb8dfcd479cb95626edad54a2 
Value: f9013bf90137f88904843b9aca008284bf943fca44394fbe0201b6652be4c12ca09abf6d337d80a4f088d547000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287820636a04bafedffb9e12e871e1e1a91310f46caaf85a44dce8b78715ab976c965a7be9aa0536135cc6d919104f67461f900ff0dbabb3d0c088d2401545d6a7abe8af6f7cdf8aa05843b9aca0082544494a7941c445b42e38722ed7a3e3dce04c06b6a946880b844a9059cbb000000000000000000000000347438f5a3d26e224ca448b05e932566923ece0d0000000000000000000000000000000000000000000000000000000000000001820636a09f158da7f92986d90038e4d314fcfb0521de5fb45fc2ee5c5347364ec8ce030aa075f17bea97b865fde896430cf903a3bd7e254626e6a59bbb14f5ff5d5e797383c0

Decodificado:
["0x04","0x3b9aca00","0x84bf","0x3fca44394fbe0201b6652be4c12ca09abf6d337d","0x","0xf088d547000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287","0x0636","0x4bafedffb9e12e871e1e1a91310f46caaf85a44dce8b78715ab976c965a7be9a","0x536135cc6d919104f67461f900ff0dbabb3d0c088d2401545d6a7abe8af6f7cd"],["0x05","0x3b9aca00","0x5444","0xa7941c445b42e38722ed7a3e3dce04c06b6a9468","0x","0xa9059cbb000000000000000000000000347438f5a3d26e224ca448b05e932566923ece0d0000000000000000000000000000000000000000000000000000000000000001","0x0636","0x9f158da7f92986d90038e4d314fcfb0521de5fb45fc2ee5c5347364ec8ce030a","0x75f17bea97b865fde896430cf903a3bd7e254626e6a59bbb14f5ff5d5e797383"]

Tenemos las dos transacciones. Para crear el Transcation Trie necesitamos los valores codificados RLP de ellas, junto con los prefijos (visto antes) y calcular los hashes:

Primera Transacción (índice=0)

Tx(0)
["0x04","0x3b9aca00","0x84bf","0x3fca44394fbe0201b6652be4c12ca09abf6d337d","0x","0xf088d547000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287","0x0636","0x4bafedffb9e12e871e1e1a91310f46caaf85a44dce8b78715ab976c965a7be9a","0x536135cc6d919104f67461f900ff0dbabb3d0c088d2401545d6a7abe8af6f7cd"]

codificada RLP (Raw transaction)
0xf88904843b9aca008284bf943fca44394fbe0201b6652be4c12ca09abf6d337d80a4f088d547000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287820636a04bafedffb9e12e871e1e1a91310f46caaf85a44dce8b78715ab976c965a7be9aa0536135cc6d919104f67461f900ff0dbabb3d0c088d2401545d6a7abe8af6f7cd

Segunda Transacción (índice=1)

Tx(1)
["0x05","0x3b9aca00","0x5444","0xa7941c445b42e38722ed7a3e3dce04c06b6a9468","0x","0xa9059cbb000000000000000000000000347438f5a3d26e224ca448b05e932566923ece0d0000000000000000000000000000000000000000000000000000000000000001","0x0636","0x9f158da7f92986d90038e4d314fcfb0521de5fb45fc2ee5c5347364ec8ce030a","0x75f17bea97b865fde896430cf903a3bd7e254626e6a59bbb14f5ff5d5e797383"]

codificada RLP (Raw transaction)
0xf8aa05843b9aca0082544494a7941c445b42e38722ed7a3e3dce04c06b6a946880b844a9059cbb000000000000000000000000347438f5a3d26e224ca448b05e932566923ece0d0000000000000000000000000000000000000000000000000000000000000001820636a09f158da7f92986d90038e4d314fcfb0521de5fb45fc2ee5c5347364ec8ce030aa075f17bea97b865fde896430cf903a3bd7e254626e6a59bbb14f5ff5d5e797383

Ahora tenemos que calcular los valores codificados RLP de los nodos, el de la transacción 0 con el prefijo 0x30 y el de la transacción 1 con el prefijo 0x31

  • Nodo Tx(0) = [«0x30», «0xf889….f7cd»] (valor Raw transaction)
  • Nodo Tx(1) = [«0x31», «0xf8aa….7383»] (valor Raw transaction)

Lo siguiente es calcular el hash de cada nodo y crear el nodo branch, que es el root del Trie Transaction, y su hash, que coincide con el transaction root del bloque:

  • hash Nodo Tx(0) = d8a7a6bb06ac2a0ad84dea9e92a38bb33e75c58b09846461a91564404458e160
  • hash Nodo Tx(1) = df4d669589d08ee1b65aaebfe4cdc9caac872ae3f541d5907b19897225990ae5

Nodo Branch (root): [«0xdf4d669589d08ee1b65aaebfe4cdc9caac872ae3f541d5907b19897225990ae5″,»0x»,»0x»,»0x»,»0x»,»0x»,»0x»,»0x»,»0xd8a7a6bb06ac2a0ad84dea9e92a38bb33e75c58b09846461a91564404458e160″,»0x»,»0x»,»0x»,»0x»,»0x»,»0x»,»0x»,»0x»]

hash del Nodo branch: a07167dc2d3c9975c70fc35b6de7b8f3d6aad365e0634ef18719c3310c8caeb1 que es igual al que indica el bloque como Transaction Root

El Receipt Trie sería totalmente similar, salvo que en lugar del valor codificado RLP de la transacción se efectúa sobre la tupla [ status, cumulative gas, logsBloom, array de logs], en el caso de un receipt legacy

Logs/Eventos

Todos los logs aparecen en la base de datos LevelDB con el prefijo 72000…En el smart contract hemos puesto que se lancen eventos del tipo Transfer(cuenta origen, cuenta destino, cantidad) al hacer la transacción de compra de tokens o traspasarlos a otra cuenta.

Los eventos/logs en Ethereum se almacenan mediante una firma que es el hash de la función y los argumentos del evento, existiendo bases de datos que los van recogiendo (https://www.4byte.directory/event-signatures/)

Los eventos muestran los datos sin hashear, por lo que están a la vista. Por ejemplo, uno de ellos muestra la dirección de la cuenta a la que hemos transferido tokens (la de nuestro Nodo 2), que no ha participado en la blockchain (no ha efectuado transacciones) pero el evento/log ya desvela su existencia

El topic del evento (0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef) se calcula haciendo el hash de la función sólo con los tipos de datos

Transacción interna

Las transacciones internas no aparecen en la base de datos LevelDB ni en la blockchain, son el resultado de la ejecución de los smart contracts en la EVM y podrían obtenerse haciendo una traza de lo que la máquina EVM va ejecutando.

En este ejemplo tenemos una transacción interna para transferir los ETH pagados por un comprador de tokens a la cuenta depósito:

  • cuenta Smart contract: 3fca44394fbe0201b6652be4c12ca09abf6d337d
  • cuenta deposit: 0x9e37da22a361029be5602428170bf51285709d25

La cuenta deposit aparece en la blockchain en la creación del contrato, y en los eventos/logs, y también en la rama correspondiente al Storage Trie del smart contract (para almacenar esta variable)

Key: 45d986e4459942ad7e5369c6e7aef44ab611cb0aeafb9131713fc71741c26259

Value: f7a03652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f95949e37da22a361029be5602428170bf51285709d25
Decodificado:
["0x3652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f","0x949e37da22a361029be5602428170bf51285709d25"]

No hay más rastro de esta cuenta ni ninguna transacción asociada a ella, pero podemos buscar en el State Trie. El hash de la cuenta para buscar el state trie, (buscaremos por los últimos caracteres de este hash, pues sabemos que los primeros serán los que van a ir formando parte de la ruta/path en el state trie)

Keccac256(deposit) = 70a8fb8879e438ba06a316511b6cb80492c75e441fdfe3b12a73c0a421d5e976

Aparece el valor truncado,(la parte correspondienta al state trie):

Key: 09f7396d5786c8b4ed90375befcb946f5d4171751a923e1150d59e26e5f065b7

Value: f870a030a8fb8879e438ba06a316511b6cb80492c75e441fdfe3b12a73c0a421d5e976b84df84b80871c6bf526340000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470

decodificado
["0x30a8fb8879e438ba06a316511b6cb80492c75e441fdfe3b12a73c0a421d5e976","0xf84b80871c6bf526340000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"]

En la decodificación tenemos un nodo hoja, con prefijo 0x30 (nodo hoja con resto de ruta/path impar y primer valor/nibble ‘0’) y el valor que decodificado muestra los datos de la cuenta:

El estado de esta cuenta incluye el nonce (0, no ha hecho transacciones), su balance (0x1c6bf526340000 es en decimal 8000000000000000 wei, hemos comprado dos veces, la primera 5 tokens y la segunda 3), y los valores nulos correspondientes al storageRoot y el codeHash (no es un contrato, sino una cuenta EOA).

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.