无法部署我的 Solana 智能合约

Failed to deploy my Solana smart contract

我尝试部署我的 Solana 智能合约,但遇到以下错误: “错误:部署程序失败:错误处理 指令 1:指令的帐户数据无效

可以请你帮忙看看这个失败的部署吗 https://solscan.io/tx/c8VBq8sE5XP2Q75pvLXsyGhehC3Utj1zS9fatunHuvgVDdGobKhupvFUXBTb7DxPfeneSskmEZhszrdPqpXSsyg?cluster=devnet?

谢谢!

这个问题很微妙,但如果您查看“原始”程序日志,错误就会包含在您的事务日志中。

上面写着:ELF error: Found writable section (.bss._ZN5ahash12random_state11RAND_SOURCE17h85a33855e0b029fbE) in ELF, read-write data not supported

Solana 程序不能有可写的静态数据,如果你的程序有一个 bss 部分,这意味着有一些可写的静态数据。它可能来自哈希器或随机发生器。更多信息请见 https://docs.solana.com/developing/on-chain-programs/overview#static-writable-data

如果您需要一种映射形式,请使用目前支持的 BTreeMap。这是一个锚点程序的小例子:

use anchor_lang::prelude::*;
use std::collections::BTreeMap;
declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");
#[program]
mod basic_0 {
    use super::*;
    pub fn initialize(_ctx: Context<Initialize>) -> ProgramResult {
        let mut map = BTreeMap::new();
        map.insert("key1", "value1");
        map.insert("key2", "value2");
        Ok(())
    }
}
#[derive(Accounts)]
pub struct Initialize {}