This repository has been archived by the owner on Feb 28, 2022. It is now read-only.
Fuel V1.5 | Aggregate Signature and Compressed Transaction Format #48
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changes
Abstract
This PR outlines Fuel's first steps toward 2400 TPS using BLS aggregate signatures. Here we introduce a new compressed 24 byte transaction format, in addition to BLS aggregate signatures. Combined we were able to achieve 4-5x performance gains over our previous 1.0 model.
We were able to modify our existing Fuel v1.0 model to support a new transaction and signing format.
Benchmarks
For 100k transactions, we only occupied ~3-4 Ethereum blocks total (12.5m - 8m). Which is a significant reduction over our previous 100k benchmark.
Benchmarked Here on Ropsten:
https://ropsten.etherscan.io/address/0x9ac1b016f9ab5aa877ea421291d33903625ecaf6
Root Header
Here we introduce our new root header format to support compressed BLS aggregated signatures.
Packed Transaction Format
Message Format (for BLS Signatures)
Below is the transaction data to be signed over.
Transaction Chunks
The roots are divided into chunks of transactions each containing 32 transactions. Each 32 transaction chunk contains the 2 word BLS aggregate signature for that chunk.
Address Registration
BLS public keys are registered using
commitAddress
by providing the 4 words in addition to their Ethereum address for registration.This will be scraped in upcoming versions for a merkle proof oriented solution similar to Hubble's.