Skip to main content

API and CLI for Soroban contracts in Python

Project description

API and CLI for Soroban contracts in Python

This package provide tools to interact with Soroban contracts in Python. The goal is to provide a simple feature set while not depending on the Rust SDK. This can be useful in environment where Rust and the SDK might be more difficult to get working (like a Raspberry Pi).

Getting started

pip install soroban

This provides a simple way to call contracts without needing to install the Rust SDK and is a higher level interface compared to using the Python SDK.

import soroban

soroban.invoke(contract_id="AAAA...", function_name="increment")

Identity and Network configurations are automatically pulled from the local configuration or the current working directory. See bellow.

It also provides a CLI

soroban invoke C... version --source-account=...

Usage

The main feature is to be able to call a Soroban contract function: soroban.invoke.

import soroban

soroban.invoke(contract_id="AAAA...", function_name="increment")

It also supports passing arguments as a list of stellar_sdk.SCVal. This list can be easily generated

import json
import soroban

args = json.load(...)
args = soroban.Parameters(args=args).model_dump()
soroban.invoke(contract_id="AAAA...", function_name="init", args=args)

The following JSON syntax is supported. Note that vectors are also supported:

[
  {
    "name": "issuer",
    "type": "address",
    "value": "C..."
  },
  {
    "name": "distributor",
    "type": "int128",
    "value": 10
  },
  {
    "name": "claimants",
    "type": "vec",
    "value": [
      {
        "type": "uint32",
        "value": 12
      },
      {
        "type": "int64",
        "value": 20
      }
    ]
  }
]

A few helper functions are also provided:

  • soroban.create_account: create and fund an account from a source account;
  • soroban.create_asset: create an asset using the classical issuer/distributor model.

Configuration

The source account and the network to use are set by instantiating soroban.Identity and soroban.NetworkConfig, respectively:

import soroban

identity = soroban.Identity()
network = soroban.NetworkConfig()

In both cases, the configuration can be set by either adjusting init arguments, setting up environment variables or using configuration files in toml.

The default path for soroban.Identity is identity.toml and for soroban.NetworkConfig it is testnet.toml. Here are examples of these files:

secret_key = "S..."
horizon_url = "https://horizon-testnet.stellar.org"
rpc_url = "https://soroban-testnet.stellar.org"
network_passphrase = "Test SDF Network ; September 2015"

Any of these fields can be set as an environment variable.

Acknowledgements

This repository has no affiliation with the Stellar Developer Foundation. The official CLI can be found here https://github.com/stellar/soroban-cli Should this become useful, I am happy to transfer it as well to the SDF org!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

soroban-0.7.0.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

soroban-0.7.0-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file soroban-0.7.0.tar.gz.

File metadata

  • Download URL: soroban-0.7.0.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for soroban-0.7.0.tar.gz
Algorithm Hash digest
SHA256 294180f1d42c32b066bcccd000152a866297a4d96eae7b37b31e0d12c513a55e
MD5 2a1eacaa2a2782e72e352c6a46c9e71e
BLAKE2b-256 8574d9a306f677bfdc5d67f0f1e19daffb75f002e38192c863736b9ae4ce105a

See more details on using hashes here.

File details

Details for the file soroban-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: soroban-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for soroban-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1f844b2b30cb84de93d735f5a1b4e4b2977b09b3f7aca15c1803e1b7a1bcf1c8
MD5 70e4e00a36efa8ea71d42655e516f05c
BLAKE2b-256 3a2cd1d69ed2bebe98eed948dbac38d2941738614eb7074bea0b183a6e109635

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page