diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index 86359c256..f343c9b92 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 @@ -29,4 +30,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 87d5a0a7e..617cf5050 100644 --- a/UPGRADING.md +++ b/UPGRADING.md @@ -2,6 +2,14 @@ This guide provides instructions for upgrading to specific versions of Tendermint Core. + +## v0.37 (Unreleased) + +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). + +NOTE: v0.35 was recalled and v0.36 was skipped + ## v0.34.20 ### Feature: Priority Mempool 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, } }