Dezvoltare EVM
QoreChain rulează un mediu de execuție complet compatibil cu EVM pe QoreChain EVM Engine, permițându-vă să implementați și să interacționați cu contracte inteligente Solidity folosind uneltele obișnuite. Modulul EVM expune o interfață JSON-RPC pe portul 8545 (WebSocket pe 8546) care suportă fluxurile de lucru standard de dezvoltare Ethereum.
Exemplele de mai jos vizează rețeaua mainnet qorechain-vladi (chain ID EVM 9801), activă din 7 iunie 2026, rulând versiunea de chain v3.1.97. Pentru testnet-ul qorechain-diana, folosiți chain ID EVM 9800.
Endpoint JSON-RPC
| Proprietate | Valoare |
|---|---|
| URL implicit | http://localhost:8545 |
| URL WebSocket | ws://localhost:8546 |
| Spații de nume suportate | eth_, web3_, net_, txpool_, qor_ |
| Chain ID (mainnet) | 9801 (qorechain-vladi) |
| Chain ID (testnet) | 9800 (qorechain-diana) |
| Simbol monedă | QOR |
Spațiul de nume qor_ oferă metode specifice QoreChain. Vezi Spațiul de nume personalizat mai jos.
Configurare portofel (MetaMask)
Adăugați QoreChain ca rețea personalizată în MetaMask:
| Câmp | Valoare Mainnet | Valoare Testnet |
|---|---|---|
| Nume rețea | QoreChain (qorechain-vladi) | QoreChain Diana |
| URL RPC | http://localhost:8545 | http://localhost:8545 |
| Chain ID | 9801 | 9800 |
| Simbol monedă | QOR | QOR |
| URL explorator blocuri | (folosiți exploratorul oficial de mainnet) | (lăsați necompletat pentru testnet local) |
Hardhat
Instalați Hardhat și configurați fișierul hardhat.config.js:
require("@nomicfoundation/hardhat-toolbox");
module.exports = {
solidity: "0.8.24",
networks: {
qorechain: {
url: "http://localhost:8545",
accounts: ["0xYOUR_PRIVATE_KEY_HEX"],
chainId: 9801, // mainnet qorechain-vladi (use 9800 for qorechain-diana testnet)
},
},
};
Implementați un contract:
npx hardhat run scripts/deploy.js --network qorechain
Rulați teste pe EVM-ul QoreChain:
npx hardhat test --network qorechain
Foundry
Creați și implementați un contract cu Foundry:
# Create a new project
forge init my-project && cd my-project
# Build
forge build
# Deploy
forge create --rpc-url http://localhost:8545 \
--private-key 0xYOUR_PRIVATE_KEY_HEX \
src/MyContract.sol:MyContract
# Interact
cast call <contract-address> "myFunction()" --rpc-url http://localhost:8545
cast send <contract-address> "setValue(uint256)" 42 \
--rpc-url http://localhost:8545 \
--private-key 0xYOUR_PRIVATE_KEY_HEX
Ethers.js
import { ethers } from "ethers";
// Connect to QoreChain EVM
const provider = new ethers.JsonRpcProvider("http://localhost:8545");
// Get chain info
const network = await provider.getNetwork();
console.log("Chain ID:", network.chainId); // 9801n on mainnet (9800n on testnet)
// Read balance
const balance = await provider.getBalance("0xYourAddress");
console.log("Balance:", ethers.formatEther(balance), "QOR");
// Send transaction
const wallet = new ethers.Wallet("0xYOUR_PRIVATE_KEY_HEX", provider);
const tx = await wallet.sendTransaction({
to: "0xRecipientAddress",
value: ethers.parseEther("1.0"),
});
await tx.wait();
Modelul de gas
QoreChain folosește un model de taxă de bază dinamică EIP-1559 pentru tranzacțiile EVM:
- Taxa de bază se ajustează per bloc, în funcție de gradul de utilizare
- Utilizatorii pot seta
maxFeePerGasșimaxPriorityFeePerGas - Taxele de prioritate merg către propunătorul blocului
Puntea de denominare
Tokenul nativ QOR are 6 zecimale (uqor), în timp ce EVM-ul așteaptă 18 zecimale. Modulul x/precisebank gestionează conversia fără probleme:
| Context | Denominare | Zecimale | Exemplu |
|---|---|---|---|
| Chain nativ | uqor | 6 | 1000000 uqor = 1 QOR |
| EVM | wei | 18 | 1e18 wei = 1 QOR |
Această conversie este transparentă — când verificați un sold prin eth_getBalance, răspunsul este denominat în wei cu 18 zecimale. Când același cont este interogat prin modulul nativ de bank, soldul apare în uqor cu 6 zecimale.
Perechi de tokenuri ERC-20
Modulul x/erc20 oferă înregistrarea automată a perechilor de tokenuri între denominările native Cosmos SDK și contractele ERC-20:
- Tokenurile native pot fi folosite în cadrul contractelor EVM ca ERC-20
- Tokenurile ERC-20 implementate pe EVM pot fi convertite în denominări native
- Conversia este bidirecțională și gestionată la nivel de protocol
# Register a new token pair (governance proposal)
qorechaind tx erc20 register-coin <denom> --from mykey
# Convert native tokens to ERC-20
qorechaind tx erc20 convert-coin 1000000uqor --from mykey
# Convert ERC-20 back to native
qorechaind tx erc20 convert-erc20 <contract-addr> 1000000000000000000 --from mykey
Compatibilitate PQC și EVM
Tranzacțiile EVM folosesc semnături ECDSA clasice (secp256k1) pentru compatibilitate completă cu uneltele, portofelele și bibliotecile Ethereum existente. Acest lucru asigură că MetaMask, Hardhat, Foundry, ethers.js și toate uneltele EVM standard funcționează fără modificări.
Pentru securitate post-cuantică în cadrul EVM:
- Folosiți precompilatul PQC Verify (
0x0000...0A01) pentru a verifica pe chain semnături ML-DSA-87 din Solidity. Vezi Precompilate EVM. - Mesajele cross-VM de la EVM către CosmWasm sau SVM pot fi semnate PQC la nivelul tranzacției Cosmos SDK.
- Conturile pot înregistra opțional chei publice PQC prin
x/pqcpentru securitate hibridă.
Spațiul de nume personalizat qor_
QoreChain extinde JSON-RPC cu un spațiu de nume qor_ pentru interogări specifice chain-ului:
| Metodă | Descriere |
|---|---|
qor_getPQCKeyStatus | Verifică dacă un cont are o cheie publică PQC înregistrată |
qor_getAIStats | Recuperează statistici ale motorului AI (număr de anomalii, distribuția riscului) |
qor_getCrossVMMessage | Interoghează starea unui mesaj cross-VM după ID |
qor_getPoolClassification | Obține clasificarea pool-ului de validatori (RPoS/DPoS/PoS) |
qor_getReputationScore | Interoghează scorul de reputație al unui validator |
qor_getAbstractAccount | Recuperează configurația contului abstract |
Exemplu cu curl:
curl -X POST http://localhost:8545 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "qor_getPQCKeyStatus",
"params": ["0xYourAddress"],
"id": 1
}'
Pașii următori
- Precompilate EVM — Accesați funcțiile PQC, AI și cross-VM din Solidity
- Interoperabilitate Cross-VM — Apelați contracte CosmWasm și SVM din EVM
- Abstractizarea contului — Conturi programabile cu chei de sesiune