> ## Documentation Index
> Fetch the complete documentation index at: https://docs.polygon.technology/llms.txt
> Use this file to discover all available pages before exploring further.

# Changes from v1

> Key differences between Heimdall v1 and v2, including encoding changes, the keyring requirement for validator signing, and vote extensions.

The main differences between Heimdall v1 and v2 are described below.

## Encoding change to Base64

Data encoding format changed from hex-encoded to Base64-encoded.

Example:

* Hex encoded: `BJSk2KCI4snP2Cw/ntDdgp8R25XJ2xg18KL67fyEAwgtPMpeq5APSUHrkv5wtgrFfpmcDivnP8HPGufyyXnByxo=`
* Base64 encoded: `0x0494a4d8a088e2c9cfd82c3f9ed0dd829f11db95c9db1835f0a2faedfc8403082d3cca5eab900f4941eb92fe70b60ac57e999c0e2be73fc1cf1ae7f2c979c1cb1a`

## Validator signing key and keyring

In Heimdall-v2, validator signing keys must be imported into the keyring before the node can sign transactions. This replaces the v1 approach of reading the key directly from a config file.

From the Cosmos documentation:

> The keyring holds the private/public keypairs used to interact with a node. For instance, a validator key needs to be set up before running the blockchain node, so that blocks can be correctly signed. The private key can be stored in different locations, called "backends", such as a file or the operating system's own key storage.

For details on keyring configuration, see the [Cosmos SDK documentation](https://docs.cosmos.network/v0.46/run-node/keyring.html).

To import your validator private key into the keyring:

1. Get your Base64-encoded private key:

   ```bash theme={null}
   cat /var/lib/heimdall/config/priv_validator_key.json
   ```

2. Convert the Base64-encoded key to hex:

   ```bash theme={null}
   echo "<PRIVATE_KEY_BASE64_ENCODED>" | base64 -d | xxd -p -c 256
   ```

3. Import the hex-encoded key into the keyring:

   ```bash theme={null}
   heimdalld keys import-hex <KEY_NAME> <PRIVATE_KEY_HEX_ENCODED> --home <HOME_DIR_PATH>
   ```

   When you first import a key, you are prompted for a password. This password is required each time you sign a transaction.

4. When running a transaction command, specify `--from` with the key name:

   ```bash theme={null}
   heimdalld tx gov vote 1 yes --from <KEY_NAME>
   ```

## Vote extensions in each block

In Heimdall-v2, the first transaction of each block contains encoded vote extensions. To decode these, use the additional decode command provided in `heimdalld`.
