This guide describes a flow that works today. Path B reuses the existing transaction endpoints (
POST /v1/transactions with CONTRACT_CALL) and the Qustody approval + post-quantum signing pipeline.Prerequisites
- A Solidity toolchain (
solc, Foundry, or Hardhat). - A Qustody tenant and an API key with
transactions:createpermission. - A vault account with native currency for gas.
- An approval policy that requires approval for
CONTRACT_CALLdeployments.
Step 1 — Compile Solidity
build/MyToken.bin (deployment bytecode) and build/MyToken.abi (ABI).
Step 2 — Prepare the deployment payload
ethers.js:
Step 3 — Submit the deployment transaction
PENDING_AUTHORIZATION.
Step 4 — Approve
Anapprover calls:
PENDING_SIGNATURE.
Step 5 — Post-quantum signing
If your signer is configured to sign automatically (gRPC or remote modes), the transaction continues. Otherwise, fetch the signing payload and submit the signature:Step 6 — Read the contract address
After confirmation:receipt.contractAddress. Save it for later calls.
Step 7 — Call a function
ABI-encode the call data and submit a contract call:Step 8 — Verify state via RPC
Use Quantum Chain RPC to read state:Caveats
- The QVM removes the
ecrecoverprecompile. Solidity that depends on it will revert. Use the post-quantum precompile at0x0binstead — see QVM vs EVM. - BIP-32 / BIP-44 derivation is not applicable to post-quantum keys.
- Treat upgrades as deployments — the upgrade transaction is its own privileged operation.