diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index 3aad814cd..336654699 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -13,6 +13,7 @@ Friendly reminder, we have a [bug bounty program](https://hackerone.com/tendermi - Apps - [abci/counter] \#6684 Delete counter example app + - [txResults] \#9175 Remove `gas_used` & `gas_wanted` from being merkelized in the lastresulthash in the header - P2P Protocol @@ -31,4 +32,4 @@ Friendly reminder, we have a [bug bounty program](https://hackerone.com/tendermi ### BUG FIXES -[docker] \#9073 enable cross platform build using docker buildx \ No newline at end of file +[docker] \#9073 enable cross platform build using docker buildx diff --git a/UPGRADING.md b/UPGRADING.md index d63a19dcb..7dab53c14 100644 --- a/UPGRADING.md +++ b/UPGRADING.md @@ -2,11 +2,12 @@ This guide provides instructions for upgrading to specific versions of Tendermint Core. -## Unreleased +## v0.37 (Unreleased) -### ABCI Changes +This version requires a coordinated network upgrade. It alters the elements in the predigest of the `LastResultsHash` and thus +all nodes must upgrade together (see #9175). -* Added `AbciVersion` to `RequestInfo`. Applications should check that the ABCI version they expect is being used in order to avoid unimplemented changes errors. +NOTE: v0.35 was recalled and v0.36 was skipped ## v0.34.20 diff --git a/spec/core/data_structures.md b/spec/core/data_structures.md index eea150d68..620f567fe 100644 --- a/spec/core/data_structures.md +++ b/spec/core/data_structures.md @@ -129,7 +129,7 @@ the data in the current block, the previous block, and the results returned by t | NextValidatorHash | slice of bytes (`[]byte`) | MerkleRoot of the next validator set. The validators are first sorted by voting power (descending), then by address (ascending) prior to computing the MerkleRoot. | Must be of length 32 | | ConsensusHash | slice of bytes (`[]byte`) | Hash of the protobuf encoded consensus parameters. | Must be of length 32 | | AppHash | slice of bytes (`[]byte`) | Arbitrary byte array returned by the application after executing and commiting the previous block. It serves as the basis for validating any merkle proofs that comes from the ABCI application and represents the state of the actual application rather than the state of the blockchain itself. The first block's `block.Header.AppHash` is given by `ResponseInitChain.app_hash`. | This hash is determined by the application, Tendermint can not perform validation on it. | -| LastResultHash | slice of bytes (`[]byte`) | `LastResultsHash` is the root hash of a Merkle tree built from `ResponseDeliverTx` responses (`Log`,`Info`, `Codespace` and `Events` fields are ignored). | Must be of length 32. The first block has `block.Header.ResultsHash == MerkleRoot(nil)`, i.e. the hash of an empty input, for RFC-6962 conformance. | +| LastResultHash | slice of bytes (`[]byte`) | `LastResultsHash` is the root hash of a Merkle tree built from `ResponseDeliverTx` responses (only `Code` and `Data` are included. All other fields are ignored). | Must be of length 32. The first block has `block.Header.ResultsHash == MerkleRoot(nil)`, i.e. the hash of an empty input, for RFC-6962 conformance. | | EvidenceHash | slice of bytes (`[]byte`) | MerkleRoot of the evidence of Byzantine behavior included in this block. | Must be of length 32 | | ProposerAddress | slice of bytes (`[]byte`) | Address of the original proposer of the block. Validator must be in the current validatorSet. | Must be of length 20 | diff --git a/types/results.go b/types/results.go index 9181450bc..d7168bc75 100644 --- a/types/results.go +++ b/types/results.go @@ -46,9 +46,7 @@ func (a ABCIResults) toByteSlices() [][]byte { // ResponseDeliverTx and returns another ResponseDeliverTx. func deterministicResponseDeliverTx(response *abci.ResponseDeliverTx) *abci.ResponseDeliverTx { return &abci.ResponseDeliverTx{ - Code: response.Code, - Data: response.Data, - GasWanted: response.GasWanted, - GasUsed: response.GasUsed, + Code: response.Code, + Data: response.Data, } }