QN-SDK is a multi-language SDK to build and integrate Web3 applications powered by QuickNode APIs. Launch Control is a Smart Contract that can be used to spawn resources on a cloud provider.
New frameworks, libraries, or programming languages rise and try to make their place in this big world of software development. That's even faster in the Blockchain world; things change quickly, and many developers work on various solutions to improve the domain. Those developers with different profiles and expertise are working on the same things. That's awesome!
In 2022, developers mainly choose between three programming languages to develop services in the Blockchain ecosystem: Typescript, Golang, and Rust. Typescript is perfect for building Web3 applications and interactive UI and sharing one programming language across the codebase. On the other side, Golang helps make fast and reliable scaled applications. Finally, Rust, by its conception, is the best choice to create safe memory and secure programs.
QuickNode is a Blockchain development platform that helps developers build and interact with Web3 applications using different APIs. QuickNode has several usages: developers can use their APIs to create analytics applications, build defi tools, NFTs, or manage their wallets. However, there is only one Typescript SDK available for now. Indeed, it's possible to interact with QuickNode's API using the Ethereum client from other languages, but it requires extra time to build applications.
That is where QN-SDK plays its role! It adds three additional SDKs: one in Golang, one in Rust, and the last in Python. So now it is possible to interact with QuickNode API from the main programming languages widely used in the Blockchain ecosystem. Building applications on top of QuickNode APIs no longer required to use Typescript only, there are now four languages.
As a bonus, QN-SDK also includes an EtherJS module, so it's possible to use QuickNode APIs in your EtherJS-powered application.
At the same time, we worked on Launch Control, a smart contract that uses Midpoint to perform HTTP requests and therefore can interact with off-chain data. In our implementation, it uses Scaleway's (a french cloud-provider) API to let the user spawn a volume (an SSD) from a smart contract call.
The project groups three new SDKs made in Golang, Rust, and Python. Each SDK is based on QuickNode's official Typescript SDK and implements the following design pattern: It wraps a GraphQL client that sends requests to IcyTools GraphQL API. It implements ready-to-use GraphQL queries as done in the Typescript SDK It exposes types to ensure type safety and enhance usage.
Our project uses QuickNode APIs and IcyTools GraphQL API through those different SDKs. There are some examples of usage in our GitHub repository. This project also includes an extra library that adds a QuickNode module to the official EtherJS client.
During the development, we also found a few issues with some QuickNode API RPC endpoints:
qn_getTokenMetadataByContractAddress: Missing field in the response.
qn_getWalletTokenTransactions: The API timed out for wallets with many transactions per token.
qn_getTokenMetadataBySymbol: Default items per page appeared to be 20, not 40, as mentioned in the documentation.
Launch Control has been made with the Midpoint toolchain and some custom implementations. We used Midpoint's smart contracts to interact with the Scaleway's API in order to create a volume with a given name, type and capacity.
It's a smart contract written in Solidity, compiled and deployed on the Goerli testnet.