Enabling larger transactions on Solana

Enabling larger transactions on Solana

Problem Statement

Solana's architecture poses a limitation where messages to Solana validators cannot exceed 1280 bytes. This limitation is in place to maintain the speed and reliability of transmission.

Furthermore, when conducting a Solana transaction, it is necessary to specify upfront the on-chain state that will be read from or written to. Essentially, all the accounts involved in the transaction need to be listed.

This presents challenges when dealing with transactions involving multiple parties, as including each account signature exceeds the 1280 bytes limit.

To address this issue, "Address Lookup Tables" (LUTs) were introduced as a solution. LUTs enable the creation of an on-chain lookup table that includes all the necessary accounts for a transaction. Instead of including complete signatures in the transaction, only 1-byte indices to the lookup table need to be specified.

However, there was a lack of a developer-facing SDK for LUTs. Although the core program was available in the Solana repository, the absence of a convenient SDK and documentation made it nearly impossible to utilize LUTs effectively.

Solution

Our team has made a valuable contribution to the @solana/web3.js by providing the client bindings for the LUT program. This has successfully unlocked LUTs for the public, enabling the entire Solana ecosystem to send larger transactions in a more developer-friendly manner. Additionally, we have taken the initiative to create comprehensive documentation on how to effectively utilize these bindings.

Results & Highlights

  • In 2022, Solana was famous for its mysterious nature and the limited information available about the LUT program. The inner workings of the LUT program were only accessible to Solana developers and select insiders. Through our valuable contribution, we successfully brought this knowledge to the public eye.
  • Contributing the bindings required a deep understanding of Rust, the programming language used in Solana, as well as Solana itself and the LUT program. We quickly mastered these subjects and were able to develop the client bindings in just one month. This was a remarkable accomplishment considering that the bindings had been pending for over six months prior.
  • Our client bindings were successfully integrated into Solana, garnering high praise from the Solana developer community. Additionally, we took the initiative to publish a comprehensive tutorial on effectively utilizing the client bindings.
  • We achieved a significant milestone in the Solana ecosystem by successfully completing a transaction involving 6 swaps for our client project ArbX, becoming the pioneers in this field.

Conclusion

This case study showcases our proficiency in conducting rapid research and development to achieve tangible outcomes for our clients. Within a month, we successfully developed our expertise in Solana internals, a remarkable accomplishment that only the most technically adept professionals can accomplish. By contributing to Solana, we have made the developer experience more inclusive and accessible, further enhancing the platform's capabilities.