首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法在NEAR中使用ext_contract从外部契约调用NonFungibleTokenCore?

有没有办法在NEAR中使用ext_contract从外部契约调用NonFungibleTokenCore?
EN

Stack Overflow用户
提问于 2021-09-08 01:15:58
回答 1查看 36关注 0票数 0

我正在使用在依赖特征NonFungibleTokenCore上调用的函数,并且我想使用ext_contract的便利包装器来简化跨契约调用。

下面是我添加它的尝试:

代码语言:javascript
复制
#[ext_contract(ext_non_fungible_token)]
trait NFTCore: NonFungibleTokenCore {}

来自:https://github.com/roshkins/sputnik-dao-contract/blob/nft-tokensv4/sputnik-nft-staking/src/lib.rs#L18

我使用rust-analyzer的代码完成没有提供任何完成。当我构建它的时候,我得到了这个错误:

代码语言:javascript
复制
error[E0425]: cannot find function `nft_transfer` in module `ext_non_fungible_token`
   --> sputnik-nft-staking/src/lib.rs:151:33
    |
151 |         ext_non_fungible_token::nft_transfer(sender_id.clone(), token_id.clone(), 0, None,
    |                                 ^^^^^^^^^^^^ not found in `ext_non_fungible_token`

你有任何关于如何正确使用宏的想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-08 13:24:54

不幸的是,ext_contract proc宏只知道该块中的代码,不能基于NonFungibleTokenCore here https://github.com/roshkins/sputnik-dao-contract/blob/bc8398257cdbee248fdd6301af0dc41a9b7c5236/sputnik-nft-staking/src/lib.rs#L18的超级特征定义的方法生成代码。

现在,您必须重新定义接口,但我将询问是否有更干净的方法来完成此操作。

像这样的事情可能会解决你眼前的问题:

代码语言:javascript
复制
#[ext_contract(ext_non_fungible_token)]
trait NonFungibleTokenCore {
    fn nft_transfer(
        &mut self,
        receiver_id: AccountId,
        token_id: TokenId,
        approval_id: Option<u64>,
        memo: Option<String>,
    );
    fn nft_transfer_call(
        &mut self,
        receiver_id: AccountId,
        token_id: TokenId,
        approval_id: Option<u64>,
        memo: Option<String>,
        msg: String,
    ) -> PromiseOrValue<bool>;
    fn nft_token(&self, token_id: TokenId) -> Option<Token>;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69095938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档