Skip to content

Commit a596ce9

Browse files
committed
query VFBC
1 parent b1ca9f8 commit a596ce9

File tree

2 files changed

+70
-2
lines changed

2 files changed

+70
-2
lines changed

cmd/query/balance.go

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,15 @@ func GetQueryBalanceCommand() *cobra.Command {
6666
erc20TokenPairs, err := fetchErc20ModuleTokenPairsFromRest(restApiEndpoint)
6767
if err != nil {
6868
utils.PrintlnStdErr("ERR:", err)
69-
return
7069
} else {
7170
for _, erc20TokenPair := range erc20TokenPairs {
71+
if !erc20TokenPair.Enabled {
72+
continue
73+
}
74+
7275
contractAddr := common.HexToAddress(erc20TokenPair.Erc20Address)
7376

74-
tokenBalance, tokenBalanceDisplay, contractSymbol, contractDecimals, balancePartHigh, balancePartLow, err := fetchBalanceForErc20Contract(contractAddr, contextHeight, ethClient8545, accountAddr, "contract")
77+
tokenBalance, tokenBalanceDisplay, contractSymbol, contractDecimals, balancePartHigh, balancePartLow, err := fetchBalanceForErc20Contract(contractAddr, contextHeight, ethClient8545, accountAddr, "x/erc20 contract")
7578
if err != nil {
7679
continue
7780
}
@@ -83,6 +86,30 @@ func GetQueryBalanceCommand() *cobra.Command {
8386
printRow("x/erc20", contractAddr.String(), contractSymbol, tokenBalanceDisplay, tokenBalance.String(), contractDecimals.String(), balancePartHigh.String(), balancePartLow.String(), erc20TokenPair.Denom)
8487
}
8588
}
89+
90+
vfcbPairs, err := fetchVirtualFrontierBankContractPairsFromRest(restApiEndpoint)
91+
if err != nil {
92+
utils.PrintlnStdErr("ERR:", err)
93+
} else {
94+
for _, vfbcPair := range vfcbPairs {
95+
if !vfbcPair.Enabled {
96+
continue
97+
}
98+
99+
contractAddr := common.HexToAddress(vfbcPair.ContractAddress)
100+
101+
tokenBalance, tokenBalanceDisplay, contractSymbol, contractDecimals, balancePartHigh, balancePartLow, err := fetchBalanceForErc20Contract(contractAddr, contextHeight, ethClient8545, accountAddr, "VFBC")
102+
if err != nil {
103+
continue
104+
}
105+
106+
if tokenBalance.Sign() == 0 {
107+
continue
108+
}
109+
110+
printRow("vfbc", contractAddr.String(), contractSymbol, tokenBalanceDisplay, tokenBalance.String(), contractDecimals.String(), balancePartHigh.String(), balancePartLow.String(), vfbcPair.MinDenom)
111+
}
112+
}
86113
}
87114
},
88115
}

cmd/query/cosmos.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,44 @@ type Erc20ModuleTokenPair struct {
8282
Denom string `json:"denom"`
8383
Enabled bool `json:"enabled"`
8484
}
85+
86+
func fetchVirtualFrontierBankContractPairsFromRest(rest string) (vfbcPairs []VfbcTokenPair, err error) {
87+
var resp *http.Response
88+
resp, err = http.Get(rest + "/ethermint/evm/v1/virtual_frontier_bank_contracts")
89+
if err != nil {
90+
err = errors.Wrap(err, "failed to fetch VFBC pairs")
91+
return
92+
}
93+
94+
if resp.StatusCode != http.StatusOK {
95+
return nil, fmt.Errorf("failed to fetch VFBC pairs! Status code: %d", resp.StatusCode)
96+
}
97+
98+
type responseStruct struct {
99+
Pairs []VfbcTokenPair `json:"pairs"`
100+
}
101+
102+
defer func() {
103+
_ = resp.Body.Close()
104+
}()
105+
106+
bz, err := io.ReadAll(resp.Body)
107+
if err != nil {
108+
return nil, errors.Wrap(err, "failed to read response body of VFBC pairs")
109+
}
110+
111+
var response responseStruct
112+
err = json.Unmarshal(bz, &response)
113+
if err != nil {
114+
return nil, errors.Wrap(err, "failed to unmarshal response body of VFBC pairs")
115+
}
116+
117+
vfbcPairs = response.Pairs
118+
return
119+
}
120+
121+
type VfbcTokenPair struct {
122+
ContractAddress string `json:"contract_address"`
123+
MinDenom string `json:"min_denom"`
124+
Enabled bool `json:"enabled"`
125+
}

0 commit comments

Comments
 (0)