PolyBFT Introduction
PolyBFT is a Proof-of-Stake protocol that enables staking, reward distribution and validator selection via smart-contracts. It also utilizes the concept of voting power and enables bridging functionality.
- It uses
Ibft 2.0
protocol as a consensus engine to seal blocks (https://github.com/0xPolygon/go-ibft). - It has a built-in bridge mechanism that enables arbitrary messages to pass between
rootchain
tosidechain
(akaStateSync
) and vice versa (akaCheckpoint
).- Supports
Erc20
,Erc721
, and any other of the open token specs.
- Supports
- It uses system smart contracts (https://github.com/0xPolygon/core-contracts) to implement the staking solution of the protocol: reward distribution, validator selection, slashing.
Debug trace functionality
New debug endpoints were added to JSON RPC:
- debug_traceBlock
- debug_traceBlockByNumber
- debug_traceBlockByHash
- debug_traceCall
- debug_traceTransaction
Other improvements
- The native gas token is ERC-20 compatible.
- Several property-based tests added
- Overall quality of the codebase improvements
Important notice
This version is not backward compatible
Changelog
- d239096 Removing
GenesisTarget
and adding theNodeID
field toValidator
struct (#985) - 4828279 Fix data race in fsm (#982)
- f33af57 Change genesis premine logic (#981)
- 82fd78d Merge remote-tracking branch 'origin/develop' into feature/v3-parity
- a219437 Integrate with CheckpointManager.sol (#952)
- 7d8338f Passing account codehash to j.state.GetCode (#976)
- af0dee1 Extracted GetAccountImpl into fn for use in txPoolHub and jsonRPCHub (#975)
- ec48ac4 Make "pending" block param act as "latest" (#974)
- e96eeda Replace BLS library with github.com/kilic/bn254 (#978)
- 2962f20 improving workflow dependency (#966)
- 07ce7e6 Remove State Sync execution step (#964)
- e5688ba Set address to the result instance on applyCreate
- 0ee71ed Fix e2e tests
- b544aa3 Merge branch 'develop' into feature/v3-parity
- 316ce9b Debug tracing (#836)
- 1e4a66a Align
v3-parity
withdevelop
branch (#971) - b8ecb2b Polybft voting power (#944)
- b8d35ac Fix data race to polybft unit test (#965)
- e7ff3f3 EVM-220 TestClusterBlockSync/BLS fails in voting power branch (#926)
- 3ed0370 Epikichi/edge 973 change v3 parity workflow to devnet (#957)
- e22c827 Docker setup: Wait for genesis file to exist before starting nodes (#949)
- 64f728a Track updates for validators (#939)
- 461300f Add performance tests to devnet deployments (#918)
- 26663db EVM-232 Keep polybft bls and ecdsa keys in separate secrets manager namespaces (#953)
- dc33bad introducing workflow dispatch trigger for Devnet V3 workflow. (#927)
- 01014e8 Epikichi/edge 964 implement multiple erc mode support (#954)
- db63825 Fix unit test for event tracker (#935)
- 2968d5f Merge branch 'develop' into feature/v3-parity
- f80b615 Add unit tests for jsonrpc transaction encoding (#923)
- 5250168 Epikichi/edge 904 investigate and add reproducable build (#928)
- edf9d96 Merge branch 'develop' into feature/v3-parity
- a191a54 Local cluster - adapt port for ibft to polybft (#931)
- 4a3f562 Fix assigned boot nodes port number in genesis (#930)
- 3c8ccd7 Revert removal of MarshalText function (#919)
- 44c2ab3 Hotfix to solve a backup stream limit Issue (#816)
- 8627f12 Introduce local development cluster script (#912)
- 3335564 adding devnet-v3 workflow for parity testing. Adding needed secrets for other workflows (#916)
- d67d898 EVM-152 Fix Unit Tests (#910)
- cc3159b Deprecate sql driver types (#913)
- c1ffc39 Jsonrpc fix race conditions (#908)
- 0ab9ae7 Change ValidatorMetadata methods to pointer receivers (#911)
- 4f0161f Add read abstraction to the State (#827)
- 455f185 Remove Polybft dummy smart contracts (#909)
- 62d5981 Fix unstable behaviour in TestContractValidatorStore_CacheChange (#810)
- 4ab595c Use a local account object and refactor the store account interface (#902)
- bd80d1c Use jsonrpc block header in subscription (#901)
- 88310e7 Remove store getHeaderByNumber (#900)