Skip to content

valora-inc/viem-account-hsm-gcp

Folders and files

NameName
Last commit message
Last commit date
Nov 18, 2024
Apr 12, 2024
Apr 19, 2024
Apr 19, 2024
Feb 4, 2025
Apr 19, 2024
Apr 12, 2024
Apr 12, 2024
Apr 19, 2024
Apr 12, 2024
Apr 12, 2024
Apr 19, 2024
Apr 19, 2024
Apr 19, 2024
Apr 19, 2024
Apr 19, 2024
Apr 19, 2024
Mar 10, 2025
Apr 12, 2024
Apr 19, 2024
Apr 12, 2024
Mar 10, 2025

Repository files navigation

@valora/viem-account-hsm-gcp

GitHub License npm version GitHub Workflow Status Codecov PRs Welcome

Use a Google Cloud HSM key to sign transactions with viem.

Installing the library

yarn add @valora/viem-account-hsm-gcp

Note: viem is a peer dependency, so make sure it's installed in your project.

Using the library

Simple usage

import { createWalletClient, http } from 'viem'
import { mainnet } from 'viem/chains'
import { gcpHsmToAccount } from '@valora/viem-account-hsm-gcp'

const account = await gcpHsmToAccount({
  hsmKeyVersion:
    'projects/your-gcp-project/locations/global/keyRings/your-keyring/cryptoKeys/your-hsm/cryptoKeyVersions/1',
})

const client = createWalletClient({
  account,
  chain: mainnet,
  transport: http(),
})

// Test send a transaction to the HSM key (the HSM key needs to be funded)
const hash = await client.sendTransaction({
  to: account.address,
  value: parseEther('0.001'),
})

Important

Make sure the key in Google Cloud KMS is a secp256k1 key.

gcp-key-creation

Tip

You don't have to use an HSM key, you can use a software key as well. See the Google Cloud KMS documentation for more information.

Resources

Acknowledgements

This library is a port of @celo/wallet-hsm-gcp to viem.

Big thanks to the Celo team for the original implementation.

Contributing