-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Anchor IDL different (incorrect?) from Solana Playground IDL generated #2914
Comments
This is because the IDL has been rewritten, and it's incompatible with the old IDL. There is also a new release (v0.30.0) which was released 2 days ago. Solana Playground has not yet upgraded to the latest version, so if you use the IDL generated from there (or any other place), you can use the |
Hi, appreciate the quick response. Before I go messing around with all my configuration, can you clarify for me if there is a version of the 'npm' anchor package which can correctly invoke program functions with this new IDL format? Any quick references on syntax? |
It will work as long as you use the same Anchor version for all tooling (crates, packages, CLI). See https://www.anchor-lang.com/release-notes/0.30.0#type-script |
Adding extra context for anyone else finding this in the future; not quite there yet: I've updated everything to the most recent version but now I'm getting an error when the final method .rpc() is called.
I believe this means I've setup my provider wrong? I can't find any changes from 0.26 (the version i had before) and the current version; I did not change any other code. Currently the provider is setup like this:
I'm calling the function via
|
Always use camelCase in TS package : https://www.anchor-lang.com/release-notes/0.30.0#case-conversion Instead of |
How to define program with @coral-xyz/anchor 0.30.0 in typescript? My current code, which is not working.
In version 0.29.0, I used to implement it by this:
After upgrading to 0.30.0, Is there any example codebase to integrate program with @coral-xyz/anchor 0.30.0 in typescript? |
All you need is to cast the import * as idl from "./idl/spl_staking.json";
import type { SplStaking } from "./types/spl_staking";
const program = new anchor.Program(idl as unknown as SplStaking, provider); or import type { SplStaking } from "./types/spl_staking";
const idl: SplStaking = require("idl/spl_staking.json");
const program = new anchor.Program(idl, provider); |
I tried both of these but they both seem to spew out: Argument of type '<name_of_my_program> is not assignable to the parameter Idl'. I'm using crates: anchor-lang "0.30.1", anchor-spl "0.30.1" and package @coral-xyz/anchor "0.30.1". Does the above method only work for 0.30.0? It also spews out saying it's missing the name and version properties. |
I got the missing name and version properties for idl issue as well - still looking for a solution |
@Sidkjr, @thiruofficalsp If you get It's the same if it says missing |
@acheroncrypto Yep. Got what I was doing wrong.
But eventually decided to revert back to the version of 0.29 for both The old IDL was better😔. |
same problem, but i need use new anchor version but want to use solanaFM local idl (to help better debugging), so im try to make tools to convert my new idl to old idl, so now can compatible to use in solanaFM |
I was following this guide to learn anchor:
https://www.quicknode.com/guides/solana-development/anchor/transfer-tokens
When deploying the program via Solana Playground (as instructed), everything runs fine. The issue comes from trying to replicate on my local machine using anchor. The code is exactly the same; however I was running into this issue when trying to invoke the
transferLamports
function:After much, much frustration I discovered that the issue is with the IDL that Anchor generates when building the program. Comparing to the one that Solana Playground generates (remember - exact same
lib.rs
):Solana Playground
Local Anchor
Pulling down the IDL from Solana Playground and using that in my Typescript module instead allows the code to run just fine.
What is causing anchor to produce a completely different IDL type that isn't compatible with anchor itself?
The text was updated successfully, but these errors were encountered: