Rust导入erc721 crate报错:no external crate `erc721`求助
解决Soroban合约中导入erc721失败的问题
问题原因
你用的erc721 crate是为以太坊EVM环境开发的,依赖Rust标准库(std),但Soroban智能合约要求禁用标准库(#![no_std]),且运行在Stellar的Wasm执行环境中,和以太坊环境完全不兼容,所以没法直接导入使用。
解决方案
改用适配Soroban SDK的ERC721实现,步骤如下:
- 更新
Cargo.toml中的依赖,把原有的erc721替换为soroban-erc721(版本尽量和soroban-sdk保持一致):
[dependencies] soroban-sdk = "0.9.2" soroban-erc721 = "0.9.0"
- 在
lib.rs里导入适配后的crate:
#![no_std] use soroban_sdk::{contract, contractimpl, symbol_short, vec, Env, Symbol, Vec}; // 导入Soroban兼容的ERC721实现 use soroban_erc721::{Erc721, Erc721Client};
- 执行依赖更新命令:
cargo update
重新编译合约后,导入错误就能解决,你也可以正常调用mint等ERC721方法。
内容的提问来源于stack exchange,提问作者Lukas Luke Stateczny
相关产品推荐
相关产品推荐

