Comment on page

Onboarding Programs

The first step of using Carpool is onboarding your programs - just tell us where your data is and what it looks like.

Programs Built with Anchor

If you’ve built your program with Anchor, it only takes a few seconds to get running.

Publish Your IDL

Our automated onboarding can leverage Anchor’s on-chain IDL repository. Follow the instructions here to publish your IDL. We will automatically fetch any updates to your IDL if you push an update to the on-chain repository. Note that if you're monitoring someone else's Anchor-based program, you are reliant on them keeping their on-chain IDL up-to-date.

Provide Your Program ID

Simply visit the Indexing page of the app and click the Index New Program button. From here, enter your program’s ID and hit "Fetch Data" to display the program’s IDL. Once you’ve verified that the IDL is correct, hit Submit to onboard the program - that's it!

Other Programs

We support non-Anchor programs, as well as Anchor programs that don't have their IDLs on-chain, but onboarding requires a few more steps. Don't worry, it's still super easy.

Contact Us & Provide the IDL

In order to avoid conflicting IDLs for the same program (e.g. two teams provide different IDLs for the same program), we manage custom IDLs directly. Reach out to us, give us the IDL, and we’ll upload it. It only takes a few seconds to perform the upload. We’ll also monitor our traffic to ensure that data is being correctly deserialized by the custom IDL.

NOTE: Non-Standard Schemas and IDLs

We currently support IDLs in the style of Anchor's. That is, they are deterministic, use discriminators to distinguish between account and instruction types, and deserialization of each field is independent (i.e. the format or size of a field does not depend on an unrelated prior field).
If you have a pressing need to onboard a program that doesn't follow these rules, we're happy to work with you an build a module which supports your deserialization format. Just reach out to us!

Provide Your Program ID

Once we’ve uploaded your custom IDL, you can mark a non-Anchor program for indexing just like an Anchor program. Visit the Indexing page click the Index New Program button. Then, enter your program’s ID, hit "Fetch Data", and click "Submit"!

Updating IDLs

Anchor Programs

Just push a new version of your IDL to Anchor's on-chain repository. We should pick up the change in 1-2 minutes. If you believe that an IDL update was missed, we have a manual refetch button in the UI.

Non-Anchor Programs

Just reach out to us with the updated IDL and we'll take care of it.

How to Remove a Program

Simply head to your program's Settings section in our UI, and click the Remove button. Note that this will remove all features related to that program, including automated alerts, query access, and websockets.

What is an IDL?

IDL stands for Interface Definition Language, and is essentially your program's schema. It defines all of its instructions and accounts, and is typically a JSON document. You're probably using it to generate client-side code to interact with your program from a UI.
Carpool leverages IDLs to extract raw data from the Solana blockchain, convert it into something meaningful, and create a customized query and UI experience for you. Naturally, keeping your IDL up-to-date and backwards compatible is critical for maintaining your data pipeline.

Backwards Compatibility

Resist the urge to make breaking changes to your IDL! This doesn't just apply to Carpool, or even Solana - maintaining backwards compatible data definitions is an important practice in any data pipeline.
As a general rule, adding new things to your IDL is safe. New instructions, accounts, and enum values are fine. What your want to avoid is removing or changing existing properties. For example, if you need to modify an instruction's call signature, you are much better off creating a new "V2" version of the instruction. This allows us (and any other data platform - even one you build in house) to correctly deserialize and store data from any point in your program's history.