问题标签 [anchor-solana]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
31 浏览

reactjs - Solana web3 程序构造函数期望 json 作为参数之一

我正在使用 typescript react,我需要有关如何解决问题的帮助。我的构造函数对象期望参数之一是 Idl 类型,它基本上是从 solana 生成的 json。我该如何解决?

我得到的错误 对象属性 我正在导入的对象

0 投票
0 回答
379 浏览

typescript - 为 Solana 锚测试加载工作区 IDL 时出错

由于某种原因,我的 mocha 测试无法找到我的 IDL。我收到以下错误:

它已正确生成并保存在我的目标 IDL 文件夹 (../solana-anchor-reactjs-payment/target/idl/payment.json) 中,以下是 IDL 文件的内容:

调用此 IDL 的测试是以下测试 (../solana-anchor-reactjs-payment/tests/payment-test.ts):

测试可能无法访问 IDL 所在的文件夹。所以我什至将它物理复制到与测试相同的文件夹中,但这仍然没有成功。对此的任何帮助将不胜感激,在此先感谢您。

更新 这并不理想,但您可以通过解析 idl json 文件然后将其作为程序中的对象传递来解决此问题。您将添加以下行来设置程序:

0 投票
1 回答
182 浏览

rust - 如何避免我的锚程序抛出“堆栈帧中的访问冲突”?

我的 Anchor 程序有一个如下所示的指令结构:

当我尝试运行使用该结构的指令时,我得到一个奇怪的堆栈错误,如下所示:

是什么赋予了?

0 投票
1 回答
212 浏览

solana - Anchor 中的“无效帐户鉴别器”是什么意思?

我正在尝试从公钥中获取帐户:

但随后 Anchor 抛出一个错误说:

什么是帐户鉴别器?

0 投票
1 回答
199 浏览

web3js - 无法使用锚在 Solana 中向 PDA 签署交易

我正在使用 Anchor 学习 Solana 全栈。我在签署将 Sol 发送到我正在制作的程序所拥有的 PDA 的交易时遇到了问题。我无法为具有正确签名的函数调用 rpc。下面是我的代码:

我得到的错误是,我认为这与改变交易的问题有关。

Solana 计划的相关信息是:

任何帮助表示赞赏。谢谢你。

0 投票
1 回答
64 浏览

solana - Create SPL staking on Solana Ecosystem

I'm newbie in programming, so the questiong is: is there any guides how i can create staking pool on solana ecosystem for created token? And what is the steps?

0 投票
1 回答
70 浏览

rust - 如何计算链上 TVL?

我正在开发一个锚/solana 程序,该程序为多个池提供流动性,包括 saber.so 和 invariant.app。在交换期间,我需要计算 TVL,以公平的汇率提供代币。

我的问题是:计算链上 TVL 的最佳方法是什么?

以下是我想到的一些方法,每种方法都有其缺点:

(1) 计算链下计算,并将其作为预言机提供:

我们可以在链下计算 TVL,然后将该 TVL 作为预言机提供。缺点是:solana 上的 chainlink(一个预言机提供者)似乎不支持自定义数据馈送,就像以太坊一样。此外,该解决方案增加了应用程序的集中化,将它放在链上会很好。也可能存在耗尽协议储备的预言机攻击。

(2) 拥有大量流动性头寸:

另一种方法是跟踪我们作为协议提供流动性的所有流动性头寸。尽管这是可能的,但我相信这会(很快)达到 solana 的账户限制。

在这种情况下,我们将有一个巨大的“状态”帐户,它跟踪每个池的以下变量:

  • token1_mint:公钥
  • token2_mint:公钥
  • token1_amount: u64
  • token2_amount: u64
  • token1_to_currency_pyth_feed_address:公钥
  • token2_to_currency_pyth_feed_address:公钥
  • 提供者:u8

鉴于我们有 4 * 32 + 2 * 64 字节 + 8 字节 = 264 字节,我们可以在任何给定时间点拥有大约 20 个可以存入的池(因为 solana 的帐户限制为 4KB)

第二种选择似乎是要走的路,第一种选择是脱链并且容易受到预言机攻击。然而,第二个选项似乎仍然有点 hacky,因为我必须在任何时候包含这个数据结构来计算总 TVL。

是否有任何其他的设计理念浮现在您的脑海或您已经看到,这将是合适的?

0 投票
1 回答
97 浏览

rust - 通过程序传输SOL的流程是什么?

我想编写一个程序,可用于将代币与 sol 交换(例如购买 nft 的操作)。我有一个针对令牌 B 的令牌 A 的工作示例。但我想用 SOL 替换令牌 B。本例使用anchor & escrow account(存储代币A,等待调用执行兑换)。

我的问题是:假设我有买家、卖家和托管账户。代币由托管账户持有。它可以从托管账户发送给买方,那部分是可以的。但是,我如何将溶胶从买方发送给卖方?我不知道流程是什么:

  • 溶胶应该直接从买方到卖方吗?(购买似乎程序无法执行那种转账,因为它不拥有买方主帐户)
  • 是否应该将 sol 从买方发送到程序拥有的帐户,然后由程序发送给买方?

感谢您的帮助,因为我无法在互联网上找到任何示例!(看起来很基本......)

0 投票
1 回答
97 浏览

solana - 通过经典 javascript 调用锚 (solana) 程序?自定义程序错误:0x64

我在 devnet 上部署了一个程序,当我运行锚测试时,一切运行良好。该程序需要 3 个键,然后返回 ok() (我评论了里面的所有内容)。

我试图在我的单页应用程序(带有幻像签名)中调用该程序,但出现以下错误:自定义程序错误:0x64

我认为问题很简单,但我不明白原因。

公钥来自 new PublicKey(...)

program_id 是我的程序的公钥(PublicKey())

我的程序中没有参数(我试图删除数据:{...} 但得到了同样的错误)。

当我使用 .ts 文件和锚点测试调用程序时,一切正常,代码如下:

我一定在某个地方遗漏了一些东西,但不知道在哪里,如果有人可以提供帮助,将不胜感激

0 投票
1 回答
34 浏览

rust - 锚:指令包装器中可变数量的帐户

如何为指令包装器设置可变数量的输入帐户?

即鉴于此:

当您想要引用数字资产的所有创建者(例如 NFT)时,这很有用,但您事先不知道有多少。