一般的情况下,是可以类似于 chainlink 这类语言机,取到链下 http 的数据。
最近看到一个 https://www.apollox.finance/ 声称:链上存取款,链下交易引擎撮合交易
他在取款的时候,是通过前端发了一个 trasanction 到他的 https://bscscan.com/address/0x3e71726dbba7ce4e63b9ee58cf462184dc4c9737
看他这个 claim 的实现
function claim(bytes calldata message, bytes calldata signature) external notPaused {
address signer = source(message, signature);
require(signer == truthHolder, "only accept truthHolder signed message");
(uint256 id, address payable to, bool isBNB, address currency, uint256 amount, uint256 deadline) = abi.decode(message, (uint256, address, bool, address, uint256, uint256));
require(claimHistory[id] == 0, "already claimed");
require(isBNB || supportCurrency[currency], "currency not support");
require(block.timestamp < deadline, "already passed deadline");
claimHistory[id] = block.number;
_transfer(to, isBNB, currency, amount);
emit Claimed(id, to, isBNB, currency, amount, deadline);
}
例:一个 claim 的 tx: https://bscscan.com/tx/0x83f9f4cdda6d5ae3183a3239b4d6ddb4e0c980756817766aba415f0e7cc16836
貌似就是完全通过前端页面构造的取款金额,然后调用小狐狸签名,上链请求,合约没有做啥检查。。。 请教高手,他这种业务,大概是怎么实现的。。。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.