Skip to main content

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)
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!

Release files for soroban 0.9.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for soroban 0.9.1
File Size Uploaded
soroban-0.9.1.tar.gz 9.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for soroban 0.9.1
File Interpreter ABI Platform
soroban-0.9.1-py3-none-any.whl Python 3 none any Details

Total release size: 19.2 kB

Release files / soroban-0.9.1.tar.gz

Download URL soroban-0.9.1.tar.gz
Size 9.9 kB
Tags Source
SHA-256 checksum
How to use checksums
b5c7c3b73ac0706967f2b9bd17e7e05c6c28dd285dcca0ebee57a4a36d41e7a1
BLAKE2b-256 checksum
How to use checksums
9e2d8c9c3f3f465e4ac647bd66096290bedf0a5631ee762ee3c59662e57439d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 12, 2024.

Transparency log

Release files / soroban-0.9.1-py3-none-any.whl

Download URL soroban-0.9.1-py3-none-any.whl
Size 9.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1a9aa2535603942486bbadf19aca95816af400221cc808575c68cb48b4c2e621
BLAKE2b-256 checksum
How to use checksums
722e5fa9600340773d516c3a88831a1fa414bfbca5404fb524aefbb19bb71144
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 12, 2024.

Transparency log

Release history Release notifications | RSS feed

This release

0.9.1 This release

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page