forked from cerc-io/laconicd-deprecated
		
	types: support eth hex address on accounts (#502)
* types: support eth hex address on accounts * changelog * doc update * add note for keyring output
This commit is contained in:
		
							parent
							
								
									d3529dd959
								
							
						
					
					
						commit
						b485542b0b
					
				| @ -39,6 +39,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ | |||||||
| 
 | 
 | ||||||
| ### Improvements | ### Improvements | ||||||
| 
 | 
 | ||||||
|  | * (types) [\#502](https://github.com/ChainSafe/ethermint/pull/502) `EthAccount` now also exposes the Ethereum hex address in `string` format to clients. | ||||||
| * (types) [\#494](https://github.com/ChainSafe/ethermint/pull/494) Update `EthAccount` public key JSON type to `string`. | * (types) [\#494](https://github.com/ChainSafe/ethermint/pull/494) Update `EthAccount` public key JSON type to `string`. | ||||||
| * (app) [\#471](https://github.com/ChainSafe/ethermint/pull/471) Add `x/upgrade` module for managing software updates. | * (app) [\#471](https://github.com/ChainSafe/ethermint/pull/471) Add `x/upgrade` module for managing software updates. | ||||||
| * (`x/evm`) [\#458](https://github.com/ChainSafe/ethermint/pull/458) Define parameter for token denomination used for the EVM module. | * (`x/evm`) [\#458](https://github.com/ChainSafe/ethermint/pull/458) Define parameter for token denomination used for the EVM module. | ||||||
|  | |||||||
| @ -42,9 +42,44 @@ clients. The hex format on the other hand, is the Ethereum `common.Address` repr | |||||||
| Cosmos `sdk.AccAddress`. | Cosmos `sdk.AccAddress`. | ||||||
| 
 | 
 | ||||||
| - Address (Bech32): `eth1crwhac03z2pcgu88jfnqnwu66xlthlz2rhljah` | - Address (Bech32): `eth1crwhac03z2pcgu88jfnqnwu66xlthlz2rhljah` | ||||||
| - Address (Hex): `0xc0dd7ee1f112838470e7926609bb9ad1bebbfc4a` | - Address ([EIP55](https://eips.ethereum.org/EIPS/eip-55) Hex): `0xc0dd7ee1f112838470e7926609bb9ad1bebbfc4a` | ||||||
| - Compressed Public Key (Bech32): `ethpub1pfqnmk6pqnwwuw0h9hj58t2hyzwvqc3truhhp5tl5hfucezcfy2rs8470nkyzju2vmk645fzmw2wveaqcqek767kwa0es9rmxe9nmmjq84cpny3fvj6tpg` | - Compressed Public Key (Bech32): `ethpub1pfqnmk6pqnwwuw0h9hj58t2hyzwvqc3truhhp5tl5hfucezcfy2rs8470nkyzju2vmk645fzmw2wveaqcqek767kwa0es9rmxe9nmmjq84cpny3fvj6tpg` | ||||||
| 
 | 
 | ||||||
|  | You can query an account address using the Cosmos CLI or REST clients: | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | # NOTE: the --output (-o) flag will define the output format in JSON or YAML (text) | ||||||
|  | ethermintcli q auth account $(ethermintcli keys show <MYKEY> -a) -o text | ||||||
|  | | | ||||||
|  |   address: eth1f8rqrfwut7ngkxwth0gt99h0lxnxsp09ngvzwl | ||||||
|  |   eth_address: 0x49c601A5DC5FA68b19CBbbd0b296eFF9a66805e5 | ||||||
|  |   coins: | ||||||
|  |   - denom: aphoton | ||||||
|  |     amount: "1000000000000000000" | ||||||
|  |   - denom: stake | ||||||
|  |     amount: "999999999900000000" | ||||||
|  |   public_key: ethpub1pfqnmkepqw45vpsn6dzvm7k22zrghx0nfewjdfacy7wyycv5evfk57kyhwr8cqj5r4x | ||||||
|  |   account_number: 0 | ||||||
|  |   sequence: 1 | ||||||
|  |   code_hash: c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ``` bash | ||||||
|  | # GET /auth/accounts/{address} | ||||||
|  | curl -X GET "<NODE_IP>/auth/accounts/eth1f8rqrfwut7ngkxwth0gt99h0lxnxsp09ngvzwl" -H "accept: application/json" | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ::: tip | ||||||
|  | The Cosmos SDK Keyring output (i.e `ethermintcli keys`) only supports addresses and public keys in Bech32 format. | ||||||
|  | ::: | ||||||
|  | 
 | ||||||
|  | To retrieve the Ethereum hex address using Web3, use the JSON-RPC `eth_accounts` endpoint: | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | # query against a local node | ||||||
|  | curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}' -H "Content-Type: application/json" http://localhost:26664 | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
| ## Next {hide} | ## Next {hide} | ||||||
| 
 | 
 | ||||||
| Learn about Ethermint [transactions](./transactions.md) {hide} | Learn about Ethermint [transactions](./transactions.md) {hide} | ||||||
|  | |||||||
| @ -50,7 +50,8 @@ To run a node with the same key every time: replace `ethermintcli keys add $KEY` | |||||||
| echo "your mnemonic here" | ethermintcli keys add $KEY --recover | echo "your mnemonic here" | ethermintcli keys add $KEY --recover | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ::: tip Ethermint currently only supports 24 word mnemonics. | ::: tip | ||||||
|  | Ethermint currently only supports 24 word mnemonics. | ||||||
| ::: | ::: | ||||||
| 
 | 
 | ||||||
| You can generate a new key/mnemonic with: | You can generate a new key/mnemonic with: | ||||||
|  | |||||||
| @ -76,6 +76,7 @@ func (acc *EthAccount) SetBalance(amt sdk.Int) { | |||||||
| 
 | 
 | ||||||
| type ethermintAccountPretty struct { | type ethermintAccountPretty struct { | ||||||
| 	Address       sdk.AccAddress `json:"address" yaml:"address"` | 	Address       sdk.AccAddress `json:"address" yaml:"address"` | ||||||
|  | 	EthAddress    string         `json:"eth_address" yaml:"eth_address"` | ||||||
| 	Coins         sdk.Coins      `json:"coins" yaml:"coins"` | 	Coins         sdk.Coins      `json:"coins" yaml:"coins"` | ||||||
| 	PubKey        string         `json:"public_key" yaml:"public_key"` | 	PubKey        string         `json:"public_key" yaml:"public_key"` | ||||||
| 	AccountNumber uint64         `json:"account_number" yaml:"account_number"` | 	AccountNumber uint64         `json:"account_number" yaml:"account_number"` | ||||||
| @ -87,6 +88,7 @@ type ethermintAccountPretty struct { | |||||||
| func (acc EthAccount) MarshalYAML() (interface{}, error) { | func (acc EthAccount) MarshalYAML() (interface{}, error) { | ||||||
| 	alias := ethermintAccountPretty{ | 	alias := ethermintAccountPretty{ | ||||||
| 		Address:       acc.Address, | 		Address:       acc.Address, | ||||||
|  | 		EthAddress:    acc.EthAddress().String(), | ||||||
| 		Coins:         acc.Coins, | 		Coins:         acc.Coins, | ||||||
| 		AccountNumber: acc.AccountNumber, | 		AccountNumber: acc.AccountNumber, | ||||||
| 		Sequence:      acc.Sequence, | 		Sequence:      acc.Sequence, | ||||||
| @ -114,6 +116,7 @@ func (acc EthAccount) MarshalYAML() (interface{}, error) { | |||||||
| func (acc EthAccount) MarshalJSON() ([]byte, error) { | func (acc EthAccount) MarshalJSON() ([]byte, error) { | ||||||
| 	alias := ethermintAccountPretty{ | 	alias := ethermintAccountPretty{ | ||||||
| 		Address:       acc.Address, | 		Address:       acc.Address, | ||||||
|  | 		EthAddress:    acc.EthAddress().String(), | ||||||
| 		Coins:         acc.Coins, | 		Coins:         acc.Coins, | ||||||
| 		AccountNumber: acc.AccountNumber, | 		AccountNumber: acc.AccountNumber, | ||||||
| 		Sequence:      acc.Sequence, | 		Sequence:      acc.Sequence, | ||||||
|  | |||||||
| @ -75,6 +75,7 @@ func TestEthermintAccount_String(t *testing.T) { | |||||||
| 
 | 
 | ||||||
| 	accountStr := fmt.Sprintf(`| | 	accountStr := fmt.Sprintf(`| | ||||||
|   address: %s |   address: %s | ||||||
|  |   eth_address: %s | ||||||
|   coins: |   coins: | ||||||
|   - denom: aphoton |   - denom: aphoton | ||||||
|     amount: "1" |     amount: "1" | ||||||
| @ -82,7 +83,7 @@ func TestEthermintAccount_String(t *testing.T) { | |||||||
|   account_number: 10 |   account_number: 10 | ||||||
|   sequence: 50 |   sequence: 50 | ||||||
|   code_hash: "0102" |   code_hash: "0102" | ||||||
| `, addr, bech32pubkey) | `, addr, ethAcc.EthAddress().String(), bech32pubkey) | ||||||
| 
 | 
 | ||||||
| 	require.Equal(t, accountStr, ethAcc.String()) | 	require.Equal(t, accountStr, ethAcc.String()) | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user