app, docs: update Bech32 HRP to ethm (#476)

* changelog

* app, docs: update Bech32 HRP

* changelog
This commit is contained in:
Federico Kunze Küllmer 2021-08-23 03:21:27 -04:00 committed by GitHub
parent 83f5ab671b
commit 9dcbebafb8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 47 additions and 41 deletions

View File

@ -39,6 +39,12 @@ Ref: https://keepachangelog.com/en/1.0.0/
### State Machine Breaking ### State Machine Breaking
* (app) [tharsis#476](https://github.com/tharsis/ethermint/pull/476) Update Bech32 HRP to `ethm`.
## [v0.5.0] - 2021-08-20
### State Machine Breaking
* (app, rpc) [tharsis#447](https://github.com/tharsis/ethermint/pull/447) Chain ID format has been changed from `<identifier>-<epoch>` to `<identifier>_<EIP155_number>-<epoch>` * (app, rpc) [tharsis#447](https://github.com/tharsis/ethermint/pull/447) Chain ID format has been changed from `<identifier>-<epoch>` to `<identifier>_<EIP155_number>-<epoch>`
in order to clearly distinguish permanent vs impermanent components. in order to clearly distinguish permanent vs impermanent components.
* (app, evm) [tharsis#434](https://github.com/tharsis/ethermint/pull/434) EVM `Keeper` struct and `NewEVM` function now have a new `trace` field to define * (app, evm) [tharsis#434](https://github.com/tharsis/ethermint/pull/434) EVM `Keeper` struct and `NewEVM` function now have a new `trace` field to define

View File

@ -71,7 +71,7 @@ func AddrCmd() *cobra.Command {
Short: "Convert an address between hex and bech32", Short: "Convert an address between hex and bech32",
Long: "Convert an address between hex encoding and bech32.", Long: "Convert an address between hex encoding and bech32.",
Example: fmt.Sprintf( Example: fmt.Sprintf(
`$ %s debug addr eth10jmp6sgh4cc6zt3e8gw05wavvejgr5pw2unfju `$ %s debug addr ethm10jmp6sgh4cc6zt3e8gw05wavvejgr5pw2unfju
$ %s debug addr 0xA588C66983a81e800Db4dF74564F09f91c026351`, version.AppName, version.AppName), $ %s debug addr 0xA588C66983a81e800Db4dF74564F09f91c026351`, version.AppName, version.AppName),
Args: cobra.ExactArgs(1), Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error { RunE: func(cmd *cobra.Command, args []string) error {

View File

@ -7,21 +7,21 @@ import (
) )
const ( const (
// EthBech32Prefix defines the Bech32 prefix used for EthAccounts // Bech32Prefix defines the Bech32 prefix used for EthAccounts
EthBech32Prefix = "eth" Bech32Prefix = "ethm"
// Bech32PrefixAccAddr defines the Bech32 prefix of an account's address // Bech32PrefixAccAddr defines the Bech32 prefix of an account's address
Bech32PrefixAccAddr = EthBech32Prefix Bech32PrefixAccAddr = Bech32Prefix
// Bech32PrefixAccPub defines the Bech32 prefix of an account's public key // Bech32PrefixAccPub defines the Bech32 prefix of an account's public key
Bech32PrefixAccPub = EthBech32Prefix + sdk.PrefixPublic Bech32PrefixAccPub = Bech32Prefix + sdk.PrefixPublic
// Bech32PrefixValAddr defines the Bech32 prefix of a validator's operator address // Bech32PrefixValAddr defines the Bech32 prefix of a validator's operator address
Bech32PrefixValAddr = EthBech32Prefix + sdk.PrefixValidator + sdk.PrefixOperator Bech32PrefixValAddr = Bech32Prefix + sdk.PrefixValidator + sdk.PrefixOperator
// Bech32PrefixValPub defines the Bech32 prefix of a validator's operator public key // Bech32PrefixValPub defines the Bech32 prefix of a validator's operator public key
Bech32PrefixValPub = EthBech32Prefix + sdk.PrefixValidator + sdk.PrefixOperator + sdk.PrefixPublic Bech32PrefixValPub = Bech32Prefix + sdk.PrefixValidator + sdk.PrefixOperator + sdk.PrefixPublic
// Bech32PrefixConsAddr defines the Bech32 prefix of a consensus node address // Bech32PrefixConsAddr defines the Bech32 prefix of a consensus node address
Bech32PrefixConsAddr = EthBech32Prefix + sdk.PrefixValidator + sdk.PrefixConsensus Bech32PrefixConsAddr = Bech32Prefix + sdk.PrefixValidator + sdk.PrefixConsensus
// Bech32PrefixConsPub defines the Bech32 prefix of a consensus node public key // Bech32PrefixConsPub defines the Bech32 prefix of a consensus node public key
Bech32PrefixConsPub = EthBech32Prefix + sdk.PrefixValidator + sdk.PrefixConsensus + sdk.PrefixPublic Bech32PrefixConsPub = Bech32Prefix + sdk.PrefixValidator + sdk.PrefixConsensus + sdk.PrefixPublic
) )
const ( const (

View File

@ -24,8 +24,8 @@ The root HD path for Ethermint-based accounts is `m/44'/60'/0'/0`.
[BIP-0173](https://github.com/satoshilabs/slips/blob/master/slip-0173.md) defines a new format for segregated witness output addresses that contains a human-readable part that identifies the Bech32 usage. Ethermint uses the following HRP (human readable prefix) as the base HRP: [BIP-0173](https://github.com/satoshilabs/slips/blob/master/slip-0173.md) defines a new format for segregated witness output addresses that contains a human-readable part that identifies the Bech32 usage. Ethermint uses the following HRP (human readable prefix) as the base HRP:
| Network | Mainnet | Testnet | Regtest | | Network | Mainnet | Testnet | Regtest |
| --------- | ------- | ------- | ------- | |-----------|---------|---------|---------|
| Ethermint | `eth` | `eth` | | | Ethermint | `ethm` | `ethm` | |
There are 3 main types of HRP for the `Addresses`/`PubKeys` available by default on Ethermint: There are 3 main types of HRP for the `Addresses`/`PubKeys` available by default on Ethermint:
@ -35,19 +35,19 @@ There are 3 main types of HRP for the `Addresses`/`PubKeys` available by default
| | Address bech32 Prefix | Pubkey bech32 Prefix | Curve | Address byte length | Pubkey byte length | | | Address bech32 Prefix | Pubkey bech32 Prefix | Curve | Address byte length | Pubkey byte length |
|--------------------|-----------------------|----------------------|-----------------|---------------------|--------------------| |--------------------|-----------------------|----------------------|-----------------|---------------------|--------------------|
| Accounts | `eth` | `ethpub` | `eth_secp256k1` | `20` | `33` (compressed) | | Accounts | `ethm` | `ethpub` | `eth_secp256k1` | `20` | `33` (compressed) |
| Validator Operator | `ethvaloper` | `ethvaloperpub` | `eth_secp256k1` | `20` | `33` (compressed) | | Validator Operator | `ethmvaloper` | `ethmvaloperpub` | `eth_secp256k1` | `20` | `33` (compressed) |
| Consensus Nodes | `ethvalcons` | `ethvalconspub` | `ed25519` | `20` | `32` | | Consensus Nodes | `ethmvalcons` | `ethmvalconspub` | `ed25519` | `20` | `32` |
## Address formats for clients ## Address formats for clients
`EthAccount` can be represented in both [Bech32](https://en.bitcoin.it/wiki/Bech32) (`eth1...`) and hex (`0x...`) formats for Ethereum's Web3 tooling compatibility. `EthAccount` can be represented in both [Bech32](https://en.bitcoin.it/wiki/Bech32) (`ethm1...`) and hex (`0x...`) formats for Ethereum's Web3 tooling compatibility.
The Bech32 format is the default format for Cosmos-SDK queries and transactions through CLI and REST The Bech32 format is the default format for Cosmos-SDK queries and transactions through CLI and REST
clients. The hex format on the other hand, is the Ethereum `common.Address` representation of a clients. The hex format on the other hand, is the Ethereum `common.Address` representation of a
Cosmos `sdk.AccAddress`. Cosmos `sdk.AccAddress`.
- **Address (Bech32)**: `eth14au322k9munkmx5wrchz9q30juf5wjgz2cfqku` - **Address (Bech32)**: `ethm14au322k9munkmx5wrchz9q30juf5wjgz2cfqku`
- **Address ([EIP55](https://eips.ethereum.org/EIPS/eip-55) Hex)**: `0xAF79152AC5dF276D9A8e1E2E22822f9713474902` - **Address ([EIP55](https://eips.ethereum.org/EIPS/eip-55) Hex)**: `0xAF79152AC5dF276D9A8e1E2E22822f9713474902`
- **Compressed Public Key**: `{"@type":"/ethermint.crypto.v1beta1.ethsecp256k1.PubKey","key":"ApNNebT58zlZxO2yjHiRTJ7a7ufjIzeq5HhLrbmtg9Y/"}` - **Compressed Public Key**: `{"@type":"/ethermint.crypto.v1beta1.ethsecp256k1.PubKey","key":"ApNNebT58zlZxO2yjHiRTJ7a7ufjIzeq5HhLrbmtg9Y/"}`
@ -56,18 +56,18 @@ Cosmos `sdk.AccAddress`.
The `ethermintd debug addr <address>` can be used to convert an address between hex and bech32 formats. For example: The `ethermintd debug addr <address>` can be used to convert an address between hex and bech32 formats. For example:
```bash ```bash
ethermintd debug addr eth10jmp6sgh4cc6zt3e8gw05wavvejgr5pw2unfju ethermintd debug addr ethm10jmp6sgh4cc6zt3e8gw05wavvejgr5pw2unfju
Address bytes: [124 182 29 65 23 174 49 161 46 57 58 28 250 59 172 102 100 129 208 46] Address bytes: [124 182 29 65 23 174 49 161 46 57 58 28 250 59 172 102 100 129 208 46]
Address (hex): 7CB61D4117AE31A12E393A1CFA3BAC666481D02E Address (hex): 7CB61D4117AE31A12E393A1CFA3BAC666481D02E
Address (EIP-55): 0x7cB61D4117AE31a12E393a1Cfa3BaC666481D02E Address (EIP-55): 0x7cB61D4117AE31a12E393a1Cfa3BaC666481D02E
Bech32 Acc: eth10jmp6sgh4cc6zt3e8gw05wavvejgr5pw2unfju Bech32 Acc: ethm10jmp6sgh4cc6zt3e8gw05wavvejgr5pw2unfju
Bech32 Val: ethvaloper10jmp6sgh4cc6zt3e8gw05wavvejgr5pw5wdauz Bech32 Val: ethvaloper10jmp6sgh4cc6zt3e8gw05wavvejgr5pw5wdauz
ethermintd debug addr 0x7cB61D4117AE31a12E393a1Cfa3BaC666481D02E ethermintd debug addr 0x7cB61D4117AE31a12E393a1Cfa3BaC666481D02E
Address bytes: [124 182 29 65 23 174 49 161 46 57 58 28 250 59 172 102 100 129 208 46] Address bytes: [124 182 29 65 23 174 49 161 46 57 58 28 250 59 172 102 100 129 208 46]
Address (hex): 7CB61D4117AE31A12E393A1CFA3BAC666481D02E Address (hex): 7CB61D4117AE31A12E393A1CFA3BAC666481D02E
Address (EIP-55): 0x7cB61D4117AE31a12E393a1Cfa3BaC666481D02E Address (EIP-55): 0x7cB61D4117AE31a12E393a1Cfa3BaC666481D02E
Bech32 Acc: eth10jmp6sgh4cc6zt3e8gw05wavvejgr5pw2unfju Bech32 Acc: ethm10jmp6sgh4cc6zt3e8gw05wavvejgr5pw2unfju
Bech32 Val: ethvaloper10jmp6sgh4cc6zt3e8gw05wavvejgr5pw5wdauz Bech32 Val: ethvaloper10jmp6sgh4cc6zt3e8gw05wavvejgr5pw5wdauz
``` ```
@ -84,7 +84,7 @@ obtain the addresses and keys as mentioned above,
ethermintd keys show mykey --bech acc ethermintd keys show mykey --bech acc
- name: mykey - name: mykey
type: local type: local
address: eth1qsklxwt77qrxur494uvw07zjynu03dq9alwh37 address: ethm1qsklxwt77qrxur494uvw07zjynu03dq9alwh37
pubkey: '{"@type":"/ethermint.crypto.v1.ethsecp256k1.PubKey","key":"A8nbJ3eW9oAb2RNZoS8L71jFMfjk6zVa1UISYgKK9HPm"}' pubkey: '{"@type":"/ethermint.crypto.v1.ethsecp256k1.PubKey","key":"A8nbJ3eW9oAb2RNZoS8L71jFMfjk6zVa1UISYgKK9HPm"}'
mnemonic: "" mnemonic: ""
@ -126,7 +126,7 @@ ethermintd q auth account $(ethermintd keys show <MYKEY> -a) -o text
``` bash ``` bash
# GET /cosmos/auth/v1beta1/accounts/{address} # GET /cosmos/auth/v1beta1/accounts/{address}
curl -X GET "http://localhost:10337/cosmos/auth/v1beta1/accounts/eth14au322k9munkmx5wrchz9q30juf5wjgz2cfqku" -H "accept: application/json" curl -X GET "http://localhost:10337/cosmos/auth/v1beta1/accounts/ethm14au322k9munkmx5wrchz9q30juf5wjgz2cfqku" -H "accept: application/json"
``` ```
### JSON-RPC ### JSON-RPC

View File

@ -65,12 +65,12 @@ We view testnet participation as a great way to signal to the community that you
In short, there are two types of keys: In short, there are two types of keys:
- **Tendermint Key**: This is a unique key used to sign consensus votes. - **Tendermint Key**: This is a unique key used to sign consensus votes.
- It is associated with a public key `ethvalconspub` (Get this value with `ethermintd tendermint show-validator`) - It is associated with a public key `ethmvalconspub` (Get this value with `ethermintd tendermint show-validator`)
- It is generated when the node is created with `ethermintd init`. - It is generated when the node is created with `ethermintd init`.
- **Application key**: This key is created from `ethermintd` and used to sign transactions. Application keys are associated with a public key prefixed by `ethpub` and an address prefixed by `eth`. Both are derived from account keys generated by `ethermintd keys add`. - **Application key**: This key is created from `ethermintd` and used to sign transactions. Application keys are associated with a public key prefixed by `ethpub` and an address prefixed by `ethm`. Both are derived from account keys generated by `ethermintd keys add`.
Note: A validator's operator key is directly tied to an application key, but Note: A validator's operator key is directly tied to an application key, but
uses reserved prefixes solely for this purpose: `ethvaloper` and `ethvaloperpub` uses reserved prefixes solely for this purpose: `ethmvaloper` and `ethmvaloperpub`
### What are the different states a validator can be in? ### What are the different states a validator can be in?

View File

@ -38,7 +38,7 @@ To run testnet nodes, you will need a machine with the following minimum require
## Create Your Validator ## Create Your Validator
Your `ethvalconspub` can be used to create a new validator by staking tokens. You can find your validator pubkey by running: Your `ethmvalconspub` can be used to create a new validator by staking tokens. You can find your validator pubkey by running:
```bash ```bash
ethermintd tendermint show-validator ethermintd tendermint show-validator
@ -80,7 +80,7 @@ You can confirm that you are in the validator set by using a third party explore
If you want to participate in genesis as a validator, you need to justify that If you want to participate in genesis as a validator, you need to justify that
you have some stake at genesis, create one (or multiple) transactions to bond this stake to your validator address, and include this transaction in the genesis file. you have some stake at genesis, create one (or multiple) transactions to bond this stake to your validator address, and include this transaction in the genesis file.
Your `ethvalconspub` can be used to create a new validator by staking tokens. You can find your validator pubkey by running: Your `ethmvalconspub` can be used to create a new validator by staking tokens. You can find your validator pubkey by running:
```bash ```bash
ethermintd tendermint show-validator ethermintd tendermint show-validator

View File

@ -11,10 +11,10 @@ There are multiple ways to interact with a node: using the CLI, using gRPC or us
Now that your very own node is running, it is time to try sending tokens from the first account you created to a second account. In a new terminal window, start by running the following query command: Now that your very own node is running, it is time to try sending tokens from the first account you created to a second account. In a new terminal window, start by running the following query command:
```bash ```bash
ethermintd query bank balances $MY_VALIDATOR_ADDRESS --chain-id=ethermintd-1 ethermintd query bank balances $MY_VALIDATOR_ADDRESS --chain-id=ethermint_9000-1
``` ```
You should see the current balance of the account you created, equal to the original balance of `eth` you granted it minus the amount you delegated via the `gentx`. Now, create a second account: You should see the current balance of the account you created, equal to the original balance of tokens you granted it minus the amount you delegated via the `gentx`. Now, create a second account:
```bash ```bash
ethermintd keys add recipient --keyring-backend=file ethermintd keys add recipient --keyring-backend=file
@ -26,19 +26,19 @@ RECIPIENT=$(ethermintd keys show recipient -a --keyring-backend=file)
The command above creates a local key-pair that is not yet registered on the chain. An account is created the first time it receives tokens from another account. Now, run the following command to send tokens to the `recipient` account: The command above creates a local key-pair that is not yet registered on the chain. An account is created the first time it receives tokens from another account. Now, run the following command to send tokens to the `recipient` account:
```bash ```bash
ethermintd tx bank send $MY_VALIDATOR_ADDRESS $RECIPIENT 1000000aphoton --chain-id=ethermintd-1 --keyring-backend=file ethermintd tx bank send $MY_VALIDATOR_ADDRESS $RECIPIENT 1000000aphoton --chain-id=ethermint_9000-1 --keyring-backend=file
# Check that the recipient account did receive the tokens. # Check that the recipient account did receive the tokens.
ethermintd query bank balances $RECIPIENT --chain-id=ethermintd-1 ethermintd query bank balances $RECIPIENT --chain-id=ethermint_9000-1
``` ```
Finally, delegate some of the stake tokens sent to the `recipient` account to the validator: Finally, delegate some of the stake tokens sent to the `recipient` account to the validator:
```bash ```bash
ethermintd tx staking delegate $(ethermintd keys show my_validator --bech val -a --keyring-backend=file) 500aphoton --from=recipient --chain-id=ethermintd-1 --keyring-backend=file ethermintd tx staking delegate $(ethermintd keys show my_validator --bech val -a --keyring-backend=file) 500aphoton --from=recipient --chain-id=ethermint_9000-1 --keyring-backend=file
# Query the total delegations to `validator`. # Query the total delegations to `validator`.
ethermintd query staking delegations-to $(ethermintd keys show my_validator --bech val -a --keyring-backend=file) --chain-id=ethermintd-1 ethermintd query staking delegations-to $(ethermintd keys show my_validator --bech val -a --keyring-backend=file) --chain-id=ethermint_9000-1
``` ```
You should see two delegations, the first one made from the `gentx`, and the second one you just performed from the `recipient` account. You should see two delegations, the first one made from the `gentx`, and the second one you just performed from the `recipient` account.

View File

@ -47,12 +47,12 @@ When in doubt, you can also run the tests against a Ganache instance via `yarn t
The [`init-test-node.sh`](./init-test-node.sh) script sets up ethermint with the following accounts: The [`init-test-node.sh`](./init-test-node.sh) script sets up ethermint with the following accounts:
- `eth18de995q8qk0leqk3d5pzmg7tlxvj6tmsku084d` (Validator) - `ethm10jmp6sgh4cc6zt3e8gw05wavvejgr5pwtu750w` (Validator)
- `0x3b7252d007059ffc82d16d022da3cbf9992d2f70` - `0x7cB61D4117AE31a12E393a1Cfa3BaC666481D02E`
- `eth1mhtyk3cj7ly0rt8rc9zuj5pnnmw67gsapygwyq` (User 1) - `ethm1cml96vmptgw99syqrrz8az79xer2pcgp767p9e` (User 1)
- `0xddd64b4712f7c8f1ace3c145c950339eddaf221d` - `0xC6Fe5D33615a1C52c08018c47E8Bc53646A0E101`
- `eth1pa20g7lehr330vs5ent20slr3wyne4lsy8qae3` (user 2) - `ethm1jcltmuhplrdcwp7stlr4hlhlhgd4htqhgjpff2` (user 2)
- `0x0f54f47bf9b8e317b214ccd6a7c3e38b893cd7f0` - `0x963EBDf2e1f8DB8707D05FC75bfeFFBa1B5BaC17`
Each with roughly 100 ETH available (1e18 photon). Each with roughly 100 ETH available (1e18 photon).
@ -63,19 +63,19 @@ Running `ethermintd keys list --keyring-backend=test` should output:
{ {
"name": "localkey", "name": "localkey",
"type": "local", "type": "local",
"address": "eth18de995q8qk0leqk3d5pzmg7tlxvj6tmsku084d", "address": "ethm18de995q8qk0leqk3d5pzmg7tlxvj6tmsku084d",
"pubkey": "ethpub1pfqnmk6pq3ycjs34vv4n6rkty89f6m02qcsal3ecdzn7a3uunx0e5ly0846pzg903hxf2zp5gq4grh8jcatcemfrscdfl797zhg5crkcsx43gujzppge3n" "pubkey": "ethpub1pfqnmk6pq3ycjs34vv4n6rkty89f6m02qcsal3ecdzn7a3uunx0e5ly0846pzg903hxf2zp5gq4grh8jcatcemfrscdfl797zhg5crkcsx43gujzppge3n"
}, },
{ {
"name": "user1", "name": "user1",
"type": "local", "type": "local",
"address": "eth1mhtyk3cj7ly0rt8rc9zuj5pnnmw67gsapygwyq", "address": "ethm1mhtyk3cj7ly0rt8rc9zuj5pnnmw67gsapygwyq",
"pubkey": "ethpub1pfqnmk6pq3wrkx6lh7uug8ss0thggact3n49m5gkmpca4vylldpur5qrept57e0rrxfmeq5mp5xt3cyf4kys53qcv66qxttv970das69hlpkf8cnyd2a2x" "pubkey": "ethpub1pfqnmk6pq3wrkx6lh7uug8ss0thggact3n49m5gkmpca4vylldpur5qrept57e0rrxfmeq5mp5xt3cyf4kys53qcv66qxttv970das69hlpkf8cnyd2a2x"
}, },
{ {
"name": "user2", "name": "user2",
"type": "local", "type": "local",
"address": "eth1pa20g7lehr330vs5ent20slr3wyne4lsy8qae3", "address": "ethm1pa20g7lehr330vs5ent20slr3wyne4lsy8qae3",
"pubkey": "ethpub1pfqnmk6pq3art9y45zw5ntyktt2qrt0skmsl0ux9qwk8458ed3d8sgnrs99zlgvj3rt2vggvkh0x56hffugwsyddwqla48npx46pglgs6xhcqpall58tgn" "pubkey": "ethpub1pfqnmk6pq3art9y45zw5ntyktt2qrt0skmsl0ux9qwk8458ed3d8sgnrs99zlgvj3rt2vggvkh0x56hffugwsyddwqla48npx46pglgs6xhcqpall58tgn"
} }
] ]