Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Shared sequencer integration #1621

Open
xgreenx opened this issue Jan 24, 2024 · 5 comments
Open

Shared sequencer integration #1621

xgreenx opened this issue Jan 24, 2024 · 5 comments
Assignees
Labels
epic An epic is a high-level master issue for large pieces of work.

Comments

@xgreenx
Copy link
Collaborator

xgreenx commented Jan 24, 2024

For testnet/mainnet we want to move block selection to a shared sequencer. We need to upgrade the client to allow for block production to go through this sequencer.

@xgreenx xgreenx self-assigned this Jan 24, 2024
@xgreenx xgreenx added the epic An epic is a high-level master issue for large pieces of work. label Feb 4, 2024
@MitchTurner
Copy link
Member

Will staking and staking parameters need to be included in this feature?

@MitchTurner
Copy link
Member

We need to figure out what data we will send from the block builder to the SS. This includes signatures and other data formatting stuff.

@xgreenx
Copy link
Collaborator Author

xgreenx commented May 15, 2024

@Dentosal You should have access to the repository right now.

Bellow instruction which we received.

Hey @XGreenX99 the documentation on the Sequencer's README should be helpful for this. https://github.com/fuel-infrastructure/fuel-sequencer

I point you specifically to the make run-sequencer-no-sidecar command, which will require you to have Golang 1.21 installed and Ignite CLI (linked in the README).

This command will start up the Sequencer with a set of accounts (refer to config-no-sidecar.yml file for a full breakdown of accounts), and it will also install the fuelsequencerd binary for interacting with the network.

Maybe instead of building it manually we could try to use docker from https://github.com/FuelLabs/fuel-rollup/tree/main/docker.

For posting blobs, you will need to set up a client to the Sequencer. This is equivalent to setting up a client to a typical Cosmos SDK chain.

The Sequencer-specific thing will be the message itself - MsgPostBlob. You can find the definition of it here https://github.com/fuel-infrastructure/fuel-sequencer/blob/e60fd0bf9d1f47b87a19cf81668f9ba5ab5f6c84/proto/fuelsequencer/sequencing/v1/tx.proto#L44-L62

(Also described in the Sequencer Spec - https://github.com/fuel-infrastructure/notes/blob/main/spec/Spec.md#user-transactions)
I wish to point out is a possible issue you might run into 🚨 We've used the bytes type for the topic ID and the blob data. By default, Cosmos SDK will expect base64-encoded data for bytes. If we require support for hex topic IDs and hex-encoded blob data, then this will need to be tweaked from our side

Our goal is to use PostBlob transaction to post Fuel blocks into the shared sequencer. The From field is an address of the PoA node. Based on the protobuf transaction definition, we can generate a Rust version of it. We could try to use cosmos Rust SDK to sign transactions, but if we can do that without it, it would be awesome.

When we post data to the sequencer the corresponding PoA Ethereum address(that we can generate from a private key) should contain Fuel tokens to pay for it. I would suggest reading the specifications about the flow of the transaction for more clarification.

It would be nice if we could integrate testing of blob posting into our CI.

@xgreenx xgreenx assigned Dentosal and unassigned xgreenx May 15, 2024
@Dentosal
Copy link
Member

Design notes from my discussion with @xgreenx

  • The PoA key will be used tio sign the blobs
  • I'll create a script to read posted blobs from the sequencer

@netrome
Copy link
Contributor

netrome commented Aug 29, 2024

PR link #1922

@netrome netrome self-assigned this Aug 29, 2024
@netrome netrome removed their assignment Sep 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
epic An epic is a high-level master issue for large pieces of work.
Projects
None yet
Development

No branches or pull requests

4 participants