diff --git a/.changelog/2098.breaking.md b/.changelog/2098.breaking.md deleted file mode 100644 index 37194935649..00000000000 --- a/.changelog/2098.breaking.md +++ /dev/null @@ -1,5 +0,0 @@ -Sentry nodes no longer require TLS certificate file of the upstream node - -The `worker.sentry.grpc.upstream.cert` option has been removed. -Instead, use `worker.sentry.grpc.upstream.id` to specify the -upstream node's ID. diff --git a/.changelog/2098.feature.md b/.changelog/2098.feature.md deleted file mode 100644 index 649e8bf3941..00000000000 --- a/.changelog/2098.feature.md +++ /dev/null @@ -1,6 +0,0 @@ -node: Add automatic TLS certificate rotation support - -It is now possible to automatically rotate the node's TLS -certificates every N epochs by passing the command-line flag -`worker.registration.rotate_certs`. -Do not use this option on sentry nodes or IAS proxies. diff --git a/.changelog/2657.internal.md b/.changelog/2657.internal.md deleted file mode 100644 index bf9aa89e350..00000000000 --- a/.changelog/2657.internal.md +++ /dev/null @@ -1,5 +0,0 @@ -Move storage/mkvs/urkel to just storage/mkvs - -The MKVS implementation has been changed from the initial "Urkel tree" -structure and it is no longer an actual "Urkel tree" so having "urkel" in its -name is just confusing. diff --git a/.changelog/2674.feature.md b/.changelog/2674.feature.md deleted file mode 100644 index 410b85c04d0..00000000000 --- a/.changelog/2674.feature.md +++ /dev/null @@ -1,5 +0,0 @@ -go/storage/mkvs: Use Badger to manage versions - -By restricting how Prune behaves (it can now only remove the earliest round) -we can leverage Badger's managed mode to have it manage versions for us. This -avoids the need to track node lifetimes separately. diff --git a/.changelog/2684.feature.md b/.changelog/2684.feature.md deleted file mode 100644 index f2f4b18fff8..00000000000 --- a/.changelog/2684.feature.md +++ /dev/null @@ -1,8 +0,0 @@ -go/common/crypto/signature/signer/composite: Initial import - -This adds a composite signer factory that can aggregate multiple signer -factories. This could be used (for example), to use multiple signer -backends simultaneously, depending on the key role. - -Eg: The P2P link signer could use a local file, while the consensus -signer can be backed by a remote HSM. diff --git a/.changelog/2705.internal.md b/.changelog/2705.internal.md deleted file mode 100644 index 1038be18356..00000000000 --- a/.changelog/2705.internal.md +++ /dev/null @@ -1 +0,0 @@ -runtime: Add hongfuzz fuzzing targets diff --git a/.changelog/2734.breaking.md b/.changelog/2734.breaking.md deleted file mode 100644 index 536e6a74f4e..00000000000 --- a/.changelog/2734.breaking.md +++ /dev/null @@ -1,8 +0,0 @@ -storage: Rename "round" to "version" - -Previously the MKVS used the term "round" to mean a monotonically increasing -version number. This choice was due to the fact that it was initially used to -only store runtime state which has a concept of rounds. - -As we expand its use it makes more sense to generalize this and call it -version. diff --git a/.changelog/2745.doc.md b/.changelog/2745.doc.md deleted file mode 100644 index fbaf09b7192..00000000000 --- a/.changelog/2745.doc.md +++ /dev/null @@ -1 +0,0 @@ -README: Update Rust-related installation instructions diff --git a/.changelog/2747.feature.md b/.changelog/2747.feature.md deleted file mode 100644 index af93f72f511..00000000000 --- a/.changelog/2747.feature.md +++ /dev/null @@ -1,4 +0,0 @@ -e2e tests: Test debonding entries from genesis - -Here's an e2e test scenario that exercises debonding delegation records -from the genesis document. diff --git a/.changelog/2749.feature.md b/.changelog/2749.feature.md deleted file mode 100644 index aa2087dec5b..00000000000 --- a/.changelog/2749.feature.md +++ /dev/null @@ -1,5 +0,0 @@ -Add support for custom runtime dispatchers - -This reorganizes the dispatching code to work with a trait rather than a -concrete dispatcher object, enabling runtimes to have their own -dispatchers. diff --git a/.changelog/2752.feature.md b/.changelog/2752.feature.md deleted file mode 100644 index c43506934f6..00000000000 --- a/.changelog/2752.feature.md +++ /dev/null @@ -1 +0,0 @@ -txsource: delegation workload diff --git a/.changelog/2753.breaking.md b/.changelog/2753.breaking.md deleted file mode 100644 index c91a0b7c8b4..00000000000 --- a/.changelog/2753.breaking.md +++ /dev/null @@ -1,3 +0,0 @@ -go staking: Remove locked accounts - -We expect not to need this feature. diff --git a/.changelog/2756.bugfix.md b/.changelog/2756.bugfix.md deleted file mode 100644 index 0b3d289845a..00000000000 --- a/.changelog/2756.bugfix.md +++ /dev/null @@ -1,4 +0,0 @@ -staking/state: fix DelegationsFor queries - -DelegationFor and DebondingDelegationsFor would stop traversing the state to -soon in some cases. diff --git a/.changelog/2759.feature.md b/.changelog/2759.feature.md deleted file mode 100644 index cf35237cbe6..00000000000 --- a/.changelog/2759.feature.md +++ /dev/null @@ -1,3 +0,0 @@ -txsource: add a runtime workload - -The added runtime workload submits simiple-keyvalue runtime requests. diff --git a/.changelog/2760.internal.md b/.changelog/2760.internal.md deleted file mode 100644 index d7830f9a35f..00000000000 --- a/.changelog/2760.internal.md +++ /dev/null @@ -1 +0,0 @@ -go/staking/api: Add more details to sanity check errors diff --git a/.changelog/2761.breaking.md b/.changelog/2761.breaking.md deleted file mode 100644 index 7a778cad183..00000000000 --- a/.changelog/2761.breaking.md +++ /dev/null @@ -1 +0,0 @@ -go/consensus: Introduce gas cost based on tx size diff --git a/.changelog/2763.bugfix.md b/.changelog/2763.bugfix.md deleted file mode 100644 index 4638f874370..00000000000 --- a/.changelog/2763.bugfix.md +++ /dev/null @@ -1,4 +0,0 @@ -staking/api/commission: fix possible panic in validation check - -The validation check would panic whenever the number of bound steps was -greater than `rate_steps + 2`. diff --git a/.changelog/2766.feature.md b/.changelog/2766.feature.md deleted file mode 100644 index 06bcaa62515..00000000000 --- a/.changelog/2766.feature.md +++ /dev/null @@ -1,3 +0,0 @@ -go/txsource: add a commission schedule amendments workload - -The added workload generated commission schedule amendment requests. diff --git a/.changelog/2769.feature.1.md b/.changelog/2769.feature.1.md deleted file mode 100644 index 1a2d0e8604d..00000000000 --- a/.changelog/2769.feature.1.md +++ /dev/null @@ -1,4 +0,0 @@ -txsource/queries: workload doing historical queries - -Queries workload continuously performs various historic queries using the -exposed APIs and makes sure the responses make sense. diff --git a/.changelog/2769.feature.2.md b/.changelog/2769.feature.2.md deleted file mode 100644 index c8913cfb22f..00000000000 --- a/.changelog/2769.feature.2.md +++ /dev/null @@ -1,3 +0,0 @@ -go/staking: add LastBlockFees query method - -LastBlockFees returns the collected fees for previous block. diff --git a/.changelog/2773.feature.md b/.changelog/2773.feature.md deleted file mode 100644 index de191d34363..00000000000 --- a/.changelog/2773.feature.md +++ /dev/null @@ -1 +0,0 @@ -go/txsource/transfer: inlcude burn transactions in transfer workload diff --git a/.changelog/2774.trivial.md b/.changelog/2774.trivial.md deleted file mode 100644 index 82e6002680f..00000000000 --- a/.changelog/2774.trivial.md +++ /dev/null @@ -1,5 +0,0 @@ -buildkite/longtests: build rust code with debug flags - -Long-tests pipeline didn't build rust code in debug mode resulting in tests -not working in CI. -Also parallelize the build and use artifacts. diff --git a/.changelog/2775.breaking.md b/.changelog/2775.breaking.md deleted file mode 100644 index ae2c2759710..00000000000 --- a/.changelog/2775.breaking.md +++ /dev/null @@ -1,10 +0,0 @@ -storage/mkvs: Only nil value should mean deletion - -Previously an empty value in the write log signalled that the given entry is a -delete operation instead of an insert one. This was incorrect as inserting an -empty byte string is allowed. The value is now wrapped in an `Option`, with -`None` (`nil` in Go) meaning delete and `Some(vec![])` (`[]byte{}` in Go) -meaning insert empty value. - -This change is BREAKING as it changes write log semantics and thus it breaks -the runtime worker-host protocol. diff --git a/.changelog/2775.bugfix.1.md b/.changelog/2775.bugfix.1.md deleted file mode 100644 index 2dc098bbdb7..00000000000 --- a/.changelog/2775.bugfix.1.md +++ /dev/null @@ -1 +0,0 @@ -go/storage/mkvs: Don't forget to include siblings in SyncGet proof diff --git a/.changelog/2775.bugfix.2.md b/.changelog/2775.bugfix.2.md deleted file mode 100644 index fc63f0f8fc3..00000000000 --- a/.changelog/2775.bugfix.2.md +++ /dev/null @@ -1 +0,0 @@ -storage/mkvs: Don't try to sync dirty keys diff --git a/.changelog/2776.internal.md b/.changelog/2776.internal.md deleted file mode 100644 index 0c01eaee0c7..00000000000 --- a/.changelog/2776.internal.md +++ /dev/null @@ -1,3 +0,0 @@ -Make: Allow running Go unit tests and node tests independently - -They can be run using the new `test-unit` and `test-node` targets. diff --git a/.changelog/2777.breaking.md b/.changelog/2777.breaking.md deleted file mode 100644 index 4cad49bc241..00000000000 --- a/.changelog/2777.breaking.md +++ /dev/null @@ -1,6 +0,0 @@ -go/staking: include LastBlockFees in genesis - -Previosuly last block fees in the block of the genesis dump were lost. In the -case when these fees were non-zero this also caused a missmatch in total token -supply. Last block fees are now exported and during initialization of the new -chain moved to the common pool. diff --git a/.changelog/2780.process.md b/.changelog/2780.process.md deleted file mode 100644 index 8a887c1ffbc..00000000000 --- a/.changelog/2780.process.md +++ /dev/null @@ -1 +0,0 @@ -Include oasis-core-runtime-loader and oasis-net-runner in releases diff --git a/.changelog/2781.trivial.md b/.changelog/2781.trivial.md deleted file mode 100644 index aa7de2b961c..00000000000 --- a/.changelog/2781.trivial.md +++ /dev/null @@ -1 +0,0 @@ -runtime: Bump Rust crate versions diff --git a/.changelog/2783.bugfix.md b/.changelog/2783.bugfix.md deleted file mode 100644 index 8966ec91d97..00000000000 --- a/.changelog/2783.bugfix.md +++ /dev/null @@ -1,6 +0,0 @@ -go/storage/client: Refresh connections when retrying - -Previously the storage client did not refresh connections on each retry, so in -case a committee change happened while an operation was in progress, all -operations continued to use the old connection (which was closed) and thus -failed. We now refresh connections on each retry. diff --git a/.changelog/2783.internal.1.md b/.changelog/2783.internal.1.md deleted file mode 100644 index 8ea9feca89e..00000000000 --- a/.changelog/2783.internal.1.md +++ /dev/null @@ -1 +0,0 @@ -txsource/workload/queries: Add num last kept versions argument diff --git a/.changelog/2783.internal.2.md b/.changelog/2783.internal.2.md deleted file mode 100644 index e3286170f0f..00000000000 --- a/.changelog/2783.internal.2.md +++ /dev/null @@ -1,6 +0,0 @@ -go/runtime/client: Use prefetch (GetTransactionMultiple) in QueryTxs - -Previously if multiple transactions in the same block were returned as -QueryTxs results, each transaction was queried independently, resulting in -multiple round trips. Now we use GetTransactionMultiple to prefetch multiple -transactions in a single round trip which should improve latency. diff --git a/.changelog/2784.feature.md b/.changelog/2784.feature.md deleted file mode 100644 index f9b276b7c9f..00000000000 --- a/.changelog/2784.feature.md +++ /dev/null @@ -1,4 +0,0 @@ -go/oasis-node/cmd/debug/consim: Initial import - -Add the ability to exercise some backends without tendermint, while -attempting to preserve some of the semantics. diff --git a/.changelog/2785.bugfix.md b/.changelog/2785.bugfix.md deleted file mode 100644 index 9e41f54382f..00000000000 --- a/.changelog/2785.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -go/storage/client: Don't treat "no nodes" as a permanent error diff --git a/.changelog/2786.bugfix.md b/.changelog/2786.bugfix.md deleted file mode 100644 index f0c4dcaba85..00000000000 --- a/.changelog/2786.bugfix.md +++ /dev/null @@ -1,5 +0,0 @@ -go/consensus/tendermint: Use our notion of latest height - -Do not let Tendermint determine the latest height as that completely ignores -ABCI processing so it can return a block for which local state does not yet -exist. diff --git a/.changelog/2787.internal.md b/.changelog/2787.internal.md deleted file mode 100644 index 902ed53e601..00000000000 --- a/.changelog/2787.internal.md +++ /dev/null @@ -1 +0,0 @@ -txsource/queries: increase the odds of querying the latest height diff --git a/.changelog/2789.trivial.md b/.changelog/2789.trivial.md deleted file mode 100644 index 4bfdb566840..00000000000 --- a/.changelog/2789.trivial.md +++ /dev/null @@ -1 +0,0 @@ -Changes from fuzzing that we could keep diff --git a/.changelog/2790.trivial.md b/.changelog/2790.trivial.md deleted file mode 100644 index b0f0eff49b0..00000000000 --- a/.changelog/2790.trivial.md +++ /dev/null @@ -1 +0,0 @@ -go/common/ledger: Update Oasis SLIP-0044 index diff --git a/.changelog/2793.trivial.md b/.changelog/2793.trivial.md deleted file mode 100644 index df259f38a6b..00000000000 --- a/.changelog/2793.trivial.md +++ /dev/null @@ -1 +0,0 @@ -Fix runtime instructions in readme diff --git a/.changelog/2794.breaking.md b/.changelog/2794.breaking.md deleted file mode 100644 index 03e3d72a279..00000000000 --- a/.changelog/2794.breaking.md +++ /dev/null @@ -1,16 +0,0 @@ -go/staking: Three-way fee split - -We should give more to the previous block proposer, which is the block -that first ran the transactions that paid the fees in the -`LastBlockFees`. -Currently they only get paid as a voter. - -See -[oasis-core#2794](https://github.com/oasislabs/oasis-core/pull/2794) -for a description of the new fee split. - -Instructions for genesis document maintainers: - -1. Rename `fee_split_vote` to `fee_split_weight_vote` and - `fee_split_propose` to `fee_split_weight_next_propose` and - add `fee_split_weight_propose` in `.staking.params`. diff --git a/.changelog/2795.bugfix.md b/.changelog/2795.bugfix.md deleted file mode 100644 index 83cd2be296e..00000000000 --- a/.changelog/2795.bugfix.md +++ /dev/null @@ -1,5 +0,0 @@ -go/runtime/client: use history for GetBlock(latest) - -Using history for all GetBlock requests prevents the case where the latest -block would already be available but not yet in history, leading to -inconsistent results compared to querying by specific block number. diff --git a/.changelog/2796.feature.md b/.changelog/2796.feature.md deleted file mode 100644 index bd4a8456f93..00000000000 --- a/.changelog/2796.feature.md +++ /dev/null @@ -1 +0,0 @@ -go/runtime/client: expose GetGenesisBlock method in runtime client diff --git a/.changelog/2796.internal.md b/.changelog/2796.internal.md deleted file mode 100644 index a70bbccfc5e..00000000000 --- a/.changelog/2796.internal.md +++ /dev/null @@ -1 +0,0 @@ -go/txsource/queries: obtain earliest runtime round from runtime genesis diff --git a/.changelog/2797.trivial.md b/.changelog/2797.trivial.md deleted file mode 100644 index 1bd6eb6d764..00000000000 --- a/.changelog/2797.trivial.md +++ /dev/null @@ -1 +0,0 @@ -go/storage/mkvs: Include error message in panic diff --git a/.changelog/2798.trivial.md b/.changelog/2798.trivial.md deleted file mode 100644 index 26412df775b..00000000000 --- a/.changelog/2798.trivial.md +++ /dev/null @@ -1 +0,0 @@ -e2e: Check actual fee disbursement diff --git a/.changelog/2800.bugfix.md b/.changelog/2800.bugfix.md deleted file mode 100644 index 5ad0bf158a5..00000000000 --- a/.changelog/2800.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -go/storage/mkvs: Use cbor.UnmarshalTrusted for internal metadata diff --git a/.changelog/2800.internal.md b/.changelog/2800.internal.md deleted file mode 100644 index 78fc8287ae6..00000000000 --- a/.changelog/2800.internal.md +++ /dev/null @@ -1,5 +0,0 @@ -go/common/cbor: Add UnmarshalTrusted for trusted inputs - -The new method relaxes some decoding restrictions for cases where the inputs -are trusted (e.g., because they are known to be generated by the local node -itself). diff --git a/.changelog/2802.bugfix.md b/.changelog/2802.bugfix.md deleted file mode 100644 index d5076e44705..00000000000 --- a/.changelog/2802.bugfix.md +++ /dev/null @@ -1,3 +0,0 @@ -go/consensus: Shorten gas import - -Switch to more concise `FromUint64`. diff --git a/.changelog/2809.bugfix.md b/.changelog/2809.bugfix.md deleted file mode 100644 index 45106f08936..00000000000 --- a/.changelog/2809.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -go/consensus/tendermint/apps/staking: Propagate error in initTotalSupply diff --git a/.changelog/2810.bugfix.md b/.changelog/2810.bugfix.md deleted file mode 100644 index 963367637f6..00000000000 --- a/.changelog/2810.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -go/staking: Use uint16 for limits in CommissionScheduleRules diff --git a/.changelog/2814.bugfix.md b/.changelog/2814.bugfix.md deleted file mode 100644 index 03a388bbaec..00000000000 --- a/.changelog/2814.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -go/txsource/queries: Wait for indexed blocks before GetBlockByHash diff --git a/.changelog/2815.internal.1.md b/.changelog/2815.internal.1.md deleted file mode 100644 index 1f1e1f84457..00000000000 --- a/.changelog/2815.internal.1.md +++ /dev/null @@ -1,4 +0,0 @@ -go/consensus/tendermint: support DebugUnsafeReplayRecoverCorruptedWAL - -Adds support for setting tendermint DebugUnsafeReplayRecoverCorruptedWAL and -enables it in daily txsource test runs. diff --git a/.changelog/2815.internal.2.md b/.changelog/2815.internal.2.md deleted file mode 100644 index a2f18ace6b2..00000000000 --- a/.changelog/2815.internal.2.md +++ /dev/null @@ -1,4 +0,0 @@ -oasis-test-runner/txsource: increase number of validators - -Increase the number of validators used in txsource tests so that consensus can -keep making progress when one of the nodes is restarted. diff --git a/.changelog/2817.internal.md b/.changelog/2817.internal.md deleted file mode 100644 index 30d656f8498..00000000000 --- a/.changelog/2817.internal.md +++ /dev/null @@ -1 +0,0 @@ -oasis-test-runner/txsource: disable LogAssertNoTimeouts if restarts diff --git a/.changelog/2818.trivial.md b/.changelog/2818.trivial.md deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/.changelog/2819.internal.md b/.changelog/2819.internal.md deleted file mode 100644 index a5bb80458e5..00000000000 --- a/.changelog/2819.internal.md +++ /dev/null @@ -1,6 +0,0 @@ -go/extra/stats: Update availability score formula - -As per -, -the availability score formula has changed from "Blocks Signed + 50 x Blocks -Proposed" to "Blocks Signed + 50 x Blocks Proposed in Round 0". diff --git a/.changelog/2821.internal.md b/.changelog/2821.internal.md deleted file mode 100644 index c3ec773eb98..00000000000 --- a/.changelog/2821.internal.md +++ /dev/null @@ -1,4 +0,0 @@ -oasis-test-runner/txsource: disable Merge Discrepancy checker - -Timeout due to validator restarting also causes a merge discrepancy. Since -timeouts can happen, also disable the Merge discrepancy checker. diff --git a/.changelog/2822.internal.1.md b/.changelog/2822.internal.1.md deleted file mode 100644 index 4455a3218de..00000000000 --- a/.changelog/2822.internal.1.md +++ /dev/null @@ -1,5 +0,0 @@ -go/runtime/committee: Introduce close delay when rotating connections - -Previously a connection was immediately closed, interrupting any in-flight -requests. This introduces a configurable (via WithCloseDelay option) close -delay so rotated connections are only closed after some time. diff --git a/.changelog/2822.internal.2.md b/.changelog/2822.internal.2.md deleted file mode 100644 index 35f099ea6e1..00000000000 --- a/.changelog/2822.internal.2.md +++ /dev/null @@ -1,5 +0,0 @@ -go/runtime/committee: Don't reset committees when they don't change - -Previously each committee election triggered a reset of all connections for -that committee. This changes the logic to just bump the committee version in -case all the committee members are the same. diff --git a/.changelog/2822.internal.3.md b/.changelog/2822.internal.3.md deleted file mode 100644 index c5da7cdf8a5..00000000000 --- a/.changelog/2822.internal.3.md +++ /dev/null @@ -1,4 +0,0 @@ -go/common/grpc: Remove manual resolver hack - -Since gRPC supports the WithResolvers option to specify local resolvers there -is no need to use the global resolver registry hack. diff --git a/.changelog/2825.bugfix.md b/.changelog/2825.bugfix.md deleted file mode 100644 index ed22aa0abc2..00000000000 --- a/.changelog/2825.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -go/worker/registration: Fix crash when failing to query sentry addresses diff --git a/.changelog/2829.trivial.md b/.changelog/2829.trivial.md deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/.changelog/2830.internal.md b/.changelog/2830.internal.md deleted file mode 100644 index a99b345b537..00000000000 --- a/.changelog/2830.internal.md +++ /dev/null @@ -1 +0,0 @@ -tests/fixture/txsources: add initial balance for validator-3 diff --git a/.changelog/2831.trivial.md b/.changelog/2831.trivial.md deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/.changelog/2833.bugfix.md b/.changelog/2833.bugfix.md deleted file mode 100644 index 2cad312917a..00000000000 --- a/.changelog/2833.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -go/consensus/tendermint: Bump Tendermint Core to 0.32.10 diff --git a/CHANGELOG.md b/CHANGELOG.md index b10c66e67e8..ad7d32fcc64 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,316 @@ The format is inspired by [Keep a Changelog]. +## 20.5 (2020-04-10) + +### Process + +- Include oasis-core-runtime-loader and oasis-net-runner in releases + ([#2780](https://github.com/oasislabs/oasis-core/issues/2780)) + +### Removals and Breaking changes + +- storage: Rename "round" to "version" + ([#2734](https://github.com/oasislabs/oasis-core/issues/2734)) + + Previously the MKVS used the term "round" to mean a monotonically increasing + version number. This choice was due to the fact that it was initially used to + only store runtime state which has a concept of rounds. + + As we expand its use it makes more sense to generalize this and call it + version. + +- go staking: Remove locked accounts + ([#2753](https://github.com/oasislabs/oasis-core/issues/2753)) + + We expect not to need this feature. + +- go/consensus: Introduce gas cost based on tx size + ([#2761](https://github.com/oasislabs/oasis-core/issues/2761)) + +- storage/mkvs: Only nil value should mean deletion + ([#2775](https://github.com/oasislabs/oasis-core/issues/2775)) + + Previously an empty value in the write log signalled that the given entry is a + delete operation instead of an insert one. This was incorrect as inserting an + empty byte string is allowed. The value is now wrapped in an `Option`, with + `None` (`nil` in Go) meaning delete and `Some(vec![])` (`[]byte{}` in Go) + meaning insert empty value. + + This change is BREAKING as it changes write log semantics and thus it breaks + the runtime worker-host protocol. + +- go/staking: include LastBlockFees in genesis + ([#2777](https://github.com/oasislabs/oasis-core/issues/2777)) + + Previosuly last block fees in the block of the genesis dump were lost. In the + case when these fees were non-zero this also caused a missmatch in total token + supply. Last block fees are now exported and during initialization of the new + chain moved to the common pool. + +- go/staking: Three-way fee split + ([#2794](https://github.com/oasislabs/oasis-core/issues/2794)) + + We should give more to the previous block proposer, which is the block + that first ran the transactions that paid the fees in the + `LastBlockFees`. + Currently they only get paid as a voter. + + See + [oasis-core#2794](https://github.com/oasislabs/oasis-core/pull/2794) + for a description of the new fee split. + + Instructions for genesis document maintainers: + + 1. Rename `fee_split_vote` to `fee_split_weight_vote` and + `fee_split_propose` to `fee_split_weight_next_propose` and + add `fee_split_weight_propose` in `.staking.params`. + +### Features + +- node: Add automatic TLS certificate rotation support + ([#2098](https://github.com/oasislabs/oasis-core/issues/2098)) + + It is now possible to automatically rotate the node's TLS + certificates every N epochs by passing the command-line flag + `worker.registration.rotate_certs`. + Do not use this option on sentry nodes or IAS proxies. + +- go/storage/mkvs: Use Badger to manage versions + ([#2674](https://github.com/oasislabs/oasis-core/issues/2674)) + + By restricting how Prune behaves (it can now only remove the earliest round) + we can leverage Badger's managed mode to have it manage versions for us. This + avoids the need to track node lifetimes separately. + +- go/common/crypto/signature/signer/composite: Initial import + ([#2684](https://github.com/oasislabs/oasis-core/issues/2684)) + + This adds a composite signer factory that can aggregate multiple signer + factories. This could be used (for example), to use multiple signer + backends simultaneously, depending on the key role. + + Eg: The P2P link signer could use a local file, while the consensus + signer can be backed by a remote HSM. + +- e2e tests: Test debonding entries from genesis + ([#2747](https://github.com/oasislabs/oasis-core/issues/2747)) + + Here's an e2e test scenario that exercises debonding delegation records + from the genesis document. + +- Add support for custom runtime dispatchers + ([#2749](https://github.com/oasislabs/oasis-core/issues/2749)) + + This reorganizes the dispatching code to work with a trait rather than a + concrete dispatcher object, enabling runtimes to have their own + dispatchers. + +- txsource: delegation workload + ([#2752](https://github.com/oasislabs/oasis-core/issues/2752)) + +- txsource: add a runtime workload + ([#2759](https://github.com/oasislabs/oasis-core/issues/2759)) + + The added runtime workload submits simiple-keyvalue runtime requests. + +- go/txsource: add a commission schedule amendments workload + ([#2766](https://github.com/oasislabs/oasis-core/issues/2766)) + + The added workload generated commission schedule amendment requests. + +- go/staking: add LastBlockFees query method + ([#2769](https://github.com/oasislabs/oasis-core/issues/2769)) + + LastBlockFees returns the collected fees for previous block. + +- txsource/queries: workload doing historical queries + ([#2769](https://github.com/oasislabs/oasis-core/issues/2769)) + + Queries workload continuously performs various historic queries using the + exposed APIs and makes sure the responses make sense. + +- go/txsource/transfer: inlcude burn transactions in transfer workload + ([#2773](https://github.com/oasislabs/oasis-core/issues/2773)) + +- go/oasis-node/cmd/debug/consim: Initial import + ([#2784](https://github.com/oasislabs/oasis-core/issues/2784)) + + Add the ability to exercise some backends without tendermint, while + attempting to preserve some of the semantics. + +- go/runtime/client: expose GetGenesisBlock method in runtime client + ([#2796](https://github.com/oasislabs/oasis-core/issues/2796)) + +### Bug Fixes + +- staking/state: fix DelegationsFor queries + ([#2756](https://github.com/oasislabs/oasis-core/issues/2756)) + + DelegationFor and DebondingDelegationsFor would stop traversing the state to + soon in some cases. + +- staking/api/commission: fix possible panic in validation check + ([#2763](https://github.com/oasislabs/oasis-core/issues/2763)) + + The validation check would panic whenever the number of bound steps was + greater than `rate_steps + 2`. + +- go/storage/mkvs: Don't forget to include siblings in SyncGet proof + ([#2775](https://github.com/oasislabs/oasis-core/issues/2775)) + +- storage/mkvs: Don't try to sync dirty keys + ([#2775](https://github.com/oasislabs/oasis-core/issues/2775)) + +- go/storage/client: Refresh connections when retrying + ([#2783](https://github.com/oasislabs/oasis-core/issues/2783)) + + Previously the storage client did not refresh connections on each retry, so in + case a committee change happened while an operation was in progress, all + operations continued to use the old connection (which was closed) and thus + failed. We now refresh connections on each retry. + +- go/storage/client: Don't treat "no nodes" as a permanent error + ([#2785](https://github.com/oasislabs/oasis-core/issues/2785)) + +- go/consensus/tendermint: Use our notion of latest height + ([#2786](https://github.com/oasislabs/oasis-core/issues/2786)) + + Do not let Tendermint determine the latest height as that completely ignores + ABCI processing so it can return a block for which local state does not yet + exist. + +- go/runtime/client: use history for GetBlock(latest) + ([#2795](https://github.com/oasislabs/oasis-core/issues/2795)) + + Using history for all GetBlock requests prevents the case where the latest + block would already be available but not yet in history, leading to + inconsistent results compared to querying by specific block number. + +- go/storage/mkvs: Use cbor.UnmarshalTrusted for internal metadata + ([#2800](https://github.com/oasislabs/oasis-core/issues/2800)) + +- go/consensus: Shorten gas import + ([#2802](https://github.com/oasislabs/oasis-core/issues/2802)) + + Switch to more concise `FromUint64`. + +- go/consensus/tendermint/apps/staking: Propagate error in initTotalSupply + ([#2809](https://github.com/oasislabs/oasis-core/issues/2809)) + +- go/staking: Use uint16 for limits in CommissionScheduleRules + ([#2810](https://github.com/oasislabs/oasis-core/issues/2810)) + +- go/txsource/queries: Wait for indexed blocks before GetBlockByHash + ([#2814](https://github.com/oasislabs/oasis-core/issues/2814)) + +- go/worker/registration: Fix crash when failing to query sentry addresses + ([#2825](https://github.com/oasislabs/oasis-core/issues/2825)) + +- go/consensus/tendermint: Bump Tendermint Core to 0.32.10 + ([#2833](https://github.com/oasislabs/oasis-core/issues/2833)) + +### Documentation improvements + +- README: Update Rust-related installation instructions + ([#2745](https://github.com/oasislabs/oasis-core/issues/2745)) + +### Internal changes + +- Move storage/mkvs/urkel to just storage/mkvs + ([#2657](https://github.com/oasislabs/oasis-core/issues/2657)) + + The MKVS implementation has been changed from the initial "Urkel tree" + structure and it is no longer an actual "Urkel tree" so having "urkel" in its + name is just confusing. + +- runtime: Add hongfuzz fuzzing targets + ([#2705](https://github.com/oasislabs/oasis-core/issues/2705)) + +- go/staking/api: Add more details to sanity check errors + ([#2760](https://github.com/oasislabs/oasis-core/issues/2760)) + +- Make: Allow running Go unit tests and node tests independently + ([#2776](https://github.com/oasislabs/oasis-core/issues/2776)) + + They can be run using the new `test-unit` and `test-node` targets. + +- txsource/workload/queries: Add num last kept versions argument + ([#2783](https://github.com/oasislabs/oasis-core/issues/2783)) + +- go/runtime/client: Use prefetch (GetTransactionMultiple) in QueryTxs + ([#2783](https://github.com/oasislabs/oasis-core/issues/2783)) + + Previously if multiple transactions in the same block were returned as + QueryTxs results, each transaction was queried independently, resulting in + multiple round trips. Now we use GetTransactionMultiple to prefetch multiple + transactions in a single round trip which should improve latency. + +- txsource/queries: increase the odds of querying the latest height + ([#2787](https://github.com/oasislabs/oasis-core/issues/2787)) + +- go/txsource/queries: obtain earliest runtime round from runtime genesis + ([#2796](https://github.com/oasislabs/oasis-core/issues/2796)) + +- go/common/cbor: Add UnmarshalTrusted for trusted inputs + ([#2800](https://github.com/oasislabs/oasis-core/issues/2800)) + + The new method relaxes some decoding restrictions for cases where the inputs + are trusted (e.g., because they are known to be generated by the local node + itself). + +- oasis-test-runner/txsource: increase number of validators + ([#2815](https://github.com/oasislabs/oasis-core/issues/2815)) + + Increase the number of validators used in txsource tests so that consensus can + keep making progress when one of the nodes is restarted. + +- go/consensus/tendermint: support DebugUnsafeReplayRecoverCorruptedWAL + ([#2815](https://github.com/oasislabs/oasis-core/issues/2815)) + + Adds support for setting tendermint DebugUnsafeReplayRecoverCorruptedWAL and + enables it in daily txsource test runs. + +- oasis-test-runner/txsource: disable LogAssertNoTimeouts if restarts + ([#2817](https://github.com/oasislabs/oasis-core/issues/2817)) + +- go/extra/stats: Update availability score formula + ([#2819](https://github.com/oasislabs/oasis-core/issues/2819)) + + As per + , + the availability score formula has changed from "Blocks Signed + 50 x Blocks + Proposed" to "Blocks Signed + 50 x Blocks Proposed in Round 0". + +- oasis-test-runner/txsource: disable Merge Discrepancy checker + ([#2821](https://github.com/oasislabs/oasis-core/issues/2821)) + + Timeout due to validator restarting also causes a merge discrepancy. Since + timeouts can happen, also disable the Merge discrepancy checker. + +- go/runtime/committee: Introduce close delay when rotating connections + ([#2822](https://github.com/oasislabs/oasis-core/issues/2822)) + + Previously a connection was immediately closed, interrupting any in-flight + requests. This introduces a configurable (via WithCloseDelay option) close + delay so rotated connections are only closed after some time. + +- go/common/grpc: Remove manual resolver hack + ([#2822](https://github.com/oasislabs/oasis-core/issues/2822)) + + Since gRPC supports the WithResolvers option to specify local resolvers there + is no need to use the global resolver registry hack. + +- go/runtime/committee: Don't reset committees when they don't change + ([#2822](https://github.com/oasislabs/oasis-core/issues/2822)) + + Previously each committee election triggered a reset of all connections for + that committee. This changes the logic to just bump the committee version in + case all the committee members are the same. + +- tests/fixture/txsources: add initial balance for validator-3 + ([#2830](https://github.com/oasislabs/oasis-core/issues/2830)) + ## 20.4 (2020-03-04) ### Removals and Breaking changes