交易所的充值与提币开发
本教程针对希望自动存取符合标准的EOSIO令牌合约的交易所。 EOSIO区块链的本地标记符合标准。在本教程中,我们展示了充值和提币交易所的方法,但对于自动化过程可能更重要,可以监控和报告活动的方式。
建立
先决条件
假设您有一个本地nodeos服务器连接到EOSIO区块链;为eosio.token创建了一个帐户;并且已经部署了eosio.token合同。完成智能合同入门和Eosio.token,Exchange和Eosio.msig合同教程之前,本教程将满足这些先决条件。
本教程使用eosio.token合同的转移操作处理存款和取款。它不使用随EOSIO源代码分发提供的样本交换合同,该合同已加载到Eosio.token,Exchange和Eosio.msig合同中。
确保eosio :: history_api_plugin正在运行
本教程使用cleos命令行工具来查询帐户的日志历史记录。这需要安装eosio :: history_api_plugin。如果您的nodeos未使用此插件启动,则需要重新启动nodeos并在命令行中添加--plugin eosio :: history_api_plugin。
激活日志过滤
本教程依赖于来自nodeos的事务日志记录。在较早版本的nodeos中,历史记录插件默认记录所有帐户的历史记录。现在,默认情况下,历史插件根本不会记录transactiona,也不会显式指定过滤。要记录事务,请使用过滤器选项并指定您希望记录的内容。格式为--filter-on
--filter-on tokenxchange:transfer:
您需要筛选您想要跟踪的每个接收器。 在这种情况下,将以下选项添加到nodeos:
--filter-on tokenxchange:transfer: --filter-on scott:transfer: --filter-on eosio.token:transfer:
重译区块链
如果您已经在没有历史插件的情况下同步了区块链,那么您可能需要重译区块链以获取任何历史活动。 将以下选项添加到您的nodeos命令行以重播区块链。
--replay-blockchain
你只需要重译一次。随后的节点运行不应使用重译标志,因为这可能会导致启动时间过长。
设置其他帐户
这里设置的交易所将被称为tokenxchange,以避免与交易账户和合约混淆。使用您从以前的教程中学到的知识创建一个名为tokenxchange的帐户。
本教程使用名为scott的帐户。使用你在前面的教程中学到的知识,创建一个名为scott的账户并存入900.0000 SYS。
接受充值
在本教程中,我们假设交易所将针对传入交易对节点进行轮询,并希望知道传输何时被认为是不可逆转或最终的。
使用基于eosio的链,一旦2/3 + 1的块生产者直接或间接确认该块,交易就会发生终结。这可能需要不到一秒到几分钟的时间,但无论采用哪种方式,nodeos都会让您发布状态。
初始条件
确认帐户scott具有正确的令牌余额。
$ cleos get currency balance eosio.token scott SYS
900.0000 SYS
现在我们将一些资金存入tokenxchange。在转账备忘录中,我们将为scott使用一个独特的内部标识符,在这种情况下,值为“12345”。
$ cleos transfer scott tokenxchange "1.0000 SYS" 12345
executed transaction: ce32ac1fbc96e74ea9318d5b18769be9d84f704c9c0f0eab23c6ce95e4b9ce49 136 bytes 505 us
# eosio.token <= eosio.token::transfer {"from":"scott","to":"tokenxchange","quantity":"1.0000 SYS","memo":"12345"}
# scott <= eosio.token::transfer {"from":"scott","to":"tokenxchange","quantity":"1.0000 SYS","memo":"12345"}
# tokenxchange <= eosio.token::transfer {"from":"scott","to":"tokenxchange","quantity":"1.0000 SYS","memo":"12345"}
此输出表明行动eosio.token :: transfer已交付给三个帐户/合同:“eosio.token”,“scott”和“tokenxchange”。 eosio令牌标准要求发送方和接收方帐户/合同都应得到所有传输操作的通知,以便这些帐户可以运行自定义逻辑。此时,scott和tokenxchange都没有任何合约集来处理此类通知,但事务日志仍将显示他们已收到通知。
区块链技术社区