You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法构建StarkNet合约(疑似宏或版本兼容性问题)

解决StarkNet Cairo合约编译"Unsupported attribute"错误

问题分析

出现Unsupported attribute错误,核心原因是Scarb未正确加载StarkNet合约插件,或是版本不兼容导致无法识别#[starknet::contract]和#[storage]这类StarkNet专属属性。

解决方案

1. 检查并修正Scarb.toml配置

确保你的Scarb.toml文件包含StarkNet插件依赖和正确的target配置,示例如下:

[package]
name = "counter"
version = "0.1.0"

[dependencies]
starknet = ">=2.0.0"

[[target.starknet-contract]]

根据你使用的Cairo版本,调整starknet依赖的版本号,确保与Scarb版本兼容(比如Scarb 2.0.x对应starknet 2.0.x)。

2. 确认Scarb和插件版本兼容

执行以下命令查看当前Scarb版本:

scarb --version

确认对应版本的StarkNet插件兼容性,避免版本不匹配。

3. 清理缓存并重新构建

执行以下命令清理Scarb缓存,再重新编译:

scarb clean
scarb build

补充验证

确保你的合约代码结构正确,完整的计数器合约示例供参考:

#[starknet::contract]
pub mod counter_contract {
    #[storage]
    struct Storage {
        count: u128,
    }

    #[constructor]
    fn constructor(ref self: ContractState) {
        self.count.write(0);
    }

    #[external(v0)]
    fn increment(ref self: ContractState) {
        let current = self.count.read();
        self.count.write(current + 1);
    }

    #[external(v0)]
    fn get_count(self: @ContractState) -> u128 {
        self.count.read()
    }
}

内容的提问来源于stack exchange,提问作者Harshit Chauhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 14:12:34