Ana içeriğe geç

EVM Geliştirme

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

not

Aşağıdaki örnekler, 7 Haziran 2026'dan beri canlı olan ve v3.1.97 zincir sürümünü çalıştıran qorechain-vladi ana ağını (EVM zincir kimliği 9801) hedef almaktadır. 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'e ö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'si(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();

Gas Modeli

QoreChain, EVM işlemleri için EIP-1559 dinamik taban ücreti modelini kullanır:

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

Birim Köprüsü

Yerel QOR token'ının 6 ondalık basamağı vardır (uqor), EVM ise 18 ondalık basamak bekler. x/precisebank modülü bu dönüşümü sorunsuz şekilde yönetir:

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

Bu dönüşüm şeffaftır — eth_getBalance ile bir bakiyeyi kontrol ettiğinizde yanıt 18 ondalıklı wei cinsinden gelir. Aynı hesap yerel banka modülü üzerinden sorgulandığında bakiye 6 ondalıklı uqor cinsinden görünür.


ERC-20 Token Çiftleri

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

  • Yerel token'lar EVM sözleşmeleri içinde ERC-20 olarak kullanılabilir
  • EVM üzerinde dağıtılan ERC-20 token'ları yerel birimlere dönüştürülebilir
  • Dönüşüm çift yönlüdür ve protokol seviyesinde gerçekleştirilir
# 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ını 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 üzere PQC Verify precompile'ını (0x0000...0A01) kullanın. Bkz. EVM Precompile'ları.
  • EVM'den CosmWasm veya SVM'ye giden 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 üzerinden PQC genel anahtarları kaydedebilir.

Özel qor_ Ad Alanı

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

YöntemAçıklama
qor_getPQCKeyStatusBir hesabın kayıtlı bir PQC genel anahtarı olup olmadığını kontrol eder
qor_getAIStatsYapay zeka motoru istatistiklerini alır (anomali sayıları, risk dağılımı)
qor_getCrossVMMessageBir VM'ler arası mesajın durumunu kimliğine göre sorgular
qor_getPoolClassificationDoğrulayıcı havuzu 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