Skip to content

Commit

Permalink
feat: Add Whitelist ERC20 Cli. (#1425)
Browse files Browse the repository at this point in the history
* feat: add whitelist erc20 cli

* chore: modify comment

* docs: add cli docs

* fix lint

* update cli docs

* remove ValidateBasic in cli

* update cli docs

* remove irrelevant changes

* remove irrelevant changes

* Update changelog.md

* rename cli

* update cli docs

* update cli docs

* rename cli func

* Update x/crosschain/client/cli/cli_whitelist_erc20.go

Co-authored-by: Tanmay <[email protected]>

* generate cli docs

* fix the integer overflow warning from cosmos-sec

* update changelog

* make generate

* make generate

* update changelog

* fix generated file error

* fix generated file error

---------

Co-authored-by: Lucas Bertrand <[email protected]>
Co-authored-by: Tanmay <[email protected]>
  • Loading branch information
3 people authored Feb 21, 2024
1 parent 1df84cf commit e93afab
Show file tree
Hide file tree
Showing 6 changed files with 124 additions and 2 deletions.
4 changes: 4 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@
* Made adjustments to the docker-compose for launching mainnet full nodes to include examples of using the docker images build from the docker image build pipeline.
* [1736](https://github.com/zeta-chain/node/pull/1736) - chore: add Ethermint endpoints to OpenAPI

### Features

* [1425](https://github.com/zeta-chain/node/pull/1425) add `whitelist-erc20` command

### Chores

* [1729](https://github.com/zeta-chain/node/pull/1729) - add issue templates
Expand Down
1 change: 1 addition & 0 deletions docs/cli/zetacored/zetacored_tx_crosschain.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,5 @@ zetacored tx crosschain [flags]
* [zetacored tx crosschain refund-aborted](zetacored_tx_crosschain_refund-aborted.md) - Refund an aborted tx , the refund address is optional, if not provided, the refund will be sent to the sender/tx origin of the cctx.
* [zetacored tx crosschain remove-from-out-tx-tracker](zetacored_tx_crosschain_remove-from-out-tx-tracker.md) - Remove a out-tx-tracker
* [zetacored tx crosschain update-tss-address](zetacored_tx_crosschain_update-tss-address.md) - Create a new TSSVoter
* [zetacored tx crosschain whitelist-erc20](zetacored_tx_crosschain_whitelist-erc20.md) - Add a new erc20 token to whitelist

52 changes: 52 additions & 0 deletions docs/cli/zetacored/zetacored_tx_crosschain_whitelist-erc20.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# tx crosschain whitelist-erc20

Add a new erc20 token to whitelist

```
zetacored tx crosschain whitelist-erc20 [erc20Address] [chainID] [name] [symbol] [decimals] [gasLimit] [flags]
```

### Options

```
-a, --account-number uint The account number of the signing account (offline mode only)
--aux Generate aux signer data instead of sending a tx
-b, --broadcast-mode string Transaction broadcasting mode (sync|async|block)
--dry-run ignore the --gas flag and perform a simulation of a transaction, but don't broadcast it (when enabled, the local Keybase is not accessible)
--fee-granter string Fee granter grants fees for the transaction
--fee-payer string Fee payer pays fees for the transaction instead of deducting from the signer
--fees string Fees to pay along with transaction; eg: 10uatom
--from string Name or address of private key with which to sign
--gas string gas limit to set per-transaction; set to "auto" to calculate sufficient gas automatically. Note: "auto" option doesn't always report accurate results. Set a valid coin value to adjust the result. Can be used instead of "fees". (default 200000)
--gas-adjustment float adjustment factor to be multiplied against the estimate returned by the tx simulation; if the gas limit is set manually this flag is ignored (default 1)
--gas-prices string Gas prices in decimal format to determine the transaction fee (e.g. 0.1uatom)
--generate-only Build an unsigned transaction and write it to STDOUT (when enabled, the local Keybase only accessed when providing a key name)
-h, --help help for whitelist-erc20
--keyring-backend string Select keyring's backend (os|file|kwallet|pass|test|memory)
--keyring-dir string The client Keyring directory; if omitted, the default 'home' directory will be used
--ledger Use a connected Ledger device
--node string [host]:[port] to tendermint rpc interface for this chain
--note string Note to add a description to the transaction (previously --memo)
--offline Offline mode (does not allow any online functionality)
-o, --output string Output format (text|json)
-s, --sequence uint The sequence number of the signing account (offline mode only)
--sign-mode string Choose sign mode (direct|amino-json|direct-aux), this is an advanced feature
--timeout-height uint Set a block timeout height to prevent the tx from being committed past a certain height
--tip string Tip is the amount that is going to be transferred to the fee payer on the target chain. This flag is only valid when used with --aux, and is ignored if the target chain didn't enable the TipDecorator
-y, --yes Skip tx broadcasting prompt confirmation
```

### Options inherited from parent commands

```
--chain-id string The network chain ID
--home string directory for config and data
--log_format string The logging format (json|plain)
--log_level string The logging level (trace|debug|info|warn|error|fatal|panic)
--trace print out full stack trace on errors
```

### SEE ALSO

* [zetacored tx crosschain](zetacored_tx_crosschain.md) - crosschain transactions subcommands

64 changes: 64 additions & 0 deletions x/crosschain/client/cli/cli_whitelist_erc20.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package cli

import (
"fmt"
"strconv"

"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/client/tx"
"github.com/spf13/cobra"
"github.com/zeta-chain/zetacore/x/crosschain/types"
)

func CmdWhitelistERC20() *cobra.Command {
cmd := &cobra.Command{
Use: "whitelist-erc20 [erc20Address] [chainID] [name] [symbol] [decimals] [gasLimit]",
Short: "Add a new erc20 token to whitelist",
Args: cobra.ExactArgs(6),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
if err != nil {
return err
}

erc20Address := args[0]
chainID, err := strconv.ParseInt(args[1], 10, 64)
if err != nil {
return err
}

name := args[2]
symbol := args[3]
decimals, err := strconv.ParseUint(args[4], 10, 32)
if err != nil {
return err
}
if decimals > 128 {
return fmt.Errorf("decimals must be less than 128")
}

gasLimit, err := strconv.ParseInt(args[5], 10, 64)
if err != nil {
return err
}

msg := types.NewMsgWhitelistERC20(
clientCtx.GetFromAddress().String(),
erc20Address,
chainID,
name,
symbol,
// #nosec G701 always in range
uint32(decimals),
gasLimit,
)

return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
},
}

flags.AddTxFlagsToCmd(cmd)

return cmd
}
1 change: 1 addition & 0 deletions x/crosschain/client/cli/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ func GetTxCmd() *cobra.Command {
CmdUpdateTss(),
CmdMigrateTssFunds(),
CmdAddToInTxTracker(),
CmdWhitelistERC20(),
CmdAbortStuckCCTX(),
CmdRefundAborted(),
)
Expand Down
4 changes: 2 additions & 2 deletions x/crosschain/types/tx.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit e93afab

Please sign in to comment.