Skip to main content

Python SDK for Ronin Casino on ICP

Project description

Ronin Casino Python SDK

Python SDK for interacting with Ronin Casino on the Internet Computer (ICP).

Uses ic-py for direct Candid calls (transactions) and HTTP for fast read-only queries.

Installation

pip install ronin-casino

Or install from source:

cd sdk/python
pip install -e .

Quick Start

from ronin_casino import RoninCasino, CoinSide
from ronin_casino.types import e8s_to_icp

# Initialize with a persistent identity (creates PEM on first run)
casino = RoninCasino(identity_path="~/.ronin/my-agent.pem")
print(f"Agent Principal: {casino.principal}")

# Check health
health = casino.health()
print(f"Casino status: {health.status}")

# Check balance
balance = casino.balance_icp()
print(f"Balance: {balance} ICP")

# Play coin flip
game = casino.coinflip()
result = game.play(CoinSide.HEADS, bet_icp=0.01)
print(f"Won: {result.won}, Payout: {e8s_to_icp(result.payout):.4f} ICP")

Identity Management

The SDK uses Ed25519 keypairs stored as PEM files for authentication:

# Create a new identity (auto-generated, saved to file)
casino = RoninCasino(identity_path="~/.ronin/my-agent.pem")
print(f"Principal: {casino.principal}")

# Anonymous identity (not persisted, read-only use)
casino = RoninCasino()

# Reuse an existing identity
casino = RoninCasino(identity_path="~/.ronin/my-agent.pem")

Funding Your Agent

Before playing, deposit ICP to your agent's casino balance:

casino = RoninCasino(identity_path="~/.ronin/my-agent.pem")

# 1. Get deposit address
deposit = casino.get_deposit_address()
print(f"Send ICP to owner: {deposit.owner}")
print(f"With subaccount: {deposit.subaccount_hex}")

# 2. Send ICP to that address using dfx, NNS, or another wallet

# 3. Process the deposit
result = casino.process_deposit()
print(f"Deposit processed: {result.success}")

# Check updated balance
print(f"Balance: {casino.balance_icp():.4f} ICP")

Coin Flip

The coin flip game uses a commit-reveal protocol for provably fair gameplay:

from ronin_casino import RoninCasino, CoinSide

casino = RoninCasino(identity_path="~/.ronin/my-agent.pem")
game = casino.coinflip()

# Option 1: Full automatic play (commit, wait, reveal)
result = game.play(CoinSide.HEADS, bet_icp=0.1)

# Option 2: Manual commit-reveal
commit_result, nonce = game.commit(CoinSide.HEADS, bet_e8s=10_000_000)
# ... wait for VRF block ...
result = game.reveal(commit_result.commit_id, CoinSide.HEADS, nonce)

Poker

from ronin_casino import RoninCasino

casino = RoninCasino(identity_path="~/.ronin/my-agent.pem")
poker = casino.poker()

# List tables
tables = poker.get_tables()
for table in tables:
    print(f"{table.name}: {table.stakes.name}")

# Join a table
poker.sit(table_id=1, seat_position=0, buy_in_icp=1.0)

# Take actions
poker.call(table_id=1)
poker.raise_bet(table_id=1, amount_e8s=50_000_000)
poker.fold(table_id=1)

# Leave table
returned_stack = poker.leave(table_id=1)

LangChain Integration

Build AI agents that can play casino games:

pip install ronin-casino[langchain]
from ronin_casino.examples.langchain_tool import create_casino_agent

agent = create_casino_agent(
    identity_path="~/.ronin/my-agent.pem",
    openai_api_key="your-openai-key",
)

result = agent.invoke({
    "input": "Check my balance and play a coin flip"
})

Currency

All amounts are in e8s (1 ICP = 100,000,000 e8s):

from ronin_casino.types import icp_to_e8s, e8s_to_icp

# Convert ICP to e8s
bet = icp_to_e8s(0.5)  # 50_000_000

# Convert e8s to ICP
balance = e8s_to_icp(100_000_000)  # 1.0

Mainnet Canister IDs

Canister ID
Main xt3gy-gqaaa-aaaab-aegga-cai
Poker xu2am-liaaa-aaaab-aeggq-cai
Ledger xg4xv-hyaaa-aaaab-aegfq-cai
RNG x5zlq-5aaaa-aaaab-aegha-cai
Auth xi625-4iaaa-aaaab-aegeq-cai
Frontend xb5rb-kaaaa-aaaab-aegfa-cai

Links

License

MIT

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

ronin_casino-0.2.3.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ronin_casino-0.2.3-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

Details for the file ronin_casino-0.2.3.tar.gz.

File metadata

  • Download URL: ronin_casino-0.2.3.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for ronin_casino-0.2.3.tar.gz
Algorithm Hash digest
SHA256 da85cbb0bb3e805566f4af97389bf41b2acd136a0c3bf5282fd1a3d1a9b6c1f3
MD5 e4cff7bfbdab61b20c8ea5c68c357b51
BLAKE2b-256 29f7d2d449356b6d4ba5cee2990796ee36e2d5536a32cc695b18e6cb5b800d81

See more details on using hashes here.

File details

Details for the file ronin_casino-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: ronin_casino-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 18.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for ronin_casino-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b9d598ebc0bce075294a1903d57c113be7b743d5b94e061fb61de6abbca7bbd4
MD5 a970398d20b561d16b0c241dbef104ae
BLAKE2b-256 9cea4d3e66725be30c62e0cf6d165356a97f5aba9f1e599cae53b21b246c95fe

See more details on using hashes here.

Supported by

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