Solana基础 - 如何在程序中读取帐户
Solana 中的几乎所有指令都需要至少 2 - 3 个帐户,并且它们 会在指令处理程序中提及,说明这些帐户集的预期顺序。如果我们利用iter() Rust 中的方法,而不是手动索引帐户,那么这相当简单。该 next_account_info方法基本上对可迭代对象的第一个索引进行…
欢迎所有爱好区块链技术的人加入。
CATEGORY
Solana-优秀转载Solana-开源推荐Solana-新手教程
共 213 篇
Solana 中的几乎所有指令都需要至少 2 - 3 个帐户,并且它们 会在指令处理程序中提及,说明这些帐户集的预期顺序。如果我们利用iter() Rust 中的方法,而不是手动索引帐户,那么这相当简单。该 next_account_info方法基本上对可迭代对象的第一个索引进行…
程序派生地址只是程序拥有的一个帐户,但没有私钥。相反,它的签名是通过一组种子和一个碰撞(一个 随机数,确保它“偏离曲线”,即不是有效的公钥)获得的。“生成”程序地址 不同于“创建”它。可以使用生成 PDA Pubkey::find_program_address。创建 PDA 本…
跨程序调用,简单地说就是在我们的程序中调用另一个程序的指令。最好的例子就是 Uniswap 的swap 功能。UniswapV2Router合约调用交换所需的逻辑,并调用ERC20合约的转移函数从一个人转移到另一个人。同样,我们可以调用程序的指令来实现多种用途。 让我们看一下第一…
您可以使用 更改程序拥有的帐户的大小realloc。 realloc最多可以将帐户大小调整为 10KB。当您使用realloc增加帐户大小时,您必须转移lamports才能使该帐户免于租用。 https://solana.com/zh/developers/cookbook/pr…
获取时钟(即当前时间)可以通过两种方式完成: 1. 传递SYSVAR_CLOCK_PUBKEY指令 2. 在指令内部直接访问时钟。 了解这两种方法是很有好处的,因为一些遗留程序仍然需要将其SYSVAR_CLOCK_PUBKEY作为一个帐户。 ## 在指令中将 Clock 作为账户…
您的 Solana 程序可以将 lampor 从一个帐户转移到另一个帐户,而无需“调用”系统程序。基本规则是,您的程序可以将 lampor 从您程序拥有的任何帐户转移到任何帐户。 收件人帐户不必是您的程序所拥有的帐户。 https://solana.com/zh/develope…
每个 Solana 帐户都需要维持最低数量的原生 SOL 余额(以 lamport 为单位)以将其数据保存在区块链上。 https://solana.com/zh/developers/cookbook/accounts/get-account-balance
关闭账户可让您重新获得用于开立账户的 SOL,但需要删除账户中的所有信息。关闭账户时,请确保在同一指令中将数据清零,以避免有人在同一交易中重新打开账户并访问数据。这是因为在交易完成之前,账户实际上并未关闭。 https://solana.com/zh/developers/coo…
程序派生地址 (PDA) 可用于拥有可签名程序所拥有的账户。如果您希望程序拥有代币账户,并且希望程序将代币从一个账户转移到另一个账户,那么这很有用。 https://solana.com/zh/developers/cookbook/accounts/sign-with-pda
程序派生地址 (PDA) 中的帐户只能在链上创建。这些帐户的地址具有关联的曲线外公钥,但没有密钥。 要生成 PDA,请使用findProgramAddressSync所需的种子。使用相同的种子生成将始终生成相同的 PDA。 ## 生成 PDA ## 在PDA上创建账户 ### 程…
在 Solana 上保持账户活跃会产生数据存储成本,称为 租金。在计算时,您需要考虑您打算在帐户中存储的数据量。如果帐户关闭,可以全额收回租金。
创建帐户需要使用系统程序createAccount 指令。Solana 运行时将授予帐户所有者程序写入其数据或传输 Lamport 的权限。创建帐户时,我们必须预先分配固定的存储空间(以字节为单位)和足够的 Lamport 来支付租金。 https://solana.com/zh…
要创建离线交易,您必须对该交易进行签名,然后任何人都可以将其在网络上广播。 https://solana.com/zh/developers/cookbook/transactions/offline-transactions
优化交易的计算请求非常重要,以确保交易及时处理以及避免支付过多的优先费用。 有关请求最佳计算的更多信息, 请查看完整指南。您还可以在此详细指南中找到有关 使用优先费用的更多信息。 https://solana.com/zh/developers/cookbook/transact…
交易 (TX) 优先级是通过在基本费用之外支付优先费用来实现的。默认情况下,计算预算是 200,000 个计算单元 (CU) * 指令数量的乘积,最高为 1.4M CU。基本费用为每个签名 5,000 个 Lamport。一个 microLamport 等于 0.000001 个…
任何交易都可以利用 SPL 备忘录程序添加消息。 ### web3.js ### gill https://solana.com/zh/developers/cookbook/transactions/add-memo
交易所需的签名数量用于计算交易成本。只要您不创建帐户,这将是基本交易成本。要了解有关创建帐户成本的更多信息,请查看计算租金成本。 ### web3.js v2 ### web3.js v1 https://solana.com/zh/developers/cookbook/tra…
使用代币程序转移 SPL 代币。为了发送 SPL 代币,您需要知道其 SPL 代币账户地址。您可以使用以下示例获取地址并发送代币。 https://solana.com/zh/developers/cookbook/transactions/send-tokens
要发送 SOL,您需要与 SystemProgram进行交互。 ### gill ### web3.js https://solana.com/zh/developers/cookbook/transactions/send-sol
密钥对的主要功能是签署消息、交易并启用签名验证。签名验证可让接收者确信数据是由特定私钥的所有者签名的。 ### Kit ### Web3.js ### Rust https://solana.com/zh/developers/cookbook/wallets/sign-mess…