Remote Procedure Call (RPC)

Bytom remote procedure call.

shuttle.providers.bytom.rpc.get_balance(address, asset='ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', network='solonet', timeout=60)

Get Bytom balance.

Parameters
  • address (str) – Bytom address.

  • asset (str) – Bytom asset, default to BTM asset.

  • network (str) – Bytom network, defaults to solonet.

  • timeout (int) – request timeout, default to 60.

Returns

int – Bytom asset balance.

>>> from shuttle.providers.bytom.rpc import get_balance
>>> get_balance("bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "mainnet")
2580000000
shuttle.providers.bytom.rpc.account_create(xpublic_key, label='1st address', email=None, network='testnet', timeout=60)

Create account in blockcenter.

Parameters
  • xpublic_key (str) – Bytom xpublic key.

  • label (str) – Bytom limit, defaults to 1st address.

  • email (str) – email address, defaults to None.

  • network (str) – Bytom network, defaults to testnet.

  • timeout (int) – request timeout, default to 15.

Returns

dict – Bytom blockcenter guid, address and label.

>>> from shuttle.providers.bytom.rpc import account_create
>>> account_create(xpublic_key, "mainnet")
{"guid": "f0ed6ddd-9d6b-49fd-8866-a52d1083a13b", "address": "bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", "label": "1st address"}
shuttle.providers.bytom.rpc.list_address(guid, limit=10, network='testnet', timeout=60)

List address from blockcenter.

Parameters
  • guid (str) – Bytom blockcenter guid.

  • limit (int) – blockcenter limit default to 10.

  • network (str) – Bytom network, defaults to testnet.

  • timeout (int) – request timeout, default to 15.

Returns

list – Bytom blockcenter list of addresses.

>>> from shuttle.providers.bytom.rpc import list_address
>>> list_address(guid, 5 "mainnet")
[{"guid": "f0ed6ddd-9d6b-49fd-8866-a52d1083a13b", "address": "bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", "label": "1st address", "balances": [{"asset": "f37dea62efd2965174b84bbb59a0bd0a671cf5fb2857303ffd77c1b482b84bdf", "balance": "100000000000", "total_received": "100000000000", "total_sent": "0", "decimals": 8, "alias": "Asset", "icon": "", "name": "f37dea62efd2965174b84bbb59a0bd0a671cf5fb2857303ffd77c1b482b84bdf", "symbol": "Asset", "in_usd": "0.00", "in_cny": "0.00", "in_btc": "0.000000"}, {"asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "balance": "2450000000", "total_received": "4950000000", "total_sent": "2500000000", "decimals": 8, "alias": "btm", "icon": "", "name": "BTM", "symbol": "BTM", "in_usd": "2.90", "in_cny": "20.58", "in_btc": "0.000283"}]}]
shuttle.providers.bytom.rpc.build_transaction(tx, network='testnet', timeout=60)

Build Bytom transaction in blockcenter.

Parameters
  • tx (dict) – Bytom transaction.

  • network (str) – Bytom network, defaults to testnet.

  • timeout (int) – request timeout, default to 15.

Returns

dict – Bytom built transaction.

>>> from shuttle.providers.bytom.rpc import build_transaction
>>> build_transaction(transaction, "mainnet")
{"tx": {"hash": "2993414225f65390220730d0c1a356c14e91bca76db112d37366df93e364a492", "status_fail": false, "size": 379, "submission_timestamp": 0, "memo": "", "inputs": [{"script": "00142cda4f99ea8112e6fa61cdd26157ed6dc408332a", "address": "bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", "asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "amount": 2450000000, "type": "spend"}], "outputs": [{"utxo_id": "5edccebe497893c289121f9e365fdeb34c97008b9eb5a9960fe9541e7923aabc", "script": "01642091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e220ac13c0bb1445423a641754182d53f0677cd4351a0e743e6f10b35122c3d7ea01202b9a5949f5546f63a253e41cda6bffdedb527288a7e24ed953f5c2680c70d6ff741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0", "address": "smart contract", "asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "amount": 1000, "type": "control"}, {"utxo_id": "f8cfbb692db1963be88b09c314adcc9e19d91c6c019aa556fb7cb76ba8ffa1fa", "script": "00142cda4f99ea8112e6fa61cdd26157ed6dc408332a", "address": "bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", "asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "amount": 2439999000, "type": "control"}], "fee": 10000000, "balances": [{"asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "amount": "-10001000"}], "types": ["ordinary"]}, "raw_transaction": "070100010160015e7f2d7ecec3f61d30d0b2968973a3ac8448f0599ea20dce883b48c903c4d6e87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8091a0900901011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a22012091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e20201ad01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe80701880101642091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e220ac13c0bb1445423a641754182d53f0677cd4351a0e743e6f10b35122c3d7ea01202b9a5949f5546f63a253e41cda6bffdedb527288a7e24ed953f5c2680c70d6ff741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c000013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98dcbd8b09011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a00", "signing_instructions": [{"derivation_path": ["2c000000", "99000000", "01000000", "00000000", "01000000"], "sign_data": ["37727d44af9801e9723eb325592f4d55cc8d7e3815b1d663d61b7f1af9fc13a7"], "pubkey": "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2"}], "fee": 10000000}
shuttle.providers.bytom.rpc.get_transaction(tx_id, network='testnet', timeout=60)

Get Bytom transaction detail.

Parameters
  • tx_id (str) – Bytom transaction id.

  • network (str) – Bytom network, defaults to testnet.

  • timeout (int) – request timeout, default to 15.

Returns

dict – Bytom built transaction.

>>> from shuttle.providers.bytom.rpc import get_transaction
>>> get_transaction(transaction_id, "mainnet")
{"tx": {"hash": "2993414225f65390220730d0c1a356c14e91bca76db112d37366df93e364a492", "status_fail": false, "size": 379, "submission_timestamp": 0, "memo": "", "inputs": [{"script": "00142cda4f99ea8112e6fa61cdd26157ed6dc408332a", "address": "bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", "asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "amount": 2450000000, "type": "spend"}], "outputs": [{"utxo_id": "5edccebe497893c289121f9e365fdeb34c97008b9eb5a9960fe9541e7923aabc", "script": "01642091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e220ac13c0bb1445423a641754182d53f0677cd4351a0e743e6f10b35122c3d7ea01202b9a5949f5546f63a253e41cda6bffdedb527288a7e24ed953f5c2680c70d6ff741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0", "address": "smart contract", "asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "amount": 1000, "type": "control"}, {"utxo_id": "f8cfbb692db1963be88b09c314adcc9e19d91c6c019aa556fb7cb76ba8ffa1fa", "script": "00142cda4f99ea8112e6fa61cdd26157ed6dc408332a", "address": "bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", "asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "amount": 2439999000, "type": "control"}], "fee": 10000000, "balances": [{"asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "amount": "-10001000"}], "types": ["ordinary"]}, "raw_transaction": "070100010160015e7f2d7ecec3f61d30d0b2968973a3ac8448f0599ea20dce883b48c903c4d6e87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8091a0900901011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a22012091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e20201ad01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe80701880101642091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e220ac13c0bb1445423a641754182d53f0677cd4351a0e743e6f10b35122c3d7ea01202b9a5949f5546f63a253e41cda6bffdedb527288a7e24ed953f5c2680c70d6ff741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c000013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98dcbd8b09011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a00", "signing_instructions": [{"derivation_path": ["2c000000", "99000000", "01000000", "00000000", "01000000"], "sign_data": ["37727d44af9801e9723eb325592f4d55cc8d7e3815b1d663d61b7f1af9fc13a7"], "pubkey": "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2"}], "fee": 10000000}
shuttle.providers.bytom.rpc.submit_payment(guid, tx_raw, signatures, network, memo='mock', timeout=60)

Submit transaction raw to Bytom blockchain.

Parameters
  • guid (str) – Bytom blockcenter id.

  • tx_raw (str) – Bytom transaction raw.

  • signatures (list) – Bytom signed datas.

  • network (str) – Bytom network, defaults to testnet.

  • memo (str) – memo, defaults to mock.

  • timeout (int) – request timeout, default to 15.

Returns

dict – Bytom transaction id, fee, type and date.

>>> from shuttle.providers.bytom.rpc import submit_payment
>>> submit_payment("guid", transaction_raw, [[...]], "mainent")
{...}
shuttle.providers.bytom.rpc.decode_tx_raw(tx_raw, network='testnet', timeout=60)

Get decoded transaction raw.

Parameters
  • tx_raw (str) – Bytom transaction raw.

  • network (str) – Bytom network, defaults to testnet.

  • timeout (int) – request timeout, default to 15.

Returns

dict – Bytom decoded transaction raw.

>>> from shuttle.providers.bytom.rpc import decode_tx_raw
>>> decode_tx_raw(transaction_raw, "testnet")
{...}