Ana içeriğe geç

EVM Geliştirme

QoreChain, QoreChain EVM Engine üzerinde tamamen EVM uyumlu bir yürütme ortamı çalıştırır; bu sayede tanıdık araçları kullanarak Solidity akıllı sözleşmelerini dağıtabilir ve onlarla etkileşime geçebilirsiniz. EVM modülü, standart Ethereum geliştirme iş akışlarını destekleyen bir JSON-RPC arayüzünü 8545 portunda (WebSocket için 8546) sunar.

not

Aşağıdaki örnekler, 7 Haziran 2026'dan beri v3.1.85 zincir sürümünü çalıştırarak yayında olan qorechain-vladi ana ağını (EVM zincir kimliği 9801) hedefler. qorechain-diana test ağı için EVM zincir kimliği 9800 kullanın.


JSON-RPC Uç Noktası

ÖzellikDeğer
Varsayılan URLhttp://localhost:8545
WebSocket URLws://localhost:8546
Desteklenen ad alanlarıeth_, web3_, net_, txpool_, qor_
Zincir Kimliği (ana ağ)9801 (qorechain-vladi)
Zincir Kimliği (test ağı)9800 (qorechain-diana)
Para birimi sembolüQOR

qor_ ad alanı, QoreChain'e özgü yöntemler sağlar. Aşağıdaki Özel Ad Alanı bölümüne bakın.


Cüzdan Yapılandırması (MetaMask)

QoreChain'i MetaMask'te özel bir ağ olarak ekleyin:

AlanAna Ağ DeğeriTest Ağı Değeri
Ağ AdıQoreChain (qorechain-vladi)QoreChain Diana
RPC URLhttp://localhost:8545http://localhost:8545
Zincir Kimliği98019800
Para Birimi SembolüQORQOR
Blok Gezgini URL(resmi ana ağ gezginini kullanın)(yerel test ağı için boş bırakın)

Hardhat

Hardhat'i kurun ve hardhat.config.js dosyanızı yapılandırın:

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)
},
},
};

Bir sözleşmeyi dağıtın:

npx hardhat run scripts/deploy.js --network qorechain

QoreChain EVM'ye karşı testleri çalıştırın:

npx hardhat test --network qorechain

Foundry

Foundry ile bir sözleşme oluşturun ve dağıtın:

# 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();

Gaz Modeli

QoreChain, EVM işlemleri için EIP-1559 dinamik temel ücret modeli kullanır:

  • Temel ücret, kullanıma göre blok başına ayarlanır
  • Kullanıcılar maxFeePerGas ve maxPriorityFeePerGas değerlerini belirleyebilir
  • Öncelik ücretleri blok önericisine gider

Birim Köprüsü

Yerel QOR jetonu 6 ondalık basamağa (uqor) sahipken, EVM 18 ondalık basamak bekler. x/precisebank modülü sorunsuz dönüşümü yönetir:

BağlamBirimOndalıkÖrnek
Yerel zinciruqor61000000 uqor = 1 QOR
EVMwei181e18 wei = 1 QOR

Bu dönüşüm şeffaftır — bir bakiyeyi eth_getBalance aracılığıyla kontrol ettiğinizde, yanıt 18 ondalıklı wei cinsindendir. Aynı hesap yerel bank modülü aracılığıyla sorgulandığında, bakiye 6 ondalıklı uqor cinsinde görünür.


ERC-20 Jeton Çiftleri

x/erc20 modülü, yerel Cosmos SDK birimleri ile ERC-20 sözleşmeleri arasında jeton çiftlerinin otomatik kaydını sağlar:

  • Yerel jetonlar, EVM sözleşmeleri içinde ERC-20 olarak kullanılabilir
  • EVM üzerinde dağıtılan ERC-20 jetonları yerel birimlere dönüştürülebilir
  • Dönüşüm çift yönlüdür ve protokol düzeyinde yönetilir
# 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

PQC ve EVM Uyumluluğu

EVM işlemleri, mevcut Ethereum araçları, cüzdanları ve kütüphaneleriyle tam uyumluluk için klasik ECDSA (secp256k1) imzaları kullanır. Bu, MetaMask, Hardhat, Foundry, ethers.js ve tüm standart EVM araçlarının değişiklik yapılmadan çalışmasını sağlar.

EVM içinde kuantum sonrası güvenlik için:

  • Solidity'den zincir üzerinde ML-DSA-87 imzalarını doğrulamak için PQC Verify ön derleme contract'ını (0x0000...0A01) kullanın. EVM Ön Derlemeleri bölümüne bakın.
  • EVM'den CosmWasm veya SVM'ye gönderilen VM'ler arası mesajlar, Cosmos SDK işlem katmanında PQC ile imzalanabilir.
  • Hesaplar, hibrit güvenlik için isteğe bağlı olarak x/pqc aracılığıyla PQC açık anahtarları kaydedebilir.

Özel qor_ Ad Alanı

QoreChain, JSON-RPC'yi zincire özgü sorgular için bir qor_ ad alanıyla genişletir:

YöntemAçıklama
qor_getPQCKeyStatusBir hesabın kayıtlı bir PQC açık anahtarı olup olmadığını kontrol eder
qor_getAIStatsAI motoru istatistiklerini alır (anomali sayıları, risk dağılımı)
qor_getCrossVMMessageVM'ler arası bir mesajın durumunu kimliğine göre sorgular
qor_getPoolClassificationDoğrulayıcı havuz sınıflandırmasını alır (RPoS/DPoS/PoS)
qor_getReputationScoreBir doğrulayıcının itibar puanını sorgular
qor_getAbstractAccountSoyut hesap yapılandırmasını alır

curl ile örnek:

curl -X POST http://localhost:8545 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "qor_getPQCKeyStatus",
"params": ["0xYourAddress"],
"id": 1
}'

Sonraki Adımlar