Multi-VM (appels inter-VM)
Un rollup multi-VM exécute une couche d'exécution EVM capable d'appeler des contrats CosmWasm sur le runtime QoreChain Native (Wasm) via un précompilé inter-VM dédié. Le RDK fournit l'outillage TypeScript pour encoder ces appels ainsi qu'un modèle de structure (scaffold) pour démarrer.
Cet outillage couvre uniquement EVM → QoreChain Native (contrats CosmWasm). La SVM est un environnement d'exécution distinct et ne fait pas partie du précompilé inter-VM.
Depuis la version v0.4.2 du RDK, l'identifiant de l'option VM du runtime Wasm
est native (QoreChain Native) ; cosmwasm reste un alias hérité accepté,
et les deux correspondent à cosmwasm sur le réseau — la chaîne, l'explorateur
et l'ABI du précompilé inter-VM (executeCrossVMCall) restent inchangés.
Le précompilé
Le précompilé inter-VM est exposé à une adresse fixe :
import { CROSS_VM_PRECOMPILE } from "@qorechain/rdk";
console.log(CROSS_VM_PRECOMPILE); // 0x…0901
Encoder un appel inter-VM
encodeCrossVmCalldata construit les calldata que votre contrat EVM envoie au
précompilé pour invoquer un contrat CosmWasm. functionSelector calcule le
sélecteur de 4 octets pour une signature de fonction Solidity.
import { encodeCrossVmCalldata, functionSelector } from "@qorechain/rdk";
const calldata = encodeCrossVmCalldata({
contract: "qor1cosmwasmcontractaddress...",
msg: { transfer: { recipient: "qor1...", amount: "100" } },
});
const selector = functionSelector("callCosmwasm(string,bytes)");
Le côté Solidity
Depuis un contrat EVM, vous appelez l'adresse du précompilé avec les calldata
encodés. Le modèle multivm-rollup inclut un extrait contracts/CrossVmCaller.sol
de ce type :
// contracts/CrossVmCaller.sol
address constant CROSS_VM_PRECOMPILE = 0x0000000000000000000000000000000000000901;
function callCosmwasm(bytes memory calldata_) internal returns (bytes memory) {
(bool ok, bytes memory out) = CROSS_VM_PRECOMPILE.call(calldata_);
require(ok, "cross-vm call failed");
return out;
}
Générer un rollup multi-VM
Un nouveau modèle, multivm-rollup, génère un rollup EVM câblé pour appeler
CosmWasm, y compris l'extrait CrossVmCaller.sol :
npm create qorechain-rollup my-app -- --template multivm-rollup
Consultez Déployer un Rollup pour tous les modèles du générateur de structure.