You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
rubix-py is a lightweight client for the Rubix Blockchain Node, providing complete node interaction with minimal overhead.
Warning
This project is currently under active development. API changes and method signature updates may occur between releases. Please review the Release Notes before upgrading.
Installation
Run the following to install rubix-py
pip install rubix-py
Architecture
The architecture of rubix-py is pretty straightforward. It consists of the following classes:
RubixClient: Responsible for connection to Rubix Blockchain Node
Signer: Signs and performs Blockchain transactions and manages user's crypto keys.
Querier: Queries information such as Token Balances, Smart Contract and NFT token chains, etc.
RubixClient has a set of internal methods to make API requests to the node. Both Signer and Querier consumes an instance of RubixClient which helps them to achieve their respective operations with the Blockchain node.
Let's have a look at a simple example of fetching RBT balance and transferring them:
fromrubix.clientimportRubixClientfromrubix.signerimportSignerfromrubix.querierimportQuerier# Define the RubixClient by specifying the target Rubix node address# and optionally providing timeout in secondsclient=RubixClient(node_url="http://localhost:20000", timeout=300)
# Define the Signer# If you already have a BIP-39 24-word mnemonic, you can pass it to the Signer# Else, a random mnemonic will be usedsigner=Signer(
rubixClient=client,
mnemonic="<Enter 24-word long BIP-39 mnemonic>"# This can be left empty
)
# Internally, a call is made to Rubix Node to create and register your DIDuser_did=signer.did# Retrieve the keypair which can be used for signing arbitrary messagekeypair=signer.get_keypair()
# Retrieve the mnemonicmnemonic=signer.get_mnemonic()
# Define the QuerierqueryClient=Querier(
rubixClient=client
)
# Check RBT balancebalance_info=queryClient.get_rbt_balance(user_did)
balance=balance_info["rbt"]
# Perform RBT Transfertx_response=signer.send_rbt_tokens(
receiver_did="<Enter recipient DID>",
rbt_amount=0.001,
comment="Test RBT Transfer"
)
iftx_response["status"] isTrue:
print("RBT Transfer Successful!")
else:
print("RBT Transfer Failed!: ", tx_response.get("message", ""))
0 commit comments