无法向白名单智能合约发送WXMEX:非Fungible ESDT不被支持问题咨询
问题解答
结论
是的,这个智能合约的supply端点不接受非同质化代币(NFT),仅支持同质化ESDT代币或EGLD。
原因分析
1. 错误信息直接说明
你收到的"Fungible ESDT token expected"错误明确指出,合约期望接收的是同质化ESDT代币,但你通过ESDTNFTTransfer传入的是NFT(参数中包含NFT编号8),直接触发了类型校验失败。
2. 合约代码的限制佐证
从你提供的合约代码片段能看到核心限制逻辑:
#[payable(“*”)] #[only_owner] #[endpoint(supply)] fn supply(&self) { let rewards_token = self.rewards_token().get(); let (supply_token, supply_amount) = self.call_value().egld_or_single_fungible_esdt(); require!(supply_token == rewards_token, “Invalid rewards token supply”); self.rewards_supply().update(|rewards_supplied| *rewards_supplied += &supply_amount); }
其中call_value().egld_or_single_fungible_esdt()方法的作用是:
- 仅提取交易中的EGLD,或者单一的同质化ESDT代币
- 若传入的是NFT(非同质化ESDT),该方法会直接抛出
"Fungible ESDT token expected"错误,和你遇到的问题完全匹配。
此外,代码后续还会校验传入的代币地址与合约预设的rewards_token一致,进一步确认只能用指定的同质化代币执行supply操作。
解决建议
调用supply端点时,需使用同质化ESDT代币的转账操作,将ESDTNFTTransfer替换为ESDTTransfer,同时确保代币地址与合约的rewards_token一致。
内容的提问来源于stack exchange,提问作者Tiberiu Dodita
相关产品推荐
相关产品推荐

