From 0895889b11354e95f71a891d8d8ceee6d336b354 Mon Sep 17 00:00:00 2001 From: kayan Date: Fri, 13 Oct 2023 21:56:24 +0800 Subject: [PATCH] add unregtoken --- .../contracts/erc20/include/erc20/erc20.hpp | 2 ++ antelope_contracts/contracts/erc20/src/erc20.cpp | 11 +++++++++++ antelope_contracts/tests/erc20/erc20_tester.hpp | 8 ++++---- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/antelope_contracts/contracts/erc20/include/erc20/erc20.hpp b/antelope_contracts/contracts/erc20/include/erc20/erc20.hpp index 776e506..4bf0f5c 100644 --- a/antelope_contracts/contracts/erc20/include/erc20/erc20.hpp +++ b/antelope_contracts/contracts/erc20/include/erc20/erc20.hpp @@ -55,6 +55,8 @@ class [[eosio::contract]] erc20 : public contract { [[eosio::action]] void setingressfee(eosio::name token_contract, eosio::asset ingress_fee); [[eosio::action]] void withdrawfee(eosio::name token_contract, eosio::asset quantity, eosio::name to, std::string memo); + [[eosio::action]] void unregtoken(eosio::name eos_contract_name, eosio::symbol_code token_symbol_code); + struct [[eosio::table("implcontract")]] impl_contract_t { uint64_t id = 0; bytes address; diff --git a/antelope_contracts/contracts/erc20/src/erc20.cpp b/antelope_contracts/contracts/erc20/src/erc20.cpp index 897cf61..6cc1eaa 100644 --- a/antelope_contracts/contracts/erc20/src/erc20.cpp +++ b/antelope_contracts/contracts/erc20/src/erc20.cpp @@ -424,6 +424,17 @@ void erc20::setegressfee(eosio::name token_contract, eosio::symbol_code token_sy call_act.send(receiver_account(), token_table_iter->address, value_zero, call_data, evm_gaslimit); } +void erc20::unregtoken(eosio::name token_contract, eosio::symbol_code token_symbol_code) { + require_auth(get_self()); + + token_table_t token_table(_self, _self.value); + auto index_symbol = token_table.get_index<"by.symbol"_n>(); + auto token_table_iter = index_symbol.find(token_symbol_key(token_contract, token_symbol_code)); + eosio::check(token_table_iter != index_symbol.end(), "token not registered"); + + index_symbol.erase(token_table_iter); +} + inline eosio::name erc20::receiver_account()const { return get_self(); } diff --git a/antelope_contracts/tests/erc20/erc20_tester.hpp b/antelope_contracts/tests/erc20/erc20_tester.hpp index fb9ee9b..c3572e1 100644 --- a/antelope_contracts/tests/erc20/erc20_tester.hpp +++ b/antelope_contracts/tests/erc20/erc20_tester.hpp @@ -63,11 +63,11 @@ struct exec_output { struct token_t { uint64_t id = 0; - eosio::chain::name token_contract; + eosio::chain::name token_contract{}; bytes address; // <-- proxy contract addr - eosio::chain::asset ingress_fee; - eosio::chain::asset balance; // <-- total amount in EVM side - eosio::chain::asset fee_balance; + eosio::chain::asset ingress_fee{}; + eosio::chain::asset balance{}; // <-- total amount in EVM side + eosio::chain::asset fee_balance{}; uint8_t erc20_precision = 0; };