v1.1.0 (2021-01-18)
This release is our first minor release since v1 and it includes several significant changes.
It is important to read these notes before upgrading.
Updating to this release is recommended at your earliest convenience.
Validator Slashing Protection DB New Schema
In the Pyrmont testnet, we have observed performance degredation when running more than 100
validating keys on a single validator client. The root cause was excessive disk I/O when reading or
updating the validator's slashing protection database. The root cause issue becomes increasingly
noticable as the slashing protection database fills with history over time.
This release implements a new database schema which is not backwards compatiable with prior releases,
but significantly decreases the disk I/O for any number of validating keys.
🚨 Rolling back to v1.0.5 🚨
If you need to rollback to v1.0.5, you must run the validator database reverse migration.
See full instructions on our docs site here.
🚨🚨🚨 If you do not run the reverse migration, your v1.0.5 process will be missing recent attestation history! 🚨🚨🚨
Known issues worth mentioning
- Prometheus metrics first scrape may take longer than 30s #8274
Notable changes
- Several API endpoints implemented to support eth2.0-APIs
--attest-timely
flag introduced to attest early if a block for the assigned slot is received before the 1/3rd slot time See #8185- Several logging improvements #8226 #8142 #8247 #8148 #8245 #8187
- Peer management improvements #8260 #8155
- Prysm Web UI updated #8163. Review UI docs page as the web UI requirements have been simplified.
- Many code health improvements
Full list of changes below.
1.1.0
- Add
on_block
finality test (#8266) (b6c4bc1), closes #8266 - Add a helper to validate nil attestation (#8272) (cf343be), closes #8272
- Add Back New Attester Protection DB Logic (#8242) (d975963), closes #8242 #8237 #8243
- Add DepositMessage in preparation to remove go-ssz (#8244) (e5556db), closes #8244
- Add extra methods to shared/fileutil (#8117) (a0c4756), closes #8117
- add happy/sad tests (#8279) (9b367b3), closes #8279
- Add hydrate indexed att test helper (#8261) (daf6da5), closes #8261
- Add Instead of Subtract in Epoch Boundary Check (#8145) (dfdf77c), closes #8145
- Add mutex to params/config (#8160) (b54743e), closes #8160
- Add names to certain return values in accounts (#8159) (af2c36e), closes #8159
- Add new GetVersion API to Health Service (#8167) (2defff0), closes #8167 prysmaticlabs/prysm-web-ui#107
- Add Peer Logger (#8226) (0ff2a53), closes #8226
- Add Public Method To Retrieve Discovery Address (#8143) (44c3adb), closes #8143
- Add slot in epoch field for `Attestation schedule..." log (#8166) (5dc8eb4), closes #8166
- Add space at the start of comments (#8202) (e5c69bd), closes #8202
- Add timely attest flag to fix #8185 (#8235) (35ed01e), closes #8185 #8235
- Added db.BlocksBySlot and db.BlockRootsBySlot (#8184) (9f42361), closes #8184
- Allow Multiple Targets Per Source Epoch in Attester Protection (#8262) (fff6472), closes #8262
- Allow to create an empty imported wallet (#8251) (aa69e5e), closes #8251
- Allow update cache at last slot of the epoch (#8094) (0449cd3), closes #8094
- Attestation Aggregation: optimize attestation list validation (#8213) (da59fdd), closes #8213
- Beacon node code health improvements (#8109) (70c0bb1), closes #8109
- Block Fetching with Graceful Retry (#8182) (9135774), closes #8182
- Blocks filtering should return genesis when startSlot=0 and endSlot=0 (#8270) (d7d2c63), closes #8270
- Bring back disable slashing broadcast flag (#8141) (70da296), closes #8141
- Check if initial sync service has been initialized (#8214) (7135a85), closes #8214
- Clean up account logs and errors (#8142) (d5bf837), closes #8142
- Cleanup Attester DB Protection Files and Add Back Save Lowest Epochs Functionality (#8232) (470d5aa), closes #8232
- Compare strings using strings.EqualFold() (#8193) (7c25d5c), closes #8193
- Configurable Interval for Debouncing Keystore Reloading in Validator Client (#8149) (f67f8dd), closes #8149
- Consolidate Required Web UI Endpoints Into Single Protobuf File (#8127) (148e7fc), closes #8127
- Copied over ssz.DeepEqual as sszutil.DeepEqual from go-ssz (#8258) (9369bb6), closes #8258
- Coverage results upload fix for CI (#8255) (c87ef2f), closes #8255
- DB Migration for Optimal Local Slashing Protection (#8212) (dd3ac6c), closes #8212
- Declare err in loop to limit its scope (#8200) (9d737d6), closes #8200
- Disallow duties request where req.Epoch > current.Epoch+1 (#8252) (eeda9f1), closes #8252
- Do Not Verify Attestations When Packing Them (#8135) (82bba59), closes #8135
- Fallback To Historical Sync For Powchain (#8146) (46c67f1), closes #8146
- FC test coverage improvement (#8120) (6244163), closes #8120
- Fix Attest early if valid block is received before 4 seconds (#8197) (ba9b563), closes #8197
- Fix data races in tests accessing beacon config concurrently (#8190) (318f839), closes #8190
- Fix file permission checks for Windows (#8164) (f6af79f), closes #8164
- Fix for prysm.bat issue 'Validator' is not recognized as an internal or external command (#8097) (0e5da50), closes #8097
- Fix import shadowing of db package (#8158) (d8c31b7), closes #8158
- Fix import shadowing of state package (#8191) (04b2e07), closes #8191
- Fix issue with custom chain/network ID configuration (#8147) (f038d78), closes #8147
- Fix issue with roaming data dir on Wins (#8095) (f5c8707), closes #8095
- Fix participation query returning balances of orphaned chain (#8137) (0dcbf17), closes #8137
- Fix Slasher Backup DB panic on call. (#8099) (630d573), closes #8099
- Fix to TLS v1.3 (#8222) (a855f28), closes #8222
- Fix Unknown Validator Edge Case in ListValidatorBalances (#8162) (7689945), closes #8162
- Flag to enable duty count down (#8161) (ff64fdc), closes #8161
- gogo protobuf (#8263) (612e6eb), closes #8263
- Hydrate attestation for tests (#8228) (bc650c8), closes #8228
- Hydrate header test helper (#8234) (9a1866b), closes #8234
- Hydrate signed block helper (#8246) (18bb867), closes #8246
- Implement GetHealth in the node API (#8217) (9b3e1eb), closes #8217
- Implement GetIdentity in the node API (#8230) (2d75b12), closes #8230
- Implement GetPeer in the node API (#8264) (a2d4e33), closes #8264
- Implement GetSyncStatus in the node API (#8241) (015102c), closes #8241
- Implement GetVersion in the node API (#8207) (bc2cd29), closes #8207
- Implement Migration Up/Down Logic for Validator DB (#8271) (4c19e62), closes #8271
- Implement Unified Validator API Endpoints for Beacon Chain Information (#8139) (f75b8a3), closes #8139
- Init sync: minor style fixes (#8156) (e772e8c), closes #8156
- Integrate New Slashing Protection DB Methods at Runtime (#8219) (3858068), closes #8219
- isCanonical for slot 0 should return true (#8269) (09a792d), closes #8269
- Limit prometheus requests in flight, set timeout to reasonable 30 seconds (#8130) (3fb4943), closes #8130
- Lock Only When Needed When Fetching Attesting History (#8140) (d650034), closes #8140
- Make TLS mandatory by default when unmarshalling remote wallet options (#8133) (25b151a), closes #8133
- Max-cover: remove redundant dedup routine (#8224) (d200652), closes #8224
- More Efficient Validation of Proposer Index (#8107) (508c5fc), closes #8107
- Move attestation protection call after signing (#8216) (f014374), closes #8216
- Move hot state cache to stategen (#8153) (df93aff), closes #8153
- Move state summary cache to DB (#8101) (20dede7), closes #8101
- Multiple discovery addresses (#8203) (353c1f6), closes #8203
- Optimal Local Slashing Protection DB Schema (#8211) (c354871), closes #8211
- Optimize Migration for new Attester Protection DB (#8231) (c4ab678), closes #8231
- Pass context to NewKVStore (#8125) (dc27cd7), closes #8125
- Prune Excess Peers Better (#8260) (ce397ce), closes #8260
- Prune Validator Attester Records Older than Weak Subjectivity Periods (#8221) (0d5e2cf), closes #8221
- Refactor Method Signatures For Powchain (#8110) (e2d7ec6), closes #8110
- Remove duplicate package imports (#8104) (0f18867), closes #8104
- Remove Logout from Validator RPC Authenticated Paths (#8151) (d19c57c), closes #8151
- Remove redundant lambda around cleanup code (#8192) (ee8aacb), closes #8192
- Remove redundant parentheses around nil values (#8199) (1abe92f), closes #8199
- Remove snappy compression migration for attestation history (#8238) (97320a0), closes #8238
- Remove Snappy from Validator Slashing Protection DB (#8248) (d2bd954), closes #8248
- Remove timeout debug log (#8247) (323eac6), closes #8247
- Removed some simple go-ssz usage (#8250) (1a9207b), closes #8250
- Replace HTTP code with gRPC code in GetHealth API endpoint (#8249) (5dda2ca), closes #8249
- Revert changes to sync service status check (#8215) (392e61f), closes #8215
- Revert Inbound Peer Limit (#8155) (ea88799), closes #8155
- Revert New Attester Protection DB Logic (#8237) (6738fa3), closes #8237 #8231 #8219 #8212
- Show number of user pubkeys for attesting and proposing in "Next duty" log output (#8187) (1b6a070), closes #8187
- Skip proposer indices cache update if exists (#8096) (6a5589f), closes #8096
- Start from last valid root in loadStateBySlot (#8218) (e52c3d4), closes #8218
- Stream Validator and Beacon Logs via gRPC Streams (#8150) (72dc439), closes #8150
- Stream verified block (#8206) (023e258), closes #8206
- Unify the pattern of using a package-level logger (#8245) (5fd03f8), closes #8245
- Update
Attestation schedule...
log for clarify (#8148) (756ccbe), closes #8148 - Update Bitfield Dependency (#8227) (4253888), closes #8227
- Update FastSSZ To Latest Commit (#8225) (fb9f4e8), closes #8225
- Update int -> string conversion to make go test happy (#8183) (4055841), closes #8183
- Update prometheus/client_golang (#8256) (e967a65), closes #8256
- Update Prysm Web UI to Beta.3 (#8163) (4c6e0c5), closes #8163
- Update rules docker to include bazelbuild/rules_docker#1666, which updates t (a7cf77f), closes #8136
- Update variable names that are same as imports (#8220) (9ff825a), closes #8220
- Validator code health improvements (#8106) (3e9d721), closes #8106
- Validator database: use snappy compression on encoded attestation history (#8129) (4326cbb), closes #8129
- Validator DB cleanup: remove obsolete buckets (#8122) (ad7d3c7), closes #8122
- Validator nil duty should not panic (#8171) (bf673ec), closes #8171
- Testutil: Can generate attestation at epoch boundary (#8265) (40155c9), closes #8265
- Fuzzing: conditional BLS enabled via environment variable (#8229) (25bba9f), closes #8229
- CI: Disable remote caching of GoStdLib (#8111) (72a92fe), closes #8111