# FAQ

Quick answers to the most common questions about Armchain. If your question isn't here, check the [Glossary](/resources/glossary.md) for terminology or visit the community Discord.

## General

### What is Armchain?

Armchain is a Layer 1 blockchain combining **EVM compatibility** with **post-quantum cryptography**. It uses Lachesis aBFT consensus for instant finality and ML-DSA44 (FIPS 204) for quantum-resistant signing.

### How is Armchain different from Ethereum?

| Feature          | Ethereum                | Armchain                    |
| ---------------- | ----------------------- | --------------------------- |
| Consensus        | Proof of Stake (Gasper) | Lachesis aBFT (DAG-based)   |
| Finality         | \~12 minutes            | **Instant**                 |
| Cryptography     | ECDSA (secp256k1)       | **ML-DSA44** (post-quantum) |
| Transaction Type | 0, 1, 2                 | **3** (PQC only)            |
| EVM              | Yes                     | Yes (London)                |

### Is Armchain EVM compatible?

Yes. Standard Solidity and Vyper contracts deploy on Armchain without modification. All EVM opcodes, precompiles, and ABI encoding work identically.

### What is the native token?

**ARM** is used for gas fees, validator staking, and governance.

***

## Post-Quantum Cryptography

### Why does Armchain use post-quantum cryptography?

Current blockchains use ECDSA, which can be broken by a sufficiently powerful quantum computer using Shor's algorithm. Armchain uses ML-DSA44 (a NIST-standardized post-quantum algorithm) to ensure that transactions and keys remain secure even in a post-quantum world.

### What is ML-DSA44?

ML-DSA44 (Module-Lattice Digital Signature Algorithm, Level 2) is a digital signature scheme standardized by NIST in FIPS 204. It provides \~128-bit security against both classical and quantum computers.

### Are quantum computers a real threat today?

Not yet for breaking cryptography. However, the **"harvest now, decrypt later"** attack is a current concern: adversaries store signed data today for later decryption when quantum computers become available. Armchain provides protection from day one.

### Why are transactions larger on Armchain?

ML-DSA44 signatures are inherently larger than ECDSA (3,732 bytes vs 65 bytes). The public key must also be included in every transaction (1,312 bytes) because ML-DSA44 does not support public key recovery. This results in \~3,930-byte simple transfers vs \~110 bytes with ECDSA.

### Can I use my Ethereum private key on Armchain?

No. ECDSA private keys are incompatible with Armchain. Generate ML-DSA44 keys using the Armchain Wallet or `@armchain-ethersv6/ethers`.

***

## Development

### Can I use Hardhat with Armchain?

Yes. Install `@armchain-ethersv6/ethers` and configure Hardhat with Armchain's RPC URL and chain ID. See [Quickstart](/get-started/quickstart.md).

### Can I use Foundry with Armchain?

Foundry can be used for compilation and read-only interactions (`cast call`). Deployment and write transactions require ML-DSA44 signing, which Foundry does not natively support. Use Hardhat or the Ethers SDK instead. See [Smart Contracts Overview](/developers/overview.md).

### What Solidity version should I use?

Armchain supports Solidity `^0.8.x`. Recommended: `0.8.24` or later.

### How do I verify contracts on the explorer?

Use the Armchain Explorer's contract verification tool. Submit source code, compiler version, and constructor arguments. See [Explorer](/tools/explorer.md).

### What is the gas limit for blocks?

The maximum block gas is **20,500,000**. Minimum gas price is **1 Gwei**.

***

## Wallet

### How do I create a wallet?

Install the Armchain Wallet browser extension, or create a wallet programmatically:

```javascript
import { ethers } from "@armchain-ethersv6/ethers";
const wallet = ethers.Wallet.createRandom();
console.log(wallet.address);
```

### What derivation path does Armchain use?

```
m/44'/65536'/account'/0/address'
```

All indices are hardened. Coin type is `65536`.

### How do I back up my wallet?

Write down your **12-word recovery phrase** and store it offline in a secure location. This phrase recovers all derived accounts.

***

## Node Operations

### How do I run a validator?

Build the `opera` binary, generate ML-DSA44 validator keys, stake ARM, and register. See [Running a Validator](https://github.com/khizarbakhtiar1/dev-docs/blob/main/node-operators/running-a-validator.md).

### What ports need to be open?

| Port  | Protocol | Purpose                                  |
| ----- | -------- | ---------------------------------------- |
| 5050  | TCP/UDP  | P2P networking                           |
| 18545 | TCP      | HTTP JSON-RPC (optional, for API access) |
| 18546 | TCP      | WebSocket JSON-RPC (optional)            |

### How do I set up a local development network?

Use fakenet mode:

```bash
armnode --fakenet 1/1
```

See [Fakenet Guide](/node-operators/fakenet.md).

***

## Troubleshooting

### My transaction is failing with "transaction type not supported"

Ensure you're using `type: 3` in all transactions. Armchain only supports Type 3 (PQC) transactions.

### My transaction is failing with "invalid signature"

Ensure you're using ML-DSA44 keys (not ECDSA). Generate new keys with `ethers.Wallet.createRandom()` from `@armchain-ethersv6/ethers`.

### I can't connect to the node

* Check that the node is running and fully synced
* Verify the RPC URL and port (default: 18545 for HTTP)
* Ensure the RPC endpoint is enabled (`--http --http.addr 0.0.0.0 --http.port 18545`)
* Check firewall rules

### My dApp doesn't detect the Armchain Wallet

* Ensure the extension is installed and enabled
* Refresh the page
* Check that your code listens for `window.ethereum`

### The explorer shows "pending" for my transaction

Armchain has instant finality; transactions confirm in seconds. If a transaction stays pending:

* Verify the gas price is at least 1 Gwei
* Check that the nonce is correct
* Ensure the sender has sufficient ARM balance


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.armchain.org/resources/faq.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
