Attributes
- Author(s): @FerrumNetwork "Nick Odio, @Taha_Abbasi
- Implementer(s): Ferrum Network
- Category: Protocol Upgrade
- Requires:
- Replaces:
- Fulfills: PEP 11: Bridge to a multi-chain POKT
- GitHub: [CONTRIBUTION PROPOSAL] PEP 11: Bridge to a multi-chain POKT - Ferrum Network Bridge Module and Fee Distribution Module Functionality · Issue #1470 · pokt-network/pocket-core · GitHub
Summary
After the approval of PEP 11: Bridge to a multi-chain POKT Ferrum started working on building a shell application and a detailed architectural solution to enable bridging of POKT across networks.
Ferrum relies on chain-level security to ensure the validity of transactions, limit attack vectors, isolate and mitigate the damage from potential exploits, and to ensure decentralization.
In accordance with the guidelines by Pocket Network for consensus-breaking changes this update will requires 66% of the validator power to be adopted.
As such we are preparing a [PIP] to accompany the PEP 11: Bridge to a multi-chain POKT approved
per the guidelines defined in the Pocket Core Contribution Guide.
Abstract
Functionality Overview & Security Advantages
Most bridges in the market today utilize either ‘lock & mint’ or ‘burn & mint’ architecture. As these bridges need the ability to manage a token’s supply on the destination network, typically the bridging platform will be the one to launch a wrapped version of the token on the destination network. The bridging platform will also maintain administrative and operative control over critical functions of the token contract such as burning and or minting more supply. This approach centralizes control, security, and management of tokens and their economy into the hands of a few dozen bridging platforms. At Ferrum, we are strong proponents of a decentralized world. We feel that these architectural approaches violate the Principle of Single Responsibility (SRP) and introduce the need for trust and centralization in a world that is meant to be trustless through decentralization.
Ferrum Network’s architecture for the bridge doesn’t rely on having administrative or operative control over the management of the token. Ferrum utilizes a two-way liquidity pool architecture. This means the administrators of the token are able to launch the native asset on any destination network within our ecosystem while maintaining control over the administration and security of the token contract. Additionally, projects and their communities can transfer assets across networks at scale with limited liquidity exposure, unlike other bridges where billions of dollars of liquidity have to be locked up to serve as a backing/peg for the wrapped assets that are minted.
The following articles describe the functionality and security benefits of the Ferrum Bridge in greater detail.
The Ferrum Network Cross-Chain Token Bridge
Why Bridging with Ferrum is Secure | Nick Odio explains the difference between our bridge vs others
A Lesson in Security: Ferrum Cross-Chain Token Bridge
Motivation
Technical and Strategic Mission Alignment
Ferrum Network shares a similar ethos as Pocket Network and is deeply invested in a multi-chain universe. We plan to integrate Pocket Network’s RPC service to support our own applications and infrastructure. Ferrum Network and Pocket Network have been in talks to collaborate throughout the year, and we see this as a natural extension of our mission to help others become more cross-chain compatible today.
Business Use Case and Feasibility
To support the ongoing maintenance and enhancements of the bridge Ferrum charges a fee for each transaction conducted through the bridge. Ferrum recommends sharing this revenue with the Pocket Treasury and Validators and thus adding additional utility to the POKT token through each bridge transaction.
The following revenue share is recommended by Ferrum
Fee per transaction: 2%
Split of the 2% Generated Fee Per Transaction:
40% Pocket Treasury (Liquidity Provider)
20% Validators
40% Ferrum Network
Specification
Background and Why Were Creating This PIP
Even though we have previously submitted PEP 11: Bridge to a multi-chain POKT that has been approved
. We have been advised by the Pocket team and @luyzdeleon in our most recent call (Dated: 30-August-2022)
to go through the PIP process for this update. Following the PIP process will allow the community, Pocket Core contributors, and the core engineering team to discuss the architecture and implementation in an open forum, provide feedback and suggest changes, then come to a consensus regarding the upgrade path forward.
Architecture Proposal
Ferrum relies on chain-level security to ensure the validity of transactions, limit attack vectors, isolate and mitigate the damage from potential exploits, and to ensure decentralization.
For these conditions to be met, the architecture designed required extending the functionality of Pocket Core through additional modules. Namely BridgePool Module and BridgeFee Module as described in the spec.
In accordance with the guidelines by Pocket Network for consensus-breaking changes this update requires 66% of the validator power to be adopted.
As such we are preparing a [PIP] to accompany the PEP 11: Bridge to a multi-chain POKT approved
per the guidelines defined in the Pocket Core Contribution Guide.
History of Changes & Progress To Date
After building a shell application and vetting out our architecture suggestions, Ferrum presented The Pocket Network Integration Architecture Approach to the Pocket Network team earlier this year.
Following the PIP process will allow the community, Pocket Core contributors, and the core engineering team to discuss the architecture and implementation in an open forum, provide feedback and suggest changes, then come to a consensus regarding the upgrade path forward. The following links provide a detailed view of the architecture.
Pocket Network Integration Architecture Approach
|:–
| Flow for Pocket Network <> Ferrum Bridge |
What’s Next
Now, we would like to bring this discussion to a public forum per the recommendation of the Pocket Network team.
Rationale
There is an option to go with a “Lock & Mint” or “Burn & Mint” bridge architecture as serviced by many bridging platforms in the market today. This approach centralizes control, security, and management of tokens and their economy into the hands of a few dozen bridging platforms. At Ferrum, we are strong proponents of a decentralized world. We feel that these architectural approaches violate the Principle of Single Responsibility (SRP) and introduce the need for trust and centralization in a world that is meant to be trustless through decentralization.
Dissenting Opinions
Why can’t we build this bridge without updating the core?
Pocket Network is an application specific blockchain and doesn’t have a smart-contract enabled platform for dApps to be built. The only relatively viable solution to build a bridge without updating the core would require a relay verification infrastructure which would move transaction verification off the chain. The lack of smart contract functionality would also mean that the holders of the keys for the Bridge Pools would need to be trusted parties. There were many other issues identified and potential exploit vectors currently unidentified which increased the risk beyond the acceptable tolerance for this integration. The centralized nature of this solution also did not align with Ferrum’s integration approach. Thus we are suggesting a solution that relies entirely on “on-chain” transaction verification and conforms to the ethos of decentralization.
Why is Ferrum charging a fee? Aren’t we already paying them to build the bridge?
The total grant size was $100K, 20K in stables, and $80K in POKT. Ferrum has invested more than the total grant size into this integration just in the first quarter of this year. We continue to invest in this integration because we believe in the growth of Pocket Network, we believe in Pocket Network’s mission, and we want to be active contributors in helping Pocket Network realize that vision. The bridge fee will help us recuperate some of our initial investment and will facilitate ongoing maintenance, updates and enhancements to the bridge when applicable.
Why is Ferrum sharing this update and PIP almost a year after the approval of PEP 11: Bridge to a multi-chain POKT?
Simply put, it’s been an interesting yet engaging process for us. The Ferrum Network and Pocket Network teams were collaborating from the early days of the grant approval. Due to the nature of the grant, we were assigned Valeria Benitez Florez Design & Experience Lead at Pocket Network as a Point of Contact who was helpful in coordinating communications and guiding Ferrum PMs and Engineers. @Valebeflo helped our team navigate the process to contribute to Pocket Network, identify the relevant stakeholders for our integration, she also helped us find stakeholders to answer our questions and provide general support. As an example, Valeria and Pocket POCs brought engineers such as Cristopher Ortega and others to our Discord to review the architecture approaches shared. Under the guidance of the Pocket Team, we continued work. The scope of work had changed significantly as we built the shell app and identified that an update to the core would be needed to meet the security and decentralization requirements of the integration.
We are now actively working with @gabalab as our Point of Contact from the Pocket Network Team. @gabalab has been helpful in organizing calls with Pocket Network CTO and CEO among other stakeholders to facilitate a path forward to deployment of the bridge. While it took time to get to where we are today, it has been a pleasure working with the Pocket Team thus far. In our most recent call (Dated: 30-August-2022)
we have been advised by the Pocket team and Pocket Network CTO @luyzdeleon to go through the PIP process for this update. Following the PIP process will allow the community, Pocket Core contributors, and the core engineering team to discuss the architecture and implementation in an open forum, provide feedback and suggest changes, then come to a consensus regarding the upgrade path forward.
Viability
Tests
We have implemented test cases in our PR.
Unit tests are written for each function on *_test.go
files. Unit tests can be executed by go test ./x/bridgepool/…
or go test ./x/bridgepool/…
Integration tests are written on app/tx_bridgefee_test.go
and app/tx_bridgepool_test.go
and it can be executed by go test ./app/… -run=BridgePool
or go test ./app/… -run=BridgeFee
Implementation
Ferrum has already completed the chain side work to add Bridge Module and Fee Module functionality. Now we can discuss, review and provide feedback to the PR, suggest changes, once any suggested changes are implemented, roll the update out through the defined protocol update process.
Audit
Need to identify if Pocket Team will be performing the audit or if a PEP is needed for this.
Copyright
Copyright and related rights waived via CC0.