Stacks Blockchain Actions

action

sign_transaction

The stacks::sign_transaction action signs an encoded transaction payload with the specified signer.

Inputs

  • Name
    description
    Type
    optional
    Description

    Description of the transaction

  • Name
    transaction_payload_bytes
    Type
    required
    Description

    The transaction payload bytes, encoded as a clarity buffer.

  • Name
    network_id
    Type
    required
    Description

    The network id, which is used to set the transaction version. Valid values are "mainnet", "testnet" or "devnet".

  • Name
    signer
    Type
    required
    Description

    A reference to a signer construct, which will be used to sign the transaction payload.

  • Name
    nonce
    Type
    optional
    Description

    The account nonce of the signer. This value will be retrieved from the network if omitted.

  • Name
    fee
    Type
    required
    Description

    The transaction fee. This value will automatically be estimated if omitted.

  • Name
    fee_strategy
    Type
    optional
    Description

    The strategy to use for automatically estimating fee ('low', 'medium', 'high'). Default to 'medium'.

Outputs

  • Name
    signed_transaction_bytes
    Description

    The signed transaction bytes.

  • Name
    network_id
    Description

    Network id of the signed transaction.

Example using sign_transaction

action "my_ref" "stacks::sign_transaction" {
    transaction_payload_bytes = stacks::cv_buff("0x021A6D78DE7B0625DFBFC16C3A8A5735F6DC3DC3F2CE0E707974682D6F7261636C652D76311D7665726966792D616E642D7570646174652D70726963652D66656564730000000202000000030102030C0000000315707974682D6465636F6465722D636F6E7472616374061A6D78DE7B0625DFBFC16C3A8A5735F6DC3DC3F2CE14707974682D706E61752D6465636F6465722D763115707974682D73746F726167652D636F6E7472616374061A6D78DE7B0625DFBFC16C3A8A5735F6DC3DC3F2CE0D707974682D73746F72652D763116776F726D686F6C652D636F72652D636F6E7472616374061A6D78DE7B0625DFBFC16C3A8A5735F6DC3DC3F2CE10776F726D686F6C652D636F72652D7631")
    nonce = 1
    fee = 1200
    network_id = "testnet"
}
output "signed_bytes" {
  value = action.my_ref.signed_transaction_bytes
}
// > signed_bytes: 0x8080000000040063A5EDA39412C016478AE5A8C300843879F78245000000000000000100000000000004B0000182C1712C31B7F683F6C56EEE8920892F735FC0118C98FD10C1FDAA85ABEC2808063773E5F61229D76B29784B8BBBBAAEA72EEA701C92A4FE15EF3B9E32A373D8020100000000021A6D78DE7B0625DFBFC16C3A8A5735F6DC3DC3F2CE0E707974682D6F7261636C652D76311D7665726966792D616E642D7570646174652D70726963652D66656564730000000202000000030102030C0000000315707974682D6465636F6465722D636F6E7472616374061A6D78DE7B0625DFBFC16C3A8A5735F6DC3DC3F2CE14707974682D706E61752D6465636F6465722D763115707974682D73746F726167652D636F6E7472616374061A6D78DE7B0625DFBFC16C3A8A5735F6DC3DC3F2CE0D707974682D73746F72652D763116776F726D686F6C652D636F72652D636F6E7472616374061A6D78DE7B0625DFBFC16C3A8A5735F6DC3DC3F2CE10776F726D686F6C652D636F72652D7631


action

deploy_contract

The deploy_contract action encodes a contract deployment transaction, signs the transaction using the specified signer, and broadcasts the signed transaction to the network.

Inputs

  • Name
    description
    Type
    optional
    Description

    Description of the deployment

  • Name
    contract
    Type
    optional
    Description

    Contract informations.

  • Name
    network_id
    Type
    required
    Description

    The network id. Valid values are "mainnet", "testnet" or "devnet".

  • Name
    rpc_api_url
    Type
    required
    Description

    The URL to use when making API requests.

  • Name
    rpc_api_auth_token
    Type
    optional
    Description

    The HTTP authentication token to include in the headers when making API requests.

  • Name
    signer
    Type
    required
    Description

    A reference to a signer construct, which will be used to sign the transaction payload.

  • Name
    confirmations
    Type
    optional
    Description

    Once the transaction is included on a block, the number of blocks to await before the transaction is considered successful and Runbook execution continues.

  • Name
    nonce
    Type
    optional
    Description

    The account nonce of the signer. This value will be retrieved from the network if omitted.

  • Name
    fee
    Type
    optional
    Description

    The transaction fee. This value will automatically be estimated if omitted.

  • Name
    post_conditions
    Type
    optional
    Description

    The post conditions to include to the transaction.

  • Name
    post_condition_mode
    Type
    optional
    Description

    The post condition mode ('allow', 'deny'). In Allow mode other asset transfers not covered by the post-conditions are permitted. In Deny mode no other asset transfers are permitted besides those named in the post-conditions.

  • Name
    transforms
    Type
    optional
    Description

    An array of transform operations to perform on the contract source, before being its signature.

  • Name
    dependency_contract_ids
    Type
    optional
    Description

    Contracts that are depending on this contract at their deployment.

  • Name
    lazy_dependency_contract_ids
    Type
    optional
    Description

    Contracts that are depending on this contract after their deployment.

  • Name
    fee_strategy
    Type
    optional
    Description

    The strategy to use for automatically estimating fee ('low', 'medium', 'high'). Default to 'medium'.

  • Name
    contract_instance_name
    Type
    optional
    Description

    The name to use for deploying the contract. Will automatically update contract dependencies.

Outputs

  • Name
    signed_transaction_bytes
    Description

    The signed transaction bytes.

  • Name
    tx_id
    Description

    The transaction id.

  • Name
    contract_id
    Description

    The contract id.

  • Name
    result
    Description

    The transaction result.

Example using deploy_contract

action "counter_deployment" "stacks::deploy_contract" {
    description = "Deploy counter contract."
    source_code = "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.pyth-oracle-v1"
    contract_name = "verify-and-update-price-feeds"
    signer = signer.alice
}
output "contract_tx_id" {
value = action.counter_deployment.tx_id
}
// > contract_tx_id: 0x1020321039120390239103193012909424854753848509019302931023849320


action

deploy_requirement

The stacks::deploy_requirement action retrieves a deployed contract along with its dependencies, signs the transactions using the specified signer, and broadcasts the signed transactions to the network.

Inputs

  • Name
    description
    Type
    optional
    Description

    Description of the deployment

  • Name
    contract_id
    Type
    required
    Description

    The contract id, deployed on Mainnet, that needs to mirrored.

  • Name
    network_id
    Type
    required
    Description

    The network id. Valid values are "mainnet", "testnet" or "devnet".

  • Name
    rpc_api_url_source
    Type
    required
    Description

    The URL to use when pulling the source contract.

  • Name
    rpc_api_url
    Type
    optional
    Description

    The URL to use when deploying the required contract.

  • Name
    signer
    Type
    required
    Description

    A reference to a signer construct, which will be used to sign the transaction payload.

  • Name
    confirmations
    Type
    optional
    Description

    Once the transaction is included on a block, the number of blocks to await before the transaction is considered successful and Runbook execution continues. The default is 1.

  • Name
    nonce
    Type
    optional
    Description

    The account nonce of the signer. This value will be retrieved from the network if omitted.

  • Name
    fee
    Type
    optional
    Description

    The transaction fee. This value will automatically be estimated if omitted.

  • Name
    post_conditions
    Type
    optional
    Description

    The post conditions to include to the transaction.

  • Name
    transforms
    Type
    optional
    Description

    An array of transform operations to perform on the contract source, before being its signature.

  • Name
    dependency_contract_ids
    Type
    optional
    Description

    Contracts that are depending on this contract at their deployment.

  • Name
    lazy_dependency_contract_ids
    Type
    optional
    Description

    Contracts that are depending on this contract after their deployment.

Outputs

  • Name
    signed_transaction_bytes
    Description

    The signed transaction bytes.

  • Name
    tx_id
    Description

    The transaction id.

  • Name
    result
    Description

    The transaction result.

Example using deploy_requirement

action "counter_deployment" "stacks::deploy_requirement" {
    description = "Deploy counter contract."
    source_code = "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.pyth-oracle-v1"
    contract_name = "verify-and-update-price-feeds"
    signer = signer.alice
}
output "contract_tx_id" {
    value = action.counter_deployment.tx_id
}
// > contract_tx_id: 0x1020321039120390239103193012909424854753848509019302931023849320


action

encode_contract_call

The stacks::call_contract action encodes a valid contract call payload and serializes it as a hex string.

Inputs

  • Name
    contract_id
    Type
    required
    Description

    The address and identifier of the contract to invoke.

  • Name
    function_name
    Type
    required
    Description

    The contract method to invoke.

  • Name
    function_args
    Type
    optional
    Description

    The function arguments for the contract call.

  • Name
    network_id
    Type
    required
    Description

    The network id. Valid values are "mainnet", "testnet" or "devnet".

Outputs

  • Name
    bytes
    Description

    The encoded contract call bytes.

  • Name
    network_id
    Description

    The network id of the encoded transaction.

Example using encode_contract_call

action "my_ref" "stacks::encode_contract_call" {
    description = "Encodes the contract call transaction."
    contract_id = "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.pyth-oracle-v1"
    function_name = "verify-and-update-price-feeds"
    function_args = [
        stacks::cv_buff(variable.bitcoin_price_feed),
        stacks::cv_tuple({
            "pyth-storage-contract": stacks::cv_principal("${input.pyth_deployer}.pyth-store-v1"),
            "pyth-decoder-contract": stacks::cv_principal("${input.pyth_deployer}.pyth-pnau-decoder-v1"),
            "wormhole-core-contract": stacks::cv_principal("${input.pyth_deployer}.wormhole-core-v1")
        })
    ]
}
output "bytes" {
value = action.my_ref.bytes
}
output "network_id" {
value = action.my_ref.network_id
}
// > bytes: 0x021A6D78DE7B0625DFBFC16C3A8A5735F6DC3DC3F2CE0E707974682D6F7261636C652D76311D7665726966792D616E642D7570646174652D70726963652D66656564730000000202000000030102030C0000000315707974682D6465636F6465722D636F6E7472616374061A6D78DE7B0625DFBFC16C3A8A5735F6DC3DC3F2CE14707974682D706E61752D6465636F6465722D763115707974682D73746F726167652D636F6E7472616374061A6D78DE7B0625DFBFC16C3A8A5735F6DC3DC3F2CE0D707974682D73746F72652D763116776F726D686F6C652D636F72652D636F6E7472616374061A6D78DE7B0625DFBFC16C3A8A5735F6DC3DC3F2CE10776F726D686F6C652D636F72652D7631
// > network_id: testnet


action

broadcast_transaction

The stacks::broadcast_transaction action sends a signed transaction payload to the specified network.

Inputs

  • Name
    signed_transaction_bytes
    Type
    required
    Description

    The signed transaction bytes that will be broadcasted to the network.

  • Name
    network_id
    Type
    required
    Description

    The network id. Valid values are "mainnet", "testnet" or "devnet".

  • Name
    rpc_api_url
    Type
    required
    Description

    The URL to use when making API requests.

  • Name
    rpc_api_auth_token
    Type
    optional
    Description

    The HTTP authentication token to include in the headers when making API requests.

  • Name
    confirmations
    Type
    optional
    Description

    Once the transaction is included on a block, the number of blocks to await before the transaction is considered successful and Runbook execution continues. The default is 1.

Outputs

  • Name
    tx_id
    Description

    The transaction id.

  • Name
    value
    Description

    The transaction id.

  • Name
    result
    Description

    The transaction result.

  • Name
    decoded_result
    Description

    The transaction decoded result.

Example using broadcast_transaction

action "my_ref" "stacks::broadcast_transaction" {
    description = "Broadcasts the signed transaction bytes"
    signed_transaction_bytes = "0x8080000000040063A5EDA39412C016478AE5A8C300843879F78245000000000000000100000000000004B0000182C1712C31B7F683F6C56EEE8920892F735FC0118C98FD10C1FDAA85ABEC2808063773E5F61229D76B29784B8BBBBAAEA72EEA701C92A4FE15EF3B9E32A373D8020100000000021A6D78DE7B0625DFBFC16C3A8A5735F6DC3DC3F2CE0E707974682D6F7261636C652D76311D7665726966792D616E642D7570646174652D70726963652D66656564730000000202000000030102030C0000000315707974682D6465636F6465722D636F6E7472616374061A6D78DE7B0625DFBFC16C3A8A5735F6DC3DC3F2CE14707974682D706E61752D6465636F6465722D763115707974682D73746F726167652D636F6E7472616374061A6D78DE7B0625DFBFC16C3A8A5735F6DC3DC3F2CE0D707974682D73746F72652D763116776F726D686F6C652D636F72652D636F6E7472616374061A6D78DE7B0625DFBFC16C3A8A5735F6DC3DC3F2CE10776F726D686F6C652D636F72652D7631"
}
output "tx_id" {
  value = action.my_ref.tx_id
}
output "result" {
  value = action.my_ref.result
}
// > tx_id: 0x...
// > result: success


action

call_readonly_fn

The stacks::call_readonly_fn action queries a public readonly function.

Inputs

  • Name
    contract_id
    Type
    required
    Description

    The address and identifier of the contract to invoke.

  • Name
    function_name
    Type
    required
    Description

    The contract method to invoke.

  • Name
    function_args
    Type
    optional
    Description

    The function arguments for the contract call.

  • Name
    network_id
    Type
    required
    Description

    The network id. Valid values are "mainnet", "testnet" or "devnet".

  • Name
    rpc_api_url
    Type
    required
    Description

    The URL to use when making API requests.

  • Name
    rpc_api_auth_token
    Type
    optional
    Description

    The HTTP authentication token to include in the headers when making API requests.

  • Name
    sender
    Type
    optional
    Description

    The simulated tx-sender address to use.

  • Name
    block_height
    Type
    optional
    Description

    Coming soon.

Outputs

  • Name
    value
    Description

    The result of the function execution.

Example using call_readonly_fn

action "get_name_price" "stacks::call_readonly_fn" {
    description = "Get price for bns name"
    contract_id = "ST000000000000000000002AMW42H.bns"
    function_name = "get-name-price"
    function_args = [
        stacks::cv_buff(encode_hex("btc")), // namespace
        stacks::cv_buff(encode_hex("test")) // name
    ]
    sender = "ST2JHG361ZXG51QTKY2NQCVBPPRRE2KZB1HR05NNC"
}
output "name_price" {
    value = action.get_name_price
}
// > name_price: 100


action

call_contract

The stacks::call_contract action encodes a contract call transaction, signs the transaction using the specified signer, and broadcasts the signed transaction to the network.

Inputs

  • Name
    description
    Type
    optional
    Description

    Description of the transaction

  • Name
    contract_id
    Type
    required
    Description

    The address and identifier of the contract to invoke.

  • Name
    function_name
    Type
    required
    Description

    The contract method to invoke.

  • Name
    function_args
    Type
    optional
    Description

    The function arguments for the contract call.

  • Name
    network_id
    Type
    required
    Description

    The network id. Valid values are "mainnet", "testnet" or "devnet".

  • Name
    rpc_api_url
    Type
    required
    Description

    The URL to use when making API requests.

  • Name
    rpc_api_auth_token
    Type
    optional
    Description

    The HTTP authentication token to include in the headers when making API requests.

  • Name
    signer
    Type
    required
    Description

    A reference to a signer construct, which will be used to sign the transaction payload.

  • Name
    confirmations
    Type
    optional
    Description

    Once the transaction is included on a block, the number of blocks to await before the transaction is considered successful and Runbook execution continues. The default is 1.

  • Name
    nonce
    Type
    optional
    Description

    The account nonce of the signer. This value will be retrieved from the network if omitted.

  • Name
    fee
    Type
    optional
    Description

    The transaction fee. This value will automatically be estimated if omitted.

  • Name
    fee_strategy
    Type
    optional
    Description

    The strategy to use for automatically estimating fee ('low', 'medium', 'high'). Default to 'medium'.

  • Name
    post_conditions
    Type
    optional
    Description

    The post conditions to include to the transaction.

  • Name
    post_condition_mode
    Type
    optional
    Description

    The post condition mode ('allow', 'deny'). In Allow mode other asset transfers not covered by the post-conditions are permitted. In Deny mode no other asset transfers are permitted besides those named in the post-conditions. The default is Deny mode.

Outputs

  • Name
    signed_transaction_bytes
    Description

    The signed transaction bytes.

  • Name
    tx_id
    Description

    The transaction id.

  • Name
    value
    Description

    The transaction id.

  • Name
    result
    Description

    The transaction result.

Example using call_contract

action "my_ref" "stacks::call_contract" {
    description = "Encodes the contract call, sign, and broadcasts the set-token function."
    contract_id = "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.pyth-oracle-v1"
    function_name = "verify-and-update-price-feeds"
    function_args = [
        stacks::cv_buff(output.bitcoin_price_feed),
        stacks::cv_tuple({
            "pyth-storage-contract": stacks::cv_principal("${input.pyth_deployer}.pyth-store-v1"),
            "pyth-decoder-contract": stacks::cv_principal("${input.pyth_deployer}.pyth-pnau-decoder-v1"),
            "wormhole-core-contract": stacks::cv_principal("${input.pyth_deployer}.wormhole-core-v1")
        })
    ]
    signer = signer.alice
}            
output "tx_id" {
    value = action.my_ref.tx_id
}
output "result" {
    value = action.my_ref.result
}
// > tx_id: 0x...
// > result: success


action

send_stx

The stacks::send_stx action encodes a STX transfer transaction, signs the transaction using the specified signer, and broadcasts the signed transaction to the network.

Inputs

  • Name
    amount
    Type
    required
    Description

    The amount of STX to send.

  • Name
    recipient
    Type
    required
    Description

    The recipient of the transfer.

  • Name
    network_id
    Type
    required
    Description

    The network id. Valid values are "mainnet", "testnet" or "devnet".

  • Name
    rpc_api_url
    Type
    required
    Description

    The URL to use when making API requests.

  • Name
    rpc_api_auth_token
    Type
    optional
    Description

    The HTTP authentication token to include in the headers when making API requests.

  • Name
    signer
    Type
    required
    Description

    A reference to a signer construct, which will be used to sign the transaction payload.

  • Name
    confirmations
    Type
    optional
    Description

    Once the transaction is included on a block, the number of blocks to await before the transaction is considered successful and Runbook execution continues. The default is 1.

  • Name
    nonce
    Type
    optional
    Description

    The account nonce of the signer. This value will be retrieved from the network if omitted.

  • Name
    fee
    Type
    optional
    Description

    The transaction fee. This value will automatically be estimated if omitted.

Outputs

  • Name
    signed_transaction_bytes
    Description

    The signed transaction bytes.

  • Name
    tx_id
    Description

    The transaction id.

  • Name
    result
    Description

    The transaction result.

Example using send_stx

action "stx_transfer" "stacks::send_stx" {
    description = "Send µSTX to Bob."
    recipient = "ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM"
    amount = 1000000
    memo = "0x10394390"
    signer = signer.alice
}            
output "transfer_tx_id" {
    value = action.stx_transfer.tx_id
}
// > transfer_tx_id: 0x1020321039120390239103193012909424854753848509019302931023849320


Was this page helpful?