hyperledger-firefly / hyperledger-firefly/ethconnect
Support for public blockchains
- Dominant language
- Go
- Stars
- 76
- Forks
- 31
- PR merge metrics
- No merged PRs in 30d
Description
# Background
EthConnect was initially designed as a bridge into Ethereum permissioned chains. These chains usually are running a PoA/IBFT consensus algorithm, where the finality of transactions is guaranteed. These chains are usually configured with a gas price of 0, so that transaction fees are not required. Lastly, the permissioned chain provider usually offers a integrated signing service.
Users of public blockchains have similar needs for an ESB/EAI integration in many cases, which EthConnect could fulfill provided that features are built to support other scenarios than those outlined above.
# Motivation
It's beneficial for the community to have a product that addresses the needs of public, and private chain users, so that developers working on the Ethereum platform have a set of tools available to them that can address any requirement for integration.
At first sight, the work required to enable this in EthConnect does not seem to have any roadblock.
# Requirements
## Gas Price
- Public network transactions usually fetch a gas price from a 3rd party source such as ethgasstation.info for a desired confirmation time
- EthConnect should allow to send a transaction with high/medium/low speeds, or even a target confirmation time (e.g. 1mn, 15mn, 1hr)
- EthConnect should keep track of transactions confirmations, and allow to rebroadcast transactions with a higher fee when the desired confirmation speed is not achieved
## Finality
- Finality on public networks is usually defined in terms of number of block confirmations
- Transactions can enter the transaction pool, and exit it after some time (E.g. dropped by a node)
- EthConnect should not assume finality but instead allow users to define the required number of block confirmations
- For security reasons, we usually also verify the number of confirmations from multiple attesting parties
## External Signing
- EthConnect signs transactions directly currently
- On public networks, a variety of signing solutions (e.g. metamask, hardware wallet, custodian service) would be used
- If we want to continue to rely on ethconnect for ordering and nonce, EthConnect should allow to use an external signing service
- Perhaps a signing request feature should be introduced that's separate from the signing itself that could happen on another service
## Events Detection
- On public networks, transactions that have been confirmed can, in rare cases, then disappear
- These scenarios occur when a transaction is confirmed on a block that ends up being an uncle in Ethereum
- The events notification/stream should be amended so that a 'Orphaned' status is used for such transaction states, for example
# Outline
To be discussed with the community on how the above can be implemented.
Contributor guide
Assessment
This issue has not been assessed yet.