py-stellar-base is a Python library for communicating with a Stellar Horizon server. It is used for building Stellar apps on Python. It supports Python 3.7+ as well as PyPy 3.7+.
It provides:
- a networking layer API for Horizon endpoints.
- facilities for building and signing transactions, for communicating with a Stellar Horizon instance, and for submitting transactions or querying network history.
py-stellar-base's documentation can be found at https://stellar-sdk.readthedocs.io.
pip install -U stellar-sdk
We follow Semantic Versioning 2.0.0, and I strongly recommend that you specify its major version number in the dependency file to avoid the unknown effects of breaking changes.
You can find more examples here.
Building transaction with synchronous server
# Alice pay 10.25 XLM to Bob
from stellar_sdk import Asset, Server, Keypair, TransactionBuilder, Network
alice_keypair = Keypair.from_secret("SBFZCHU5645DOKRWYBXVOXY2ELGJKFRX6VGGPRYUWHQ7PMXXJNDZFMKD")
bob_address = "GA7YNBW5CBTJZ3ZZOWX3ZNBKD6OE7A7IHUQVWMY62W2ZBG2SGZVOOPVH"
server = Server("https://horizon-testnet.stellar.org")
alice_account = server.load_account(alice_keypair.public_key)
base_fee = 100
transaction = (
TransactionBuilder(
source_account=alice_account,
network_passphrase=Network.TESTNET_NETWORK_PASSPHRASE,
base_fee=base_fee,
)
.add_text_memo("Hello, Stellar!")
.append_payment_op(bob_address, Asset.native(), "10.25")
.set_timeout(30)
.build()
)
transaction.sign(alice_keypair)
response = server.submit_transaction(transaction)
print(response)
- Building transaction with asynchronous server
# Alice pay 10.25 XLM to Bob
import asyncio
from stellar_sdk import Asset, ServerAsync, Keypair, TransactionBuilder, Network
from stellar_sdk.client.aiohttp_client import AiohttpClient
alice_keypair = Keypair.from_secret("SBFZCHU5645DOKRWYBXVOXY2ELGJKFRX6VGGPRYUWHQ7PMXXJNDZFMKD")
bob_address = "GA7YNBW5CBTJZ3ZZOWX3ZNBKD6OE7A7IHUQVWMY62W2ZBG2SGZVOOPVH"
async def payment():
async with ServerAsync(
horizon_url="https://horizon-testnet.stellar.org", client=AiohttpClient()
) as server:
alice_account = await server.load_account(alice_keypair.public_key)
base_fee = 100
transaction = (
TransactionBuilder(
source_account=alice_account,
network_passphrase=Network.TESTNET_NETWORK_PASSPHRASE,
base_fee=base_fee,
)
.add_text_memo("Hello, Stellar!")
.append_payment_op(bob_address, Asset.native(), "10.25")
.set_timeout(30)
.build()
)
transaction.sign(alice_keypair)
response = await server.submit_transaction(transaction)
print(response)
if __name__ == "__main__":
asyncio.run(payment())
As Soroban is still under active development, I have not merged it into the main branch. You can obtain support for it in the soroban branch, but please note that there may be breaking updates at any time before the stable release.
stellar-model allows you to parse the JSON returned by Stellar Horizon into the Python models, click here for more information.
- Document: https://stellar-sdk.readthedocs.io
- Code: https://github.com/StellarCN/py-stellar-base
- Examples: https://github.com/StellarCN/py-stellar-base/tree/main/examples
- Issue tracker: https://github.com/StellarCN/py-stellar-base/issues
- License: Apache License 2.0
- Releases: https://pypi.org/project/stellar-sdk/
Thank you to all the people who have already contributed to py-stellar-base!