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

Starknet错误码ENTRY_POINT_NOT_FOUND_IN_CONTRACT含义及报错求助

解决StarkNet合约声明时ENTRY_POINT_NOT_FOUND_IN_CONTRACT错误

针对你遇到的合约声明阶段入口点未找到错误,以下是具体排查和解决步骤:

1. 核对Cairo版本兼容性

StarkNet不同测试网(如alpha4)对应特定Cairo版本范围,版本不匹配会导致合约结构与入口点不兼容:

  • 执行命令查看本地版本:
    starknet --version
    
  • 确保版本与官方文档示例要求一致(alpha4通常对应Cairo 0.10.x~0.11.x版本),若版本不符,安装指定版本:
    pip install cairo-lang==0.11.0.1
    

2. 重新编译合约并验证结构

编译错误会导致生成的合约文件缺失声明所需入口点:

  • 删除旧编译产物,重新执行官方指定编译命令:
    rm contract_compiled.json
    cairo-compile contract.cairo --output contract_compiled.json
    
  • 打开编译后的contract_compiled.json,检查是否存在entry_points_by_type字段,且其中包含DECLARE类型的入口点哈希(即错误信息中的0x289da278a8dc833409cabfdad1581e8e7d40e42dcaed693fa4008dcdb4963b3)。若字段缺失或不匹配,说明合约代码存在语法问题。

3. 检查合约代码合法性

确保合约代码严格遵循官方示例结构要求:

  • 必须以%lang starknet开头声明语言类型
  • 包含必要的存储变量、构造函数或外部函数(即使是空实现)
  • 无语法错误,比如缺失end关键字、错误使用装饰器等

示例合法合约结构:

%lang starknet

@storage_var
func balance() -> (res: felt):
end

@constructor
func constructor{syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, range_check_ptr}():
    balance.write(1000)
    return ()
end

@external
func increase_balance{syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, range_check_ptr}(amount: felt):
    let (current_balance) = balance.read()
    balance.write(current_balance + amount)
    return ()
end

4. 确认声明命令参数正确性

执行声明命令时,确保指定正确的合约文件和网络:

starknet declare --contract contract_compiled.json --network alpha4
  • 避免使用错误的合约文件路径
  • 确认网络参数与文档一致(alpha4为旧测试网,若文档已更新需对应调整)

5. 清理本地账户缓存(可选)

若上述步骤无效,尝试清理StarkNet账户缓存后重新声明:

rm -rf ~/.starknet_accounts

内容的提问来源于stack exchange,提问作者0xC6D0fF1e4

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:01:26