Use a Google Cloud HSM key to sign transactions with viem.
yarn add @valora/viem-account-hsm-gcp
Note: viem is a peer dependency, so make sure it's installed in your project.
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.
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.
This library is a port of @celo/wallet-hsm-gcp to viem.
Big thanks to the Celo team for the original implementation.
- Reporting issues
- Submitting a pull request
- Publishing updates is done automatically via semantic-release. Remember to use conventional commits or your PR will be rejected (since merging it would mess up the changelog and version numbers).