Commit Graph

279 Commits

Author SHA1 Message Date
William Banfield
d8f63fbd82 remove unused app signed update 2022-03-15 13:05:06 -04:00
William Banfield
89c932352b comment types_test 2022-03-14 17:34:33 -04:00
William Banfield
51cf3fe7db rename to MarshalTxResults 2022-03-14 17:32:56 -04:00
William Banfield
c8844abd62 create separate removed list in kvstore 2022-03-14 17:29:51 -04:00
William Banfield
bef6ab6e51 remove methods from abci tx records 2022-03-14 14:54:07 -04:00
William Banfield
4655d5d9f0 trim prefix from demo app 2022-03-11 17:29:44 -05:00
William Banfield
ca1824b415 update substPrepareTx 2022-03-11 17:24:02 -05:00
William Banfield
1500369946 remove transaction hash log 2022-03-11 17:00:50 -05:00
William Banfield
dac4e84990 test only deterministic fields used in hash 2022-03-11 16:59:45 -05:00
William Banfield
46cc63dccc types_test comment changes 2022-03-11 12:50:07 -05:00
William Banfield
8765d1e506 wip tx hashing 2022-03-11 12:40:48 -05:00
William Banfield
4d8e81a1f5 error message change 2022-03-11 12:00:56 -05:00
William Banfield
6ce11e5e5e check duplicates of different types in txrecords 2022-03-11 11:55:59 -05:00
William Banfield
3c35f894f3 remove empty tx records in substPrepareTx 2022-03-11 11:27:27 -05:00
William Banfield
209a5c73cb move size check into loop 2022-03-09 16:34:32 -05:00
William Banfield
5353718733 unexport IsIncluded 2022-03-09 16:32:47 -05:00
William Banfield
9852254072 Update abci/types/types.go
Co-authored-by: M. J. Fromberger <fromberger@interchain.io>
2022-03-09 16:31:45 -05:00
William Banfield
1ee79b8598 Update abci/types/types.go
Co-authored-by: M. J. Fromberger <fromberger@interchain.io>
2022-03-09 16:30:27 -05:00
William Banfield
c25f7769a6 remove Must* proof and hash functions 2022-03-09 16:30:08 -05:00
William Banfield
ee2a9a1620 use nil slice when expected length is 0 2022-03-09 14:01:42 -05:00
William Banfield
d8f2c4944a add tx modified true to tests 2022-03-08 18:21:29 -05:00
William Banfield
333b25cfbe remove TODO for prepare proposal 2022-03-08 17:37:23 -05:00
William Banfield
8f474fbbdb add logic for ignoring Tx changes if modifiedTx is false 2022-03-08 17:37:18 -05:00
William Banfield
7e75f88780 initial suite of tests 2022-03-08 17:37:17 -05:00
William Banfield
914c555ff5 initial logic to remove txs from the mempool 2022-03-08 17:28:00 -05:00
William Banfield
9fbbdecb65 implement ResponsePrepareProposal validation rules 2022-03-08 17:27:58 -05:00
William Banfield
778e2e8908 add tx conversions to get consensus tests to pass 2022-03-08 17:26:56 -05:00
William Banfield
c34adb7235 check-in finalize block hash tests 2022-03-08 17:26:54 -05:00
William Banfield
1d336ea221 limit use of ABCIResponses 2022-03-08 17:25:30 -05:00
William Banfield
4b0826a791 move result.go to types.go 2022-03-08 17:25:29 -05:00
William Banfield
d2ae45324c change simple apps to use TxRecords 2022-03-08 17:24:25 -05:00
William Banfield
cdae5e325b build latest abci protos 2022-03-08 17:24:22 -05:00
Sam Kleinman
8df7b6103f proxy: collapse triforcated abci.Client (#8067) 2022-03-06 18:25:50 -05:00
William Banfield
8d0bd1c0ff update abci cli test output (#8070) 2022-03-04 17:54:21 -05:00
William Banfield
0b8a62c87b abci: Synchronize FinalizeBlock with the updated specification (#7983)
This change set implements the most recent version of `FinalizeBlock`. 

# What does this change actually contain?

* This change set is rather large but fear not! The majority of the files touched and changes are renaming `ResponseDeliverTx` to `ExecTxResult`. This should be a pretty inoffensive change since they're effectively the same type but with a different name.
* The `execBlockOnProxyApp` was totally removed since it served as just a wrapper around the logic that is now mostly encapsulated within `FinalizeBlock`
* The `updateState` helper function has been made a public method on `State`. It was being exposed as a shim through the testing infrastructure, so this seemed innocuous.
* Tests already existed to ensure that the application received the `ByzantineValidators` and the `ValidatorUpdates`, but one was fixed up to ensure that `LastCommitInfo` was being sent across.
* Tests were removed from the `psql` indexer that seemed to search for an event in the indexer that was not being created.

# Questions for reviewers
* We store this [ABCIResponses](5721a13ab1/proto/tendermint/state/types.pb.go (L37)) type in the data base as the block results. This type has changed since v0.35 to contain the `FinalizeBlock` response. I'm wondering if we need to do any shimming to keep the old data retrieveable?
* Similarly, this change is exposed via the RPC through [ResultBlockResults](5721a13ab1/rpc/coretypes/responses.go (L69)) changing. Should we somehow shim or notify for this change? 


closes: #7658
2022-03-04 22:32:37 +00:00
William Banfield
9accc1a531 abci++ tooling: proto synchronization (#8065)
This PR implements a hack. It does effectively 2 things:
1. It checks in a set of protos, suffixed with `.intermediate` that allow the abci proto generation to proceed.
2. Adds a script / makefile to enable the generation. 

The script is pretty simple. It copies over the 'intermediate' files over to be the `.proto` files for the `abci/types.proto` file and the `types/types.proto` files, generates all the protos, and then reverts all of the changes made to the `*.proto` files and the `*.pb.go` files, except for the single abci file. 

If this is too ugly, I'm happy to tweak it, but my goal here is to have some working version of the protos that currently build the abci code so that we can coordinate changes to the code and not have them all sit in different branches that make breaking changes across each other.

The end goal is to have the `.intermediate` files disappear completely, since they should be moving towards containing everything that the `.proto` files contain.
2022-03-04 20:09:49 +00:00
William Banfield
c80734e5af state: synchronize the ProcessProposal implementation with the latest version of the spec (#7961)
This change implements the spec for `ProcessProposal`. It first calls the Tendermint block validation logic to check that all of the proposed block fields are well formed and do not violate any of the rules for Tendermint to consider the block valid and then passes the validated block the `ProcessProposal`.

This change also adds additional fixtures to test the change. It adds the `baseMock` types that holds a mock as well as a reference to `BaseApplication`. If the function was not setup by the test on the contained mock Application, the type delegates to the `BaseApplication` and returns what `BaseApplication` returns. 

The change also switches the `makeState` helper to take an arg struct so that an ABCI application can be plumbed through when needed.

closes: #7656
2022-02-25 18:56:34 +00:00
M. J. Fromberger
8c5e36159e abci: use no-op loggers in the examples (#7996)
This averts a rare but annoying log-after-test race condition.
2022-02-25 14:41:49 +00:00
Sam Kleinman
858d57a984 abci/kvstore: test cleanup improvements (#7991)
Co-authored-by: M. J. Fromberger <fromberger@interchain.io>
2022-02-25 03:12:27 +00:00
Sam Kleinman
3e2d5db289 abci: remove lock protecting calls to the application interface (#7984)
Closes #7073

As part of the 0.36 cycle we've discussed and decided to remove the mutex in tendermint that protects the ABCI application. First, applications should be able to be responsible for their own concurrency control, and can make more fine-grained decisions about concurrent use than tendermint ever could. Second, I've observed in recent weeks as we've been making this change that the mutex wasn't applied particularly consistently in many cases (e.g. multiple "local" connections to the application had multiple locks, etc.) so this will give more consistent experiences across ABCI execution environments, and simplifies the tendermint ABCI handling code.
2022-02-24 19:53:04 +00:00
Sam Kleinman
61a81279bd abci: make tendermint example+test clients manage a mutex (#7978)
This is the first step in removing the mutex from ABCI applications:
making our test applications hold mutexes, which this does, hopefully
with zero impact. If this lands well, then we can explore deleting the
other mutexes (in the ABCI server and the clients.) While this change
is not user impacting at all, removing the other mutexes *will* be. 

In persuit of this, I've changed the KV app somewhat, to put almost
all of the logic in the base application and make the persistent
application mostly be a wrapper on top of that with a different
storage layer.
2022-02-23 22:39:47 +00:00
Thane Thomson
abdf717761 spec: Minor updates to spec merge PR (#7835)
Signed-off-by: Thane Thomson <connect@thanethomson.com>
Co-authored-by: Callum Waters <cmwaters19@gmail.com>
2022-02-20 11:36:20 -08:00
Sam Kleinman
abfcd08903 abci/client: remove lingering async client code (#7876)
While I'd hoped to be able to make the socket client less weird, I
think that this is a nice middle ground in terms of improving
readability and removing the vestigal components without breaking
anything or radically changing the underlying assumptions. 

In the future we'd want to have requests be identified by a request
ID, and then we could drop the request tracking logic in the client
entirely, and this is protocol breaking. The alternatives aren't
substantively different than the current implementation.
2022-02-18 23:29:57 +00:00
William Banfield
7f8f1cde8c abci: undo socket buffer limit (#7877)
This change changes the ABCI socket client to allow goroutines to block writing to the internal queue. This has the effect ensuring that callers of the ABCI methods do not error on a full internal queue at the expense of allowing the number of goroutines waiting on this internal queue to grow in an unbounded fashion. This tradeoff seems preferable since it allows callers of the ABCI methods to be certain that a request that was made will reach the application if it is available.

Closes: #7827 

This change was initially implemented here: e13b4386ff and never landed on v0.34, only v0.35+
2022-02-18 22:09:53 +00:00
Sam Kleinman
cc18f87000 mempool: use checktx sync calls (#7868) 2022-02-18 14:17:45 -05:00
Sam Kleinman
bb9fa171d6 abci/client: make flush operation sync (#7857)
This follows along in the spirit of #7845 but is orthogonal to
removing `CheckTxAsync` (which will come after the previous commit
lands,) so I thought I'd get it out there earlier.
2022-02-18 17:42:23 +00:00
Sam Kleinman
c2cce2a696 abci/client: remove client-level callback (#7845)
* abci/client: remove client-level callback

* ditch multi conn con

* fix lint

* fix teset
2022-02-18 14:56:35 +00:00
Sam Kleinman
f6569b5dcd abci/client: remove waitgroup for requests (#7842)
* abci/client: remove awkward waitgroup

* elide done
2022-02-17 18:56:11 +00:00
Sam Kleinman
28d34d635c service: change stop interface (#7816) 2022-02-17 11:23:32 -05:00
Sam Kleinman
c928818db9 abci/client: remove vestigially captured context (#7839) 2022-02-17 10:40:35 -05:00