Skip to content

Releases: 0xPolygon/polygon-edge

v0.7.0-alpha1

01 Dec 11:31
d239096
Compare
Choose a tag to compare
v0.7.0-alpha1 Pre-release
Pre-release

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 to sidechain (aka StateSync) and vice versa (aka Checkpoint).
    • Supports Erc20, Erc721, and any other of the open token specs.
  • 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 the NodeID field to Validator 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 with develop 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)

v0.6.1

27 Oct 10:50
384ffa2
Compare
Choose a tag to compare

Important note:

The linux/amd64 build of 0.6.1 Polygon Edge has an issue due to the compiler flags and the build environments and is removed from this GitHub Release.

Please use the provided docker image, build the binary yourself from the release source code or use a different version until a new release is out.

Notable changes

The officially supported go version has been increased from 1.17 to 1.18.

New features

Smart Contract Predeployment

This new feature allows users to specify Solidity Smart Contracts they want to see present in the blockchain from block 1, and not have to worry about orchestrating deployments as soon as the chain is running. Check out our official documentation about this.

Datadog profiling

With some configuration of the Datadog agent on the node, Edge users will be able to see profiles and tracing stats on their Datadog portal.

Fixes

Bootnode re-discovery issue

We had an issue where, in a running network, once the bootnodes lose all of their peers (server restart, network issues or similar), they do not get back any peers without restarting all the nodes.

Panic in opReturnDataCopy

There was an issue that may cause panic in opReturnDataCopy. dataOffset is expected to be a uint64 value, but this function didn’t check the negativity before using it.

The full list of changes can be found in the Changelog below.

Changelog

  • 384ffa2 Remove storage snapshot functions (#830)
  • 46a988b adding Snyk code SAST in addition to vulerability test in workflows (#823)
  • c45f751 Fix queryGasLimit for epoch blocks
  • ae69b37 EVM-69 Fix panic issue in opReturnDataCopy (#778)
  • 337f90a adding approved users to current release workflow (#815)
  • 86b61c3 allowing snyk to continue on error to upload (#800)
  • caca91f Updating code scans to use Snyk for aligning with org. (#794)
  • b6d968a Replace the binary search method for finding the closest snapshot (#791)
  • a72eefc Adding netgo tag to our internal builds for consistency. (#793)
  • 9f1ce9b [FIX] Bootnode re-discovery issue (#775)
  • a7c34d5 removing condition for CI workflow to run (#788)
  • d794a2a Initial Workflow Rework (#765)
  • 5558022 Bump google.golang.org/grpc from 1.48.0 to 1.50.0 (#780)
  • 0d694f2 Bump gopkg.in/DataDog/dd-trace-go.v1 from 1.41.0 to 1.42.1 (#777)
  • 7a01a73 Bump cloud.google.com/go/secretmanager from 1.5.0 to 1.7.0 (#759)
  • 16ffff4 Bump github.com/hashicorp/vault/api from 1.7.2 to 1.8.0 (#751)
  • 7e49efc Bump github.com/hashicorp/go-hclog from 1.2.2 to 1.3.1 (#749)
  • 5c90716 Bump github.com/multiformats/go-multiaddr from 0.6.0 to 0.7.0 (#727)
  • 34ec940 Adding netgo build tag for linux releases to provide more consistent (#779)
  • e423eed Add support for better client version details (#672)
  • bf4a16c Custom contract predeployment (#536)
  • 66897d8 [Feature] Datadog profiler (#707)
  • 41cf837 changed http.DefaultServerMux to http.NewServeMux() (#745)
  • 690b4b4 Bump Go to 1.18 (#776)
  • daf3702 Add logging into e2e framework (#771)
  • ec907d3 Make GetStorageAt return 32 bytes data (#744)
  • 98a40e1 EVM-42 Remove WebSocket filter with closed connection (#763)
  • ae056ef Automating e2e tests (#769)
  • f2a895f EVM-50: Add --num feature to "secrets init" command (#770)
  • 49b9e68 Secrets print functionality for ecdsa/bls validator public key address and node id (#705)
  • ce2bc7e Comment begins with a lowercase letter, when it should begin with an uppercase one. FIXED. (#766)
  • aa8b3fe EVM-25 Create state abstraction boundaries for write-ops in the state… (#753)

v0.6.0

27 Sep 10:38
v0.6.0
e25825c
Compare
Choose a tag to compare

Breaking changes

BLS

  • The newly introduced BLS can aggregate multiple signatures into a single byte array and reduce the block header size.
  • Although BLS is used by default in Polygon Edge, each chain can choose to use it or not. The ECDSA key is used regardless of whether BLS is enabled or not.
  • The steps for migration to BLS, both in PoA and PoS, can be found in our official guide.

⚠️ BLS is not compatible with clients running older versions (<0.6.0) of Polygon Edge.

Minor changes

  • Updated the libp2p package versions to ones without vulnerabilities
  • Removed the io/ioutil package usage due to deprecation
  • Dropped vendoring

⚠️ To mitigate these breaking changes, please make sure that all of the nodes in the cluster are running version 0.6.0 or above.
The full list of changes can be found in the Changelog below.

Changelog

e25825c Moved golangci linter config to the separate file (#764)
6b93e54 Transfer v0.5.1 fixes to upstream (#760)
7975703 Remove vendor folder (#755)
3c3d268 Update CODEOWNERS
473c582 Update CODEOWNERS
e7c1116 Update CODEOWNERS
29177a3 Added docker setup for local env (#747)
bf909f5 Remove io/ioutil package due to deprecation (#723)
a1fa76e Upgrade github.com/libp2p/go-libp2p from to v0.22.0 and Remove github.com/libp2p/go-libp2p-core (#730)
f982111 [Feature] Added more information to the version command (#688)
7ada10f bump DefaultPremineBalance (#715)
c39d854 BLS Aggregated Committed Seals + ParentCommittedSeal (#649)
8e9099a Trigger on release published
b107e81 override gnesis.json gasLimit with block-gas-target flag value if defined (#710)
79b2c56 Update secrets
567292e Update deploy_edgenet.yaml
a7d718b Added EdgeNet CD pipeline (#712)
74ab62e Permission smart contract deployment (#692)
5d2db1e [TxPool] Reject future transactions during high memory usage (#690)
210de9e [TxPool] Prune accounts with nonce holes during high memory usage (#689)
f44ce9f [TxPool] Introduce limit on enqueued transactions (#687)
7e4c3d7 Fix linter errors (#697)
869742f Resolve high CPU loads for non-validators (#691)
de62840 [Fix] Add the options to disable json-rpc batch request limits (#682)
fb219ba Update interface of IsValidCommittedSeal and InsertBlock by go-ibft's update (#677)
e977be7 Make the header timestamp respect time of generation (#678)
e14e52a Resolve memory creep (#668)
d3d4f8a Fix linting errors (#675)
b5462e0 Bump github.com/prometheus/client_golang from 1.12.2 to 1.13.0 (#676)
8497063 Bump google.golang.org/protobuf from 1.28.0 to 1.28.1 (#665)

Docker images

  • docker pull 0xpolygon/polygon-edge:0.6.0

v0.5.1

22 Sep 15:04
v0.5.1
ff0d3d3
Compare
Choose a tag to compare

Major new features

Permission smart contract deployment

The newly introduced feature enables network operators to whitelist which addresses can deploy smart contracts. For more information, please see our official guide.

Known issues that were fixed

TxPool DDoS

There was an issue where one account could fill up the TxPool with enqueued transactions that could not be included in a block because of a nonce gap, thus denying entry to any incoming transaction by remaining in the pool indefinitely.

Memory Leak

In some edge cases, the header size kept increasing, causing node memory usage to steadily increase.

Besides the new features and fixed issues mentioned above, this version of Polygon Edge also includes a few minor improvements and bug fixes. The full list of changes can be found in the Changelog below.

Changelog

ff0d3d3 [TxPool] Fix double nonce in promoted (#739)
06d3f72 Cleanup inactive transactions in non-validator (#742)
1d6ba17 Fix zero from field in Tx (#719)
52b6261 [Memory fix] Remove memory leak in event subscriptions (#741)
68df30d fix leak in startConsensus
8e9099a Trigger on release published
b107e81 override gnesis.json gasLimit with block-gas-target flag value if defined (#710)
79b2c56 Update secrets
567292e Update deploy_edgenet.yaml
a7d718b Added EdgeNet CD pipeline (#712)
74ab62e Permission smart contract deployment (#692)
5d2db1e [TxPool] Reject future transactions during high memory usage (#690)
210de9e [TxPool] Prune accounts with nonce holes during high memory usage (#689)
f44ce9f [TxPool] Introduce limit on enqueued transactions (#687)
7e4c3d7 Fix linter errors (#697)
869742f Resolve high CPU loads for non-validators (#691)
de62840 [Fix] Add the options to disable json-rpc batch request limits (#682)
fb219ba Update interface of IsValidCommittedSeal and InsertBlock by go-ibft's update (#677)
e977be7 Make the header timestamp respect time of generation (#678)
e14e52a Resolve memory creep (#668)
d3d4f8a Fix linting errors (#675)
b5462e0 Bump github.com/prometheus/client_golang from 1.12.2 to 1.13.0 (#676)
8497063 Bump google.golang.org/protobuf from 1.28.0 to 1.28.1 (#665)

Docker images

  • docker pull 0xpolygon/polygon-edge:0.5.1

v0.5.0

03 Aug 10:52
v0.5.0
39a6abd
Compare
Choose a tag to compare

Breaking Changes

IBFT 2.0

  • The newly introduced IBFT 2.0 protocol brings with it better performance, and resolves persistence and liveness issues present in the previous version of IBFT. It is a complete overhaul and rewrite of the consensus module, to use a package made specifically for this purpose by the Polygon Edge team - go-ibft. As such, these fixes require changes to message structures and control flows, which will not work with clients running older versions (<0.5.0) of Polygon Edge.

Syncer V2

  • In this release, we've included the new and upgraded version of the block syncing protocol - internally dubbed ⚡ Lighting Sync ⚡. It features a several times speed boost to the previous syncer implementation, and a significant reduction (over 95%) in network traffic for syncing. The new version of the syncer protocol is incompatible with clients running older versions (<0.5.0) of Polygon Edge.

⚠️ To mitigate these breaking changes, please make sure that all of the nodes in the cluster are running from version 0.5.0 or above

Known issues that were fixed

Along with many new features, and the two major features mentioned, this version of Polygon Edge also squashes many bugs.
The full list of changes can be found in the Changelog below.

Changelog

39a6abd IBFT 2.0 (#650)
31f8abc Compatibility fixes/improvements for JSON/RPC filter polling (#641)
8502125 Add blockRangeLimit and batchRequestLimit JSON-RPC flags to help prevent node DDoS (#638)
f786241 Add custom marshalling and unmarshalling for block Header (#642)
3ec0ea3 Implement removing from filter by ws (#570)
dbb3080 Bump github.com/hashicorp/go-hclog from 1.2.1 to 1.2.2 (#654)
c87c470 Append patch updates to the awsgo package (#656)
bfc3b94 Add linter guards on problematic error checks (#652)
8c8200b Bump github.com/aws/aws-sdk-go from 1.44.37 to 1.44.61 (#651)
11ac0bf Bump google.golang.org/grpc from 1.47.0 to 1.48.0 (#645)
7dcf1f6 Bump cloud.google.com/go/secretmanager from 1.4.0 to 1.5.0 (#615)
1cdeac0 Bump github.com/libp2p/go-libp2p-pubsub from 0.7.0 to 0.7.1 (#620)
65f4fb3 Syncer V2 (#591)
7906142 Skip failing tests (#636)
0617442 Update README.md
ecd05ae Remove parallel execution in e2e tests (#632)
ea38e62 Update CODEOWNERS
e225e5b Make Multiple CLI Flags RequiredTogether or MutuallyExclusive (#616)
0e42bda Bump github.com/multiformats/go-multiaddr from 0.5.0 to 0.6.0 (#610)
863ead7 Bump github.com/stretchr/testify from 1.7.2 to 1.8.0 (#613)
898d836 Bump github.com/spf13/cobra from 1.4.0 to 1.5.0 (#604)
82442a4 [Fix] Improve eth_gasPrice responce when --price-limit flag is set (#590)
545d307 [IBFT] Consensus timeout takes into account block production time (#582)
a602903 Fix wrong status for backup (#599)
009a813 Bump github.com/libp2p/go-libp2p-core from 0.16.1 to 0.17.0 (#596)
9482b2d Bump github.com/aws/aws-sdk-go from 1.44.32 to 1.44.37 (#597)
1111d15 Bump github.com/umbracle/ethgo from 0.1.2 to 0.1.3 (#589)
6da0978 Unlock proposed block after bulk sync (#581)
542a840 added codecov.yaml
84aaf31 added codecov badge to README.md
e87d602 Bump github.com/hashicorp/go-hclog from 1.2.0 to 1.2.1 (#585)
e3b0d9d Bump github.com/stretchr/testify from 1.7.1 to 1.7.2 (#586)
f6f09e8 Bump github.com/aws/aws-sdk-go from 1.44.25 to 1.44.32 (#587)
c68f995 Add Codecov to the workflow (#583)
1b37329 Bump github.com/hashicorp/vault/api from 1.6.0 to 1.7.2 (#588)
5249831 [TxPool] Fix duplicate transactions in account (#575)

Docker images

  • docker pull 0xpolygon/polygon-edge:0.5.0

v0.4.1

03 Jun 08:24
v0.4.1
6bb316b
Compare
Choose a tag to compare

Notable Changes

The officially supported go version has been increased from 1.16 to 1.17.

Fixes

  • Slowed down node sync fix #548
  • Flush to closed WS channel fix #566
  • ErrAlreadyKnown error fix #545
  • Upgraded all the packages to the latest versions and bumped go to 1.17 (from 1.16) #561
  • Additional checks for data handling were added #567
  • Block verification simplified and improved #544
  • eth_getFilterLog JSON-RPC method added #538

Full Changelog

6bb316b Upgrade package suite & bump go version (#561)
f73da20 [Syncer] Fix flaky node sync (#548)
d3002b4 Add additional checks for data handling (#567)
06dc155 [Blockchain] Simplify block verification (#544)
cad2fb2 Add json tags for Header struct (#566)
d34f557 Implement eth_getFilterLogs (#538)
8b85d68 [TxPool] Fix ErrAlreadyUnknown in tests (#545)

Docker images

  • docker pull 0xpolygon/polygon-edge:0.4.1

v0.4.0

17 May 10:36
v0.4.0
a86fca1
Compare
Choose a tag to compare

Breaking Changes

Receipt RLP changes

  • Due to adding a new field, and changing an existing field, in the Receipts object, the unmarshal method on older clients will break due to a bad conditional that’s present on older versions of the codebase
  • This problem is only present when older clients receive objects from clients running 0.4.0 or above

⚠️ To mitigate these breaking changes, please make sure that all of the nodes in the cluster are running from version 0.4.0 or above

Known issues that were fixed

  • There was an issue introduced with PR #513, which changed the number of validator commitments needed to reach consensus (Quorum). The PR introduced bigger constraints for the quorum size, which may cause certain clients to fail to sync with an older chain where these commit seals were valid (had a valid amount). Related issue is #547
  • Please check the instructions on PR #549 on how to resolve this problem

Changelog

a86fca1 Remove contractAddress from receipt if not contract deployment (#546)
315cc6f Add txHash to rlp store marshal/unmarshal (#528)
b0f6f0c [IBFT] Introduce quorum calculation switch (#549)
2e44243 [ Feature ] Add support for GCP secrets manager (#535)
41d4d37 Bump google.golang.org/grpc from 1.46.0 to 1.46.2 (#553)
75b2406 Bump github.com/aws/aws-sdk-go from 1.44.9 to 1.44.14 (#551)
49170c3 Bump github.com/prometheus/client_golang from 1.12.1 to 1.12.2 (#552)
109ff8d [TxPool] Self pruning stuck transactions (#541)
fbb928d Bump github.com/aws/aws-sdk-go from 1.44.4 to 1.44.9 (#540)
dd1d9af [Feature] Added support for YAML/YML config file format and option to output server logs to file (#525)
568a985 Remove concurrency from Filter e2e tests (#537)
61e5829 Test runtime shaving (#526)
8f7d5eb Remove unused directory from folder generation (#534)
464887d Remove total difficulty from the best peer calculation (#524)
5514ce6 Bump github.com/btcsuite/btcd from 0.22.0-beta to 0.22.1 (#529)
f921f3b Bump github.com/aws/aws-sdk-go from 1.44.1 to 1.44.4 (#530)
b74ffa8 Remove waiting for the next block in e2e tests (#485)
f91feef [IBFT] Change quorum size calculation (#513)
805f9ef [Blockchain/IBFT] Update snapshot after processBlock ends (#482)
538ea6e Bump github.com/aws/aws-sdk-go from 1.43.41 to 1.44.1 (#523)
9c3de45 Bump github.com/libp2p/go-libp2p-noise from 0.3.0 to 0.4.0 (#519)
c44bebc Bump google.golang.org/grpc from 1.45.0 to 1.46.0 (#517)
b8a91aa Bump github.com/libp2p/go-libp2p-core from 0.15.0 to 0.15.1 (#520)
5423044 Fix issue cannot get genesis block by hash (#514)

Docker images

  • docker pull 0xpolygon/polygon-edge:0.4.0

v0.3.3

21 Apr 15:03
v0.3.3
8dc4251
Compare
Choose a tag to compare

Changelog

8dc4251 Remove WebSocket subscription of which closed connection (#487)
ea0aca2 Bump github.com/aws/aws-sdk-go from 1.43.26 to 1.43.41 (#504)
aa8feb0 Fix loadbot gas metric collection (#497)
2555afd Update Staking SC Bytecode for the updates of PR #14 in staking-contract (#490)
4d538a4 Bump github.com/libp2p/go-libp2p-core from 0.14.0 to 0.15.0 (#503)
a61e392 Fix secrets generate --type=aws-ssm flag issues (#499)
29058a5 Fix rolling average gas price (#483)
876489a Clean up the networking server & add bootnode peer discovery (#343)
f59d3ca [Feature] Adding loadbot ERC20 and ERC721 token transfer modes (#425)
3543e50 Update predeployed staking SC (#397)
cc56e29 [TxPool] Reduce lock time in resetAccounts (#459)
6c8db85 Fix ibft switch output (#478)
c2f65d2 Bump github.com/aws/aws-sdk-go from 1.43.24 to 1.43.26 (#473)
f98fa90 Bump google.golang.org/protobuf from 1.27.1 to 1.28.0 (#475)
fc96793 Bump github.com/aws/aws-sdk-go from 1.43.17 to 1.43.24 (#471)
2a0b68e Bump github.com/stretchr/testify from 1.7.0 to 1.7.1 (#463)

Docker images

  • docker pull 0xpolygon/polygon-edge:0.3.3

v0.3.2

16 Mar 15:53
v0.3.2
06e11ea
Compare
Choose a tag to compare

Changelog

06e11ea [Hotfix] Fix failing TestBroadcast on local (#461)
8f5a1ad Update the license info (#460)
156c8c1 Bump google.golang.org/grpc from 1.44.0 to 1.45.0 (#454)
4cfd841 Bump github.com/spf13/cobra from 1.3.0 to 1.4.0 (#453)
0453210 Bump github.com/aws/aws-sdk-go from 1.43.13 to 1.43.17 (#455)
56e4355 Bump github.com/hashicorp/go-hclog from 1.1.0 to 1.2.0 (#456)
85094df Removed txpool add command (#452)
083d493 Fix grpc and jsonprc bindings when set from config file (#448)

Docker images

  • docker pull 0xpolygon/polygon-edge:0.3.2

v0.3.1

09 Mar 18:26
dde9073
Compare
Choose a tag to compare

Changelog

dde9073 Take the default configuration for unspecified values (#442)
18a964c Bump github.com/aws/aws-sdk-go from 1.40.45 to 1.43.13 (#439)
ed99469 Allow wildcard for allow control allowed origins (#414)

Docker images

  • docker pull 0xpolygon/polygon-edge:0.3.1