/
token_trace.go
72 lines (62 loc) · 1.66 KB
/
token_trace.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package keeper
import (
"math/big"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/ethereum/go-ethereum/common"
evmtypes "github.com/tharsis/ethermint/x/evm/types"
transfer "github.com/teleport-network/teleport/syscontracts/xibc_transfer"
"github.com/teleport-network/teleport/x/aggregate/types"
)
func (k Keeper) AddERC20TraceToTransferContract(
ctx sdk.Context,
contract common.Address,
originToken string,
originChain string,
scale uint8,
) (
*evmtypes.MsgEthereumTxResponse,
error,
) {
payload, err := transfer.TransferContract.ABI.Pack("bindToken", contract, originToken, originChain, scale)
if err != nil {
return nil, err
}
return k.CallEVMWithData(ctx, types.ModuleAddress, &transfer.TransferContractAddress, payload)
}
func (k Keeper) EnableTimeBasedSupplyLimitInTransferContract(
ctx sdk.Context,
erc20Address common.Address,
timePeriod *big.Int,
timeBasedLimit *big.Int,
maxAmount *big.Int,
minAmount *big.Int,
) (
*evmtypes.MsgEthereumTxResponse,
error,
) {
payload, err := transfer.TransferContract.ABI.Pack(
"enableTimeBasedSupplyLimit",
erc20Address,
timePeriod,
timeBasedLimit,
maxAmount,
minAmount,
)
if err != nil {
return nil, err
}
return k.CallEVMWithData(ctx, types.ModuleAddress, &transfer.TransferContractAddress, payload)
}
func (k Keeper) DisableTimeBasedSupplyLimitInTransferContract(
ctx sdk.Context,
erc20Address common.Address,
) (
*evmtypes.MsgEthereumTxResponse,
error,
) {
payload, err := transfer.TransferContract.ABI.Pack("disableTimeBasedSupplyLimit", erc20Address)
if err != nil {
return nil, err
}
return k.CallEVMWithData(ctx, types.ModuleAddress, &transfer.TransferContractAddress, payload)
}