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:
- Despliegue de la blockchain privada, smatcontract y algunas transacciones
- Base de datos levelDB
- Transaction trie, receipts trie
- Eventos/logs
- Transacción interna
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).
Cuenta depósito: 0x9e37da22a361029be5602428170bf51285709d25
Las cuentas que teníamos de los nodos son:
- Nodo 1: 0x598B65946815Ae60c68ec34D747bAE6D16690287
- Nodo 2: 0x3FCA44394FbE0201B6652Be4c12Ca09aBF6d337D
Desplegamos el contrato con la cuenta del Nodo 1:
Ya podemos efectuar las transacciones para esta prueba, que van a ser:
- Comprar 5 tokens por la cuenta del Nodo 1
- Transferir 2 tokens por la cuenta del Nodo 1 a la cuenta del Nodo 2
- Transferir 2 tokens por la cuenta del Nodo 1 a la cuenta del Nodo 2
- 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):
Transacción | Hash (Id) de la transacción |
---|---|
cuenta 1 Comprar 5 tokens | 0x4f0c1a8dd4822735549bb046590e3be3515b0c02ccb42b46e9bd396cf7748a8f |
transferir 2 tokens de cuenta 1 a la cuenta 2 | 0x27c3915e198232b2f5bf80dd8394b0a17441baa097b67f5201325db729c1b624 |
transferir 2 tokens de cuenta 1 a la cuenta 2 | 0x2052629471a3e881f332a44eeaeab864f7448d7f01ce2a6a84d693c3c04d9f02 |
cuenta 1 Comprar 3 tokens | 0xf3e5864239840c8a1c61ef5edc876fd5084eb2aed8e45a0b81fd1132e65e9ef6 |
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, :
0x2080 | 0xf89005843b9aca0082bfbb943fca44394fbe0201b6652be4c12ca09abf6d337d870aa87bee538000a4f088d547000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287820636a043cee6c24edf889dbc6e058b326652b686feb3661c0d323dd98c7b331ac8f687a0403420aaf63d86a5994485b1ab08b0f226e4206062e7ae6a1177de55b530b38c |
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"] ) )
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
Key: 72000000000000000ce9c7020f01a8ac23758adb687da79eef8ef681aae1554a45740e557045c46fb6 Value: f8a5f8a30182c99df89df89b943fca44394fbe0201b6652be4c12ca09abf6d337df863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287a0000000000000000000000000347438f5a3d26e224ca448b05e932566923ece0da00000000000000000000000000000000000000000000000000000000000000002 Decodificado [["0x01","0xc99d",[["0x3fca44394fbe0201b6652be4c12ca09abf6d337d",["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x000000000000000000000000598b65946815ae60c68ec34d747bae6d16690287","0x000000000000000000000000347438f5a3d26e224ca448b05e932566923ece0d"],"0x0000000000000000000000000000000000000000000000000000000000000002"]]]]
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).