"invalid account discriminator"在Anchor中是什么意思?
What does "invalid account discriminator" mean in Anchor?
我正在尝试从 public 密钥中获取帐户:
await program.account.myAccountType.fetch(somePubkey);
但是 Anchor 抛出一个错误说:
Invalid account discriminator
什么是账户鉴别器?
帐户鉴别符是 Anchor 放在帐户前面的几个字节,例如 header。它让锚点知道应该将数据反序列化为哪种类型的帐户。
如果您尝试以 myAccountType
形式获取某些内容,则会发生此错误,但它实际上是某个其他帐户的公钥,例如令牌帐户或您程序中的其他帐户。
您可以尝试以下操作:
- 控制台记录
somePubkey
并将其放入 the explorer
- 额外确认您的意思是
program.account.myAccountType
而不是 program.account.someOtherAccountType
。
就我而言,这个问题发生在我 anchor idl init [OPTIONS] --filepath <FILEPATH> <PROGRAM_ID>
.
之后
一旦我 运行 这个命令,前端开始抛出 Error: Invalid account discriminator
每次我尝试 运行 await connection.getProgramAccounts()
.
我想做 anchor idl init
因为我想使用 Program.fetchIdl()
获取 idl 而不是将 idl
作为 json 对象传递,这需要我复制它从 target/idl/<program-name>.json
进入我的 React 前端,然后将 json 导入我的项目...
为了解决这个问题,我不得不通过 运行 宁 anchor build
然后 anchor deploy
重建和重新部署锚程序。完成此操作后,我必须将 idl
作为 json 对象传递给 Program.getProgramAccounts()
函数。
我正在尝试从 public 密钥中获取帐户:
await program.account.myAccountType.fetch(somePubkey);
但是 Anchor 抛出一个错误说:
Invalid account discriminator
什么是账户鉴别器?
帐户鉴别符是 Anchor 放在帐户前面的几个字节,例如 header。它让锚点知道应该将数据反序列化为哪种类型的帐户。
如果您尝试以 myAccountType
形式获取某些内容,则会发生此错误,但它实际上是某个其他帐户的公钥,例如令牌帐户或您程序中的其他帐户。
您可以尝试以下操作:
- 控制台记录
somePubkey
并将其放入 the explorer - 额外确认您的意思是
program.account.myAccountType
而不是program.account.someOtherAccountType
。
就我而言,这个问题发生在我 anchor idl init [OPTIONS] --filepath <FILEPATH> <PROGRAM_ID>
.
一旦我 运行 这个命令,前端开始抛出 Error: Invalid account discriminator
每次我尝试 运行 await connection.getProgramAccounts()
.
我想做 anchor idl init
因为我想使用 Program.fetchIdl()
获取 idl 而不是将 idl
作为 json 对象传递,这需要我复制它从 target/idl/<program-name>.json
进入我的 React 前端,然后将 json 导入我的项目...
为了解决这个问题,我不得不通过 运行 宁 anchor build
然后 anchor deploy
重建和重新部署锚程序。完成此操作后,我必须将 idl
作为 json 对象传递给 Program.getProgramAccounts()
函数。