JSON API
Contract Function Call
Method:
stacks_contractCall
Request a Stacks contract function call.
Parameters:
pubkey
required - string
The stacks address of sender.
contractAddress
required - string
The STX address of the contract.
contractName
required - string
The name of the contract.
functionName
required - string
The name of the contract function to be called.
functionArgs
required - Array<ClarityValue>
An array of function arguments of ClarityValue type.
postConditions
optional - Array<PostCondition>
An array of post conditions to attach to the transaction.
postConditionMode
optional - PostConditionMode
The post condition mode to use. Defaults to PostConditionMode.Allow
.
anchorMode
optional - AnchorMode
The anchor mode to use. Defaults to AnchorMode.Any
.
nonce
optional - BigInt
Custom nonce to set for the transaction. Default value is the next nonce for the address.
version
optional - string
Version of parameter format.
sponsored
optional - boolean
to create a sponsored transaction
Example:
const result = await client.request({
chainId: "stacks:1",
topic: session.topic, // Get this from the session approval
request: {
method: "stacks_contractCall",
params: {
pubkey: address,
postConditions,
contractAddress: "SP1H1733V5MZ3SZ9XRW9FKYGEZT0JDGEB8Y634C7R",
contractName: "my_contract_name",
functionName: "transfer",
functionArgs: [
uintCV("123"),
standardPrincipalCV("SP1BEEN4WP9YT42PR70FYSG6C3WFG54QJDEN0KWR"),
standardPrincipalCV("SP3F7GQ48JY59521DZEE6KABHBF4Q33PEYJ823ZXQ"),
noneCV(),
],
postConditionMode: PostConditionMode.Deny,
version: "1",
sponsored: true
},
},
});
const txId = result.txId;
STX Token Transfer
Method:
stacks_stxTransfer
Request a transfer of STX tokens.
Parameters:
pubkey
required - string
The stacks address of sender.
recipient
required - string
The STX address of the recipient.
amount
required - BigInt
Amount of STX tokens to transfer in microstacks.
memo
optional - string
Memo string to be included with the transfer transaction.
postConditions
optional - Array<PostCondition>
An array of post conditions to attach to the transaction.
postConditionMode
optional - PostConditionMode
The post condition mode to use. Defaults to PostConditionMode.Allow
.
version
optional - string
Version of parameter format.
Example:
const result = await client.request({
chainId: chain,
topic: session.topic,
request: {
method: "stacks_stxTransfer",
params: {
pubkey: address,
recipient: "SP3F7GQ48JY59521DZEE6KABHBF4Q33PEYJ823ZXQ",
amount: BigInt(1000),
},
},
});
const txId = result.txId;
Message Signing
Method:
stacks_signMessage
Request signing of an arbitrary message.
Parameters:
pubkey
required - string
The stacks address of sender.
message
required - string
Message payload to be signed.
version
optional - string
Version of parameter format.
Example:
const message = "loremipsum";
const result = await client.request({
chainId: chain,
topic: session.topic,
request: {
method: "stacks_signMessage",
params: {
pubkey: address,
message: message,
},
},
});
const publicKey = result.publicKey;
const signature = result.signature;
const valid = verifyMessageSignatureRsv({
message,
publicKey,
signature,
});
Structured Message Signing
Method:
stacks_signMessage
Request signing of structured ClarityValue message
Parameters:
pubkey
required - string
The stacks address of sender.
message
required - Buffer
Message to be signed.
domain
required - string
domain of be signed
version
optional - string
Version of parameter format.
Example:
const handleStructuredMessage = async () => {
const address = session.namespaces.stacks.accounts[0].split(":")[2];
const domain = "0c0000000308636861696e2d69640100000000000000000000000000000001046e616d650d00000011414c4558204232302050726f746f636f6c0776657273696f6e0d00000005302e302e31";
try {
const structuredMessage = serializeCV(structuredData);
const result = await client.request({
chainId: chain,
topic: session.topic,
request: {
method: "stacks_signMessage",
params: {
pubkey: address, //XXX: This one is required
message: structuredMessage,
domain
},
},
});
setResult({
method: "stacks_signMessage",
address,
result,
});
} catch (error) {
throw new Error(error);
}
};
Contract Deploy
Method:
stacks_contractDeploy
Request a Clarity contract deployment
Parameters:
pubkey
required - string
The stacks address of sender.
contractName
required - string
The name the contract is to be deployed as.
codeBody
required - string
Body of the contract source code.
postConditions
optional - Array<PostCondition>
An array of post conditions to attach to the transaction.
postConditionMode
optional - PostConditionMode
The post condition mode to use. Defaults to PostConditionMode.Allow
.
version
optional - string
Version of parameter format.
Example:
const codeBody = `
;; hello-world
(define-read-only (echo-number (val int)) (ok val))
(define-public (say-hi) (ok "hello world"))
`
const result = await client.request({
chainId: chain,
topic: session.topic,
request: {
method: "stacks_contractDeploy",
params: {
pubkey: address,
contractName: "my_contract_name_1",
codeBody: codeBody,
postConditionMode: PostConditionMode.Allow,
},
},
});
const txId = result.txId;
Last updated