Go implementation of the Ethereum protocol
Find a file
2025-02-17 15:16:27 -03:00
.circleci chg: Update README 2020-11-14 14:30:47 +05:30
.github Profile Updates, RPM removal (#1438) 2025-02-10 07:22:58 -08:00
accounts Merge remote-tracking branch 'origin/upstream_merge_v1.14.8' into lmartins/upstream_merge_v1.14.10 2025-02-11 03:51:43 -03:00
audit add: milestones audit (#1200) 2024-03-26 07:15:58 +01:00
beacon POS-2821: solve lint issues 2025-02-06 13:05:46 +01:00
build Merge tag 'v1.14.10' into lmartins/upstream_merge_v1.14.10 2025-02-04 07:41:07 -03:00
builder/files Merge tag 'v1.14.10' into lmartins/upstream_merge_v1.14.10 2025-02-04 07:41:07 -03:00
cmd Merge remote-tracking branch 'origin/develop' into lmartins/upstream_merge_v1.14.10 2025-02-14 15:39:26 -03:00
common Merge tag 'v1.14.10' into lmartins/upstream_merge_v1.14.10 2025-02-04 07:41:07 -03:00
consensus Merge remote-tracking branch 'origin/upstream_merge_v1.14.8' into lmartins/upstream_merge_v1.14.10 2025-02-11 03:51:43 -03:00
console Merge tag 'v1.14.6' into upstream_merge_1.14.6 2024-08-05 16:29:10 +05:30
core removing tests on eip-6110 because bor has no deposit contracts 2025-02-16 19:25:47 -03:00
crypto Merge remote-tracking branch 'origin/upstream_merge_v1.14.8' into lmartins/upstream_merge_v1.14.10 2025-02-04 10:35:52 -03:00
docs Merge remote-tracking branch 'origin/develop' into lmartins/upstream_merge_v1.14.10 2025-02-14 15:39:26 -03:00
eth Merge remote-tracking branch 'origin/upstream_merge_v1.14.8' into lmartins/upstream_merge_v1.14.10 2025-02-11 03:51:43 -03:00
ethclient Merge remote-tracking branch 'origin/upstream_merge_v1.14.8' into lmartins/upstream_merge_v1.14.10 2025-02-11 03:51:43 -03:00
ethdb Merge tag 'v1.14.10' into lmartins/upstream_merge_v1.14.10 2025-02-04 07:41:07 -03:00
ethstats Fix panic on nil block in ethstats (#1360) 2024-10-24 23:11:10 -07:00
event Merge tag 'v1.14.6' into upstream_merge_1.14.6 2024-08-05 16:29:10 +05:30
graphql Merge tag 'v1.14.10' into lmartins/upstream_merge_v1.14.10 2025-02-04 07:41:07 -03:00
integration-tests cgh: fix rpc blockNumber and bash warnings 2024-11-13 14:45:41 +01:00
internal Merge remote-tracking branch 'origin/upstream_merge_v1.14.8' into lmartins/upstream_merge_v1.14.10 2025-02-11 03:51:43 -03:00
log merge: master 2024-08-13 11:48:57 +05:30
metrics Merge remote-tracking branch 'origin/upstream_merge_v1.14.8' into lmartins/upstream_merge_v1.14.10 2025-02-11 03:51:43 -03:00
miner Merge branch 'manav/fix-worker-test' into lmartins/upstream_merge_v1.14.10 2025-02-17 15:16:27 -03:00
node Merge tag 'v1.14.10' into lmartins/upstream_merge_v1.14.10 2025-02-04 07:41:07 -03:00
p2p Merge tag 'v1.14.10' into lmartins/upstream_merge_v1.14.10 2025-02-04 07:41:07 -03:00
packaging Merge remote-tracking branch 'origin/upstream_merge_v1.14.8' into lmartins/upstream_merge_v1.14.10 2025-02-11 03:51:43 -03:00
params Merge branch 'manav/fix-worker-test' into lmartins/upstream_merge_v1.14.10 2025-02-17 15:16:27 -03:00
rlp Merge tag 'v1.14.6' into upstream_merge_1.14.6 2024-08-05 16:29:10 +05:30
rpc Merge tag 'v1.14.10' into lmartins/upstream_merge_v1.14.10 2025-02-04 07:41:07 -03:00
scripts Merge tag 'v1.14.10' into lmartins/upstream_merge_v1.14.10 2025-02-04 07:41:07 -03:00
signer Merge tag 'v1.14.10' into lmartins/upstream_merge_v1.14.10 2025-02-04 07:41:07 -03:00
swarm Fix typos (#1442) 2025-02-12 11:32:50 +05:30
tests fix test-integration 2025-02-04 11:10:19 -03:00
trie Merge tag 'v1.14.10' into lmartins/upstream_merge_v1.14.10 2025-02-04 07:41:07 -03:00
triedb Merge tag 'v1.14.10' into lmartins/upstream_merge_v1.14.10 2025-02-04 07:41:07 -03:00
.dockerignore cmd, internal/build, docker: advertise commit date in unstable build versions (#19522) 2019-05-08 16:44:28 +03:00
.gitattributes .gitattributes: enable solidity highlighting on github (#16425) 2018-04-03 15:21:24 +02:00
.gitignore Merge tag 'v1.14.10' into lmartins/upstream_merge_v1.14.10 2025-02-04 07:41:07 -03:00
.gitmodules new: dev: pos-398 remove duplicate git submodule 2022-07-12 17:37:44 +02:00
.golangci.yml Merge tag 'v1.14.10' into lmartins/upstream_merge_v1.14.10 2025-02-04 07:41:07 -03:00
.goreleaser.yml add: amoy genesis json 2024-04-04 13:46:38 +05:30
.mailmap .mailmap: remove invalid email address (#29163) 2024-03-04 21:58:25 +01:00
.travis.yml Merge tag 'v1.14.10' into lmartins/upstream_merge_v1.14.10 2025-02-04 07:41:07 -03:00
appveyor.yml build: add check for stale generated files (#30037) 2024-07-01 17:16:15 +02:00
AUTHORS AUTHORS: remove one more duplicate entry (#24950) 2022-05-24 21:04:21 +02:00
circle.yml use go-ethereum for better forked-bor release 2020-11-13 09:21:48 +05:30
COPYING use go-ethereum for better forked-bor release 2020-11-13 09:21:48 +05:30
COPYING.LESSER all: update license information 2015-07-07 14:12:44 +02:00
Dockerfile fix on golang image dockerfile 2025-02-04 11:38:43 -03:00
Dockerfile.alltools Merge tag 'v1.14.10' into lmartins/upstream_merge_v1.14.10 2025-02-04 07:41:07 -03:00
Dockerfile.release add: amoy genesis json 2024-04-04 13:46:38 +05:30
fuzzbuzz.yaml Update Bor to geth-v1.9.16 (#78) 2020-07-24 19:01:41 +05:30
go.mod Merge remote-tracking branch 'origin/upstream_merge_v1.14.8' into lmartins/upstream_merge_v1.14.10 2025-02-11 03:51:43 -03:00
go.sum Merge remote-tracking branch 'origin/upstream_merge_v1.14.8' into lmartins/upstream_merge_v1.14.10 2025-02-11 03:51:43 -03:00
interfaces.go Merge branch 'release/1.13' into upstream_merge_1.13 2024-07-10 11:19:34 +05:30
Makefile Merge develop 2025-02-11 10:22:01 +05:30
oss-fuzz.sh Revert "Merge upstream_merge branch to develop (#1229)" 2024-05-28 14:10:49 +05:30
README.md Fix typos (#1442) 2025-02-12 11:32:50 +05:30
RETESTBOR.md Additional reformatting and cleanup of RETESTBOR document 2023-08-13 15:21:21 -04:00
SECURITY.md dev: add: pos-944: snyk and govuln integration (#578) 2022-12-06 10:53:55 +01:00
sonar-project.properties sonarqube integration (#658) 2023-01-11 17:33:53 +01:00

Bor Overview

Bor is the Official Golang implementation of the Polygon PoS blockchain. It is a fork of geth and is EVM compatible (upto London fork).

API Reference Go Report Card MIT License Discord Twitter Follow

Installing bor using packaging

The easiest way to get started with bor is to install the packages using the command below. Please take a look at the releases section to find the latest stable version of bor.

curl -L https://raw.githubusercontent.com/maticnetwork/install/main/bor.sh | bash -s -- v0.4.0 <network> <node_type>

The network accepts mainnet,amoy or mumbai and the node type accepts validator or sentry or archive. The installation script does the following things:

  • Create a new user named bor.
  • Install the bor binary at /usr/bin/bor.
  • Dump the suitable config file (based on the network and node type provided) at /var/lib/bor and use it as the home dir.
  • Create a systemd service named bor at /lib/systemd/system/bor.service which starts bor using the config file as bor user.

The releases supports both the networks i.e. Polygon Mainnet, Amoy and Mumbai (Testnet) unless explicitly specified. Before the stable release for mainnet, pre-releases will be available marked with beta tag for deploying on Mumbai/Amoy (testnet). On sufficient testing, stable release for mainnet will be announced with a forum post.

Building from source

  • Install Go (version 1.19 or later) and a C compiler.
  • Clone the repository and build the binary using the following commands:
    make bor
    
  • Start bor using the ideal config files for the validator and sentry provided in the packaging folder.
    ./build/bin/bor server --config ./packaging/templates/mainnet-v1/sentry/sentry/bor/config.toml
    
  • To build full set of utilities, run:
    make all
    
  • Run unit and integration tests
    make test && make test-integration
    

Using the new cli

Post v0.3.0 release, bor uses a new command line interface (cli). The new-cli (located at internal/cli) has been built while keeping the flag usage similar to old-cli (located at cmd/geth) with a few notable changes. Please refer to docs section for the flag usage guide and example.

Documentation

  • The official documentation for the Polygon PoS chain can be found here. It contains all the conceptual and architectural details of the chain along with an operational guide for users running the nodes.
  • New release announcements and discussions can be found on our forum page.
  • Polygon improvement proposals can be found here

Contribution guidelines

Thank you for considering helping out with the source code! We welcome contributions from anyone on the internet, and are grateful for even the smallest of fixes! If you'd like to contribute to bor, please fork, fix, commit, and send a pull request for the maintainers to review and merge into the main code base.

From the outset, we defined some guidelines to ensure new contributions only ever enhance the project:

  • Quality: Code in the Polygon project should meet the style guidelines, with sufficient test-cases, descriptive commit messages, evidence that the contribution does not break any compatibility commitments or cause adverse feature interactions, and evidence of high-quality peer-review. Code must adhere to the official Go formatting guidelines (i.e. uses gofmt).
  • Testing: Please ensure that the updated code passes all the tests locally before submitting a pull request. In order to run unit tests, run make test and to run integration tests, run make test-integration.
  • Size: The Polygon projects culture is one of small pull-requests, regularly submitted. The larger a pull-request, the more likely it is that you will be asked to resubmit as a series of self-contained and individually reviewable smaller PRs.
  • Maintainability: If the feature will require ongoing maintenance (e.g. support for a particular brand of database), we may ask you to accept responsibility for maintaining this feature
  • Pull requests need to be based on and opened against the develop branch.
  • PR title should be prefixed with package(s) they modify.
    • E.g. "eth, rpc: make trace configs optional"

License

The go-ethereum library (i.e. all code outside of the cmd directory) is licensed under the GNU Lesser General Public License v3.0, also included in our repository in the COPYING.LESSER file.

The go-ethereum binaries (i.e. all code inside of the cmd directory) are licensed under the GNU General Public License v3.0, also included in our repository in the COPYING file.

Join our Discord server

Join Polygon community share your ideas or just say hi over on Polygon Community Discord or on Polygon R&D Discord.