makeContractCall

Constructs and signs a smart contract function call transaction. Calls a public function on a deployed Clarity smart contract.


Usage

import {
  makeContractCall,
  Cl,
  PostConditionMode,
} from '@stacks/transactions';

const transaction = await makeContractCall({
  contractAddress: 'ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM',
  contractName: 'my-contract',
  functionName: 'transfer',
  functionArgs: [
    Cl.uint(1000),
    Cl.standardPrincipal('ST1SJ3DTE5DN7X54YDH5D64R3BCB6A2AG2ZQ8YPD5'),
  ],
  senderKey: 'b244296d5907de9864c0b0d51f98a13c52890be0404e83f273144004b81874603',
  network: 'testnet',
  postConditionMode: PostConditionMode.Deny,
  fee: 10000n,
  nonce: 0n,
});

const serializedTx = transaction.serialize();

Notes

  • The functionArgs must match the types expected by the Clarity function.

  • Use the Cl namespace helpers (e.g. Cl.uint, Cl.standardPrincipal) to construct Clarity values.

  • If the contract's ABI is needed for validation, it is fetched automatically unless validateWithAbi is set to false.

  • If fee is omitted, the fee is estimated automatically.

  • If nonce is omitted, the nonce is fetched automatically.

Reference Linkarrow-up-right


Signature


Returns

Promise<StacksTransactionWire>

A promise that resolves to a signed StacksTransactionWire object, ready to be broadcast.


Parameters

txOptions (required)

  • Type: SignedContractCallOptions | SignedMultiSigContractCallOptions

For single-sig, provide senderKey. For multi-sig, provide publicKeys, numSignatures, and signerKeys.

Last updated

Was this helpful?