Git Product home page Git Product logo

jito-relayer's People

Contributors

buffalu avatar esemeniuc avatar jedleggett avatar segfaultdoc avatar soelth avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

jito-relayer's Issues

logging

Hello, add the --log flag to be able to write to the specified file, if possible, thx.

Add support for new transaction format when forwarding packets to block engine

Documentation: https://docs.solana.com/proposals/transactions-v2

Issue:

  • Transactions can now reference on-chain lookup tables which they load addresses from.
  • The relayer doesn't currently know how to load these addresses, which means it may miss forwarding transactions.

Solution:

  • The relayer should be able to load addresses from on-chain lookup tables and update them on-the-fly.
  • The relayer should use these cached on-chain lookup tables to determine if TxV2 packets should be forwarded.

Implement rate limit on grpc connections

The relayer should not be able to dos the validator or the block engine. A maximum throughput parameter should be added in the grpc interface and implemented in the relayer for all grpc connections.

Improve Leader Schedule Updating

Currently, the leader schedule cache attempts to update every 10 seconds. This needs to be changed to update once per epoch, with appropriate error handling and retry.

Put together a best practices document

  • How to setup your relayer?
  • What RPC configuration needs to happen?
  • What is the best location in relation to a block engine?
  • What's the best port configuration for your relayer? When public vs. localhost?
  • When whitelisted vs. not?
  • Why does the performance of the RPC matter? Need to keep track of time.

Consider using `solana_net_utils::get_public_ip_addr` to find a validator's IPv4

  • ifconfig.me can sometimes return a relayers IP address as IPv6
  • The validator uses solana_net_utils::get_public_ip_addr to find the validator's IP address. This runs a TCP connection to an entrypoint on the network and returns a response with the validator's IP.
  • This can be leveraged in the relayer instead of using ifconfig.me or other options.

Finish Relayer --> Block Engine Connection

The connection to the block engine is incomplete. There is a draft PR from branch jl/block_engine, which contains a refactor of relayer.

After the refactor, Relayer contains instances of a router struct and a block_engine struct. The router forwards packets (with potential delay) to connected validators based on the leader schedule, and is code complete. The block_engine will forward any transactions that touch accounts in it's aoi hashset to the block engine through the grpc client.

The block_engine struct contains a blocking grpc client , which has been started, but it is incomplete. The start_bi_directional_packet_stream function has not been successfully implemented . This function needs to be implemented in the client, as well as the subscribe_aoi function to correctly update the hashset containing accounts of interest.

The block_engine also needs to implement the stream_batch_list function to filter packet batches by aoi and send to the block engine using the client.

Once a connection is established, the block_engine should update it's delta field to delay the forwarding of packets to the validator. Likewise, if the block engine is disconnected, the delta value should be returned to zero. The set value needs to come from a command line input.

Handle Bundle Subscription Requests

Currently, if a validator attempts to subscribe to bundles from the relayer, it will panic. It would be better to just open the connection and not use it.

Accommodate Solana SDK changes

Changes to the Solana SDK after 1.10.25 break the interface in the relayer. Specifically access to packet data is now through a method.

The relayer should be updated to accommodate these changes.

Also, the mutex on the load balancer can be removed at the same time, since it touches a lot of the same code.

unable to run private relayer without a block-engine

Is there a way to run local relayer without specifying a block-engine?
If I don't specify the relay exit with a panic (when getting a packet)

thread 'forwarder_thread_0' panicked at transaction-relayer/src/forwarder.rs:92:45:
error sending packet batch to block engine handler

Att: @buffalu

LICENSE file missing

Open source projects usually have a LICENSE file to state the license under which it is released. Please add the LICENSE file so that we know which license it is. Since it contains code from Solana Labs, I assumed it's intended to be the Apache 2 license, same as Solana?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.