⟁ Tendermint Core (BFT Consensus) in Go

Overview

Tendermint

banner

Byzantine-Fault Tolerant State Machines. Or Blockchain, for short.

version API Reference Go version Discord chat license tendermint/tendermint Sourcegraph

Branch Tests Coverage Linting
master Tests codecov Lint

Tendermint Core is Byzantine Fault Tolerant (BFT) middleware that takes a state transition machine - written in any programming language - and securely replicates it on many machines.

For protocol details, see the specification.

For detailed analysis of the consensus protocol, including safety and liveness proofs, see our recent paper, "The latest gossip on BFT consensus".

Releases

Please do not depend on master as your production branch. Use releases instead.

Tendermint is being used in production in both private and public environments, most notably the blockchains of the Cosmos Network. However, we are still making breaking changes to the protocol and the APIs and have not yet released v1.0. See below for more details about versioning.

In any case, if you intend to run Tendermint in production, we're happy to help. You can contact us over email or join the chat.

Security

To report a security vulnerability, see our bug bounty program. For examples of the kinds of bugs we're looking for, see our security policy.

We also maintain a dedicated mailing list for security updates. We will only ever use this mailing list to notify you of vulnerabilities and fixes in Tendermint Core. You can subscribe here.

Minimum requirements

Requirement Notes
Go version Go1.15 or higher

Documentation

Complete documentation can be found on the website.

Install

See the install instructions.

Quick Start

Contributing

Please abide by the Code of Conduct in all interactions.

Before contributing to the project, please take a look at the contributing guidelines and the style guide. You may also find it helpful to read the specifications, watch the Developer Sessions, and familiarize yourself with our Architectural Decision Records.

Versioning

Semantic Versioning

Tendermint uses Semantic Versioning to determine when and how the version changes. According to SemVer, anything in the public API can change at any time before version 1.0.0

To provide some stability to Tendermint users in these 0.X.X days, the MINOR version is used to signal breaking changes across a subset of the total public API. This subset includes all interfaces exposed to other processes (cli, rpc, p2p, etc.), but does not include the Go APIs.

That said, breaking changes in the following packages will be documented in the CHANGELOG even if they don't lead to MINOR version bumps:

  • crypto
  • config
  • libs
    • bits
    • bytes
    • json
    • log
    • math
    • net
    • os
    • protoio
    • rand
    • sync
    • strings
    • service
  • node
  • rpc/client
  • types

Upgrades

In an effort to avoid accumulating technical debt prior to 1.0.0, we do not guarantee that breaking changes (ie. bumps in the MINOR version) will work with existing Tendermint blockchains. In these cases you will have to start a new blockchain, or write something custom to get the old data into the new chain. However, any bump in the PATCH version should be compatible with existing blockchain histories.

For more information on upgrading, see UPGRADING.md.

Supported Versions

Because we are a small core team, we only ship patch updates, including security updates, to the most recent minor release and the second-most recent minor release. Consequently, we strongly recommend keeping Tendermint up-to-date. Upgrading instructions can be found in UPGRADING.md.

Resources

Tendermint Core

For details about the blockchain data structures and the p2p protocols, see the Tendermint specification.

For details on using the software, see the documentation which is also hosted at: https://docs.tendermint.com/master/

Tools

Benchmarking is provided by tm-load-test. Additional tooling can be found in /docs/tools.

Applications

Research

Join us!

Tendermint Core is maintained by Interchain GmbH. If you'd like to work full-time on Tendermint Core, we're hiring!

Funding for Tendermint Core development comes primarily from the Interchain Foundation, a Swiss non-profit. The Tendermint trademark is owned by Tendermint Inc., the for-profit entity that also maintains tendermint.com.

Issues
  • Tendermint became unresponsive after some load

    Tendermint became unresponsive after some load

    Tendermint version (use tendermint version or git rev-parse --verify HEAD if installed from source): v0.25.0

    ABCI app (name for built-in, URL for self-written if it's publicly available): https://github.com/MinterTeam/minter-go-node

    Environment:

    • OS (e.g. from /etc/os-release): bug is platform agnostic. Tested on MacOS 10.14, Debian 4.9.88-1+deb9u1, Ubuntu 18.04.1 LTS
    • Install tools: -
    • Others: -

    What happened: After some time under load nodes stop responding. http://localhost:26657/status and some other rpc endpoints became not available with huge timeout (more than 60 secs). It seems like ConsensusState's (or ConsensusReactor's) mutex is deadlocked. Restarting node solves problem.

    Strange thing is that this bug happens when block is committed and new block is not even started (no BeginBlock call to Application).

    What you expected to happen: Tendermint should be working normally.

    Have you tried the latest version: yes

    How to reproduce it (as minimally and precisely as possible): Download Minter node, launch and synchronize it. Then send some transactions (50 txs in block will be sufficient).

    Logs (paste a small part showing an error (< 10 lines) or link a pastebin, gist, etc. containing more of the log file): There are no errors or warnings in logs, except that node starts to lose connection to other nodes after consensus stops.

    Config (you can paste only the changes you've made): Default config

    node command runtime flags: -

    /dump_consensus_state output for consensus bugs: dump_consensus_state is unavailable by timeout :(

    Anything else we need to know: Tendermint is running in in-process mode. There are Local RPC calls to Tendermint. Bug happening only under load. I debugged our BeginBlock, EndBlock, Commit, DeliverTx implementations, they are finishing normally just before bug. It happens somewhere else. Also, we used v0.23.0 in our testnet before and everything was fine.

    T:bug C:consensus 
    opened by danil-lashin 93
  • Why `Vote.SignBytes` is a JSON string?

    Why `Vote.SignBytes` is a JSON string?

    I'm trying to implement a custom blockchain using Tendermint, and I want to have a Relay contract on Ethereum so that my ERC-20 token can transfer between Ethereum and the Tendermint blockchain.

    To do so, I need to write a smart contract on Ethereum verifying the block header from Tendermint. While other parts go well, the format of Precommits annoys me.

    The signature are signed on the SHA-256 hash of the SignBytes, which are JSON strings, so to extract block header hash from the message, the smart contract needs to parse the JSON string, which is quite expensive.

    I'm now finding work around on this problem, and my question is, why Tendermint is designed to sign a JSON string instead of a binary one, say a structure encoded by Amino, or the Merkle root of the information in the precommits (just like the block header hash)?

    C:consensus S:proposal T:enhancement T:breaking 
    opened by nnkken 84
  • Make each golangci-lint linter pass

    Make each golangci-lint linter pass

    From .golangci.yml:

    • [ ] gocyclo
    • [ ] golint
    • [x] maligned
    • [ ] errcheck
    • [x] staticcheck
    • [x] dupl https://github.com/tendermint/tendermint/pull/3385
    • [x] ineffassign https://github.com/tendermint/tendermint/pull/3386
    • [x] interfacer
    • [x] unconvert
    • [x] goconst
    • [ ] unparam
    • [x] nakedret
    • [x] lll
    • [ ] gochecknoglobals
    • [x] govet https://github.com/tendermint/tendermint/pull/3292
      • [ ] remove https://github.com/tendermint/tendermint/pull/3292#discussion_r255386460 when we bump Golang version
    • [x] gocritic
    • [x] gosec https://github.com/tendermint/tendermint/pull/3294
    • [ ] gochecknoinits
    • [x] scopelint
    • [ ] stylecheck

    Run make get_tools to install golangci-lint or follow instructions at https://github.com/golangci/golangci-lint.

    Run each individual linter with: golangci-lint run --no-config --disable-all=true --enable=XXX. For example: golangci-lint run --no-config --disable-all=true --enable=govet

    Run all with: golangci-lint run --enable-all=true

    Help make Tendermint great again!

    good first issue T:enhancement T:code-hygiene 
    opened by melekes 47
  • Blocks are not being build on new tx

    Blocks are not being build on new tx

    BUG REPORT:

    Tendermint version: 0.20.0-27bd1dea

    ABCI app (name for built-in, URL for self-written if it's publicly available): kvstore App

    Environment:

    • Windows:
    • binary release package:
    • 4 Nodes - 3 validators 1 non validator:
    • empty_blocks=false

    What happened: No Blocks are build on new tx

    What you expected to happen: Blocks being built on new tx

    How to reproduce it: Setup the Nodes as described (can be found in my github repo): https://github.com/yuomii/nodeTest/tree/master/nodes start with tendermint node --home="HOMEOFTHENODES" --proxy_app=kvstore The quick and dirty Websocket Transaction generator i wrote: https://github.com/yuomii/nodeTest

    • in Main startAllTheThings() set Thread.sleep to 500 ms (2 tx per second)
    • in Communication sendMessage() set new bytes to 10000 for 10KB generated tx size
    • run Main Method

    Console output: This x1000

    I[06-18|12:57:44.453] Could not check tx                           module=mempool tx=Tx{5EDF7865672344A7BA937383E194A2F736996AEDAFEF2E93160CEDF09C44EDA95F94F1250DFC747FBA44924B660B0093D3CA8BAC61C4C911A81768188C08F73C60500C5593A8A2E8A22C35FC031655FF8AF5640FA31F9A7CA7B012419B833288AEB4ACF8FE876AFBBE81D24F74D1BFA86A4D3D5D132955C0F1D2B54BB01D15653CB2840A263AFF9D9C8C1B3D6A399E81692CCD8964021884E7EC7DC4E598FE081F5A09743666B8F4902C8B0E0893473BDD6ADF1FD9759D9BED2B9D9C0AA40E66123E01392ED16461316C909669A798A304489500CEF40AD0EDD83A741F3D2AF9F3604ED461C45829DA25C75118CEDCC07DE20E5330E6EE5CD5C441ABDEE35A6D44B7D5DCF7C3721F2AB8F04495C7DD2CCD407AF6FF444AD814C5DFEF2E9CF197AB37A6226C95905C84CA9EA8D76724BFDCE9CA46D38EBF7D2140C849B1C01794727BC1960F962E269021C200C510B4CD750D9C0A550241FEF4C98BB137A5B72F07EF277A84612BA0B8838F12BCFCCA2AC93CFFEEC12DD8068BD0961B4909E76E7D920A8343C8E9CBACAD6C470C59718DEDB2390C6ACD60AA6758A97E9F5A3DA60A4A44E116164BA4DE56D76F7B30E141572DB28C36FA50BB0CC9D9C5AAC7BF8F87BE7C4D9FA83BDB07467885C02511D6655491B51EA8E8EB84C974CE0B224DC9F3CD9698D0D5CBDAA075D4FF09FEEBF5D6B3D63EB074623CDD2C4C8A1A91B35EF08B4C8371220F316A484E8B76FBFED14E43E41E8DC5FFD7A6EE461F6014DA5C45D21A009DC83B7BE7CD68769B07A93AD77EC2ABEB360A03763F44651DD6A7EE5A61DE63458EC439DE167FF502AE14115B0F9F3A135A242566A1A373C34D932FBF90C473ABEB66B4DB996171A7E686CE2B034834E4C3834C92140408783203B3A58F71B1E981673AACA78B717AB0CCA97B96A5EB4F6BEEBF9B530C70983DEBBA63357EC068E17698E5EFE256E07BD151E38B7461D957955627204E4831BD4E3BF261AF4269A0F8925D1533083365A84BDF14C3861CA02656609F96D286F6921372EE881280C1A690AF52D7E53D3F92C1504AF27D45B8B08871C63DDE8D58CB59A32D1E56136ACB66BA2E44D6C16DCAF7FA343ED0981031150DD7463D717E692F6DFC417EDFE88A6521416301F28F24AB04660E8CE803E866E8EB63891002FB59586278E8740CF857CC06F3DCFAFAC4547B1F91C61F16CC183B952E8C7D1EDFC514C24B84B4C9EC2865C65C8075047EADCE0C6309BC82B66B448527F67F221E2CF399E78E5832E142DC84B2D2F31C9CD2538B45CB501B2347C44C4F3011B3CC4F6AD41A326BBB3A8EE409C70979BA2A1DC182253100769D257F276AFCE0DDA4AA94A82396CCD3CD2673F4911D0013FC13B4CDF4FA066C3597BFD84048D0FBBEEBAF0AE7BFB1CA8B7E46DF5147F5A6FDDF2D3218AE30E89435D29770107863945E9CAC75671F0697A85B951E60B89BA3510FEA6BC55F0591FE870C9C6FA1EBB52B638E00CD738937F57456DDF61DE674D5A3BB20ED0A7D500BB55B0FFFCA3DE067AD1E9F74DCCB69DC9B2BC941EE4402AD15A2F316B8656183B543297EA7F8571148EB889BDEDE0172994B01A4660BD260F40582818941587CE3481B4E9EA2B76EA7E1A42BD0E49C437D8FCF5BB7BB0AA7B685BCA3AE5CD22F20F2D2AF486C99BD601F90EC5FD7DA8D1BF798128571E6E9324EBA4BED7BF59253151EDAF6C2C6C2AC527EB3099E9A2B8A3DAA736A1C393024036F261EDBC6E3E3335CEE2AB3D798EAAA955DA374327FA57D52A3708A9369AC370554B07BF3313FE74E8A191B6C0D1C59A872D4A1DEDA8BE6FD6B9A42CD06CF76DFA225C3E341565DDB3530AD68F868A06D68977DE09A2080423B5B2FFF56F5DB81899169346A1FE5CE338CC2E13B98769CA0BDC707398AFF10951C193958693BE6FD1FB8EE34138BF84C80FD9D869AB48966694EA01EB4AB7B77BBF07B8ADCDAFCD68C171A9FAEC5290513BC5A8602D72B6392E4FDDECE51C54507EAC2DAE3B95B7BAAEE80CAF131F0497F5A3CF2834EA63884A820D2CB49AA35456625EB746A5E3EDFD0C2D6E35F1A13B34514B97A60BE385F9A2BBCE18A15E6AEAE5BD46D7938F3A3FC0D600BAF599DD2DD66AA6397DB739682A74B0DD0B3BAEE7E30FC0D67BCEB052A1AD3F83A93DFB2285B2461C375B07228CCBD8CCC16D4A75FA9C3792FD9CE27A93E5FBAD7B19B5E54FEABBA8A12358DD849E563705A00ECD0EF9E39631071BED0BDD0661E0BF4950985D8598A34B1573B4D25D93C7ECCC64445A0B8CF661F93BC9F069589A9BE488E74A54B06DEFB957BB7AFF7A8E4F2B3E98B9EC7B7919B045CB608E5A10DE820B8DD12422A89D0DCBCC47A0F96AABF22452EE71A9C625E83D0A4FB773A3817F5AE13F615DAB72D1AE29AEF32D4C8A7F89D6FDAC993B393161C04526FBD0F6D587F88003E127D7A0EA47A48B8B6313C0D376FE8D13456A9D61FFFA2788872A90A7DB94D5AD8A122CBF78CF2BCB85CD6B0596824910CC73870EAFF7F3D5988388375553CADBB47EB39C5860C9E31F2D71F30F90A4DA8A789A756487CF1C924AB6CB206F29CE52ADC94ED9C487F19891B10707A27AF2D41E9CFF98F5AC8DD4CE525CC8AAC30BAE53BEBA1820DC8DDA8402BD5B1FB41839199546201FE7C9D31DE404C02EE9A08D8C7A2096CAFA34581D18E6B69ECF308A52831A6304DC9C331250420A2A5A9CB9302F1384FFF80660ADD48AAB5FC9BE03E977941E5AEF079B47FEBDA30B1557AF12D6277DD3B92A87E84DE5DF4D070C611D4D244D1293824EFDB24C9F97638E82D4857D6EEA450DB6027C862CEC98F790BB7F5D38F79683EE88411D21FE310B6B32D81175A8FF459804DF52FC60677B474D630F4849C4F4849FCCA2A7AC63F5272D36AE372DCFF3FAD2A43311DC78CB5E745E4AA78773DC2D11E99D864704B89E467ED4FA825B3AD0E9C08F219EF97575F8D066C072D87397D407C032F605EA6280BB8B6FDC1981C4DCB8C17F96E44BAE0ECA2D841B00665AEBDA7181116C623CCB8D1DB5708F7C302388C2B13E8A27A814F54CD15EB9851F116FFBCD45E76EB2CF00E64D8D6620D24C4B9360134A77BCC26CDC05A8A9E9E260D9F8F98F0842792A29B9BC1742A195284372BCA60AA3EC7C554729B227DCA295C57BC59D2A9A25EF0788C9C59E75249811E1F634CE7CB19B942E8F6E91D8F44A2285E2DD3C4B8FE48F9649B41F515DE4BFD560C49FF2A1B0885BEB2B46D4E01BBC9B1534957D77393442E723CF16139415220551B756BC4401EC5583BDD8E2E5425188F6C088E9F1FD6D21F113F9F47A1137CD031323DCCAEA3EE79F2E28725CCDBE868E2222FB042FF74616687738B252899C42D01196D24BD8E70E575BEA578BD144E7E120051AB6115CA9C34A6C69AEE1E5FB314F99749ABE8BB1694B1D74D5198ADCAEAF97FAC7589B82CF4142B1CB54738FF7DA1957CBE0DCFE1C096487D53BE82ABE1192BF805C2A5A73BB805F343CB2EEEB67858EDDB0B6DBB7E26F10C3132F54DD041F784B3618531BFB715CA5099E6FB1AF000C3FC6BEC76D67899968EE2F8A3B6A8D2A471A33264FD8E01D80864743B697C56C9AF00FCE7D7F12B58BFB317DE36DB34A407912314B3419CE08CFAFF74481E375A9504C351113EC97D5102CFB0144C2EA49189DC5A64A0EC7071736762BE7A3FF5E4887695195FAF1681F52AB6BC74A9C3FE17DEA0D79C28863F272D7CB9832D3EE633BE7B08C84576C2A189E7BB857F169219071E98AE16E4F37A3AE787B0BFE8784F82C5FD89E0DA3BFBAFFE43A7425B6434A56C764787BB7D7A41DB5DC6126F8C27FDE996900C1446989A88ACC9DFDAE19DAD580358D8E54343C748D430C04DA7B829897BEE768AF343B497ED057A5F4731D80918E4B4E69C3E219D66EA3EE763AEE9A2D439C17B82605C4E278E21BA2BD696044EA78219562CEF41F5F4481EEEB17C94CDF8D474ED19E7ED1B2E48E1F436234385C92FEC31FDDBDC4562472D8A0823B7191E88155C6881B1AE5B154C5DC71CD561A352CD627DAF637DEC063F0B82053C6C95A4F0AEE2A27F6CD7FBD0F71A7109C892CD7F11CFFACFAB1E37D35CB7BC8A00E0A4EBF760F76703DD32F8A48B882365DF68DADBB4E99C3D0D7607FA9811F911C1B7D9FC6EEAF6C3E3F4641D30F10128AF149650AC0241889EEA73774DD12B61FADC2DB98E3EA325EFA5B26E2202EAC40AC5B176D8DF844463AF68F95FCED1B5182D88DB4A5AFD416F43E5751631E130F2191F44BC2AEF0DFF8FFFB83E69B355509E92471935D356B1BF566640149A278145DF28C5647DE420DBA383093A429069D819910D0E2F46E02ADD498B4A00A823E27382A54688AD0B4B683CB0B5ED36BDE98E865B56F21795CBBF7B1FC4DB76DAAA8B277FC001AFAE46C15761E8821C41EF26A2A979D173F788F3293925D9988F471FDEDDE431174EFDFF5F489FC69CA4019E9A336EA0286E4801D84E3D82DA7A9FC6E68148B775BB1E39729C9B4A127DF93AD4BC3633AADF20EBE087CC564B9663EB6EFAA0D63C1E3218C0FEA8376082DC11EA52C0908C82855FEC821143BE22C3A11C10AC14464CCD7E0F29B1676ADB05AB2BE0C5D90B3ECA8B7B6CD926493C7C5C87FFA9AC4FB22EB53AEC26B49B7A5B251A8EA310839AA3E962650CFDC87EBA65BD83F4B475CCFB5FAD7E62CE5F8A22A2EDF743E2F74184754839F0785BBA7502BEB07CAABF2E2665EB1AC950A7E944490F2D91AB8D10FAD529659B9BE3B7426AFE9D39AB921D396809EED9F868B8197D9E83133A10B56C1ED46D52D9890DC849E7E0D1DE3DB6918C30567A231CF402E5EE3AA8316DE1DF016D86C9E33803495A55D7096C6FA743BA1E711BB63F2472CE04EE7994360B9B7CEB8684131E87F8B418C2C0E0BB79ACB8A5FA9298D31626041BD6A4A522BCD8359B32CFB72F3206ED75AF86211B68F70F2B7BC1C4DDACB3A323DD30428B72DF1C9BCE074AA25C97A7A63515CD6AC813C929C65FBAE5B6ABA93D804BD7EE11260F6008369E72421E5D55FD347FE903E0D1ADC88DD67AE1EFE44082EB4F6EE365A7312C28B0DE37C12B251CDA85BB1F8B01D7A7FCA7ACB108C2376E48AF5226BCAFA9AB9099E9EDC326293F816A68D56E775F2FCED990918EE7E1E9CF9083303D1339F4DD92DAC6245B6BA517295E3BE4540E9083B8C0ECF7EC30D882710F1F9B95A395C69DBD3AE0D567EAF70C6BFDD4A0406E95A5D85C5E8DCA4BE479A916C20980B8C39DE14B8C548DA0C5F344250B7A69408F07FAE50C988B49E47A26148C3ABBE4F32F590B3EEDC2BB31250273819B8CFDC7654B43E988015B70F3014DEE3A141820897B2DEBE6DFCBF105A045369CC51B126874430A23EFF0933FD81F425D9F2CDDFD63AEB92F310774AB7E134342C1DEFC6321350DA0CA955285EC948BA3428F039E7186EF5AF7241ABDE1723AB741F680FA8563FC063FF0A58EA56EDF143A46F779C76E74D4E807051F70B20E6A9B6C320AD5A2D805AB9549830CCA4A0696477ABDCCB51704AA38BB99B90103F139E551E3C8EC1739A1AC3E60504FDE0FBB1F03C9AB230C6F5C303411AA29694C172B573C1E0DAB24685F311E42F2BE18DEE7D1D7D5EE4B820D7312E518D52D81490FCFDE165E5C427B1E2AB3D8425E9F8D8C3D8E7BC0D694427A16C33B6975A07397A665F594997107B3347FAD4D3C252764F30014C9FBDC746F148C306ECBF74F7C3DAF869EFAC47021E73E7F0CD56F5F152363DDE4218890B6F6EA7687A6532BF8D9D6958B1722CC5BF251B0669B22BDCDD08E54D0BFE0754897E471FC42F468E557A2738D7F6866C426FFC6C123101DC8C707BD6C767279DD79F6EBD01513FC2C2D527502E3DC3D809662EC21E0822D23E7EE9D147F68E5E7B0518E6D5A9DF1841DAB7592C2658299BFDD6FDA0FA8F307C3984100E0F6745E775E6BD87C16E47E37E24F5B35BF1EF2E73441CEC4394620D41F38BA187BD85649FC767D626B86E6F4CC652D982B290615007840207F505DAF57D5A33825357085E10787D3DD1F7098581CD8374F747E49B9D03429BC120E00FCAE899166A40DE1145AC6861506B722D55D8648D50093F27C2560DE34E0453ED320487817B26039BA102C92D22A8C7811152BBC34853DAF84FBA865F9E1925BC2C87FC541DE438B53ACD041B38C94949FB5FDC96BEC3BDB7FF6377BCB9004E07B0B5A08C21EE51B26178D97FDC237DED8B20639D1D5E287306218828F3E82318A8F5D9D7D5A401CAB1D23F56276DEFF6306BCBF2A12C0CC1EAC68D8E58D71FFF1C0521BC0F06951D2EEF5B242E580D60EADAD0A102A0D9AC7E61A51BBF6AC0C8F4C38C86E2FA98B649E52A506618554C829423C42D7F176674745F5D944CAD19AA7470825DC62F602A448D2D2D0EE7167FF82F7078896D564A9026FC517B1B1818809F9F8B0D38A175F12DAE72ADB83B538F947CEE006E7680AE3BF786381BA486A7AAA9BD79A2F8A8C0DD4C5FE5195E3E199F84635E418690BEC24EDEEC92C4B0C3FA8C472144F35D143A253EE629B2B8BC22BFD12E8A63E74294AACD50E4304F1E8C45C1684EEE33683FD0C2E949EDFCB4546E1B536EAECAECD2F1207A0F3EEE14A59A84B0F901AA706BC7F09A13392BB877F9D9281506247E2624DC8BFA64266DD69C50F88690B73AE142F5C88DD5478AAA89CCEF9245372886B9E30191B795033642E5007BADDD0C8E04919EB3242A2CAFC8CC41295C884C992D1AA86F216327E6696755748DF546A1E7FC6BAE0AADF4B0CD184149B2178F761707528A125E2224360D62E544E7D5635A2FB37E445573515C14F7EB88E6C9D7DB226CBB82AFD5DB2253F3A84292B78C0BEE84096B5399E5AD71C39AA842200BEC7249ECA2D60F8634072F79ADA21EADDB1CCEF618C352A4DE2169A803D802EA7AF2B3A598BB00BE30AA15FFC9F878F475D7F8940BD0196961F1C35C52210A2A274CAF794E8D4D67D9BF8614E506B3CB60EE9BB540DD5535AB3407F98E6816F9C4BE595DC9875A2A30F112EBE723B6E51C4882C3FADEE373D474941F1242407E6CA33303C2B85B56A1A7D4EB4AD4C942D8DEF56069A0E3506BD31DA67A16F858025C18564A3B559306D4293013D57E81A6341BBABC6FA28EAC8A75137997E93301A6D8FD416FDEF84BD58CCCE77F6D64681BA5CC858FBB8D4F78D3A5E2C8DD7FD0F6C662F041815D69F2B54D96D2CF871692690CA735E3E401E7B6509947FF5FFABC47AF8BF05D6882A1C6AC64ADA97BC7F681AAF27F4C26E6C3A63B2B75A1F9B06D21930BF87F47559005D977D4BCE4B63F59E4F19930D166D4BD79BB5C9358E88C6448A5DA63BFA759F858899A92849F0565EA06392BED0035E9A951E9978746223D739FA2CE40C5C3611E58485E1FE25AA447702517CE618DBAC32F83CC79C8340FD89EB29090E51F69B99D153A912022148B6D0AF2F3D005CF9DA13497158EFC9FABFD6702C3F45839B8F0AEBFE20C08217F3C4925085D131E762ECF99623523E41FF6E18CB17C575991B580A183BD3A618F6A06342F3D7DABC1207AC1949C272D6297BFB01E893DA3D081DCF59095DFAB6AAB98FC017F891D247C8621CE4A90D0BF7473A427BE5B22908153E6194DC01025BD6075BA96ABE9419C7431461F20B81BA58B715AD7072A1980CC09BF64CD09B5067C10251738056ACEE1869E0AB3B82953E99F3212182079F81A16F78F291F7347D34A6CBCA2BF41B27CFA51C95C1A60CFBCC249602BF264B5B91F4D8A200E8CAFBE0DDF24BC44528D3FA38B61A95CB3B387EB8741CF94C086F243CC56BF17DDB7BC4A87E1387610D2B50C5069F025922EEA388A858763587B7522AC018C8367031E63892AA62AE31602B02DE1D27D9C1C1724ED93C6DC32AFAF7DDFC3FFF7AB4F4CFCF650477C69380092CCA8979DE0888E7C686318C8C611654A9ED2BA46C183D0CAB9F0F9E2922440C05CE923F3AC4DB3FE7B34E7333B6618C9A892DD8058F77AE002E5CE0BF66497A65A6E0158310A37E21142A3792A04228948AA1518701A2CB0BB4DEFD2B30CA3D5C012D6AEB05B6ECB8ECEEE0B461B394F52539D836527FFB28DC2AE7ED227C63DF48140268989593261C1CEBA374759FD301E5CC6D8808DB02219645555C249F0CE3E57426E646C38DF9A0C8FE5D85FFC068179EF7FFF88DCEDF94F1439160C6F90937AC536EF48F40FEB55D66E4CDCB26FEF053C0B5743698C54B7AC0524B54159D7D6B32EAEB4E546BBA81B7FB30FF2C755105D30BD17F9FE9BFA35862ECE5168E82C281C2EC1A465D948215EDBBFB320CB462A89E7915C42648E25340D9BC7FCB0D9B335B8054AFFF8CA0C4854304D8CE352BC505C42A0286E2E2B55D053FABCAC73073AF421E0AD3668FD456B4C293E021B7A89946F1FECBD801119C84786F13EF92FBF796DF853678F99A4F1AC1DE51E66D0B99EF25A57BAFD32805EE964D6F2A23BE5541C3EBA7E8FAFD3CC2F0EA41624D6D47AB83D1DFB29D64E41F6A329E721CD9BAC339936BCBA28EF7DE24EC4E1468F4DEE04B0FEE95DB11AC61EBC6B2C808DE8B2973668EB677734ACB96F096CE639B6F6FC364147FBA765043B25078304768B322E9F673A1F022DD586149CB3BF9AF051DB42F448F9EB402257E2284308C0322ECD6A1624AFBEDA99B058318AF76A1B19BEB11CC679E7A7505B29CD4EB6062F488BAC4BF1E775ACB48E7EDE46E3C1F4B61B9EDD27303881510D2BD1FC39CE4B93CD601EEA5BB4DAA0ECEB6A7E84287099074F285C2CDFEDF670A43334EF36D950CB394FFBA0E07D743688F5A0290A44B17F4B84B0F2E86C0D6A7580868668C324A9BB6AE752CEA16E9C3E6470CC4BD280516708E2D0C3DA15C9BDA6CFACDEEC8D01E134E7FC7197142D4B137AC90F3A4BA3D19EF6D837C9614FD246430552BA8A98F4CA3B404E2433AF3C33C7939EFA255CCD4F3BA616AD0898774A1B8FDD505438590DD61FAF2AC585DB7A4E51AE1EC2CAD3E831BA95B3C6116D7BDCB18E707415B3C1A1A376BCE58B165CC821FCFEEABCDDABE01110700302EAC0BBCCE714536AF9129283AB2BA4C74F0DAA04A33FC349D910E4D8387387274B529EF9AAA373EE67A85DAFA2211D08D59A5CA32EA3AF2933C6F2E9F2EA7D832B7B743CD3D5589A75FAC785D869500C9AB3CA47F718DA6A742562E3827368FD6A8CE0F0AF6D1675C095284C25D4CD358B3E8406F7616A1D644BC6BD3E77EB173751E17C8B23C45B497180578FDE5E34E46911B55B42FEFA3DA20CC2B75BCDD3E4CD311D3AE75542485C3014477820B231DD87A1423EEC9915E993CAF74D3B91281A49FCC16B76061BB16F6DF5418E3343B6530A8758D05AACA3C54020F5A49EDFCAECCA4EFA955E7B7D308762208D53FE727519DE85CFAFBA47EA07BA2C926713EFD9F254DC19575C0860128C9A688EB338EBA966007F815FC4AA4A345440D64EADE8569D855238F2716828CB9C8413E18F5F6C8D850D58E73F51AB91998A330EC71CA60A63BF6FBA045D428E697452518D3597C21A3977E604D60316D6A246326FFC24F5ECC9444A69FAFFB8D3E75EF7C5FFA90EE037F03F668F730AEB45230B30CB74CB09F2C3AEB76B8F4D63016D21DB889F7354EFCBD81F909122DFD24EDB44714C31B6CF470E2F11C78381F2F65B8C7DF34DEC83852B83A62E5AEF5B493B6A7FAF405CA95BD5152A1E0B5DBF724D96E80E3BC74DFEB11CFD1EBCF694C419C6DB87220D3BABCF6EAA0F8E8BB99F053B14831E5ABC9B5361B301C36A7DBB923E05FA51FD8A04C3B750582DC41E58C4CEAE95F46EC09627BF21AA193C9C0E2F4E73A49C1A6BE10FAB8FAB1B615B121CF48D7429AE790A56DA66C5A79948A4442ED82ED221A22EF52B830AE339A4DBBF816D0C6A33252BA70CBEA59F9C44C8FF9986D7568EF25958FD1D217F0A5D7C9AF8D3F66BD2D5FDB6944096519052F14845B5199B21886F11789F67B832B3CA1EC3641B6B700E8CC7C67BD7815EB1A4A17DB5E646508A6B576ED28DF6ADA6DF9912037DA07C47350D84D454272AED04B95AB2EB5BEAE11D96DC7ED3CC302A56FD561850C4631EAB192A077A3DF7C3554FDF12CC1BC23DF191B0878FED345810338B53419FC743A3C9674A835EB9861486CD5BE8F54379C722C279F8769DD8B980E29F4E4C3FB83C29D0770BF82ACCF2EADDFD77AF861E0A9246319AAFF83E8769A2830E2B554A7194170A8C346F911AF59AF97B36ECF70C4AF154F30BC47FACBB15FBB9D27830E991193C7F1AC509D998A9D72BDF77D218E078EAF5639D26025F83AD432BA594DA0C6EE52B2F2FD8C5E18395AEFC4AB431768234C4D20EFF9F9A60628D2B8B8F30E7A118B9EDF0BBE956BB954F6BE0C7F329471A2B9935B8220E6EDD244C7C98CCAF4C8940658904378DDCAF4509C8268F669F1EA336A280855B45C4262E0924F3B0B60566BBFE70065A8562DD14751063E875FF5C73839A0B85F864D97A47A76CF097BF7042B0A2A5E68280F229709B729FEA298762DAAB74E8E12CE68F8978C773165723D646485882B93183D51A49D9A192600B5B926E97ED63281E8F2E6402944E1ED32BBDE8DB01278E1F38487CAB931D3ACED0C7B7595E7A2FF421CBD785D21CFA638A9FBFEC1815018662F70D6709027D4F95EEA5D4342552932FC166C91723809554338E84FE01DF78F327A89EE650EE4AB0A14A61C81CE778CF8988FC5679638C37C18200FEA6091B99BC07528CD75564778717219317148B4835DF1008462AF713989D25C8F7A9E043A502253E0CFAB05D8B68F143A3C56259BEA76C97944CE823082F1B46518AEE38466806BDDF15793ACA06E4FD7BD48EB95E81BAE176F2BCB9E118239A88E069ED236EAB05A03A99225F8C6EE1F3D74284374EAC144FE3259C93B1B31C841C7D1DEAFD7248B6F34144AD8E3781F5CA5925826E7150D6831E94F586F878D814BEBA0FBCA0E930A2225F37D125A7EB418F3302A9445BE52316F4FD76347C77734B072B3B379ECDCC13F962CCC64BA308DA8DAFDFFEE13622E9054980E258C0CF3B886022DB6DB4635D3DFF1FA49EF23B62376B58D3174CDFE271E3DEBF70AE224EDAE3088D6F36D98C71D5228242F62306AE4DBC5323CD1FDC32F22BE37EBC99911734F8A30AB2605F379277CEE6ADB8395C54A889B1C4DF12834E7E5823D566136770321E1FFCBFCA3043E3109EB7AA953C793E8198621DDCA2FB14F1BFC67D24432A417472CB742188F768CB8574D036643D5D7DE251E77558390DD681BDD1876F42B03856B49F507567A72A4512FB3222E14801E7293B627BEB4D1742AC077DD3DB23003CEB9BF187C496F599A86C2F25475DE9246D98AD44058BC6C839B18DC646A5FEB1D195368542E62C6CCC79BD3ECEFBAF8905C1CA2AF8D7D220CD2F2AA8C6074ADD33DF1077DDF07C1A5CAECD8705395900D061C0A3559278D861F10D3EB6E237B1A8AB87BC9DA4B81DC2E27A4D0BA80A1130C8D3D94BFEF4771A235B76225BECEE4BD8B3CFD42A1228B537AF3EEC62FF27181259D0BB5ED0E7811C30A629DF6DF1047E53656CAA22427A35011703AA5515B33DA3F07160F4374FE6B522174692F9DC1A14AE773E0EC09361061D8D0151063A86A70A313916EFD48496C25652F00ED99D1CCC2351142890D1DD7FA6A89828952CA2DFFBD47B88922A308173F8CD91C03EE06F5C5D5D29F69E17EB7EAB283584614A95E962C6F1E46BE28E92C0E0567B361B44E1CD9AB25FBEEF4095847EE0F094FCB1D53FF859045E9A54F8D151598183287FF7262C398F421E96729D624E247A6AD723F3F12550E01AA85D2CA5A93F6B9A200D05B70753B0DA46FC9C58B408AE81E00E166CEE107A6376424FD6CE7A1D2204F6167F01E3CDD7EE6B3A00D3831072138CD1E989D6D659FC8BE41A572487D8CF635DDE257224D6407C45095DD550F6C8ED80FF160C62C0A4B46F1A717FA1967EB1D72CB4A784059218E3F96CA5892EA7A091881869B77F4448D4DD281637EA5B5BAD793226E11F285DE9383A934BD3A4CF9E8918BD1C9AC27832FCEF96CCA30EB0ADD05334CAAD8C7B7ED58D2E56D2DCA8C8190404433D622481A084A2FAD647AFA7552B1D10E49496A1310F7786E4BA82E888F8988CBEA1A9F752CB3F0E891C4C1978FFC8110981A9FFB2CE0929D4FC8F545C4AEF54EB2EF37FFB0F01B497D881D0732762287A928708132398334A74C61E60B3D5848D0128C374A4D63E9DF9CA90C99EAEA8C76BBE7D82C6D348BF57A94AA6076F07C366E47AC74C781A1E57AE88283892AEC8C44818B25938AB2906E3CF266529EA2AB9A7787EF454CA5AF98C1D8946E63228E7D855DB06A03FE049B8957E30E5DC24D66FBB73CDC04EDD1938072D6B91E1BB1D65BFE6168A91D8D1EE79E4250700B0AABEC5C251F22C6D52B9F4A3338FB0A3F352BCF51D2ABB9A0E459E60FD2E4452575FEDA3289FC00B70CE4D2FC9BB8A11402645C9EEC2D996398B1537FA74685B879092835EF138C6769A0DD6545412024880D60E8351F3E3067F57BE50BAF362CDD4066BF04DFF14A6616C6069BF4BDF3A2F043D6B32E881693B6E13EC38B27C249C9DDA8F0561ABA5352265BF2B32E1BBDF9238F4F2B6158D53233A60AC2AC0D56ACC08BF1B0E581B8002845087409CA1E6C42424263ADEC907064E1180FA4763B62EA4712F8B1622C0BE588095545418CC0B89E91D4BAFCD4BE5CD32EC8A3B7DC6BF97FEE78A19102065C4B2B8301563449F15A9C4032692F43B208385C4F601CB7B61B87318435C4B8339BD36152F3EEF41EAEB6741D434F7FD92DFB38715683C7BBC526B79AED7A4BE8E751C3DC95CBCB79D8D659EE5277F84194DAF52C4F37DDAD6D56440548CBE20385272F9ECDEFFE7F99519D9290C06A14B524E65657419431C6E1E0954BDFB4B32CE0785FC2C5A5DCB5A60488AD2C32AAA7F474C04D24B6EFC6EBD5E8F020E161787A29F5AE7A82DE775DBE958A88D360ABA2EC1266C337A12A13E01AA1C494FB6A607D9F5DCD679A2AF14147BE1ECF1FA2C48BA4AA989D1DEFA6D130C1234632E5EFF891B12C1AEEA1CD9085143A27C292BE098E723B40D4DAEA964823E710563293D5E82026C699B05BEAB30B78449825E3EC28F1362BEEF26BCEF791017D5E7D69C9183424668FB01D458555EB216229245409A7309093006567D0467A3A56557FEB330A7DB168FFDB1E58580EEB7411531678EF5E08751633F8DF74079CA53097B634D4D06EAD7EE17546B085753A72F1586C734F1EC605DABE22C078DAA6E5816CDE57B843351148FD3FABB240DC87910006B2FDD94BE5987D4FC1F16A8630075CA86DC35B792355DE74CB15E5B6AEC69C94813949FF918EA51584F4F1B0315ECB9785C7801B1FE6980F48811D26E9A5B148875D3E09286E81E30B3C9DF7ED3589E21E7E7E41F8ECD4BC8C1BD4545ED680C7BF55BF898E43528EC966EE22CC4D66B24F73EBA4A2FC36C8B531DDFFD731B4FBFAF5DEB2E84790C2277140E3199E19684244B16096E589A516DA498543F58BA75AA0FA3B24C6C1F6030092ED8510514AB52DEE965262CF95B6667C2D3381726FD93B96176F0F9AB72C7B5E9AA5C8F0A378EA0903D7D309B8CFA768565EAA174EC07A50A3BC7F5288E7F78F8B6FFCC2F2F1E1176D290ED13D50FEA90C1D9A75A53071A93E44926F3E6DF3D3B5C15C1AEE9BA6E0BCD33404AC5C3E59A9EF3E616A9C7B9552000664B46ADDDCA8DA0D29DB82C42C1C60A72A08C961CC3EF74C883A4D7516593112C4EA80725A19DF2F0EDBC8DF2A31E3FD5593A20AAAF979CEFE86DD3E5561D9AAFA33C2E6B27E58F7DB9C24230BFB7015973BA5D5FA1E6144BE5FBC94F5E13FD5B2D239E0C60DB05518245EFE2944A02C583DC67C22FBBB56B8D6AF359E686F0C678763414A79B8317A22D43464EE11102E86AAC9EAE83C155F634B59EFDAB8B5C8E5AFC37BA72430E5B9F93B6E97E456F24A2D580A93B8C7C4297E76618A2CA5F1EE026245FC0C0CE659D0E948343EAF38EBDD28D1B5A94EB58A075AC65123B2915935930FEE6D7F31D275732D4CC73A71AC7C03E5F1AF136BECF98C6650B85B8A259454D15AA6BBE7A194BB8A6C2EFB490F81A937B40A8AC13D3C0BF59B4A7DAA946004277A} err="Tx already exists in cache"
    I[06-18|12:57:45.413] Could not check tx                           module=mempool tx=Tx{9D9DA6401D8CCEDB4E9D0B0BE0C9F900C8D49CA2F0FF369ABDFF830D866F756C5139C13AAB8EA039F6CF37268A017B18E68F63D51356E8DC4C29A94734F69A1D5FB23965721F5F05033344D7B63262BCA5F66710776DCC2C6BE25685B4A5A52CF290344A5A04FA80304AFA3C05868E5A3A6552264350AD41F00A7155BB3965E5E8FB8290EC4D66A00EB9A30A602975E7CD8D16D384D991ACC54B9DB3830344B3555BCC83D68757397FE976F17234FBDCFBC204A8AA6D099267A5437848968AAFFECA597A6B79BEB13D028243299DF7EF5412CA7B094306E0684EA239CC83BC6EDF5CED5C20762F8A512D8E03393C4F03DE2E693F593A88CCEEE10E4FD32820D1A52B4FF8103E92E39C2EB5CA99E1DC0B902B767037479A1031DEBEF0A889C34A353D7A4B796EBDE9514AA3890379970CD8051F60A26864810073B19F973E908F233593B83D82DFDE797BBF30783EA80E1600CB2D7E31545F3DA0941A707040D03CD712DA6262D75D6EFAB3B7BB0263FD1FCC5AA314E19DF15CA4BF250BE546BDFD59CEC09386DE4B601311D2D17F529ABA855318900B98CAE8BA9C55BE1BFC541989C78A9CA526DCD34C04DC87BDCA51267D7E2082D2B35FFF2A1CDCE879A21AF6B7EE95F1F54CFA1FDE5D2FEC85B39493D1C7115EAD1376D1A50A136A8713B43084400D28FEC46AEF755E1ED2E97C80A4DB655CFCC1024324F5641E293B28141568E9317AF59CF2C250074751D56F0AF367934718CDCE05D3F9028B8E572E48281D598D46B43DE26D9FE6CE45B4CC978DC166E4D39AC64E4AFA333F05D7FCB69FCE6F2C8F340871983D9A5CCB266AE8728C8FEF300F5F1D0C41266C81687920E51B2F1F79A2F2713CB88251C8C5C57D167005EA98BEC07D2E0B3470F7FBA0F418EB98BBCFFC860B2BA460DB62F7B834E391F1E757164054D9C66FC3DE5E65A98C0BA68D8045E5478844D6F284D3439CB5DF5C741C158293CBA10919B5E8F18E46A87E711E42AB834B8107415F1820B05C2A6D6F7D934F30D76768D97D372942818A5E105DCCE3FCBE2DD233E42E0E021E103BFC711C59C460B10FFA3BFC6D452D2CCFDB9AB25F05029F583D4A3F0E0932B78A6AD4556DF7E261AD0178D708786B9A21AE52281AA68B92D8588E55F7414558F187E6F8E3746A76E8B7C145BD1C1228526AA6C68AD3A0640874EE951E09F99831EBCC5A3F691824CB99279C5FE02DF0BF50DE1C07ADDC9674496D81009962B6D89B0E854642A446E2ACBF147ED97B286241E2D095A3B0A6978D534A1E66877F66EF17DE19B2D71E6CB422EB6ECAEE4365CFC34FD5CEDE33A60DAA388124E71F8A94B96104C40D61301DEF8855072CE559DD300ED828FF764984C21E961FF1B93D8CA6690B28BA93DB2D45C2F04111A15F74015918E4FF07C275ADDD52318AD1CA3FF8057FB8E2BDF72A492244252B91F5ABB0B5E5909CF42C5AC4F9D7918B8601FAA9E50CA39E65DC26A6476E1B3DB65AC3DBD2ED51EA26E5B9203F00ED419F2CC91CCF178D9EDE2F2708513ED0BD2AA800C408C3F1D11B3BA5217690A7EC628C3693A85581A2E8D322A0595A0355250F85D16982458DE9FC1DEB27F9014044624FB610F672009E571CA305090565CBE4080C63FBEA2E96889EE472DCD2E65BD7321287D3A822B24846CB1EF0C87FD3655DA3ECFA1A16BE62E738EFC9E7FCB247B7972471710400FEAFD4405AD2EAF75BA5694A9CFA7D8A8BA155A3E2B6915DBCC01AE4C616BA68B5720096D55D21390F71545CC190F0F70B316F0857F02A659E91D17A1E27E8011FB894A33D1451F02C4DFD7E1447CE6C7548FD1EF1AA4083ECB5DAC082CE4894AF3C59268243DEB18EDF23FC35A8CA9F4D6B3A931C5BC0AB7D28B4A9832A286A54211CFFBC11DEFF0A60280BF7DE6CCEA092A5F11E8089671AF9C3CC5038E96D62F92E2F695F9CCCB9169261C4549043349481EB71F7F1FE7609D07D6C3B8198DA02E4E4CC1517CD568C8B53A2AFE52D13C256AB71324174586E87757941FAAF5D601898E86E809BAB4462845C5A6EC66F756E39D11E344E6EA1F809E5B5F15569FDA6367D5CC0A92B2E0827CBB305C712DD59F0866E7C32ABF717F76FCE1866B87EF060FB93EF032C6D94CE4FFCD330D374690123103D5026BF3CB7D7F7B4A4E0415BB66DEDDEE260CCC0CEEB1ADA62D0003709C214909ACFFEA46B22501FBD87F8D031B0B38E0E8BE7692C925D6B8068C41CB40DF502D38011EE544FAA4790C9DC3B96863CB7107F18121E976AB02725F2B972FD221264353D9EDB6D8D2DD3A9D510EB639F4237F049621C5FB3237818FF703E491AB60B73F69D285D1F68FDAA23C108F5A9CF66A916A182AFDA15696499E86DC0ADD7552DB7B74DB6F19F87E4564935C04130BD1D073FBF42AB2870E67E8C99F623D0E6AD2F1BFEA235127A3261A4D06B3AEC037B524E14826DD57741560D90F8D1F3954B1FDFD6A2F1124B589054117E48BDF2A74303E886A5E825C0F9DC5AFB460458FA517A378172850D311DDED0A7201242D84539A5C584FE71C958B15237C8BCF9FD1648AAFD5663EF46C64B68EC038E8DA0A7ED2B04A50E8CE131074461D047AA49040ADDE8433B086C9DA89C38F18706B456C3D17DF4DD12716C9DA37382C65556016329B884AF772EC9869B3A7588F6B53180F25615889ACCC6F6D2B983CECF79635CADD19AF3D3417C7A078D99CF11C9108D10C2D4FE8236E2DA744F7DE8CD085DE0F3120452E837CE9E1487C4D099C6507B8578C8841ED573D3D185990FB2CD1F412D544FA9C322720EB54373B04F478079C268932F28D786B14CE1AD35259EDAB1F7E9EBEA16FA806CD5B197CA36E8C8E020BCCC6D8A404906E7A066BE811929CAB767FF9BE3DDAE5DA9BF0C2E2775D2A84296067D7519D2ABD501B5020EDAA3078124F3547A904B0A08F3021D30E328F00230FCF2C5F9AC3925B1F5CF06A3FE488E445945C9C15FA0D800808ECA44A17AF62F8134BB2ABC916E1DC1E6795589524A493FADFA0512D08E350CADDB21D52C7C6266FEFDD82F559B9A1B7AF0B5F74DE869026463913F50B7C0705687DD8E905D332AE1F610E66CBA89C7B4E94C0B448C364052C113DE579435FA9ED213ED54FF8AF5C0747F8482E4F6CF3125EC19A803488CF5C94C4D25CAD20A4B161916CB21F11752A3300285305FFE82BDA272CE0DFE29E0083438791B63E8574105906B3117F0A451C72429B890D2AA122A526C348E27360ECE061936C99971EBF4B44D272CF09488E6A965ACD6BFA484156F2034E5DD33ED082B4E8F88587B376A46B0F99B375771C772F479E3E6DBFD4E25E9F41C07A30A3AC46550DD920D86F7D5779C1C0EF38B350DD6FD2A40B04DAAEFAC128953693B172E2F5335BBF1F79D94A6912A66C6356B62CCC99E2EF852992DB0F59BA3FA324511812E1C2AA5C0891DE809576FFD7F8829DF78FEBE7BF64A2A227B26D3DF41D574B552EC27DC4816FC0C95092B1E569EF8D9132E6C76F5BEF9922DB45037644C212836D7CBFD204400846297E87FF48774CA85441D1A7C9807740D069232A00D5FBA9116BEA2C30AF0E411D287CCAE0C2D852044360B90B922A1E9EDD497B441BB51AD58131B2830C769137063850604282031AF00E14AF167D3470C823F17960756BCB967E92490827098F0CE7D1176FB78A46A65AAE446AD2CDD32F597436D3A364ADC1743A2FD66FA13DD255C30F29BAABBA0ED668EABF6B0966D6522595A2EE2B6F2F6949C27CF2E4B8A841E1596B19BD095448A1C1D0CC631F424F50902814FC3CB28FAF62BCFD7F5BA6492197F5B722AA1007E818380BB6486773AD9BAFAF72D34D7C91DC267E2EEC582DDE59FC618E2BB4D1F18D3573F97F4CBADA986F9575F3F5206792796E2F421A2F46634E2BFD657303DBE3D02E52AD73B229C3F536F2649CBEDAE37498CFA780225154EC958B2707B1EBF7C91A753B6D2FD3D12044585C2426CB65A273B07A5988F8A322E1BFE0841FA8D7DE461802444B8079FC7628D1B71A5B9321C6DA73869A5698631034785787C50FB0451538D66612B5D6C534C5C6B70C833D843ED74B4AE937E944F5297D24739CF199E2ABBFE19B3184A29C83E84D65A8FC70501CFFD48AF91220362AB366FB20120CE38552696EFA5C5F90BDC7297A31D899C41675BE1FE638465890932FC57E6134D2DD8DDA23624355D443E18A5B22E9917F513E43D87E76A80111DB56BC2CC52ED6CCB2899F169C9F2EB6955A7676DB72789E184F385EA26A4ED93D72C2110C561DA3469EFFB735AD807B04377343E8AA2632A01F0378E4EE43F480025A58FCFC02E8D8DA851F21535745BC9A4AF43250343A862F2EF5F0796ED25BA2DBBD92209E2B60ADE0D4C18B2400BF5F1F6F263E82E21A90D7D0EE9D7437EB39216943D99A3B9893FB9B4E9FC1C4CC2D4E1617C93F8911B2AE1F53105AC7BE1948BEADEB66244A78DE82CB244D542EAF803B9C96A4BF8368357FB334370A785E7B90EB508E737211C2B88B8C0DE792BBB7FF390784D1ED929AB7375F88FB3DF3587124B1AF9BB545649D26928F42304B1A8D66DE9CF09F07EDD0DFF50A4FAA99A69A798DE1AA1FD3AD3ADB739C265321F764B29920FF1A8BB1CFCB4B9D4671B26828C9D26D010BED9FE851536A4786E81C583F56605D7D36B0AD56668DBB80D5F87B5212C77CE13D9D6ADBD6270B8BA046D956F024731F3EE51E776D2194C13BC7F740A0BB18A06F2B8C6308754EE550C1E755122773939F78EF99633BDECBB2B4C30B4435A0B097324081372C26AD4B0177B722946CC860F84B01D0AF34E048C02726739132A3DBDD842A4746CC02439A9DB8F9E02F85910A115E59B2D2EF03318534FB458EB88C743B910E251324DA784BD59A9B99C7CAAD9F7776C783F9B6A5C964E612C30B1994027C296DB267F2CE1D76C9AE7BF2DE1CB2091C8DC69A1ECC2F5AF514DC4FCD12593A96D0832B6AE6DC23363B875728D3698943FD6F69A6CFE6EF57600CBB82124C233C7A988784913612619D88135D8BF6FB824D7AC8D0CEB98F92969CC55CEF4693B0AB0EE76CB87158176D311DFC40BD1070DDD05A0E6C84B2DA771E5BA33D879D51F8772BA37B0A0585A083318A32248485715F40F874626FB8F43DCDA3CE41445F48287C643D3DDE24626E67F9D27840EA091E66A6E5BB94165501B8DECA217BEF85B5196D99BC1E7DF3EF2312D5F08FD4B0C004992F2646413EAD42AD70043DEA1BB32A499EB46917166D921A485873CFFBCB159D9642FAA636BD176A88B66EEE9D8F03A567D333C69E49076A575E3BA283D2C64A2C3218186F0A9E49D00240ECD24FE279557DE7EDAF3DE45A71E0BA3757C58FA3CF3F2C3909F716A062B2666CD06BE86110F6256F913804877CB30CD58C54A016C950B4FF9800FA6C912E55D70A9D3C43AD9E44DA1E87562B3B8129C89D161DEEBC32C091DE8CA45E17A519BBDD6CD2FB06EE07ED0AA21254FFB4FD984EE830CE69A4303BD6BCC51DAAF0144C2E4C154CDBD937C28290CC314B703A806322C197D93337A7C6E952A57A6B99010B2A73A196D08986F587D471CA5209294BE398D44AEA1546437B0CE8D6968453DB28808D32D566D0F74454658EA460AF417B311C46D0A2E5E9A1A40C5D9F408610AD4F86FDE0D5697AE59A20A3E0E79B187EF34FBA0AC1FBD302DB0DDBA73E999BD6993127DF62F3872267C4B60FE119B91D890D8FD123FB421016FC812A19288E92E0818EA85E24831B9D286E0AF39457835B7C08B4639DB7A967909D8B6DDD1123D2C8F7ABF30C3C623E5FB33CF3B86D132350CDEF388AE183DE83CF0FA6A9E81FE0BB95A62B0C566BBEB3D1CFC6CF82A9833891E0D850E1F026D8E7E9EE61CAEC93C8EC09132111F1553B45DBF997CBE5DB5F6E7B2ECBE0124884082C873FCBCCD1838EE60858DE7E13C1CC610D1B436943A89F06DA4E71CCF1628C5E579F40B62D89504ED38C4420CAD0483272E8883D0996B84031094DDA4662F1A98B93CCE0A0CB8A5EEFD626EB97350C88E42A2BE8D3637D06ED3377ACF06D4EBDE1F12B9C4526767ED46BC231097B8C6B826F11F37577FFBC8CC223BA425A71A534736C069489F157F1046E8E6B947F289042A02CC4147132AC80F531668CF2B90F86EE240900CC53C181AEEBBBEDC98962442F74FF288C4CCC599477CCE85C7244404060B9092B55755788498B0ACC80C24F5EC78B2AEE6FEA9C0E969689787A40143E51EE8C704F8384018C2CDBE8684FE43614D961BD6A8D569DEA04FE615B598FD0A66F57630CF177AC45A6A6E553004EDA6A4E5A29E7575DCB659A0E89A30FA08DF4CB21D698821CE725343EA0A28AAFC39BBC60CF6E54C449967EB267CB798BCC2F71B6FB400760C8C51C4B8F7C75F3B244D129606D8613379F8ECBF6A4B01773D4FD9D4DF703BA6386AB52E5D5E39B871E81571094E341BE0F328E4C1CD6D1939B541E442F3133131D5BFF933A14D47B5692D41B17D1DD5453A6C5A357B4C884E7509F0510FF4E81EF93A9742A618FF9CD4889F6472081EF94618FBCFBE402D2242CA79003527298C73BDDC835714BB96FA279748CCF51598F68C3542F69276D05156B6F35142F564FEFF71DD9DFB9A84A1112B1B66A3BF1874FA8980015E526AEB441385EADF740755BA5026BCDA7F811C10CEDDEB3F84618E630DB2B70AB881776FAD9460446FE47A444A7D942491B588C9E94FAC49AF71F89EEB6E9BD220C66526D62B5274D4AF05F181EFD181BC3A20DE59392F97F11936B4E04E681408B179BD97EF39DA36214D47EE6E30F42F1155D3EF845A0FDE443707BDC7533E704250AF2963BB534B44A27EDC185D35DC23A6F6EF2A30C66ECFE363EA5B1BF35ECD30007BFA44626C59F0DD6BCC28EEFC5C600F91EB6E0A7EF11921DE183AD85BD47AB8B0FCF145184669ED0E11078088CABDAA84D99F6F4D36E140A865DF2CF5F542479E36D6FC71951FBA0D4D13A0C1D2140A66B45A07FF04D4A9692181E23BE9F05D4F7D1D7CBD08B0C5044C16F0A878093F4D13CBCB1DB90154D7112371448AF05D8300A9FBE6B75C9E6215461786B0F2CD415FC0B4134BCB89BCA1AD0AA8F6C7C12D6D14D8FBC13B86EB12BA9966C4E542BF9DD20FB1887C2B75EFED2105BA2403F2DF4C62AD8D5B023787CDD296C81982380B667BABDDA33A742B19737B0AB25FADA723EFD399FEA43054EA032A2095408F85975319AC6AD0BF46EDDC3115CA86EED7869CE6DD50E89811765E791157FE9FC65B77F83470086EF1C862CE5A54AA76AB498D85BA38798173DB4C9E6A6F0FB36E5B0BA610E95730E954A1001C63A5BCB6A6CFF37925E4D300EA03F835B6BD0CDF55476A37053FC79798D8F9D561EB6BEAE5BD9460FD2FC9190693AA7E15515FE4146AEA99DE408701946FECCEE6BAE265D06B744D8D95744EE33E1C2597D854313BA7B2497294DB03B97E95B2799FB219DC9EC0EA1B2C3705C3EF78C3A8E208A97741B431660FC1E3DD7FAE3EE1A5243A39E24A6E0216497171E12EA247EF8C79E70AC35E9D61492C83BB7BFFC9C6B1812B8309EA6C7236D97A9070BC064B6306B13416D8DCD619DD866C3F1CD8F3874359A5972CA41B5E2D5315B6D4202E08A321AECC07037AECE89EDCC43376E30B4EFA29B131830375EE69BB3C99086F661DD85262B393A30E0435EDD848F32F519D10D8BB22FAD1016464A77FD828D45E18C6CE3E849AB3E2C27D99CABEC19EA6DD140F39E7C043E022F8CCC4C5C6144436126E282026F55C08E5FFF165E96C07BEC05057459BA9BFE31F4A914D38E562132506CBD1DD6F88C4296A2598FE4DA712E1196292D0D2A3A9A47A327AE0FE74106BC439C173BA0103C39C446530636DC759D54DF3B89F643835BC35E8A3F02BED94F664BCF5B67A49686FAFCF3FD073A2C52F2D2D82732DDB85E8EE4AC7A8AA3261CFA68F3E803946D751CA1872BC88D65BB5BD058EBEFE7A3200F4006A150C6E38C23AEE09B697CE30E97F1DD07DAF65056FDB330CE52A055D5EA2B80EEDDC3A264FC0EA6CC3812D8763BCC244659E53CC2609E0B1D7D92142129724E4AC9B1DF9FFBDFFB4B1FAC17778F0716C2240A80E17EDB4B0CE873A3EA936C0BF1E3D2E93E618A8EF9797EDE94E92A527FE34421F0BD17F4FB983D0FCC827A4FC44AC92B5239F879CBD01534DA99A85423B4B793E632461C61E7123CC76D46AB05E44C9D0DC80234C157764F1CA0694C3C40D911401F78C405FC9274FCEED24E8D255C3A38ED02A2DCA494250825769B3F135FB17DD809B257E55CD0737E55DDF35A5CFB3D9084FCA395EE966A511816F8E316A89E89A690CE1B79573DD72306347EB54E7BC82AC7AD9AFB174163E16DA8BA3B3EFEA4389F9B8E17AB451116BD3BD555CCDB100C34635C91CBC18EC0FF9ACE2823D3D1E42CB1D9B2500B37FC473ED03EC5B4526FE436C4FF41E56AAFDD54B7ADB0AA0EF21F53D00744FBC4120FFDF89312F97FBCDA84C76B8AF770F24B1D6A86B8CED211DED660150085C1DE3AE3C717C93A06C4F1B78885E929C3499D9F6DEAE3213433FEC14E0D59B3D9F572875B708E443C984FCC6625FC64B3471BC6A45E01A9286EBE4AAB7CA52D1952202084B9908EC461EB277F515B4B6B3FAFC7C36BDBBC041ADD0EDEF62C2EB93C7D34D93E21BF37CD23095C86D9743540BA8AAC017782B6E98B7E0C958A30B703D0132E6C4841EE546496674E12160425CD47A263901BD2A3A1329D95205B2C792B46C12570C3E638879A527C9ED8DA8F641C25E14B3CA38196FB5859A18FE77A2B74FD6C0BA62B91345B722F99C7339B0CA8D924854BC7FC668FA8A2208EB24D81FFC69E58431106E55133BB0BC7EA9B7B5B6A3F3E3C9887D71BC78DD9D23B404FEE2F1DD148D744DE59A5CD6C84B313140B4A1545F350155F3063164AB5CD24284C70D443731555138A5028BE89A0FE3EC95543EA9793CFFBBA36EEC708C6EEB53154C4CB7E1074B2121BE033E1104F26C32B759FD22B01ACF1F3A8F7C223A9AE541B4B0B37D4216D948B7BAE367D4AD337F773899687712022D74DFBB982F423D1C3C6BB69FA201A80B27EDF0F2C96D07B57837852ACF8E03FA52D0B95306525C625140197228C7237FDA691F9C317D215E5031A7A99975B0ECD9EB42CDC0E823B055198106B7140460B2AFEC85DB17AFAACA00892BDD7AD80466D9E9711F1A99DF1B2F7ACE98A4CFE8255C508D9E76C57065D37CBE4441D40F2834266F2A43BD3E6D047FCAF6E5E30ABDE961C9D3EB1A0DD34B097E9C0A8FBFA3B107EDAD6E6C938630F4A36335996497BE87F9D60F17F27A74C70A58F8E5A92E98B7D3B6C9F3C198F9E22D51A58525E58A098C88FD0B13F6811C640EDC7E2F7685424A1928520F48BF7CB79A5620706CF71F88D09EAA81956579F5F797784BF9846491EE9854642D35B132F96047AE07A4DB2F15090484D92F0A74720F97578C7651BA0E0B01AB546D61708F4B6ABC22767D9FC6E9A921FA42FF1C81A7CCE2D6C4B3FE9901015CBFB2F99A5F155BC53F371A09D202C0A66255DAFF4A5743D2D26B5B2C7258FE95E1337CA7D1CD07277583A36C30B710E42F44694397484727514F57ACC11824A5247D46AC33BD9EBEEB07B0D559A77603B4B558BF5708B5EE76E1722A705D35B563C31BEC331DDF8862119D39C95D2DA0F88B88D71B47CD10381952C7AF47EC8470FE3DEB66619899A96AE309810BDB7235278C41992990F2E3B8A50C710393558FD39F13C50F9A0B268BB96F885465495A7800402D29021C97E43190ECDB08FEF94F79442B2996B054155DEF652CE3328AE3A1EA5384FC60C708A14F1D60A5FC5B73C928D821B8F63FA59DE2A7C23DC09BF24B4D2E3F6B5CBC105D544297AB9F548A8E57F169F2AF0AEF82D35D7F52FA98D74C8305B41A6810EDE81B5E453FE0FA58BF0FFD854425692D28419E0FA83640BFB677C0B3769D336A7496B83F0E5856154FD969B77B2627E026C20382084484F3989E6F36DDD5EA56A44A5CD11FCEE331C67305353095A2DA2AC9287392800CCE4ACEC39B6613CBFAC852982F7C3313F8394286F300404AA289892F4A134BB37A325B937B4535C1DCFC7481FE9D8CCAF2ACD302FE4FC1251DF79A3C85BCE9078AB1BB5906205D8ED9E58C6CE5DF30E128223E775E017B4E90B104FA158670CA532145B3F504F5448A12DB753358FDA427EDC14496FEB671EEBE4914CECF6974290906E20CDED7CBFA2D93FB93D49454DD0892ADA6806A517615E9BDDB1304AE58F85C4E2982B85FB0832F22D3E78AA6437FAD5BA9621843A1C9852956BC4FD8FDADAEFFE2C8850F008EA54FB23B6443DA2B6DDAF8FED4B0619B9411DA6DA884A6788926BD41343FB58894B0CC98AA46F162C81AE9587C97B17CFD333659BDF8C3F79692E67008270842ECB28B56EFC1C3475AEF0F95C10871EB98D02766CCB0EDA8F83C8AB33651E4A357892B257B3862DBE0911D02DDAA9438D22D27498CDBF3EA0EBCAF2D701F7FAFEBABCF6396246D0E461D45344436A416011244D6F1D9C16035D0AB63BE423EE53855A774C9719F5F421135F505F988093E4E122375C310DEB2DC2061E144EE52E20522C1300029D14FD49F0A1A56AC918E31A649BBE3E947F6658F8F3E0049C24AFE33600426D93EF32C54153342662C4710A1DE9137F9123D95769E5024CCC1BDC7AA90BF2B195F59C5E50A67C6BB836AC44D6CF9F3AF49EBBB041F73B6DF81B7AC9179E8CCB6F8E3B1E50B51816D679E2BCD8494FC364430C757B5D68C4CC0933BA6E254BA7E178BE3AA982524566908A6523D316D317C0ED24D0165D2023CF9C9DCD6EC19A749E5B3AA6690F31837059A70244B164F268094E5A05D88306BCCEBF46258020A30415D6158194B200B37EF740554F8AE7B3DEC2EEE7F02A86D51FD1DE2B90130EB7981CA593C16ECCED894D50A4ACA11DD9C5CCB5AA76696756A9EAB8A92972A2F17A469235658B0C89CF8AC11A277DC39208BFE8ADA318A208D32DA2C33B93E08D9AEE22506A643EE9E934640D59EEA6486C14E92EFB3C97A1E5FA355A74F5F9A066B2220ACAA5D371C5BBB31F1113141A26EB5F3118EF9A66290A247DDB67765B60A172236A12589B14F9E48625630F0CCA35F47A93B13641275097CE93F86D8CDA1F8FD89DC1015DEF0B8FACF29376C8397FEA75984ABEBF581A49DA8AD863DA5A6216A7342114566C3D7274BF87438A323A849190B89E2996BEF2FAFBB2C481477775526CD138FFDD0A6CD3E65DC10C54747DCA0C28A5550AE39546A946ED12AD462301309CFC94E269EAA8BC8D5C367A39C9BCE71DEFC3408DB5E9159DF890060582C0198E1DC1355FEA1F7ABC19FF8FECE2EEE34873FD9FE772E8C9FD9ACD523F1B320B040E66EF2DCF2A14C4B1E4AC38BB939FA33B1915756773EEE79FE350A939D0E9BF62E201641947D1E8BB7B47FB7C0520766041C9DC174BC43699EEE66A9DA8E36318985DF4F48EB48F906F165AEC4E372E7AA799F7FB2C98E77796E696DA51B72A0F188EE88386D2430ACB5CA14B315A8919E68F254E0A635066498AC3E6F44D7248EC5E8122D16C17E9146A8379206E7630CD96B99E19F90422725AC8B113EFCCD6333F617B1C6624B826E1FFD07F9C4E9DB1BA6DC8AFF6B300B73484A03F410295E9B4432B682FD453BCFF0649E86A6F14C4B839ABF8A8784A7074500956054DF81EE85E8882ABD6A5E0F0099E7B84893259CA3FFE168184F0518CA5B75F09FA4645C6D3A28AA81D4F430DB8DE38F3B862ADBEFBDC66B48765B22E45B003CD97544AE363D52425A5F68462F33492661C8DB5712F19EFDB300F00303091B6F802758FD1CC8D7E6111B1FCF4C3495567394AFE2FA128A97E92FE8FC7BBD9D4E26443354E13009CE9E8D2240AB48007E7DA845525B00C287F06A11C305FE8EE8F03A572C4A184E35B2C57CA06414BFBC5DDC4C382C0D93FAC0F8EC1B3BE2B0A219DE4B029F463A0F2E3D35ACB6982DDD4708150C272992ADC48A88751F0D23896D31D96B2F98B1C7AA8B17A48334C8DD433B07164D14C3705F97ED9C94351B75CE883C35CAF9EC8AEFE8ADCBD13414F4AE417ED460A3A09D65843100E33EF6E1B3F6720B457572847D7F199A4AF5D9C0B57BB967681439F89EA170E138E1230DA40AF322FA4D525B068FB2CDBD905258DD03E4CF2F73D00246F33D7F23E2AE4BBFDF6F1B452D3BC9F15E9AE59B212BB37E256A6DC50DBBA890CC517E18DD6356367B7F1A085F378AD800A9FF7A927F1743231741FCF861491E3A81CFEF9BD8ABCF7A3EB8271E250B0AE360BC96FE2E0BAB4DB5DEECA4A3988B3C48E464FFD50D62134BE20DF13B2D0A33D2954BA22B6B8B692AE27181027EE1D270439877E68D5F5FB14A2616312D0E1098099C5BA8558A664AFCA8B2531823D5A0768E0C0B9345FDA2516300CD3C818D5911AFBA45AFA465DA5976D5DF4FC59ED8D8AFF6D8C02CFE139AB9E303A6818578A84FA2A02DA80F7E3C01D427ED2E892C0547C781AE3C2497A2A251E35E613BD8886978E4FBBA3B891A34CABFFE3D364384052188EA347113CD9AE5E6CD28CEE5DB8FE64240D1E5EF7F3FFAF174C1AA62DE7F0023DEE4042D39A301861E117B4C58782A73033A75CE3715D11B3E00391667AC9491C1B34B7BB6C19A0CEE09B0FF277EF69A3D135344FBEDFAF6DA313BB7EE68A7E1F81A7DE6DC7F15114935EE84FD1EE24216D1D09AFFC2874056029E6205F395EADE266AC60A693219EA697CA7F27C6A38B7BB5EF242D31F70C7123B25A272D97E3AFA9B9CA1900A406AB1E9FF25DC827F6C6C12F0632348710C780369D06D1F16584BC2835B091CEF9CCC5FF98F2AB5B52D557D2526FAB690323AFAEC7C4FF27108E271AEFC6E66FC9FACC53E3373D2881738D32C8262B80F1BD7FED19AEAF1FE921E338FF55B97BF41F7B1B99F6A3323CEAE60B345ABA20F44BE6786A0F09BF4006FE083C3F246F03E892D8DBAE488AF3BA251ECD4E75AC742D46C9ACB7BA47504DC541EFF58445F82F045B6E05C3C56A0D4C725946EE93468F361C7B186DE32257E6A641035F2DC00EE6F3CC57060567358417ADD5C1EBD3D65C1B36471B452CA0349A17238B3DE03FBB91BDF61311C27144FD82B0E466B036D063ED581309F2F2C04A24A9166B5B5C1CE52D69725777C459BDA51A9EDC21DBE5758325D953C524F8A77D376F4668A9EC7BE221B8E51B3FA3F2A2893B7556D0202BFB692866A67D5E217CF9EEA7CB025CFAEFA1CC78B91986D651CF83F8FDE54C213B810C1117EBDBC78B9C9285A0D9D9359C26BF8DCEA5461C46E4611691CC6E027D1AC632082174DFDF5369DE96880899E68FE65DB0EBCABF6B9B1A8F834DC1A7FB09CC7F6F68A7D51902A11B854FEFDBC8070508E442FC7F295B08A092B0F5E556BFEE86664D06A0C737005CB0A78F9EA737F652B4560FEB1C37E6735E44C52B134515F08A03433B427D49EC6F805F2F5D88DC0E179D7A212559A4F2C9F72B44DFFF9E5E2D21A15FD4CA7A234ECF04D57DB217BD49A70935AB147F81E22D88063E0BF74B15978DD5DF13E83FEDC37B6669E63CDA62FD912142C0D107D1DC4ED9E004FE83F6455A653E9737C6C230E3994B4A3BE3B5C18EE3E2136A379D3F435C987B93AA58651E5EE0922C03B7F5A3CD415D2658B5604F30F2F529007F11933F136F14B5C451DCA83E9ADB29DB53740A77B07BAAFDCC7B6B832B30C40A958C81C544F3A7D03FEEC9769793732B4737167ACFBF28A0462ACF122F2386590C71CCD21104B99A04E4D67D66F0D4F17100CC60A8D79A9C8298B40C068C5F267F6A5DF5BD362FB81FB9F9AD97C3B26AAC68DA2B1406841C843053558B6A66E096302961A1C0E4FB907EE08D7118D9DF77EB8A57FB89B71CA2BCE15863DDAEBE104A4CE0BD419F07806839E8BA31EE94AD8644AB9415322B732F1B7F0A73A71FCC24AB829C7BB640CA32BC3EF2CFA3A8FA6243E53486129E2FA777A825C64B66DF84E8AF5244BC4191BC4D96FA8C319566FB5438ADFEB93B7FC60A07D0EAAE80FF8BB0BC401890C07C016B386997530ECED4201293DBD371203E6821C2E196AE1863AF3D8D578A7FC770A0EA7842DA9CC8F7964BF3C24EEC7AF125622748EBC05} err="Tx already exists in cache"
    I[06-18|12:57:46.384] Could not check tx                           module=mempool tx=Tx{4992425C657957A98F93EE826D6E666F106A150819F0D45BE9BD5AE3DB743FC544E668356268AC4EB2E399FEDBBCE16B6EC8396AB504E6E89625E2444B93115687BF29971D8DD73E08898D6989E4BB7FEF037B181A0E53E85677E4A9EF4FCA7EA43E955FC501E6D1F79928C9A16F268BAF2F956F38677F6027A880BF855843B0E1C78BF92C6C55F3B5F95AFA929670FABFA928BEE28C49221BF3E5FF4E29AA3CBA45D7E5474E9481CF9E9AD99144CD24A30515AD52F66F14D807C7FC8ED951645D3B3A34B1E60B72A329CB70132C25A7D3C6568FA37D8858168994BA0FF841592CA75EA727A1558BE5CA11F955EB660A3DEBF1D856584C5325DB18909F7714CE3FB5CEF10D177E591E7ACF83D44007C1C145B3A3CE9F3A5864424F178DABF4E4DF416155E79F77DA287C3B8BD54FA38BB4A8D277D469D3F6CB5190BD3054D15B0C2CC4F1E1711E43B3395880DEF4F6A05EE0BF851371EDAD62A96D6A60BB13A3F8770E3A48527027C4653CA93B2A99897C7DA41D9D4DE817C704D785FBE06D248A41845C0FD6D9423174EA477A7C307CBE6F6478643DBD78AD99625F62B7915FDD7EF6E24B32BB172660300FEF8E112B4A7027D5C27C30F557C6D299F96FE3AABE926875B79C869FA2C2496031B07960373CB585F22EA5A0211033C7AAD7785631AFE573313C1A4FFB383EA99B7ED77A139F2EC394D655FDF87126D362C3F7A7EC07B00F3BA937C5561B3681CC9CD3D65E4DED0B2D5EF380DCFA4032938C25A6DAD433A77BFE3A9330833FCD27760B790D8F945AA4B0EC2D65BC860EB19D39F39924686B3B7973B2D8A13D4D5413B0D508BA9CBDC7E1E0573B096AD2B50E4505FD7E87C0E9A9BF62F266FC6DBDFE7A68AB7CE3B5C4E6FD379D03E3849D5141E48B574A5F98344F61F576A2221239ABEB49F80A4AB0DE4D0CDB7B7A62EAEE9735FE4F0DF77E21ACA0AE71FBD4C63DFC60A4ABB1EB03EB341BDC1E6200205235C5C64A8DF474BD6DEDBB8854318F17C9CB772DCD221A98A11A99F4F30F49A678EC844D231C790A37351166E5AFE984CD6FECB6B172B4D5B128A02E338A73C2922F9033AAD92FC0E2777762FF42942C37A4267E9013767FCEB9924628A42D26262A733078835DDCFEC4080C7D7E12E2F8CEB9E076EA67757F9EA56C326E0E063A6C6D2216516BC3F909B5FC2BE22AFA91E82D5E18A174447A892246A8692E68D238F0B49E71E9F0A2DFC1002BAE68AFBBFC7E62EDDDED5EAD4CE8FB61B1AB50BF2F2353EF800838E1F7438D76CD9A96AE789FE0706406E5495AE798068B26FE74CC60EA14961F94C046A7861DF05423F2BBF2BC865457FD0DF5A6B836584336FF4BB67C9E48278939842D57D8E36D3CE84CD10755D75DBD51E1BF85EEE72DA261FC6783BF554014542E6955FC9680E0864609081A47F7A198565D08B9190F3BF72F6B216C012A2C88C5C17A05F76CDAF1105A15C946E997A967C4C48E9D9CC6A20FEC25D9EACDD17D97F3693009D585E63AF842784D5C946F15C9A9795C8863E24EC8DE09CFB1B08E0E8CC5DE30A0A32B560DDAE8E05CBD24C7564F58BF0C26185512BB559F864FAB2671D6BF947B3E770D34A4B41959228AF0E8845A9A66C499C791BD0F659ED0855A5A82F7F8539F7C460006EA12A7042E45113011FD5653598040BFB9A66E4224165292BD31DB51140773E92096FEAF02F6F67A2B88A31239E5CC816D6611803C7E39492F870C39B000877852ACFAE2C71CD1523B3394495C441992655CC5A1FB25424A4D009FB38D19A9A7FDBA9CC708A770361B9E78330752BEFACFC36BFD1A1F75CF5F9095D057073890627CC77BB0C8B454CF221EFCDF2484C654EB0BB764AA2E303B8FB0932B130B9BDE70C429773C14FBFBDD5DCCA215EA52FABD4EE109B19CB71EBAF749306BE87AB35EBEB0A95E17544BCD8EE69AB7A47251A4022E6C1943CB273836EE35FA0EF7C21447DD0D7DDD755CF40DD372B7186013719A2E3DFC7A6193C27B9D0B9AAC8509ECD131E58C97C01532BB9C2DCEE07F9B87AC2415B9EEC7471E9A1B809967B6E172363F50D60B8D74117F1D5B1E4AF3E60D7162E3EB1DBA6089AA673EFBD86C5A44318D940A112B346AC05AD941DBFA03C7483BDA4EDCC7B79C8660F8860CEB294DE31207A91830E616EDF1B406C7281B263384B8A6D20BA3664E7991C202AC07A74F3F9D8CA115565FF594FA597B637C4558A492F1FB316431E37D3B2D300E77C2DD9166FAC32752F7CF968B2714B859B081357D3225CE017D6E67B7A2FFCD4CCEDBC2708FA6C3339BF4874706E5FC19599D34BB5E76028531D9402CA14A50792BF77BD8FA08E6C064E0E21C60F5436DA93DC25123E475D5F3541B4648E3BCE142C6A00887BB0941EC94C8D2657E1D8D5417732374BB9AADD4D2128F4C0FE9514241276A132556DF2A17CD9D8670AA52778730F5171B456146896234C60512D11C43800646BE1DB4DCF0D3D153EB7E0C9D09A9FEAE789170637689A9B67267E3A90C90DE6A95AC0FD2AEFC42B1C9543E73C050E803181B2115D77EDB5CF76582E6C136F8ACCC66E038609F27F3128EB451F2F158D198829796AFF6E5F3AA01D629E968641317374E681D598D128587953F8ACD748868442B2645B67C4491A0F896F1D7BFF2424DE5217E28B37116BB5AC9954BF00E4ADFEE73A5F87A852AE54F34A92AF051A82CEA8C1F9ADAC16AB2DBCEC53B98DDD74AA6811DE34A64E64844D8C5C51F17BC0AB1692205627C5DC9D46BF1A57162FABDA535C10917B2A986618A5E243AB0847D121CABD739097CC09340932AD30B73C552D7E903F81E4CD5290F6EC06A50187A573565F3061D8B1FB4AB48F319EC55AA4109AE1090A01BF22514578B60CA28A33617FB198411016815F95433DC778828299A70CBC69D58FBFBD85DF6578574E7BC22A069F4FA871775251C38BB7A487526B352F096BDB61A9741278B2D0951703BA788E9B8057D7A5699A9093701A4950B7FBC302043DEFFA9F44214FB232BE0946E6C265B37754E22292C9B25A00005B263D9176F35ED2A16899E5501BAFDE083550ADF9E06B634A8BB748BAF3493AB8B4B17FFAC2DF40602CC0F55E0E6DA02B5D7A3C06C5EBAF46B337975F4F1EA24EC4AA912AA8A77D4A7D8CD32603568EACDD87C33A887B08E689AD5D0B8536356C4210866F3F4EF632712F4914C5960CFBB3C5D374226FB1D331B4662BF57B355CAB76E18E79248A0E40E05912405104BE31215501BEEB08BA7052E3CB031619F47B65989780863E93C2C6452A12BD9760B31F38186F41C1189F8134FAF87489D07D00E9D9662953E9DD0D714553BB05A1E1C4F5E7F8B3D8AC04C1F8A0428197D201D1411665A273943590DDCE4A8A1AB1806FF1FE5634498220AA08B7712D656902DB5E0C1F0D4D6325015A99E6A47DAC279E2D74C4C1994E70089E140A258A3E81A80B9B33E4E142BCEE3426EDE56710D0659A93C42D6503F1EF0D9B29FCB0282EECA7FD67BB857A3DBCE8E72F112C42ADCC816E2B34BAEAAB58EE3FB022D53F22628E3D4A72DAB1B3B1579B546D5ECBFDC1A5E95C079FB0444427EA43BD216BF04F60276F838C74946556DC8888D1BC7013BE5BBFE172967248EBBAAE2E22A868BD322EA295AEDEC6E145F47083B34FD6B9BB6DBCD11CC4ECA184F5DD7DACD16D2236F4913889252833A62844775BDF49BB10DF28303F0B2572B2F58E907F634518CD1766DAAD9D50D93D3DD19E41E288876F35ED5C2B9F0D034C5445C0EF8005E79D5D88E1DDEE3054E11818BC72FA552E6EAF7AED3D9B9C345AE3FC4677D3DE29A9C9AFA32CE4E9081C39BDC6F152C5A83AD135AF2CE6EF1950B06F4DDCAEDB162E36606ADD5F9BBA2B43D79C171DB43D2F7A02A8DF88E70FD624CF8105706938815CF8546D827FF0F3A6DFDB7E1C363DB659A27477928C47C0FE165F3B029298672D05E2BFCF6B8872C3003DFCBFC9BAD5F691675E9719BB5417C924EB6AB7C1D4229277D04D321AF708BAEDA7E1463D8150A12A4D9F7466C905FAA3C1A55C1CF18706ECE7BE8E48F0FBBA9DE9FF523F18D025F112508740D1927F7AE3BA156642C1F25A9AEE21312DF248A35E99B9211BF7E7D2F14456A25306E16E74B70B866B805A50A767E4589BAC764BC3832E256BE2393254F8ADAE6A12951FFC4673CA472D13BE2D1BB76294B29AF65EE730261FB6B264DA08D49A882D9BE60307B05B30FA2BC9553B8B588600468B59A6B2BD78C9ECDB786E543628FF4614C3D578C68D7D8897B587CB424D939E946FDE807E08CB3E3A4985FD4351E2FF55427A9785F4996BC62144521DC1AC6B2465348C0AB85B78D0BB6D028E29E7FB3E26C7C4C78D1978B0A6C1509751BBDF4F7F56400E8ED7F5B170BC9EC4EAB02FFB1D52890548C67D7A89F979816F98E9C2D49D1D44CB5C296A6E2D5A405A8206D4FC98AC2DC1B10CE64C59946CC221730D3F9ADE411E1E2E3CC483B40B5F49668A2F57F4EBB8BC6ECDA13AFD2071138CF668CBA1E733804304E7D4F2AAEAC464C6045E22BDF453C429DFCBF891B8E054B783B7969340138082836E25F69F7EA9395267B9FFC168BB8AF1693F1C08EBF5F2E26804718CCD45D08B25970FEE818822121A9C20843ED590BD99853939A1FC5C3CE51AA6A514B6CD09A6FDDACF22A6537BDB118C0A9B3F71C25849E93C4BAF603E9565F765D0AED17B8B7FF55E3F976E0B9F97C22FB2B5743A179BDA4337A4CD178D39B0DCD4306A9715A71FF77852D76939D22F1FB680C54E3DFD20F3B6C39A140F12D049AA4690322AD03547CEEB4295A243335DA1E77196B1ABC0003704DFE7F39C2B4F751E8D838926F227B64357DD846D7B89105EACE6CB9E207C17DE40602187E7C7FBD598E2DCB43DDFEE879CA09051A896073E1A36BE8A698808D44E97B41E93B6D2213C141A60F18620A87BBE083237D4B21523EA4259E8B7B5E496D3B17C1D6EBBD55C013B26B1030F8B2D05D6DBEA9B24B8536478C789C02A1A36D2562DAB871140A0B01614D211593DADCF5CCF7E9F5A0AB99833B9EECF5441F5504FFA64D2DD6D6DB58C6054E5F5A618748A2EE5D29B04C6761A47D7ECDEE5AA826564E868134229A5ED766BD0E59C4CD26A495E6D9C9FC146CC812BB31D5D87A4DB8885892BAD4661CDACD397674AA7DE9ED3EAEE1844F0A2DB366EF238957F7EAFA963CE1FAC49305EC3CAF6BBE86BA1791469D4C59D12476B8A5C9B66AEFDAB0EDC0B1F9A38B2669CA40B108AD137E5D4516E44C03EF357C41F2DF56CC87F66E83BEB62DCE1F5AB4461BF6FA592812D2B009763FA0157FC1324928A306D5B141C850506294031F85108ED8642BAB988E02708AC0B7023CD034A480D5FE368410FF180AEC49F9968CBFACD44D88AF8194D9041BD0A22F19C5690527BBE17D7C5C806D707BDF31964147500EA37A1E1704B2BF68060380B6A9593F423D15D1BC5E3485931949A52A633E21CAC760A4F4A252C674D83BDF279F1F1B5979A2B2F976C2D38834F7CD114BA4B1F4B5100089B2F4A387EC1F4576D821F6D7699A5FFCE9CFD9E9BBB4503D100ECA99AE0E3A991620A4AB7E44AE1E65DE0F8E1E379C24F0E7FD524D7C32557965E16C7AB9BCBBCB75552FD5ACF091CB96873085BB50E113E73BE570161E32BFA3B1423A8EC0DBADE2C528C5BFF9B473E478D7C1533A3AE0039AC7E592E3651F32FF96C7E501B98EF4FEEB46B9EE5EE17FBD7D17785948DFCE5BA0FEEECBB03EDAF306A5CD3F689C4BA6951A0ADDDCBEC499856094B5B9E8C3DC1F0E7B93895B70E1D37EDE95D117626B837C572470B7BC003017F6834EC046D574E3D0DD9A50A1DB653B325D2E5B2419DAE90C88CD21BB2B29EE42BE5D04258ED4566DBE43678E5BC59BDBE28F3013B700F5B1E29D7AD3F8FAF8F9BA4F6CF72FF9E53E8117FA200B226C81EC5878EA22212A76C9FBAEB4E29464C1682357FCEC9F60BB365AE73FE94D44FFB5C11F06F1AB03A50AFA36B36BCBBF8263EAA9453D08A54EA78AD350333CD82DCD5567FF2ED2EEF3D51C000C85D8D3973849FE53C6796C343AD33BAFE38AD834F373793CD90D60DC89DB27AAD2D50C8AD5FA2079D0BB270F0C99580320F56208F5D0506C7197F773952386F9AA4472264B4BE09B5D9BEBCDE9F2CFA2A5DF02F43EF3EE2829EFB5749AD6079059892FE8C49D2A370E6A6DB3242938651DCF4155C9B8E23981584067FF47D9B77A6BACFBD2E67CAE027D0F903C3D6A9643EDC7E7DECE1E31135A35216EBF60243D97355CEB30A151D0AEFD802D5FA4F0FB890C452739205C783F91094FFC085CF61D35CE5418BDA972D959C6C6787CC8BC94967952D06443E69622D52DADDBA0BDF1FAB7844FB0E9DA607882D0A0A2D43725CDD1BCC0313226B40EAD18F7EB61B06B151B571CC39B60A82C74EEA8733BCAF557406407AA80022E66F176F3907F1AC839306ED9A4E6DF9A25FE1D915BD008E30F0093FA349A2161C909892D70ECFBA6BC677572BA03C3235A0D661308ABB0727F53B5BF34FA8BEA1CF6BE2758754C8C9AD0F9E9BCC08DB485B0CF176B825F46F383EAD40C99C72E4E9157D4EAB9ED60102808D4A726C3C2B472063D8D75BAAB1A820386788388D327B8461D18A072EFC313C7DDF79F2647E1CA0F57302C150E38CACB7B3196734536C6345F68CCC2687C48D24139386B3F9F3261EC41793E81E16DAB29E6975532BC1A86EB16E927E16A9F3152E6CE5C2CD9B53CB61DE9D23B5165EB5C802B7E0EB797BD85FCC581D1025C65F5955770939C0DA424A0E55816468A27B4BB54A390F34C39E6499B3594622427257A81717DF69762D9085A751074DEC3240C89CF3332C13C3A12F9EBEB4B6E2D6E2E60B5F7DFBEA62BAD00BBCA84FF8C74D48661B65B8B78A3A52D5879AC627572D6EFD2923AA063A57AC4F10CA8EA05C0EC6C129DC52DC3B4BB2C1347B67955688C8E63E3DC083C8549E0363FB47147F878CC4BAD866583F66D410B408851E1981FC5B604AF14083FFFA501F1D603C05E0FAFD474DB5F6066021529B66681F5E022F9B511D7051FF88017EC55D5AB940A2FCB01BF9A8728F585D491DB836B98324BE26DADF5246F0B76BB19C0DC65DE6906612221BADC8307377F5D49584F3B141EDDD47A72BC1588DA573A2DE32E81BA8979D873E207F3F5BFA7AF7B8B1ECD1EF0746EA4D88099B0617C71BA976FE490D981684E149CD08B4132E0516CD67E7F33BF5D5743F8217AA806DF29E3A46653F97CD1935C38868A2DD9C890F95F8F7916625144DAB20612380A2060F86700BFD545ACE4987BEB27F1825B607A3873E1716075215E66D95458C6E2E9F4372D629B9B65284CFCD08A6FB25CCCA66432A007054026C53E9E55B293937311A7DA225DF2630B83B60D504C9C7C456070E53411878090E7F53DDBC2F33B4F62CDD0B60A420F7BC8A1010A06AB1020FA7CD02F1E428F213C845DE01C2CE8F32723C128B74D7E2C2A6164BCE07B5E1312A0B9B7429BE09EA47CAF137C174B7BAF24EB592F1DC2154D3F635FA09EC0BCF814BE0596ED84504A658356A716E323C361107DE0A265F191E8855F13A2EC1AAA0218E6001851848A9FCF41234B96CEAADA439B0EC8BCBF49958D1D6D37491256D8FC3D5C86840BF3B0329EB4859782BCCCFA0E5B590B43FA95866E707692EB7882FA7FDFCFC2BA4EFF70EBB29268EA7C50A7069B8D6182B273901A6A8C01D283FAFF35DF4420EBC151C4DB2ACEF9D34F6B0F08FE20494A6F16755EFB5FCC5715F38B7EDB05D2FBF6A8EAD5D0293AAFB876856A843E03A88FA3036AB4F318EEC1A2528ADE7DCBCA5A404273C30EE6152BFF20D8C5B1246F590648E47E916F706CEF09202B5A343E69CA68051EC5063E6B7C19D2071BD3B88D542464D8084E972E7CF1193B592BC0093AC40C5B4B5F8A7E856E2BA41FC35C0D8185F6DC89BD85D15B1AE20D8BBBBDFBAA13BF86C7F6F92B621B8CBFD05C7C8D0E699B21E7B33ED66968FEC6DC4226533BA78941FC0BB30C1C2EEF4FC218FA5BB42DC85E4898290E8CC5829C09CAF004E82588926B00812C713C24738C3DFD332735E5EA977A93C35E0598154BF79583BED8108A1135513A4ADB4F15B1A2712278B1CE04356C2B720D86FC986256926BF54A26B4E065B54896EF68E71F03847ABB9456EEB4EF870F5AB1824BD6A9E73FBEAE065B6ACC651EAEE9B9A5D2B62BDAE9FDC0D6BCA49EE3141F8E3E7BDA9A36E2DE9E995C35B816A13E64AE3B609B3E2D2A44953E2C4DF186409AEEA6E334157C05103EC03F2F920DBDDBE78037D0280CE69033A2C0D2EE902AB411A2CB421D61E8347C2030EBF666AD66F7BC2209D224B64448A62454CE804AFDB53651D5080B9C1370061D3241CB07A0C7C0B749706A737521015B59D6DF8F2BB07378031715E66D7072BDEE23CA6BFA5E0F99D88A16E32BBF0C104D4ABBDB075AFF8963289EE834313DCD2DB9BFF037060E5DC15EC0E6E29D07BE02A32954F0A0936995EB21C80FB68ACEA2C2A457EEBEA25352534C3D0D51B45B2B570E9157647D61B8199BDDD814B9EA227A76A10C0ABB0B9E7EA5718EED61D4DF335E75412439A2F2C200AF1E0875D829F2978F4FFE746FFE3973804044A79F1C4566EEC8FF86BEECAA7058A451DEF75306CF1DCCAEE4AA8CC63CF26EEC5A8E424ED7C09A03905D53B59848E0ECE548E3DBBE9769E1AFD6A601ADA3581E924994D2970178C8F635586231337D11507B3FF201866415FA8C7129E839B55DB00FBBAD9ED6B861ED25315B9BE4D905041B71C34551CAD95A2454B1254D2CF4D1F2423C58A2C49BAAE5960EF23188C193C6A8F409240074D849792600A8D93B1B3B1B1458CA998AD862445D2599CF5F2571B516E5453ED620184F242D96CFB9B696184D59E04968D64C7E56EC442A6228EC8FF670E510E67A970A598F2190088C707359CF1279C3E7BA8704A310C6C28058CF7D4008D3122AC7219AD4489792F91D466E8970E4FDAA1E294965D807D711AA342381223E3C3EEED00812AFCE1C1B93147C2AB9D61A71E631CAF8D90402D31B21EB29AAD6E809F794461000182167F43FB7772AB1DD504CF0ED572B0637D84D1AF8D9D378CCB805B1B93949C8F8ACAB8FB0BFF86C380FD0BCE7EF530D4CF8C94BABC889D39EC04FAFE15CD328D7BD9DB1FDDBE60F0A37C36DD4E3E54B1CFBD601556997EB412677D9BBB49DF4934ABDB5718FC0382DFA1FE0E6E68CA67A79D52E75A4F69838D151BD37E976DC45C07E90E5425099D6B59C78A47F683AF4D8DCE98BC825056D6712AEBBF9D405AD2DA0989062C77743348F9831C6AFD5620DF2EC79946F31476B3D45B943F9896D7B4F0BF1DD762DB805BC2AAEEF8C7A4F0AFD1471FD18711396B2DC5117A2F21981F888448C23A7CE8A9F1BA238D7DF240E95E574927AECB8A857120B8C87C30DC1EB93907738E7148A17DC7900D2EE3131D7046B9F251EC02C9F4A938725EF17D59D163B509784FB6A95E3122860477CE2BDBBBB715755A9DF3A2B9628E160F5D576DB328BCD2614702A2858052BBD623CDB788260273793C2C621A1076C719B470813A8EC020BA08AD0A8EE7D14D50F5BEB4E4E7A0E3A31081FDB17006475525407D254810C856EA14BE6F11AEC4ABC1E6F7272FAA12B125B60CB3873922EA06098905548AD7A0B65E065C027C78CC10363BFE6E79BA8363647A93137DA56024250A9910F34E33D0BE72FD82D8C3C7CFA3033B87F97A6F749C0F043A4D71A79A2CEDEB344544DD68BF151C35F3AB1FE682F70094D39EB3C270160F9717299E15AFCD2B2BC4D5BCD38D65C14C5357693C05A3CA310D59403AB6D7A6856256920CEC78EE9B33541B2CB70E6723969C90F517A0115DA059134E4E30789998B131C8FB0FEBF88794B69425507B8905F1EF6438C4D65F41624CB6DC592980ED99287DB9272E3F281543A2501DD1A728D9B68E9275352888E664B773AE98E253DD87CB5EA1E0FB9B34F2F1051086DBCE599EBC080692216A5C288F5B7A0A206D64AE7A5359A6427E9C2C299212E67857A29F8E7D7880429F778BCB5C78DDDE9C43FBE71316254C8E546DEF00B7805065D8C5ED874CF00E6481BEC4C6E4DC11C29840F4C75571622340929CC1F13F40527BA78A0B1007958C514A01D50BEFB6743DBD94E4A3CB27A534BA68455B10B9898DD2CFF4102399EBD1DEAEDE3832BC7C777B744B73A98E419E4A3753405DE397DD3BF0DA05D17558EC6BBC79684B4A46F81580D6B5CC915B5BDF8FBD24A52A89BAF776174C125ECFBF38C1DC26BA40B3397CD26901490CBC25293AEE6BD51FBCB370ECFE27F71BA085B526DBA27A7812B47A2259BB4C8BC8F3758AA141E84DA6F68F339E00E54FD010BC4DB096D0B7B0799C725D5F6B95CAA90500B13341CDD70EE5F191988532043E2F3811F32D79A21824E7EBA757DF09C9728ED7546B46699AD379D7B2A93F0F81234675932EC30C372F2414531F8B8D019FE8C33A23A93943BBC9C2BD7D39D00A54D61546C3CA8D5C77356E20F633352F97E660419EE0322630FB9819604ABD8F60655DAA40ED74A57C22C1F5763B26CAC5766C5816A9F12A3855DBA1063307C34FA909CE05263D0EBF7631534B3D1D9BCF18BEB32C59673AEC88724132C11EBE2BB3C25EC06ADF6BE22E138385A868F468294E98AB941E5ECC981F311DC06145A511610D6AAF0CF02E02574D575CD0D7B68892169E5A37BF584F751A1FFA3CF45F7F7A772C593305BC6EF6DE4913B6B22DC4B9DB515ADAE1A9212F8FD93B09D2438E07BD678CD2562A06A6A2291EE4515EC7752D8A286D0DC88855183F781E0CB52765BDF261DEC23777F79AE25A42CBFCC38273DDD7F387232B133356A3064E0F04470AB2541AB9F6C0A8B8DD9F609A576E846D6896BD1488C4D3F391ECC19602D25D61D849F814B66019126A7039ADA949496996E80027B9A404C59D8F3101BEB932A5DDE52F58F87D50EC721FAF888C3C242FEEE0EFA5D0A8DA983206FE4337BEB0755424DB5497C99541E2E59E76E1E0E7183B89D39F7A4828E4A02AE00A193BB46352443B14793B62BC04ADA765D1F7819287F3FE382919AD5635D5065B095B92CEF6250F3D0A83AEAA5684D71BACC86ECF3C933B0ED67A9FC29C616C580240366BB5C89521CE108B9AA53E7F000388AF46ECF24A95B1351711AF6DE31840BADC29513EA09D73277580EABC44F3B4CA351246294B0A284DC6358CC8DD40575D837BA61557BA2C122D6F569A3CA8DEC650927ED49B0CC34EFB529DE088B9C70C8902F3E96EA92080576E8FF14F1AC6230648D80D3C29977B21D7897A1A8BCC9B1913A1195C8AFD4138853F9AA43621D92BBEEED6B02FC9D6A4151EB937F262E3F0BE718333B760FF6020638E02E0CBF5BEEE8F4D7BE9AE89D6268947ACC72A4038384DD7DEA58599783B5BBC0E71C7C32E89B7F0CBC4E4A372B93E5DA968D5255A225B62CC03974A4C078FA918D98C9C0CB2EEFAFC3A8FA4E524C2A2A9C35944A92215D9A32F27D3A984BC9FD59985BDE574878C84369D882193097EEE47F61D3C89394ACE8CFFA529D8FD48197CB734911978F29ED089C081782CADDB552052990D9DA5B0011B0B67187A8258CF37FCB934D66724430DAE35BA8DC1AA9E9230EBF192FCD056C4E8148DC49B9846408E32E9E76AFE040D6E9C8AD00F65D551199ADB7E52FB58BEC7FA41A5E1EB389EE4C9B4320F1A2C9247D50BEB4CFD7F977826FE08CD1F58851F4C431E45DA05FFB0628FA54698A141E2BF6AD8201570C4F32C203E11919740F873AF47C8C89F8BDA5360355E2E89A2095987150EE301B2105EA53D1604CD56D72CD9D43BF1CFAB91740A47BA0A389A34FF5A4409CEE84A283EF4694D05822243035473693B11EE62FE4A71B01DD4619A1E104237AC3FB97864A19CCC54049E43321732E0947B17A91B7D76B68DBE5A14A66F2743240090D810E49BB5F062AB57CB98469B8461610D79C86835042B38DC447F6F1ADFF88DA6A181B8932EB1A1D070D43A1994B410D0F770A678BBAADAF988739B4A7EE287D059415964DC5611C6ADB5BB4ECF03D66E7EC3B240AF70680C49609E574B8EE3B756B83E0079ABCF728C6DEDEFAFBA8AA22C5F7FEBA9BA50E4D4459FDE1D5B09E68D9F378448BDBD2833DBE82B7093264301E9FAD50ECA4C56EEE3E9647B59A344863B9062148E41AD16B5580814722C5026497A50451D2FB122073C93875ABAA28F66C5C409EEEC0A9F9DE1E87A4D0A67B70C977A6AF3257758FD6216DB5383279BE671C237D874472C4F9848E572CD80AB4233D8A4F7AFF2266E81BC8136937A897496D40B92F8E0A882BC1248B36BC579D1413287F95A0BDD55136A005B767389E75BED020DB99AE0B5B627580833810B813A87E7A223D2C405A92A7DF75080084939C7C0073F1519957A04C7FBFF3362418D88A21F2D023A572241809449D8CC30D96610A54F7FF654D14067825E48A18215966E68DC3319AAA7405899CDEE4B4932F1FAECE000B1952016A52092EE21BAF77DFFAAE2AB2CD38EFF5564A0023D397E8DD54A64014CFDE2CBB824F52928246E39B2DC3DC5BF8F8C4251AEC47A137D24F82A0968136CD4E4777A4F1AC3F86F18A18176E534C2CE65B154D77F3B26CBD277EC1C9B0DD9761E48B887C43AEFFBB89182F065EBDA3A54F450DB26F233F199BF1325F381548BC03025B93E36D633623552317A4CE8CFB014239B8DEF52268810EB1EF2957C9662962426B917B23F8CF8050DEF70CD353BB60E17AEE1E1571B3EF09003926214C0653214E4632011A5AEF8ECD78A192395BD0793BFF32A1C06F567D8E85FC00BEB034F118FF242CB809759C0D8652B4E298DFAE129A42D723CFFFBB8C3659AAF06CBA82BD1ABC4373E14E4DF780C02CA1D39A366B375F8B2E49843B5CE4F69B7A05C54FC108B072F2EA25569A5F887C7373237D8655822DB848F37F58D37496D9B3FF6FBE47BBE45C937FF1390F365A74D96293F7DED0E55CD09C304DFEFC45EC9801B0E2B31DC8DF172DDBCAA630E268E0FA5924E17466F92EBB49FBF0B04577C5F5406E25CBE52D028C1C77690A4433ED957CCA92871132C4EE809672E740A3D20B75385F5F9CFAB4A9EC2199DEA7618FF87379AAC5A6EFD4BDFE480085AD7C0A33832A4D31B37F089C77D818A7F19FB1766F130508AADA6F8AE3AD17F9F97220E25AC0921F0CFAF6A0B864DFB31B405AAEB8519CBA18E361B0AA5551AA10D979ED268E69F0B32C59D7B2C039AE1CB9FBA9DE3ECDCBD1BD3ABD62454BDBC16906AE3CB8CF5E32D9B2A23C99DDD1B02455CCB7BAEECD485E61F4DD766352FCBEA8FADA79062F444B0F0C42D3CB45E9C1E22714F83745BA8338917255424EBCD92EB64A9C60E45AD0EDB1DA0403BF1771DE23CC00F75B1C2A53799E4135913F9DDAF3A80661F256383E19D0F701D7873AD090B12E17777416B950E611598D5C537AF4E02A2983F2586D71392B1AC07AC6AE8ECBB1F7640F4E3B22948B94FBD126117E2293372D3C89811DA252924105E38FE62F0D9220579ED80D8EEE626703A80F506F5E763252294794C8D29825C304E9B9BE99F062A61432AF59696E79DE4B1CB6B0BD992248188D6963470683CEBE5FA9FF02F57C87840F2E85A1FA0A94E96B7B2475CEFAC13D719282FFEF8C0C4C2AD561C66E334105F42A1B2F1F4C673DAAC0D660B81C59FFBC36137C0AD2AC0C00592ABA81977172C2F97A20D286146872764CECC0B650CD51A1C4F6DB15AB009A256F855C15BCEA71DCEA73C248386D577E789BB5777896A5210DD7BE2D3F4EC35996223F333D51D22F7E9F02FEAEB47CB49381B6A75D514FF0553DB48B69C0F97CF462D1BA8BCD60BC750A83461C8BBE6376C974001477A368657B066136459E3D4E68C9468C492C9D14935C90A8A06AE69F30C1DEF0846029F798BB82E46EB594342BE26E41F5C96E0009EBC08A8888752F886AA78C7A6BEE11CED779D8F237716CF7210C10C459B8A7B1B7F6223CB268AF376C793F5D9C35130C7069272AF34CD5EC704FA4EC9AC0D5C433AE42977C68BAB56C8717B79A0099758CB49095F94C8C7E7FA4C16A10418FEE42D3BDD96F5530128CB2F816CA456ADFDA8DF056A3CF5BF3FC9ACC7B35A98F} err="Tx already exists in cache"
    
    opened by yuomii 35
  • question with get_vendor_deps

    question with get_vendor_deps

    $ make get_vendor_deps --> Running dep dep: WARNING: Unknown field in manifest: prune grouped write of manifest, lock and vendor: error while writing out vendor tree: failed to write dep tree: failed to export github.com/ebuchman/fail-test: unable to update repository: : command failed: [git fetch --tags --prune origin]: exit status 255 Makefile:51: recipe for target 'get_vendor_deps' failed make: *** [get_vendor_deps] Error 1 [email protected]:~/go/src/github.com/tendermint$ make install CGO_ENABLED=0 go install -ldflags "-X github.com/tendermint/tendermint/version.GitCommit=git rev-parse --short=8 HEAD" -tags 'tendermint' ./cmd/tendermint fatal: not a git repository (or any of the parent directories): .git cmd/tendermint/main.go:9:2: cannot find package "github.com/tendermint/tendermint/cmd/tendermint/commands" in any of: /usr/src/github.com/tendermint/tendermint/cmd/tendermint/commands (from $GOROOT) /home/zhr/go/src/github.com/tendermint/tendermint/cmd/tendermint/commands (from $GOPATH) cmd/tendermint/main.go:10:2: cannot find package "github.com/tendermint/tendermint/config" in any of: /usr/src/github.com/tendermint/tendermint/config (from $GOROOT) /home/zhr/go/src/github.com/tendermint/tendermint/config (from $GOPATH) cmd/tendermint/main.go:11:2: cannot find package "github.com/tendermint/tendermint/node" in any of: /usr/src/github.com/tendermint/tendermint/node (from $GOROOT) /home/zhr/go/src/github.com/tendermint/tendermint/node (from $GOPATH) cmd/tendermint/main.go:7:2: cannot find package "github.com/tendermint/tmlibs/cli" in any of: Makefile:23: recipe for target 'install' failed make: *** [install] Error 1

    opened by ying2025 35
  • light: rpctest.Tendermint instance's clock drifts +7min

    light: rpctest.Tendermint instance's clock drifts +7min

    Discovered in: https://github.com/tendermint/tendermint/pull/4487

    I think it's because we're stripping the monotonic part (see types/time/time.go) & using only a single instance (so not using medium time really). But it would be good to confirm this.

    T:bug T:test 
    opened by melekes 34
  • sync: Sync current state without full replay for Applications

    sync: Sync current state without full replay for Applications

    We want to be able to sync the current state without having to replay all transactions in the blockchain.

    This can be done securely by first syncing a light client to a recent state root, and then polling peers for the pieces of the state tree.

    Let's add a new state-sync reactor to Tendermint to handle this. It should use a new ABCI connection and message to ask the app what to ask other peers for - alternatively, there may be a case for it to just use the existing Query connection and message. The base of this could be thought of as a general purpose mechanism for letting apps control the fetching of data from Tendermint peers

    C:sync T:perf 
    opened by ebuchman 33
  • tx indexing (Refs #237)

    tx indexing (Refs #237)

    • save transactions to blockstore

    • move to a separate module

    • benchmark KVIndexer

    • batch write transactions

    Benchmarks:

    Using golevelDB SetSync:

    BenchmarkKVIndexerIndex-2         100000            516300 ns/op
    PASS
    ok      github.com/tendermint/tendermint/blockchain/tx  56.506s
    
    5,16 s for 10000 transactions
    1 s for 2000 transactions
    

    Using golevelDB Set:

    BenchmarkKVIndexerIndex-2       h 3000000             8622 ns/op
    PASS
    ok      github.com/tendermint/tendermint/blockchain/tx  34.210s
    
    86 ms for 10000 transactions
    16 ms for 2000 transactions
    

    Using golevelDB Batch:

    BenchmarkKVIndexerIndex1-2               5000000              7160 ns/op
    BenchmarkKVIndexerIndex500-2               20000           1750411 ns/op
    BenchmarkKVIndexerIndex1000-2              10000           3573973 ns/op
    BenchmarkKVIndexerIndex2000-2               5000           7836851 ns/op
    BenchmarkKVIndexerIndex10000-2              1000          33438980 ns/op
    PASS
    ok      github.com/tendermint/tendermint/blockchain/tx  209.482s
    
    7,8 ms for 2000 transactions
    
    • [state] write test for ApplyBlock
    opened by melekes 29
  • Tendermint node restart after app failure sometimes doesn't work

    Tendermint node restart after app failure sometimes doesn't work

    I have 4 nodes running. Each of them is mapped to tmsp app. In one of the tmsp app tree got corrupted and merkle root hash was different. All the other nodes started giving following warning

    NOTE[01-03|09:31:42] enterNewRound(64429/20). Current: 64429/19/RoundStepPrecommit module=consensus
    WARN[01-03|09:31:43] enterPrevote: ProposalBlock is invalid   module=consensus error="Wrong Block.Header.AppHash.  Expected 7820B976E6E7FC55A9124B7D94B6F31E8FFE0179, got 87A01D3C30FAA6F239AC114F6D24840447106690"
    NOTE[01-03|09:31:54] enterNewRound(64429/21). Current: 64429/20/RoundStepPrecommit module=consensus
    

    After this, we are not able to produce any new block. The system is never able to recover. We need to reset everything and start it from scratch.

    T:bug 
    opened by surajprak 28
  • TMSP flush causes socket to close

    TMSP flush causes socket to close

    I've been implementing TMSP in c++ and after I send the initial commit response, nothing happens. I then try to send a flush response, I get the core application to process the previous commit but it then closes the existing socket connection... Is this intended behavior? If so, it seems to be rather inefficient

    opened by ashea-code 28
  • Change upstream go-crypto PrivKey API and update Amino version to 0.10.0

    Change upstream go-crypto PrivKey API and update Amino version to 0.10.0

    Change upstream go-crypto API to return errors on Sign().

    This PR also removes CGO_ENABLED=0 - we need CGO for the upstream go-crypto now, along with CLevelDB in the future - and adds a make build_docker command for binary-hash-reproducible builds. Note that the binary is dynamically linked, so users wishing to completely reproduce builds will need to link the same version of libc which ships with the golang Docker container.

    As this includes the new Amino version, this is breaking, especially for priv_validator.json (Amino encoding of int/int64 changed to strings).

    Closes https://github.com/tendermint/tendermint/issues/1545.

    opened by cwgoes 27
Releases(v0.34.20)
Owner
Tendermint
Bringing simplicity, security, and speed to the world's blockchains.
Tendermint
The TinyKV course builds a key-value storage system with the Raft consensus algorithm.

The TinyKV Course The TinyKV course builds a key-value storage system with the Raft consensus algorithm. It is inspired by MIT 6.824 and TiKV Project.

jaegerwang 1 Nov 19, 2021
A naive implementation of Raft consensus algorithm.

This implementation is used to learn/understand the Raft consensus algorithm. The code implements the behaviors shown in Figure 2 of the Raft paper wi

Martin 0 Dec 3, 2021
Raft: a consensus algorithm for managing a replicated log

Raft Consensus Algorithm Raft is a consensus algorithm for managing a replicated

null 0 Dec 20, 2021
This is a comprehensive system that simulate multiple servers’ consensus behavior at local machine using multi-process deployment.

Raft simulator with Golang This project is a simulator for the Raft consensus protocol. It uses HTTP for inter-server communication, and a job schedul

Yujie Zhang 1 Jan 30, 2022
This is my implementation of Raft consensus algorithm that I did for own learning.

This is my implementation of Raft consensus algorithm that I did for own learning. Please follow the link to learn more about raft consensus algorithm https://raft.github.io. And Soon, I will be developing same algorithm in Java as well

Umar Tahir 1 Jan 12, 2022
⟁ Tendermint Core (BFT Consensus) in Go

Tendermint Byzantine-Fault Tolerant State Machines. Or Blockchain, for short. Branch Tests Coverage Linting master Tendermint Core is Byzantine Fault

Tendermint 5.1k Aug 4, 2022
Tendermint Core is a Byzantine Fault Tolerant (BFT) middleware that takes a state transition machine

Tendermint Core is a Byzantine Fault Tolerant (BFT) middleware that takes a state transition machine - written in any programming language - and securely replicates it on many machines.

null 0 Nov 24, 2021
Tendermint Core - A Byzantine Fault Tolerant (BFT) middleware that takes a state transition machine

Tendermint Core - A Byzantine Fault Tolerant (BFT) middleware that takes a state transition machine

y 0 Jan 25, 2022
DEPRECATED (moved to tendermint/tendermint): Golang P2P library

tendermint/go-p2p tendermint/go-p2p provides an abstraction around peer-to-peer communication. Peer/MConnection/Channel Each peer has one MConnection

Tendermint 120 Jul 18, 2022
Tendermint-built-in - Tendermint Built-in KVStore app

Tendermint Built-in KVStore app Install & build Pull all vendor dependencies: go

Antoine 2 May 11, 2022
Tendermint - tendermint challenge

Alien Invasion - tendermint challenge Setup Need GO version 1.17+ Start from GO

Alexey Seliverstov 0 Jan 29, 2022
Baseledger core consensus for running validator, full and seed nodes

baseledger-core Baseledger core consensus client for running a validator, full or seed node. ⚠️ WARNING: this code has not been audited and is not rea

Baseledger 0 Jan 13, 2022
Go language implementation of a blockchain based on the BDLS BFT protocol. The implementation was adapted from Ethereum and Sperax implementation

BDLS protocol based PoS Blockchain Most functionalities of this client is similar to the Ethereum golang implementation. If you do not find your quest

Yongge Wang 0 Jan 1, 2022
HLF smart-bft WAL files reader

WAL Reader Utility for reading Hyperledger Fabric SmartBFT WAL files. Install go install gitlab.n-t.io/atmz/[email protected] Read WAL file walreader

null 0 Jan 14, 2022
Frontier Chain is a blockchain application built using Cosmos SDK and Tendermint.

Frontier Chain Frontier Chain is a blockchain application built using Cosmos SDK and Tendermint. Setup Initialize the blockchain with one validator no

Frontier 12 Jul 12, 2022
OmniFlix Hub is a blockchain built using Cosmos SDK and Tendermint and created with Starport.

OmniFlix Hub is the root chain of the OmniFlix Network. Sovereign chains and DAOs connect to the OmniFlix Hub to manage their web2 & web3 media operations (mint, manage, distribute & monetize) as well as community interactions.

OmniFlix Network 34 Jun 27, 2022
Tendermint на базе ГОСТ криптографических функций.

Tendermint Byzantine-Fault Tolerant State Machines. Or Blockchain, for short. Branch Tests Coverage Linting master Tendermint Core is Byzantine Fault

[#571] 2 Apr 1, 2022
demochain is a blockchain built using Cosmos SDK and Tendermint and created with Starport.

demochain demochain is a blockchain built using Cosmos SDK and Tendermint and created with Starport. Get started starport chain serve serve command i

Tomasz Zdybał 4 Jun 21, 2022
planet is a blockchain built using Cosmos SDK and Tendermint and created with Starport.

planet planet is a blockchain built using Cosmos SDK and Tendermint and created with Starport. Get started starport chain serve serve command install

Andrei Ivasko 0 Oct 31, 2021
tendermint private key provider experiment that wraps cosmovisor and passes the priv key via named pipe.

ssm-cosmovisor You probably don't want to use this and do so at your own risk. This is very experimental and completely untested. It will likely: set

Todd G 1 Jul 3, 2022
loan is a blockchain built using Cosmos SDK and Tendermint and created with Starport.

loan loan is a blockchain built using Cosmos SDK and Tendermint and created with Starport. As a borrower you post a request for a loan and specify the

Denis Fadeev 8 Feb 15, 2022
Arbiter DAO: a blockchain built using Cosmos SDK and Tendermint

Arbiter DAO Arbiter DAO is a blockchain built using Cosmos SDK and Tendermint. Arbiter DAO is a Olympus DAO and Klima DAO fork brought to the cosmos e

Sapeins-cosmos 8 Feb 25, 2022
Berachain - A blockchain built using Cosmos SDK and Tendermint and created with Starport

berachain berachain is a blockchain built using Cosmos SDK and Tendermint and cr

null 2 Jan 26, 2022
Golang implementation of the Raft consensus protocol

raft raft is a Go library that manages a replicated log and can be used with an FSM to manage replicated state machines. It is a library for providing

HashiCorp 6.3k Aug 13, 2022
A phoenix Chain client based on the go-ethereum fork,the new PoA consensus engine is based on the VRF algorithm.

Phoenix Official Golang implementation of the Phoenix protocol. !!!The current version is for testing and developing purposes only!!! Building the sou

g_master 14 Apr 28, 2022
Rei chain fork from quorum using raft consensus

GoQuorum is an Ethereum-based distributed ledger protocol with transaction/contract privacy and new consensus mechanisms. GoQuorum is a fork of go-eth

Moon Rhythm 12 Mar 31, 2022
A phoenix Chain client based on the go-ethereum fork,the new PoS consensus engine is based on the VRF algorithm.

Phoenix Official Golang implementation of the Phoenix protocol. !!!The current version is for testing and developing purposes only!!! Building the sou

null 8 Jan 7, 2022
Ethereum 2.0 node multiplexer between consensus and execution

The Minority Client Run the minority client! ~Danny Ryan and/or Tim Beiko As of writing, Ethereum has multiple client implementations, but Geth / go-e

Péter Szilágyi 93 Jul 25, 2022
EVM-compatible chain secured by the Lachesis consensus algorithm.

ICICB-Galaxy EVM-compatible chain secured by the Lachesis consensus algorithm. Building the source Building galaxy requires both a Go (version 1.14 or

null 2 Oct 7, 2021