Skip to main content
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. To import your validator private key into the keyring:
  1. Get your Base64-encoded private key:
    cat /var/lib/heimdall/config/priv_validator_key.json
    
  2. Convert the Base64-encoded key to hex:
    echo "<PRIVATE_KEY_BASE64_ENCODED>" | base64 -d | xxd -p -c 256
    
  3. Import the hex-encoded key into the keyring:
    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:
    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.