Ana içeriğe geç

EVM Ön Derlemeleri

QoreChain, QoreChain EVM Engine'i protokol düzeyindeki özellikleri doğrudan Solidity'ye sunan altı özel ön derlenmiş contract ile genişletir. Bu ön derlemeler; kuantum sonrası kriptografiye, AI risk puanlamasına, VM'ler arası mesajlaşmaya ve PRISM konsensüs parametrelerine zincir üzerinde erişim sağlar.

not

Ön derlemeler, hem qorechain-vladi ana ağında (EVM zincir kimliği 9801, 7 Haziran 2026'dan beri v3.1.85 zincir sürümünde yayında) hem de qorechain-diana test ağında (EVM zincir kimliği 9800) mevcuttur. Tüm örnekler 8545 portundaki JSON-RPC uç noktasını kullanır.


Ön Derleme Adres Haritası

Ön DerlemeAdresTemel GazAçıklama
CrossVM Bridge0x000000000000000000000000000000000000090150,000Senkron VM'ler arası çağrılar (EVM'den CosmWasm'a)
PQC Verify0x0000000000000000000000000000000000000A0125,000 + 8/byteML-DSA-87 kuantum sonrası imzalarını doğrular
PQC Key Status0x0000000000000000000000000000000000000A022,500Bir hesabın kayıtlı bir PQC anahtarı olup olmadığını kontrol eder
AI Risk Score0x0000000000000000000000000000000000000B0150,000İşlem verileri için AI tarafından oluşturulan risk puanını alır
AI Anomaly Check0x0000000000000000000000000000000000000B0240,000Bir transferin anormal olarak işaretlenip işaretlenmediğini kontrol eder
PRISM Consensus Params0x0000000000000000000000000000000000000C011,500Mevcut PRISM ile ayarlanmış konsensüs parametrelerini okur

Solidity Arayüzleri

IQorePQC.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

interface IQorePQC {
/// @notice Verify an ML-DSA-87 (Dilithium-5) signature
/// @param pubkey The 2592-byte ML-DSA-87 public key
/// @param signature The 4627-byte ML-DSA-87 signature
/// @param message The original message bytes
/// @return valid True if the signature is valid
function pqcVerify(
bytes calldata pubkey,
bytes calldata signature,
bytes calldata message
) external view returns (bool valid);

/// @notice Check if an account has a registered PQC public key
/// @param account The Ethereum-style address to check
/// @return registered True if a PQC key is registered
/// @return algorithmId The PQC algorithm identifier (1 = ML-DSA-87)
/// @return pubkey The registered public key bytes (empty if not registered)
function pqcKeyStatus(address account)
external
view
returns (bool registered, uint8 algorithmId, bytes memory pubkey);
}

IQoreAI.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

interface IQoreAI {
/// @notice Get the AI-generated risk score for transaction data
/// @param txData The transaction data to evaluate
/// @return score Risk score in basis points (0-10000)
/// @return level Risk level: 0=SAFE, 1=LOW, 2=MEDIUM, 3=HIGH, 4=CRITICAL
function aiRiskScore(bytes calldata txData)
external
view
returns (uint256 score, uint8 level);

/// @notice Check if a transfer is flagged as anomalous
/// @param sender The sender address
/// @param amount The transfer amount in wei
/// @return anomalyScore The anomaly score (higher = more anomalous)
/// @return flagged True if the transfer exceeds the anomaly threshold
function aiAnomalyCheck(address sender, uint256 amount)
external
view
returns (uint256 anomalyScore, bool flagged);
}

IQoreConsensus.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

interface IQoreConsensus {
/// @notice Get current PRISM-tuned consensus parameters
/// @return blockTime Current target block time in milliseconds
/// @return baseGasPrice Current base gas price in wei
/// @return validatorSetSize Current active validator set size
/// @return epoch Current PRISM epoch number
function rlConsensusParams()
external
view
returns (
uint256 blockTime,
uint256 baseGasPrice,
uint256 validatorSetSize,
uint256 epoch
);
}

Kullanım Örnekleri

PQC Verify — Kuantum Sonrası Bir İmzayı Doğrulama

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import "./interfaces/IQorePQC.sol";

contract PQCVerifier {
IQorePQC constant PQC = IQorePQC(0x0000000000000000000000000000000000000A01);

/// @notice Verify a PQC signature and revert if invalid
function verifyOrRevert(
bytes calldata pubkey,
bytes calldata signature,
bytes calldata message
) external view {
bool valid = PQC.pqcVerify(pubkey, signature, message);
require(valid, "PQC signature verification failed");
}
}

Gaz maliyeti: 25,000 temel + giriş verisinin baytı başına 8 gaz. Tipik bir ML-DSA-87 doğrulaması için (2592 + 4627 + mesaj baytları), yaklaşık 80,000-90,000 gaz bekleyin.

PQC Key Status — Hesap Kaydını Kontrol Etme

contract PQCChecker {
IQorePQC constant PQC_STATUS = IQorePQC(0x0000000000000000000000000000000000000A02);

function requirePQCKey(address account) external view {
(bool registered, , ) = PQC_STATUS.pqcKeyStatus(account);
require(registered, "Account must have a registered PQC key");
}
}

Gaz maliyeti: 2,500 sabit.

AI Risk Score — İşlem Riskini Değerlendirme

import "./interfaces/IQoreAI.sol";

contract RiskGate {
IQoreAI constant AI = IQoreAI(0x0000000000000000000000000000000000000B01);

uint8 constant MAX_ALLOWED_RISK = 2; // Allow up to MEDIUM

function executeIfSafe(bytes calldata txData) external {
(uint256 score, uint8 level) = AI.aiRiskScore(txData);
require(level <= MAX_ALLOWED_RISK, "Risk level too high");

// Proceed with execution...
}
}

Risk seviyeleri:

SeviyeDeğerPuan Aralığı (bps)
SAFE00 - 1000
LOW11001 - 3000
MEDIUM23001 - 6000
HIGH36001 - 8500
CRITICAL48501 - 10000

Gaz maliyeti: 50,000 sabit.

AI Anomaly Check — Şüpheli Transferleri İşaretleme

contract AnomalyGuard {
IQoreAI constant AI = IQoreAI(0x0000000000000000000000000000000000000B02);

function safeTransfer(address sender, uint256 amount) external view {
(uint256 anomalyScore, bool flagged) = AI.aiAnomalyCheck(sender, amount);

if (flagged) {
revert("Transfer flagged as anomalous");
}
}
}

Gaz maliyeti: 40,000 sabit.

PRISM Consensus Params — Konsensüs Durumunu Okuma

contract ConsensusReader {
IQoreConsensus constant RL = IQoreConsensus(
0x0000000000000000000000000000000000000C01
);

function getBlockTime() external view returns (uint256) {
(uint256 blockTime, , , ) = RL.rlConsensusParams();
return blockTime;
}

function getCurrentEpoch() external view returns (uint256) {
(, , , uint256 epoch) = RL.rlConsensusParams();
return epoch;
}
}

Gaz maliyeti: 1,500 sabit.

CrossVM Bridge — EVM'den CosmWasm Çağırma

interface ICrossVM {
function call(bytes calldata payload) external returns (bytes memory);
}

contract CrossVMExample {
ICrossVM constant CROSSVM = ICrossVM(
0x0000000000000000000000000000000000000901
);

function callCosmWasm(
string memory contractAddr,
string memory executeMsg
) external returns (bytes memory) {
bytes memory payload = abi.encode(contractAddr, executeMsg, uint256(0));
return CROSSVM.call(payload);
}
}

Gaz maliyeti: 50,000 temel + hedef sözleşme yürütme maliyeti. Ayrıntılar için VM'ler Arası Birlikte Çalışabilirlik bölümüne bakın.


Arayüz Dosyası Konumları

Solidity arayüz dosyaları, doğrudan içe aktarma için depoda mevcuttur:

contracts/
interfaces/
IQorePQC.sol
IQoreAI.sol
IQoreConsensus.sol
ICrossVM.sol

Bunları Hardhat veya Foundry projenize kurun:

# Copy interfaces to your project
cp -r contracts/interfaces/ my-project/contracts/interfaces/

Veya bunlara Solidity dosyalarınızda içe aktarma yolu aracılığıyla başvurun:

import "./interfaces/IQorePQC.sol";
import "./interfaces/IQoreAI.sol";
import "./interfaces/IQoreConsensus.sol";

Sonraki Adımlar