Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fee admin auto accept swap token when register token pair via event #1

Open
element2050 opened this issue Dec 9, 2021 · 4 comments
Assignees

Comments

@element2050
Copy link

swap交易时会收取千三的手续费,合约自动将交易的token转成xUSDT,前提是有交易token-xUSDT的交易对,而这个交易对维护有一定的运营成本。

如果当前交易token-xUSDT 交易对不存在时,合约会直接将对应比例的交易token转到fee admin账号下,当交易是用户触发的,无法直接拿到fee admin对应的signer,在fee admin账户未accept 交易token前,无法接收该token。

一个优化的思路是,可以在注册token pair时,由offchain对fee admin账号执行自动accept token pair,确保在交易token-xUSDT的交易对未创建时,可以将交易token transfer到fee admin账号下的能力。

@chihuahuastrong
Copy link
Collaborator

register_swap_pair 调用 register_liquidity_token,然后后者调用 Token::register_token,这个过程中有什么事件可以利用?

accept token pair 是指把 token pair 中的两个 token 都自动 accept 一下对吧?

@element2050
Copy link
Author

那我增加个tokenpair register的event,把token code放里面。
accept token pair 是把 token pair 中的两个 token 都自动accept。

@chihuahuastrong
Copy link
Collaborator

ok,在增加 tokenpair registered 事件后,我就可以开发这个需求。

接受 token 应该是调用 Account 模块的这个函数吧:

    public(script) fun accept_token<TokenType: store>(account: signer) acquires Account {
        do_accept_token<TokenType>(&account);
    }

@element2050
Copy link
Author

是的,接受 token 调用Account::accept_token方法。

Tokenpair register event定义,合约已实现。

    /// Event emitted when add token pair register.
    struct TokenPairRegisterEvent has drop, store {
        /// token code of X type
        x_token_code: Token::TokenCode,
        /// token code of X type
        y_token_code: Token::TokenCode,
        /// signer of token pair register
        signer: address,
    }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants