我正在 MultiversX 区块链上制作一个 dapp。它有一个功能,用户可以通过使用 EGLD 支付来购买我的 ESDT。
#[endpoint]
#[payable("EGLD")]
fn purchase(&self, amount: BigUint){
require!(amount >= 1000, "Purchase minimum 10 ACCEL");
require!(amount <= 10000, "Maximum purchase limit is 10000 ACCEL")
let caller = self.blockchain().get_caller();
self.send().direct_esdt(&caller, &ACCEL-0fe2ec, &amount);
// self.send().direct_egld(&owner, )
}
我想应用一些逻辑来为我的 ESDT 设定价格。一种方法是硬编码,但我想让它变得现实。我想使用 coinmarket,这样它就可以获取 EGLD 的美元价格,并且在
purchase()
中,我将根据 coinmarket 提供的价值计算我的代币的价格。我可以使用 Rust 获取 coinmarket 的价值吗?如果是的话怎么办?如果没有,请给我提供一些相关的参考资料。
如果除了coinmarket之外还有其他方法请提及。
您基本上是在尝试获取信息以进行连锁经营。因此,智能合约应该与某些链上源交互以获取该特定信息。您无法从智能合约内部访问 API,因为区块链是一个封闭的环境。
价格通常从其他可以公开您需要的数据的智能合约中获取,例如: