Developer Portal

From zero to deployed
in 5 minutes.

QNTM is EVM-compatible. Your existing Solidity toolchain works as-is. The only thing that changes is the network is quantum-safe.

Testnet Network Config

Add this network to MetaMask or any EVM-compatible wallet. Chain ID 8765 does not conflict with any mainnet chain.

Network Name: QNTM Testnet
RPC URL: https://testnet.qntmchain.ai/rpc
Chain ID: 8765
Currency: QNTM
Explorer: https://testnet.qntmchain.ai/explorer
Faucet: https://testnet.qntmchain.ai/faucet
Get Testnet Tokens

Quickstart Paths

Pick your stack. All paths end at a deployed contract.

Path A

Smart Contract Developer (Solidity)

Install nothing new. Configure Hardhat or Foundry with the QNTM network. Request testnet tokens. Deploy with your existing scripts.

1 Configure Hardhat
hardhat.config.js
// No changes to your Solidity code required
module.exports = {
  networks: {
    qntmTestnet: {
      url: 'https://testnet.qntmchain.ai/rpc',
      chainId: 8765,
      accounts: [process.env.PRIVATE_KEY],
    },
  },
};

// Deploy
// npx hardhat run scripts/deploy.js --network qntmTestnet
2 Or configure Foundry
foundry.toml
[rpc_endpoints]
qntm_testnet = "https://testnet.qntmchain.ai/rpc"

# Deploy
# forge script Deploy --rpc-url qntm_testnet --broadcast --verify
3 Request testnet tokens and deploy
# Get tokens from the faucet
curl -X POST https://testnet.qntmchain.ai/faucet/drip \
-d '{"address":"0xYOUR_ADDRESS"}'
# Then deploy your contract
npx hardhat run scripts/deploy.js --network qntmTestnet

PQC Precompiles Reference

Call post-quantum cryptography directly from Solidity. These are protocol-native precompiles, not external contracts.

Address Function Input Output Gas
0x100 ML-DSA-65 Verify (bytes pubkey, bytes message, bytes signature) bool ~50,000
0x101 ML-KEM-768 Encapsulate (bytes pubkey) (bytes ciphertext, bytes sharedSecret) ~30,000
0x101 ML-KEM-768 Decapsulate (bytes privkey, bytes ciphertext) bytes sharedSecret ~30,000
QNTMPrecompiles.sol
// QNTM PQC Precompile Interface
interface IMLDSAVerify {
    function verify(
        bytes calldata publicKey,
        bytes calldata message,
        bytes calldata signature
    ) external view returns (bool);
}

// Usage: verify a post-quantum signature from within any Solidity contract
IMLDSAVerify constant MLDSA = IMLDSAVerify(0x0000000000000000000000000000000000000100);
bool valid = MLDSA.verify(pubKey, msgHash, sig);

Resources

Everything you need to go deeper.

Questions?

Our AI assistant Q can walk you through it. Ask about testnet setup, SDK usage, PQC precompiles, or anything else.