New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

github.com/icon-project/stacks-go-sdk

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/icon-project/stacks-go-sdk

  • v0.5.0
  • Source
  • Go
  • Socket score

Version published
Created
Source

codecov

Unofficial Stacks Blockchain SDK for Go

Send tokens and call Clarity smart contracts on the Stacks blockchain with Golang.

Features

  • Transaction signing for standard authorization and single-signature spending conditions
  • Supports Token Transfer transactions (Type-0) and Contract Call transactions (Type-2)
  • Clarity value encoding and decoding
  • Stacks address handling and conversion

Installation

To use this SDK in your Go project, run:

go get github.com/icon-project/stacks-go-sdk

Usage

Here are some basic usage examples:

Creating and Broadcasting a Token Transfer Transaction

import (
    "github.com/icon-project/stacks-go-sdk/stacks"
    "math/big"
)

func main() {
    network := stacks.NewStacksMainnet()

    recipient := "SP2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKNRV9EJ7"
    amount := big.NewInt(1000000) // amount in microSTX
    memo := "Transfer memo"
    senderAddress := "SP1P72Z3704VMT3DMHPP2CB8TGQWGDBHD3RPR9GZS"
    senderKey := []byte{...}  // sender's private key

    // Create and sign the transaction
    tx, err := stacks.MakeSTXTokenTransfer(
        recipient,
        *amount,
        memo,
        *network,
        senderAddress,
        senderKey,
        nil,  // Let the function estimate the fee
        nil,  // Let the function fetch the nonce
    )
    if err != nil {
        // Handle error
    }

    // Broadcast the transaction
    txID, err := stacks.BroadcastTransaction(tx, network)
    if err != nil {
        // Handle error
    }

    println("Transaction broadcast successfully. Transaction ID:", txID)
}

Creating and Broadcasting a Token Transfer Transaction

import (
    "github.com/icon-project/stacks-go-sdk/stacks"
    "github.com/icon-project/stacks-go-sdk/clarity"
)

func main() {
    network := stacks.NewStacksMainnet()

    contractAddress := "SP466FNC0P7JWTNM2R9T199QRZN1MYEDTAR0KP27"
    contractName := "contract-name"
    functionName := "function-name"
    senderAddress := "SP1P72Z3704VMT3DMHPP2CB8TGQWGDBHD3RPR9GZS"
    senderKey := []byte{...}  // sender's private key

    // Prepare function arguments
    arg1, _ := clarity.NewInt(123)
    arg2 := clarity.NewStringType("example")
    functionArgs := []clarity.ClarityValue{arg1, arg2}

    // Create and sign the transaction
    tx, err := stacks.MakeContractCall(
        contractAddress,
        contractName,
        functionName,
        functionArgs,
        *network,
        senderAddress,
        senderKey,
        nil,  // Let the function estimate the fee
        nil,  // Let the function fetch the nonce
    )
    if err != nil {
        // Handle error
    }

    // Broadcast the transaction
    txID, err := stacks.BroadcastTransaction(tx, network)
    if err != nil {
        // Handle error
    }

    println("Contract call transaction broadcast successfully. Transaction ID:", txID)
}

Working with Clarity Values

import (
    "github.com/icon-project/stacks-go-sdk/clarity"
)

func main() {
    // Create a Clarity integer
    intValue, err := clarity.NewInt(12345)
    if err != nil {
        // Handle error
    }

    // Serialize the Clarity value
    serialized, err := intValue.Serialize()
    if err != nil {
        // Handle error
    }

    // Deserialize a Clarity value
    deserialized, err := clarity.DeserializeClarityValue(serialized)
    if err != nil {
        // Handle error
    }
}

Stacks RPC Client

The rpc_client package is automatically generated from the Stacks RPC OpenAPI specification. Some modifications are made after generation.

Stacks Blockchain API Client

The stacks_blockchain_api_client package is automatically generated from the Stacks Blockchain API OpenAPI specification. The script to build the specification and generate the Go client is in scripts/generate_stacks_blockchain_api.sh.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Disclaimer

This is an unofficial SDK and is not affiliated with or endorsed by the Stacks Foundation or Hiro PBC. Use at your own risk.

License

This project is licensed under the MIT License.

FAQs

Package last updated on 26 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc