⟁ Tendermint Core (BFT Consensus) in Go

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.

Owner
Tendermint
Bringing simplicity, security, and speed to the world's blockchains.
Tendermint
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.

  • 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)?

  • 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!

  • 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"
    
  • 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 zhr@ubuntu:~/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

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

  • 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

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

  • 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

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

  • TendermintCore will soon be an archive repo.

    TendermintCore will soon be an archive repo.

    From hereon, we will encourage forks of new distinct names, to create their variations of TendermintCore. From various reports I understand that version 0.34.xx is the latest stable version of TendermintCore. (which is what cosmoshub-4 uses).

    Bug fixes to 0.34.xx (and further enlightenment on the 0.35+ situation) are welcome, but first we will organize a discussion where everyone is invited.

    In addition, I am advocating and executing on creating an interbranch development team to be managed by the Decentralists DAO that will help create better refactoring of our code (and security/improvement patches upstream) to best manage all major derivations/branches of Tendermint, including Tendermint2, and the name that Informal chooses.

    For non-gardeners, the benefits of pruning can be non-intuitive, but I believe in the long run can be best for everyone. So I hope we take this as an opportunity to create more diverse teams and begin to use our DAO systems to coordinate among them, all partially funded in the future by governance of the hub.

    Please make a PR here: https://github.com/tendermint/ecosystem

  • Update install.md

    Update install.md

    Adding clarification on the installation guide to update active terminal sessions for newly created environment variables.


    PR checklist

    • [x] Tests written/updated, or no tests needed (not needed)
    • [x] CHANGELOG_PENDING.md updated, or no changelog entry needed (not needed)
    • [x] Updated relevant documentation (docs/) and code comments, or no documentation updates needed (not needed)
  • build(deps): Bump github.com/rs/cors from 1.8.2 to 1.8.3

    build(deps): Bump github.com/rs/cors from 1.8.2 to 1.8.3

    Bumps github.com/rs/cors from 1.8.2 to 1.8.3.

    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)
  • build(deps): Bump github.com/creachadair/taskgroup from 0.3.2 to 0.4.2

    build(deps): Bump github.com/creachadair/taskgroup from 0.3.2 to 0.4.2

    Bumps github.com/creachadair/taskgroup from 0.3.2 to 0.4.2.

    Commits
    • ff1874e Fix a bug when waiting on an unstarted group.
    • 8b78974 Fix a race condition between multiple callers of Wait.
    • dab2ab6 Add a single-task monitoring type. (#1)
    • 1a729de Fix incorrect leaktest calls.
    • 8289b22 Check in Go update rules.
    • 88972ab Add .gitignore
    • 1b94272 Update Go toolchain base to 1.18.
    • be81d9a Fix typos and clean up wording.
    • 2134798 Reduce dependabot frequency.
    • 64345a8 Run gofmt from Go 1.19
    • 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)
  • 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 will block nodes even 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 !

  • 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)
⟁ Tendermint Core (BFT Consensus) in Go
⟁ 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

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

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.

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

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

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

Nov 9, 2022
Tendermint-built-in - Tendermint Built-in KVStore app

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

May 11, 2022
Tendermint - tendermint challenge

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

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

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

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/walreader@latest Read WAL file walreader

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

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.

Nov 10, 2022
Tendermint на базе ГОСТ криптографических функций.
Tendermint на базе ГОСТ криптографических функций.

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

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

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

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

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

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

Dec 21, 2022
Arbiter DAO: a blockchain built using Cosmos SDK and Tendermint

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

Aug 22, 2022
Berachain - A blockchain built using Cosmos SDK and Tendermint and created with Starport

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

Jan 26, 2022
Golang implementation of the Raft consensus protocol

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

Jan 9, 2023
A phoenix Chain client based on the go-ethereum fork,the new PoA consensus engine is based on the VRF algorithm.

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

Apr 28, 2022