如何在Starknet读取Chainlink数据馈送?遇权限问题求助
解决Starknet测试网Chainlink Oracle访问权限问题
问题原因
你调用的Chainlink Oracle合约启用了SimpleReadAccessController,只有被授权的地址才能调用latest_round_data方法,你的自定义合约地址不在授权列表内,因此触发权限错误。
解决方案
- 替换为公开无限制的Oracle地址:Starknet Sepolia测试网存在公开可访问的ETH/USD Chainlink Oracle,可使用地址
0x06012c8cf97bead5deae237070f9587f8e7a266d(以Chainlink官方最新公布信息为准),替换CLI命令中的--input参数值后重新调用。 - 申请访问权限(若需使用原Oracle):如果必须使用当前指定的Oracle地址,需向Chainlink团队提交你的合约地址申请授权,通过访问控制白名单审核后即可正常调用。
- 校验合约逻辑:确保你的合约调用
latest_round_data的参数、接口定义与Chainlink Oracle的ABI完全匹配,避免因参数错误触发其他异常。
测试示例
修改后的CLI命令:
starknet call --address $ADDR --function chainlink_current_price --abi ./build/contract_abi.json --input 0x06012c8cf97bead5deae237070f9587f8e7a266d
内容的提问来源于stack exchange,提问作者Madman
相关产品推荐
相关产品推荐

