Welcome To Proof Of Neutrality Relay
The Proof of Neutrality Relay (PoN) is a decentralized, permissionless, and neutral middleware run by validators to participate in the market for block-building and exchange. The PoN relay was built by Blockswap Labs as a solution implementing in protocol Proposer-Builder Separation theory (PBS).

Why build the Proof of Neutrality Relay?
Ethereum’s credible neutrality and decentralization of consensus is under threat from centralized relays and censorship caused by MEV. The PoN relay’s decentralized infrastructure is necessary to prevent a world of permissioned communication between block-builders and block proposers.
Validators and MEV will become more closely linked in a Proof-of-Stake (PoS) environment due to the appeal of higher MEV staking rewards and their growing importance as staking participation increases and rewards will inevitably decrease. The PoN relay maximizes validator staking rewards through the selling of blockspace to an open market, allowing for consistent MEV payouts from the PBS Smoothing Pool.
How does the Proof of Neutrality Relay Work?
In the Ethereum Proof-of-Stake (PoS) system, node operators use three essential pieces of software components: the validator client, the execution client, and the consensus client. The PoN relay is an additional open-source software that seamlessly integrates with the consensus client, allowing for connection to a network of block-builders and the outsourcing of block-building. Additionally, it uses zero-knowledge proofs and encrypted communication to facilitate the builder’s request for a validator, ensuring guaranteed validator payment inclusion in a block while also keeping block content unrevealed.
Block-builders create full blocks aiming for the optimal MEV extraction and equitable distribution of rewards. Once they are done, the blocks are sent to relays. The PoN relay selects the most profitable block received from various builders, submits it to the block proposer, and the consensus client then sends it to the Ethereum network for verification and block inclusion.
Reporters are a novel addition and essential for a decentralized infrastructure to run smoothly. In the PoN relay, reporters monitor the actions of builders and proposers to ensure that there is no malicious behavior or wrongdoing. If a violation occurs, the reporter can submit a report and earn ETH for securing the protocol.
Goals Of PON Relay
- Bid Neutrality- PoN Network and in hinsight, PoN relay at no point has access to the block transactions being built by the relay. This way the builder is alyways secure from the relay. There are rules and monitoring stack governed by the Restrictive Partially Blind Scheme which ensure no party including the PoN relay is ever cheated by any other PoN component.
- Performance- PoN Relay uses post epoch validation which makes the need for relay level block simulation redundant. By removing block validation, the performance is increased much more which translates into more MEV available monteraly for the builders.
- Transparency- PoN Relay implements out of the box data APIs while also allowing for easy setup of external services like Metabase for data transparency. Anyone can run reporter with PoN relay and maintain transparency of the bids being submitted to PoN Relay and ones being proposed.
- Support For Extensive Block Building- PoN Relay uses bulletin board (A MQTT Bases Pub Sub) and its two bids Auction to help the builders build best blocks. Bulletin Board provides a low resource intensive solution for the builders to get updated bids from and based on the updating auction scenerio builders can update the bids.
Architecture
While PoN maintains the Proposer Builder Separation, currently widely being used in MEV supply chain, it also does some changes which help in achieving neutrality at the relay level.

Easy Install
Install latest release from pon-bbrelay
Install and run using-
$ go install github.com/pon-pbs/bbrelay
$ bbrelay --help
Setting Up PON Network
PON Consists of Relay, Builder and Reporter, all of which are essential. If you want to run builder or relay please use the following steps-
Builder

Reporter
Building Relay
Building From Binaries
Automated builds are available for stable releases and the unstable master branch. Binary
archives are published at https://github.com/pon-pbs/bbRelay.
Use the binaries along with the
to install and run relay from binaries
Building From Docker

To run relay using docker-
docker pull blockswap/pon-relay
docker run --network=host blockswap/pon-relay relay
While running using docker, use command line arguments same as other ways
Building From Source
To run from source use the main branch of this repository and use the following command-
go migrate
go run . relay \
--relay-url <Relay_URL> \
--beacon-uris <Beacon_URIS> \
--redis-uri <Redis_URIS> \
--db <DB_URL> \
--secret-key <Relay_BLS> \
--network <Network> \
--max-db-connections <Max_DB_Connections> \
--max-idle-connections <Max_Idle_Connections> \
--max-idle-timeout <Max_Idle_Timeout> \
--db-driver <DB_Driver> \
--pon-pool <PON_POOL_URL> \
--pon-pool-API-Key <PON_POOL_API_KEY> \
--bulletinBoard-broker <Bulletin_Board_Broker> \
--bulletinBoard-port <Bulletin_Board_Port> \
--bulletinBoard-client <Bulletin_Board_Client> \
--bulletinBoard-password <Bulletin_Board_Password> \
--reporter-url <Reporter_URL> \
--bid-timeout <Bid_Timeout> \
--relay-read-timeout <Relay_Read_Timeout> \
--relay-read-header-timeout <Relay_Read_Header_Timeout>
--relay-write-timeout <Relay_Write_Timeout> \
--relay-idle-timeout <Relay_Idle_Timeout> \
--new-relic-application <New_Relic_Application> \
--new-relic-license <New_Relic_License> \
--new-relic-forwarding <New_Relic_Forwarding>
Relay Services

If You Want To Run A Postgres Server And Redis Use The Provided Docker Compose File By Following The Docker Documentation
If you use your own POSTGRES_DB_USER and POSTGRES_DB_PASSWORD, please update parameter when running relay based on that

PON Relay comes with a metabase docker-compose file. It can be used by following the Docker Documentation.
For Performance Its Better If You Run The Service In Different Machine Then The Relay
PoN Builder Parameters
Parameter |
Description |
Default |
Required |
--relay-url |
Listen Address For The PoN Relay Service Locally |
"localhost:9000" |
No |
--beacon-uris |
Beacon Node Endpoint |
"" |
Yes |
--db |
Database URL |
"" |
Yes |
--secret-key |
BLS Secret Key Of Relay |
"" |
Yes |
--network |
Network (Testnet/ Mainnet) |
"Testnet" |
No |
--max-db-connections |
Maximum Database Connections |
100 |
No |
--max-idle-connections |
Maximum Database Idle Connections |
100 |
No |
--max-idle-timeout |
Maximum Database Timeout (In 1s/ 5h format) |
100s |
No |
--db-driver |
Database Driver |
postgres |
No |
--pon-pool |
Pon Pool Subgraph URL |
"" |
Yes |
--bulletinBoard-broker |
Bulletin Board MQTT Broker URL |
"" |
Yes |
--bulletinBoard-port |
Bulletin Board MQTT Port |
"" |
Yes |
--bulletinBoard-client |
Bulletin Board Client |
"" |
Yes |
--bulletinBoard-password |
Bulletin Board Password |
"" |
Yes |
--bid-timeout |
Maximum Time Bid Is Kept With Relay (In 1s/ 5h format) |
"15s" |
No |
--relay-read-timeout |
Relay Server Read Timeout (In 1s/ 5h format) |
"10s" |
No |
--relay-read-header-timeout |
Relay Server Read Header Timeout (In 1s/ 5h format) |
"10s" |
No |
--relay-write-timeout |
Relay Server Write Timeout (In 1s/ 5h format) |
"10s" |
No |
--relay-idle-timeout |
Relay Idle Timeout (In 1s/ 5h format) |
"10s" |
No |
--new-relic-application |
New Relic Application (New Relic Not Used If Application Not Provided) |
"" |
No |
--new-relic-license |
New Relic License |
"" |
No |
--new-relic-forwarding |
New Relic Forwarding |
false |
No |
Hardware Requirements

API Spec

API Spec Is Generated Using Go-Swagger for Open API Implementation. You can follow the specification by visiting the API-Spec
If you want to make changes to the swagger file, run the following commands-
make swagger
make serve-swagger
Whitelisted Relays
Relay ECDSA |
Relay BLS Public Key |
Relay API |
0x4b7D8790bE2000cCCDBa4b8Ef4F2f76A5ccd1427 |
0x89daf9bf6113ec91fdbee11778ab1e1bb64f4ccc2532bdc2bb808c93a83946ac36bce00cf2496ce2b19a20f0030cd2bd |
relayer.0xblockswap.com |
Getting Your Relay Whitelisted
Make a PR that adds your details to whitelisted relay table and we will approve your relay and add to the payout pool.