⟁ 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.

Comments
  • 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
  • Pass context in ABCI client

    Pass context in ABCI client

    Summary

    Request context (as in rpc/http context) should properly passed downward through ABCI client Sync primitives, so request cancelation can work properly.

    ThIs is useful for the QuerySync workflow, but also applies to other usages.

    Problem Definition

    Today, AFAIK, it’s not possible to properly cancel a query. For example, a very long tx_search query can be cancelled by the user, but tendermint will still process the query.

    This makes server timeout useless as query will still consume resource and block nodes event when requests are forced to time out (by a nginx proxy for example)

    This cancellation use case (with timeout) would be particularly useful on public APIs endpoints, to avoid monster request slowing nodes.

    Proposal

    Here is a start of implementation (from tendermint v0.34.21):

    https://github.com/tendermint/tendermint/compare/v0.34.21...KiFoundation:tendermint:0.34.21-request-context?expand=1

    Note: the cosmos-sdk also have its own context passing issue, and the interface change induces sdk changes, so we built this cosmos-sdk branch

    Used tendermint and cosmos-sdk versions reflect the versions used by the kichain, where this branches were tested as a real kichain node.

    The most important change is most probably the modification of the ABCI client interface, to pass a context.Context object.

    We only added it to the QuerySync method, but in theory it would makes sense to have the context available everywhere.

    WDYT about this first implementation and requirements ?

    We would be happy to contribute on this matter. Thanks !

    opened by WinterNis 0
  • build(deps): Bump github.com/bufbuild/buf from 1.10.0 to 1.11.0

    build(deps): Bump github.com/bufbuild/buf from 1.10.0 to 1.11.0

    Bumps github.com/bufbuild/buf from 1.10.0 to 1.11.0.

    Release notes

    Sourced from github.com/bufbuild/buf's releases.

    v1.11.0

    What's Changed

    • buf generate now batches remote plugin generation calls for improved performance.
    • Update optimize_for option in managed mode, allowing a default value for optimize_for for all files, except and override, which both behave similarly to other except and override options. Specifying an optimize_for value in the earlier versions is equivalent to having a optimize_for with that value as default.

    Full Changelog: https://github.com/bufbuild/buf/compare/v1.10.0...v1.11.0

    Changelog

    Sourced from github.com/bufbuild/buf's changelog.

    [v1.11.0] - 2022-12-19

    • buf generate now batches remote plugin generation calls for improved performance.
    • Update optimize_for option in managed mode, allowing a default value for optimize_for for all files, except and override, which both behave similarly to other except and override options. Specifying an optimize_for value in the earlier versions is equivalent to having a optimize_for with that value as default.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    T:dependencies S:automerge 
    opened by dependabot[bot] 0
  • build(deps): Bump github.com/vektra/mockery/v2 from 2.15.0 to 2.16.0

    build(deps): Bump github.com/vektra/mockery/v2 from 2.15.0 to 2.16.0

    Bumps github.com/vektra/mockery/v2 from 2.15.0 to 2.16.0.

    Release notes

    Sourced from github.com/vektra/mockery/v2's releases.

    v2.16.0

    Changelog

    • 3347e0d Add ability for mockery to search upwards for config file
    • 6182e91 Add additional test for non-existent config file
    • 847d988 Merge pull request #490 from meshuga/fix_packages
    • 7402646 Merge pull request #527 from LandonTClipp/config_search
    • 78f7ac3 Merge pull request #528 from LandonTClipp/docs
    • 231d3d6 Updating logs
    • c82f3c3 removed unused package import logic
    • 81d4712 update documentation
    Commits
    • 78f7ac3 Merge pull request #528 from LandonTClipp/docs
    • 81d4712 update documentation
    • 7402646 Merge pull request #527 from LandonTClipp/config_search
    • 231d3d6 Updating logs
    • 6182e91 Add additional test for non-existent config file
    • 3347e0d Add ability for mockery to search upwards for config file
    • 847d988 Merge pull request #490 from meshuga/fix_packages
    • c82f3c3 removed unused package import logic
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    T:dependencies S:automerge 
    opened by dependabot[bot] 0
  • build(deps): Bump github.com/informalsystems/tm-load-test from 1.0.0 to 1.1.0

    build(deps): Bump github.com/informalsystems/tm-load-test from 1.0.0 to 1.1.0

    Bumps github.com/informalsystems/tm-load-test from 1.0.0 to 1.1.0.

    Release notes

    Sourced from github.com/informalsystems/tm-load-test's releases.

    v1.1.0

    See the CHANGELOG for details regarding this release.

    Changelog

    • e3e969e Add changelog for v1.1.0
    • e4d0b69 ci: Add govulncheck (#164)
    • 6e5d5ac Update dependencies (#163)
    • 25ac0df Bump goreleaser/goreleaser-action from 3 to 4 (#162)
    • 98f4369 Bump actions/checkout from 3.1.0 to 3.2.0 (#161)
    • f69d049 Bump golangci/golangci-lint-action from 3.2.0 to 3.3.1 (#160)
    • 9ccd414 Bump github.com/prometheus/client_golang from 1.13.0 to 1.14.0 (#159)
    • c9e9af6 Bump github.com/spf13/cobra from 1.6.0 to 1.6.1 (#157)
    • a517a0a Bump github.com/spf13/cobra from 1.5.0 to 1.6.0 (#154)
    • 8b6f731 Bump actions/checkout from 3.0.2 to 3.1.0 (#153)
    • 91b2a64 Bump codecov/codecov-action from 3.1.0 to 3.1.1 (#152)
    • e19ec2b Fix links to GitHub to the specific version of Tendermint (#151)
    • 9634538 Bump actions/setup-go from 2 to 3.2.0 (#140)
    • dfb3fff Bump goreleaser/goreleaser-action from 2 to 3 (#139)
    • da601fc Bump codecov/codecov-action from 2.1.0 to 3.1.0 (#135)
    • 800d27b ci: Update for main and Go 1.18 (#150)
    • 0b5598b Update linting (#149)
    • e26e39e Merge pull request #134 from informalsystems/dependabot/github_actions/actions/checkout-3.0.2
    • 841107e Merge pull request #143 from informalsystems/dependabot/go_modules/github.com/spf13/cobra-1.5.0
    • bebf746 Bump github.com/spf13/cobra from 1.4.0 to 1.5.0
    • 3288a99 Bump actions/checkout from 2.4.0 to 3.0.2
    • ee9bf6e Merge pull request #136 from informalsystems/dependabot/github_actions/golangci/golangci-lint-action-3.2.0
    • e743f2f Merge pull request #126 from informalsystems/dependabot/go_modules/github.com/spf13/cobra-1.4.0
    • fc85d77 Merge pull request #121 from informalsystems/dependabot/go_modules/github.com/gorilla/websocket-1.5.0
    • d926e4a Bump golangci/golangci-lint-action from 2 to 3.2.0
    • aa39244 Bump github.com/spf13/cobra from 1.3.0 to 1.4.0
    • 0f351d5 Bump github.com/gorilla/websocket from 1.4.2 to 1.5.0
    • cf4664a Merge pull request #118 from informalsystems/dependabot/go_modules/github.com/prometheus/client_golang-1.12.0
    • 45bf4e9 Bump github.com/prometheus/client_golang from 1.11.0 to 1.12.0
    • 985c187 Merge pull request #117 from informalsystems/dependabot/go_modules/github.com/spf13/cobra-1.3.0
    • a8afe84 Merge pull request #115 from informalsystems/dependabot/github_actions/actions/checkout-2.4.0
    • c926219 Bump github.com/spf13/cobra from 1.2.1 to 1.3.0
    • 7ce29d1 Bump actions/checkout from 2.3.5 to 2.4.0
    • 5dfc291 Prefix "v" on release version in future
    Changelog

    Sourced from github.com/informalsystems/tm-load-test's changelog.

    v1.1.0

    This minor release just bumps some dependencies.

    • #163 - Bump supported version of Tendermint Core to v0.34.24.
    Commits
    • e3e969e Add changelog for v1.1.0
    • e4d0b69 ci: Add govulncheck (#164)
    • 6e5d5ac Update dependencies (#163)
    • 25ac0df Bump goreleaser/goreleaser-action from 3 to 4 (#162)
    • 98f4369 Bump actions/checkout from 3.1.0 to 3.2.0 (#161)
    • f69d049 Bump golangci/golangci-lint-action from 3.2.0 to 3.3.1 (#160)
    • 9ccd414 Bump github.com/prometheus/client_golang from 1.13.0 to 1.14.0 (#159)
    • c9e9af6 Bump github.com/spf13/cobra from 1.6.0 to 1.6.1 (#157)
    • a517a0a Bump github.com/spf13/cobra from 1.5.0 to 1.6.0 (#154)
    • 8b6f731 Bump actions/checkout from 3.0.2 to 3.1.0 (#153)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    T:dependencies S:automerge 
    opened by dependabot[bot] 0
  • build(deps): Bump bufbuild/buf-setup-action from 1.10.0 to 1.11.0

    build(deps): Bump bufbuild/buf-setup-action from 1.10.0 to 1.11.0

    Bumps bufbuild/buf-setup-action from 1.10.0 to 1.11.0.

    Release notes

    Sourced from bufbuild/buf-setup-action's releases.

    v1.11.0

    Set the default buf version to v1.10.0

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    T:dependencies S:automerge 
    opened by dependabot[bot] 0
  • build(deps): Bump actions/stale from 6 to 7

    build(deps): Bump actions/stale from 6 to 7

    Bumps actions/stale from 6 to 7.

    Release notes

    Sourced from actions/stale's releases.

    v7.0.0

    ⚠️ This version contains breaking changes ⚠️

    What's Changed

    Breaking Changes

    • In this release we prevent this action from managing the stale label on items included in exempt-issue-labels and exempt-pr-labels
    • We decided that this is outside of the scope of this action, and to be left up to the maintainer

    New Contributors

    Full Changelog: https://github.com/actions/stale/compare/v6...v7.0.0

    v6.0.1

    Update @​actions/core to 1.10.0 #839

    Full Changelog: https://github.com/actions/stale/compare/v6.0.0...v6.0.1

    Changelog

    Sourced from actions/stale's changelog.

    Changelog

    [7.0.0]

    :warning: Breaking change :warning:

    [6.0.1]

    Update @​actions/core to v1.10.0 (#839)

    [6.0.0]

    :warning: Breaking change :warning:

    Issues/PRs default close-issue-reason is now not_planned(#789)

    [5.1.0]

    Don't process stale issues right after they're marked stale [Add close-issue-reason option]#764#772 Various dependabot/dependency updates

    4.1.0 (2021-07-14)

    Features

    4.0.0 (2021-07-14)

    Features

    Bug Fixes

    • dry-run: forbid mutations in dry-run (#500) (f1017f3), closes #499
    • logs: coloured logs (#465) (5fbbfba)
    • operations: fail fast the current batch to respect the operations limit (#474) (5f6f311), closes #466
    • label comparison: make label comparison case insensitive #517, closes #516
    • filtering comments by actor could have strange behavior: "stale" comments are now detected based on if the message is the stale message not who made the comment(#519), fixes #441, #509, #518

    Breaking Changes

    ... (truncated)

    Commits
    • 6f05e42 draft release for v7.0.0 (#888)
    • eed91cb Update how stale handles exempt items (#874)
    • 10dc265 Merge pull request #880 from akv-platform/update-stale-repo
    • 9c1eb3f Update .md files and allign build-test.yml with the current test.yml
    • bc357bd Update .github/workflows/release-new-action-version.yml
    • 690ede5 Update .github/ISSUE_TEMPLATE/bug_report.md
    • afbcabf Merge branch 'main' into update-stale-repo
    • e364411 Update name of codeql.yml file
    • 627cef3 fix print outputs step (#859)
    • 975308f Merge pull request #876 from jongwooo/chore/use-cache-in-check-dist
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    T:dependencies S:automerge 
    opened by dependabot[bot] 0
Releases(v0.37.0-rc2)
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.3k Dec 31, 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 Sep 8, 2022
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 Nov 9, 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 1 Oct 14, 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 37 Nov 10, 2022
Tendermint на базе ГОСТ криптографических функций.

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

[#571] 4 Aug 14, 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