Added:
- error handling for GetCommitteeMemberIndex to avoid crash
- discard the message with different epoch id
- error handling for exception during proposal validation that affects future proposals
Updated:
- set max message size to 2M
- fixed audit issues
- onbeat timeout with QCHigh+1
- print peer name with refer to candidate list
- clean up log for better readability
- merge 8670 port with 8671
- inbound/outbound ratio control
- avoid duplicate IP when accepting p2p peers
Updated:
- fixes for committee nonce
Added:
- prevent negative account balance (otherwise the node will panic)
- prevent proposing an invalid block(height <= qcHeight)
- prevent out-of-bound problem
- prevent state hash mismatch due to gob encode
Updated:
- set block magic to 0x76010401
- add support for late joiner of committee
Added:
- add magic to block in order to prevent syncing across versions
- log output for members in/out of committee in notary msg
- init the gob encoder to predefine the type id
- group newCommittee msg by {height,round,epoch} to prevent msg hash mismatch
Updated:
- drops the zero signer tx in txpool
- keep original sender during msg relay
- removed poa folder
Updated:
- merged
--preset
with--network
Deleted:
- poa source
- solo mode
Updated:
- added
--preset
flag
Breaking change
Added:
- relay message for announce and notary during committee establishment
- slashing feature: injail and statistics
- auction bid
- distributor list for delegates
- use LRU to avoid message duplication
- use signature aggregator to collect signatures in order to avoid duplication and detect double sign
Updated:
- permanent BLS key, no key swapping during committee establishment
- protocol change: no voteForNotary any more
- tidy up log print outs
Added:
- auto regenerate consensus.key if read file fails
Added:
- clean up relay info during pacemaker start
- unified the proposal handling for both proposers and validators
- return txs back to txpool if proposal is invalidated
- merge round udate with timer reset, new implementation of timeout mechanism
Updated:
- apply the best qc immediately when updating qc candidate
Updated:
- filter delegates
Updated:
- Calculate delegate with 300 MTRG threshold in staking module
Added:
- dynamic committee options --committee-min-size, --committee-max-size and --delegates-max-size
- bootstrap options --init-configured-delegates and --epoch-mblock-count
- require the candidates to have at least 300 MTRG total votes to be considered as delegates
Added:
- sort the delegate list with descending voting power
- select the first n delegates to be committee members (n being committee size)
Added:
- sync mechanism for blocks with height larger than current best block
- tailing newline in public.key file
- bootstrap options for dynamic committee size
- add protection in OnBeat to prevent beat on invalid height
Updated:
- fix the bug of proposal query
- fix the bug of peers of committee leader messages
Added:
- range query for missing proposals
Updated:
- before the new qc is populated by proposals, dont start the timer for next round
Added:
- add state sync at receiving new view timeout
- more readable log for committee establishment
Updated:
- Typos for wallet API
- display members who chould not join the committee in /node/consensus/committee API
Added:
- forward missing proposals to peers when receive new view message with a lower expected height
Added:
- update curEpoch after processing blocks, so curEpoch will be up to date
Added:
- Update curEpoch with bestQC before send out NewCommittee message
- Update curEpoch when receive NewCommittee message
Added:
- start pacemaker even if there are not enough vote for notary
Updated:
- fixed the missing committee info bug
- added committee message log
Added:
- Send redundancy proposals to protect from network partition
Updated:
- further updated log output
Added:
blockID
check inBlockMatchQC
peerName
in the log together with send and receive message- check the height before timeout onbeat to protect from the potential fork
Updated:
- fix for the address mismatch for delegates and validators
- simplified the log for better readability
Added:
name
field for delegates and validatorsBlockMatchQC
for PMNewView in order to protect from unexpected out-of-sequence arrival of PMNewView and PMProposal
Removed:
- enforced round number for proposal
Added:
- enforce
epochID
, anything without differentepochID
will be discarded - shorten the log for bestQC broadcast
- update docker build script
- ignore PMProposal with expired round
Added:
- communication
magic
based on version and discover topic - reject communication with mismatch
magic
Removed:
- set
magic
purely with discover topic
Added:
- ignore PMNewView with expired round
- ignore PMVote with expired round
BREAKING CHANGE
Added:
- automatically set
magic
with--disco-topic
flag - enforce
magic
with all rpc/consensus/pacemaker traffic, ignore all the messages with differentmagic
param
Added:
- prometheus metrics for monitoring
- API for staking
- sync bestQC with gossip messages
Fixed:
- pacemaker multiple stop crash
- fake "fork happened"
- race condition for accessing validator set
- revert handling for pacemaker, remove precommited blocks from db
- waiting for pacemaker to stop
Added:
- staking operations: candidate, delegate, bound
- better handling for pending proposals
- proposal relay
draft version