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.