بنقرة واحدة
mvx-sdk-js-contracts
Smart contract operations for MultiversX TypeScript/JavaScript SDK.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Smart contract operations for MultiversX TypeScript/JavaScript SDK.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Guidelines for establishing context before an audit.
Perform a comprehensive on-chain security audit of a deployed MultiversX smart contract. Use when reviewing a contract's security posture, permissions, state, and economic safety without source code.
Read on-chain state in MultiversX smart contracts. Use when accessing caller info, account balances, block timestamps, ESDT token metadata, local roles, code metadata, or any data from self.blockchain().
Gas-optimized cache patterns for MultiversX smart contracts using Drop-based write-back caches. Use when building contracts that read/write multiple storage values per transaction, DeFi protocols, or any gas-sensitive contract.
Identify ambiguous requirements and ask targeted clarifying questions for MultiversX development. Use when user requests are vague, missing technical constraints, or have conflicting requirements.
Comprehensive code analysis toolkit for MultiversX smart contracts. Covers differential review (version comparison, upgrade safety), fix verification (validate patches, regression testing), and variant analysis (find similar bugs across codebase). Use when reviewing PRs, verifying security patches, or hunting for bug variants.
| name | mvx-sdk-js-contracts |
| description | Smart contract operations for MultiversX TypeScript/JavaScript SDK. |
This skill covers ABI loading, deployments, calls, queries, and parsing.
import { Abi } from "@multiversx/sdk-core";
import { promises } from "fs";
// From file
const abiJson = await promises.readFile("contract.abi.json", "utf8");
const abi = Abi.create(JSON.parse(abiJson));
// From URL
const response = await axios.get("https://example.com/contract.abi.json");
const abi = Abi.create(response.data);
// Manual construction
const abi = Abi.create({
endpoints: [{
name: "add",
inputs: [{ type: "BigUint" }],
outputs: [{ type: "BigUint" }]
}]
});
const controller = entrypoint.createSmartContractController(abi);
const bytecode = await promises.readFile("contract.wasm");
const tx = await controller.createTransactionForDeploy(account, nonce, {
bytecode: bytecode,
gasLimit: 60_000_000n,
arguments: [42] // Constructor args (plain values with ABI)
});
const txHash = await entrypoint.sendTransaction(tx);
const outcome = await controller.awaitCompletedDeploy(txHash);
const contractAddress = outcome[0].contractAddress;
// With ABI - use plain values
const tx = await controller.createTransactionForExecute(account, nonce, {
contract: contractAddress,
function: "add",
arguments: [42],
gasLimit: 5_000_000n
});
// Without ABI - use TypedValue
import { U32Value, BigUintValue } from "@multiversx/sdk-core";
const tx = await controller.createTransactionForExecute(account, nonce, {
contract: contractAddress,
function: "add",
arguments: [new U32Value(42)],
gasLimit: 5_000_000n
});
const tx = await controller.createTransactionForExecute(account, nonce, {
contract: contractAddress,
function: "deposit",
arguments: [],
gasLimit: 10_000_000n,
nativeTransferAmount: 1_000_000_000_000_000_000n, // 1 EGLD
tokenTransfers: [
TokenTransfer.fungibleFromBigInteger("TOKEN-abc123", 1000n)
]
});
const controller = entrypoint.createSmartContractController(abi);
const result = await controller.queryContract({
contract: contractAddress,
function: "getSum",
arguments: []
});
// Parsed output (with ABI)
const sum = result[0]; // Automatically typed
const newBytecode = await promises.readFile("contract_v2.wasm");
const tx = await controller.createTransactionForUpgrade(account, nonce, {
contract: contractAddress,
bytecode: newBytecode,
gasLimit: 60_000_000n,
arguments: []
});
const tx = await controller.createTransactionForExecute(account, nonce, {
contract: contractAddress,
function: "endpoint",
arguments: [],
gasLimit: 5_050_000n, // +50,000 for relayed
relayer: relayerAddress
});
tx.relayerSignature = await relayer.signTransaction(tx);
simulateTransaction() before real callsawaitCompletedExecute() for return values