-
Notifications
You must be signed in to change notification settings - Fork 87
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
M1 DA Light Node #33
M1 DA Light Node #33
Conversation
… l-monninger/celestia-testing
@0xmovses it ended up being quite the little odyssey to fix the Nix Flake. In the end, I just abandoned the Makefile and built the go modules directly. It should work now. |
service LightNodeService { | ||
// Stream blobs from a specified height or from the latest height. | ||
rpc StreamReadFromHeight (StreamReadFromHeightRequest) returns (stream StreamReadFromHeightResponse); | ||
rpc StreamReadLatest (Empty) returns (stream StreamReadLatestResponse); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
More compliance needed:
rpc StreamReadLatest (Empty) returns (stream StreamReadLatestResponse); | |
rpc StreamReadLatest (StreamReadLatestRequest) returns (stream StreamReadLatestResponse); |
and StreamReadLatestRequest
defined as an empty message.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, for some reason I thought that was canonical. Will change.
@@ -0,0 +1,102 @@ | |||
syntax = "proto3"; | |||
package movementlabs.protocol_units.da.m1.light_node.v1beta1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks sufficiently ramified now. The proto looks good in general.
message BlobWrite { | ||
bytes data = 1; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This leaves room for future extensions, I assume.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, some changes may already be rolling in.
|
You can't run all the tests directly rn. Hence...
If we want to make this a requirement for the org, I will look into add startup hooks for the e2e and integration tests. |
If there's any funny business with a Celestia account not being available, the |
Hmm still get an error
|
That's an error in the fund account step. Though it's a little weird that it reports null as the value for you. Anyways, you can drop that step by commenting out here for the moment:
Then you'll get another error complaining about your Celestia account not existing. You should be able to fix that with the manual step mentioned above. I will see if I can reproduce. |
Actually, the later processes I think are only dependent on the "completed" status for now. So, you should be able to do this without commenting out that step and just doing the manual funding. |
Totally happy to manually test this with steps. But if its not massive amounts of trouble / effort (I'll let you decide), I think it would be beneficial to automate these steps, so that anyone committing code to the repo can run these tests and get some assurance about regressions. |
That's the idea. I'm suggesting this for now, because I don't know what's happening on your machine. |
It's just the fund account step that should be manual for you will that issue with the |
I ran Then when running the test again I get this
Am I missing another step? |
I think I've stabilized this. As I mentioned in Slack, circular dependency isn't something I had seen. However, when I refactored my script, I saw it pop up once when the the Otherwise, this should work. I am going to add different test network modes though because state syncing takes a while. Generally, in CI/CD, we I think we should run the following.
|
The latest commit provides a local runner for Celestia. Check the latest docs. Will add CI in a bit. @0xmovses |
|
Summary
Note: many of the subdirs have READMEs. If you are confused, double-check for one.
Implements RFC M2 DA Light Node [sic].
Core Software Components
Ancillary Software Components
move-rocks
mempool used for provisional sequencing.buildtime
helper crate fortonic
gRPC ergonomics with grander ambitions for our organization.memseq
a sequencer built onmove-rocks
.movement
scripting standardTesting
e2e and integration
Because of the difficulty of dependency management, particularly for Celestia, I recommend running:
This will run e2e and integration tests for the light-node implementation.
If you want to play around with tests yourself, you can use
. ./scripts/celestia-env
to populate an environment which will be amenable to your testing.
You will still likely want to simply run the
m1-da-light-node
services the background or from another process.unit
cargo
tests should run successfully without additional orchestration for all crates besidesm1-da-light-node-verifier
,m1-da-light-node
, andm1-da-light-client
.Outstanding Issues
celestia-node
struggles to deal with multiple attemptedws
connections, particularly from the same process. Until this is resolved, cargo-basede2e
andintegration
tests should be run with-- --test-threads=1
.cel-key
may benefit from being Nixified separately fromcelestia-node
.celestia-node
. A retry period may be worth implementation.anyhow::Error
is used liberally. Custom error types may better serve Typed Error Propagation in the future.