@turnkey/viem v0.6.16
@turnkey/viem
This package contains helpers to use Viem with Turnkey.
We provide a Turnkey Custom Account (signer) which implements the signing APIs expected by Viem clients.
If you need a lower-level, fully typed HTTP client for interacting with Turnkey API, check out @turnkey/http
.
Getting started
$ npm install viem @turnkey/viem
import { createAccount } from "@turnkey/viem";
import { TurnkeyClient } from "@turnkey/http";
import { ApiKeyStamper } from "@turnkey/api-key-stamper";
import { createWalletClient, http } from "viem";
import { sepolia } from "viem/chains";
async function main() {
// Create a Turnkey HTTP client with API key credentials
const httpClient = new TurnkeyClient(
{
baseUrl: "https://api.turnkey.com",
},
// This uses API key credentials.
// If you're using passkeys, use `@turnkey/webauthn-stamper` to collect webauthn signatures:
// new WebauthnStamper({...options...})
new ApiKeyStamper({
apiPublicKey: "...",
apiPrivateKey: "...",
}),
);
// Create the Viem custom account
const turnkeyAccount = await createAccount({
client: httpClient,
organizationId: "...",
signWith: "...",
// optional; will be fetched from Turnkey if not provided
ethereumAddress: "...",
});
// Below: standard Viem APIs are used, nothing special!
const client = createWalletClient({
account: turnkeyAccount,
chain: sepolia,
transport: http(`https://sepolia.infura.io/v3/$(YOUR_INFURA_API_KEY)`),
});
const transactionRequest = {
to: "0x08d2b0a37F869FF76BACB5Bab3278E26ab7067B7" as `0x${string}`,
value: 1000000000000000n, // 0.001 ETH
};
const txHash = await client.sendTransaction(transactionRequest);
console.log(`Success! Transaction broadcast with hash ${txHash}`);
}
main().catch((error) => {
console.error(error);
process.exit(1);
});
Testing (Local)
Copy
.env.example
to.env
$ cp .env.example .env
Start the Anvil node in one shell:
- Install Foundry & Anvil if you haven't done so already
- Add Foundry to your
$PATH
$ export PATH="$PATH:$HOME/.foundry/bin"
- Source your env e.g.
$ source ~/.zshrc
- Run
foundryup
to installAnvil
$ foundryup
- Start Anvil
$ pnpm anvil
Run the tests in a new shell:
$ pnpm test
See also
@turnkey/example-with-viem
: example using this package to create, sign, and broadcast a transaction on Sepolia (Ethereum testnet)@turnkey/http
: lower-level fully typed HTTP client for interacting with Turnkey API@turnkey/api-key-stamper
: package to authenticate to Turnkey using API key credentials@turnkey/webauthn-stamper
: package to authenticate to Turnkey using Webauthn/passkeys.
4 months ago
4 months ago
4 months ago
4 months ago
5 months ago
6 months ago
5 months ago
5 months ago
6 months ago
7 months ago
7 months ago
7 months ago
8 months ago
8 months ago
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
10 months ago
11 months ago
11 months ago
12 months ago
1 year ago
1 year ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago