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 global or local configuration.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file soroban-0.6.0.tar.gz
.
File metadata
- Download URL: soroban-0.6.0.tar.gz
- Upload date:
- Size: 9.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.0.0 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c707c15a10f135f8c926220813727d51ca673fb42d691c0c9a3edd919f91a20e |
|
MD5 | 5fb0d1aeccca40a6a6d012c65e709175 |
|
BLAKE2b-256 | 3c5c477f957b0eac5053d5ada09eef3ae7c0d835d877bb74a03358522434c085 |
File details
Details for the file soroban-0.6.0-py3-none-any.whl
.
File metadata
- Download URL: soroban-0.6.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
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd55cb703b4acb0a7327c95ed9782aa5b65120ac458e91743e3e51f2fb94072b |
|
MD5 | 1c0b283abef929120c9995da41c0ea74 |
|
BLAKE2b-256 | 0f3af7da673a13f60e4b7702e49db62a4a76eedf4e7617543cf0b9cc3a79bc9b |