This repository has been archived by the owner on Feb 28, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 20
Fuel V1.5 | Aggregate Signature and Compressed Transaction Format #48
Draft
SilentCicero
wants to merge
21
commits into
master
Choose a base branch
from
silentcicero-bls
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.