Aller au contenu principal

Guide CosmWasm

Le cœur TypeScript (@qorechain/sdk) inclut de fins wrappers typés au-dessus de @cosmjs/cosmwasm-stargate pour interroger et exécuter des contrats CosmWasm. Les lectures utilisent un client en lecture seule ; les changements d'état utilisent un client de signature.

Requêtes en lecture seule

Ouvrez un client CosmWasm en lecture seule à partir de votre instance createClient() — il se connecte via le point de terminaison RPC de consensus et est mémorisé sur le client.

import {
createClient,
queryContractSmart,
getContractInfo,
} from "@qorechain/sdk";

const client = createClient({
network: "testnet",
endpoints: { rpc: "https://rpc.testnet.example" },
});

const cw = await client.cosmwasm(); // read-only CosmWasmReadClient

// Contract metadata.
const info = await getContractInfo(cw, contractAddress);

// A smart query (the message shape is contract-specific).
const result = await queryContractSmart(cw, contractAddress, { token_info: {} });

Vous pouvez également construire un client de lecture directement avec createCosmWasmClient.

Signature : instancier, exécuter, téléverser

Pour les changements d'état, connectez un client de signature avec connectCosmWasmSigner (il prend un signataire hors ligne, du même type que celui produit par directSignerFromPrivateKey), puis utilisez les wrappers typés :

import {
connectCosmWasmSigner,
uploadCode,
instantiate,
execute,
} from "@qorechain/sdk";

const signingCw = await connectCosmWasmSigner(rpcUrl, signer);

// Upload Wasm bytecode -> a code id.
const { codeId } = await uploadCode(signingCw, sender, wasmBytes, fee);

// Instantiate a contract from a code id.
const { contractAddress } = await instantiate(
signingCw,
sender,
codeId,
{ /* init msg */ },
"label",
fee,
);

// Execute a message against a deployed contract.
const res = await execute(
signingCw,
sender,
contractAddress,
{ /* execute msg */ },
fee,
);

Les formes exactes des arguments suivent @cosmjs/cosmwasm-stargate ; le SDK ajoute les types typés ContractMsg, FeeInput, InstantiateOpts, CosmWasmReadClient et CosmWasmSigningClient.

Voir l'exemple cosmwasm-query pour un exemple de lecture exécutable.