Closed adaki2004 closed 3 days ago
Hey! Do you guys have a relayer in the design? The current rbuilder
sends the finished blocks/bids to a relayer to be included. If you want to send the block to a smart contract you have to modify the rbuilder and write an implementation of the BlockBuilderSink to decide what to do with the block.
Hey! Do you guys have a relayer in the design?
Hey thanks for checking in! Yeah, i forgot to mention this is under testing only. For later usage, we need no relayer, but to "send to L1", which is not (yet) implemented, but we have a fork of rbuilder in taiko's orga, which eventually will ! :)
So here is the fork PR: https://github.com/taikoxyz/rbuilder/pulls (curently really doing just nothing at this point)
And actually what i would wanted to see is a log printed out when i send the L2 rpc a tx: https://github.com/taikoxyz/rbuilder/blob/c47792c7ffd78847cac912c15b15bba5b65884c3/crates/rbuilder/src/building/order_commit.rs#L393
Hey! Happy to help you with testing the integration with Taiko. Do you have any specific question?
Hey! Happy to help you with testing the integration with Taiko. Do you have any specific question?
Hey Ferran!
Thank you very much for your support!
So in order to reproduce the things you need:
To install Kurtosis, here is a guide: https://docs.kurtosis.com/install/
Clone Taiko's reth, then switch to the proper branch: rbuilder
)
git clone https://github.com/taikoxyz/taiko-reth
git checkout rbuilder
After you have the repo, go into /packages/protocol
and:
make install
-> This will build taiko's reth and also the Docker image (taiko_reth
with rbuilder installed as binary + the rbuilder repo with our small, debug print modification) and It will shoot up the reth based L1 network with L2 nodes as execution extensions. (Not only the binary but the rbudiler's repo with the attached rbuilder config file will be located in/app/rbuilder directory. The config will be slightly different because i need to adapt to the ipc file (which for L2 is always some temp name) and the CL node IP wont be localhost obviously). This command will not try to run the rbuilder by default!
Afterwards, we have a "base" setup. Then what we want to see is:
println!("Dani debug: Apply tx to state!");
in commit_tx()
(from where we might be able to take over :) I suspect we have issues with the DB (since nothing wil be put into that static /app/exex_datadir
folder, that is 1 suspicious thing - but i guess that is on us, and hopefully not blocking the integration.
So our TLD setup/flow is this:
That is it in the nutshell. Please let me know how i can serve you best, I'm also okay jumping into a call if that is better. I'm in CET timezone.
Thanks a zillion for dealing with this!
@ferranbt btw to locate the L2 exex DB correct location you can always use:
find / -type d -name "db"
Let me know if you would prefer a joint debug session!
@ferranbt Good news, it seems it is running - tho i'm still unsure why i cannot see my debug message in commit_tx() when i send a txn to the L2 rpc: https://github.com/taikoxyz/taiko-reth/pull/39#issuecomment-2333473498
Hi @adaki2004. But what is the specific issue with the rbuilder, is it not creating blocks? Do you need help figuring out how to do the mods?
Hi @adaki2004. But what is the specific issue with the rbuilder, is it not creating blocks? Do you need help figuring out how to do the mods?
Hey Ferran.
Yes, currently struggling to catch the debug print in commit_tx()
. (Which would be the first cornerstone of creating blocks indeed).
So i suppose we subscribe to pending transactions in the EL mempool via IPC. (subscribe_to_txpool_with_blobs
).
And what i guessed is (maybe wrong) that when i submit a tx to the L2 exex RPC my debug print should be triggered in commit_tx()
(https://github.com/taikoxyz/rbuilder/blob/0e069a7ec68e3ad450c9a13e1174c22a42d59500/crates/rbuilder/src/building/order_commit.rs#L393). But it does not.
Tho, when i advance the chain (with a txn) the clean_orderpool
subscription logs are printed out, so i somewhat assume IPC connection is good.. Then maybe i dont really get where to catch these individual transactions.
UPDATE: IPC socket connection works as expected, tested that with a stupid simple python script.
@ferranbt So i've reached the point where the rbuilder is "running" and the tx (not bundle, just tx) arrives and caught properly in the route of: subscribe_to_txpool_with_blobs -> get_tx_with_blobs -> send command -> receiver intercepts it and forwards it to OrderPools process_commands() -> process_command() -> process_order() etc.
But:
According to my debug prints.
commit_tx()
) shall be happening and most probably what im doing wrong here ? All i would like to do (for now) is to have a "stupid simple" block builder which would just build a block with a txn. (Obv. make it more sophisticated later.)
Thank you for your answer.
Hey Guys,
First of all thanks if you checking it out ! :)
About our current setup! We want to setup L2 network(s) for testing at Taiko's Gwyneth initiative. (Yes, multiple, so called 'booster rollups' for horizontal scaling.) We want
rbuilder
be shot up for testing, currently we are under heavy dev. phase !We have a reth based network. Shoot up with kurtosis.
Very high level TLDR about our current design (and testing E2E) be like:
proposeBlock()
towards an L1 smart contracttxList
(from calldata or blob), then decode and execute them actually on L2What i did:
rbuilder run config-gwyneth-reth.toml
The
config-gwyneth-reth.toml
is the following:The logs i getting is the following:
Questions/observations:
chain
is correct.cl_node_url
i suppose is correct, but i'm not 100% sure. I guess it would throw an error if not (?). The IP is correct for sure, the port i suppose from the by-default open ports.reth_datadir
i'm almost pretty sure it is not correct, because i guess i'd need to use the L2 DB (but given our current architecture even tho i create and explicitly set a static path for our L2 node DB, it seems nothing is put in there. cc @Brechtpd see: https://github.com/taikoxyz/taiko-reth/pull/39/commits/03af4b13ca4bc5907231a70a9337d5d45e8fdecb ). But can it cause the above log ?jsonrpc_server_port
: I guess it is for therbuilder
, and not referring to the el node's 8545 rpc server ?el_node_ipc_path
pretty sure it is correct.Thanks you in advance !