Skip to main content

A helper library to sign/send bundles and secure transactions to the Skip Relay in Python.

Project description

A helper library to sign and send bundles to the Skip Relay in Python.

PyPi: https://pypi.org/project/skip-python/

Github: https://github.com/skip-mev/skip-py

Quick Start

Prerequisite

In the latest release, skip-python requires:

  • Python 3.10 or later

Check your python version by entering:

python3 --version

Installation

There are 2 ways to use skip-python: pip, or git clone.

via pip

pip install skip-python

via git clone

git clone https://github.com/skip-mev/skip-py.git

After cloning, you can move the skip folder into your respective development repo and import the helper library.

Example Usage

import skip
from cosmpy.aerial.wallet import LocalWallet
from cosmpy.crypto.keypairs import PrivateKey

tx_bytes = b'<tx bytes>'

wallet = LocalWallet(PrivateKey('<base64 encoded private key>'), prefix="juno")

response = skip.sign_and_send_bundle(bundle=[tx_bytes], 
                                     private_key=wallet.signer().private_key_bytes,
                                     public_key=wallet.signer().public_key,
                                     rpc_url="http://juno-1-api.skip.money/",
                                     desired_height=0,
                                     sync=True)

For a more detailed/runnable example, check out:

https://github.com/skip-mev/skip-py/blob/main/examples/example.py

Detailed Usage

Import the package with:

import skip

Alternatively, you can import specific functions to use like so:

from skip import sign_bundle, send_bundle, sign_and_send_bundle, send_secure_transaction, send_bundle_async, sign_and_send_bundle_async

This helper library exposes six functions: sign_bundle, send_bundle, sign_and_send_bundle, send_secure_transaction, send_bundle_async, sign_and_send_bundle_async

sign_bundle

sign_bundle Signs a bundle of transactions and returns the signed bundle and the signature.

sign_bundle(bundle: list[bytes], private_key: bytes) -> tuple[list[str], bytes]
"""
Args:
    bundle (list[bytes]): A list of transaction bytes to sign. 
        The list of transaction must be in the order as the desired bundle.
        Transaction bytes can be obtained from mempool txs (tx) by applying base64.b64decode(tx)
    private_key (bytes): The private key to sign the bundle with in bytes.

Returns:
    tuple[list[str], bytes]: A tuple of the signed bundle and the signature.
"""

send_bundle

send_bundle Sends a signed bundle to the Skip Relay.

send_bundle(b64_encoded_signed_bundle: list[str], 
            bundle_signature: bytes, 
            public_key: str, 
            rpc_url: str, 
            desired_height: int, 
            sync: bool,
            timeout: float | None = 30) -> httpx.Response
"""
Args:
    b64_encoded_signed_bundle (list[str]): A list of base64 encoded signed transactions.
        The list of transaction must be in the order as the desired bundle.
    bundle_signature (bytes): The signature applied to the bundle.
    public_key (str): The base64 encoded public key of the private key used to sign the bundle.
    rpc_url (str): The URL of the Skip Relay RPC.
    desired_height (int): The desired height for the bundle to be included in. 
        Height of 0 can be used to include the bundle in the next block.
    sync (bool): A flag to indicate if the broadcast should be synchronous or not.
    timeout (float | None): Number of seconds to wait before throwing a read timeout error
        for httpx. Default is 10 seconds.

Returns:
    httpx.Response: The response from the Skip Relay.
"""

sign_and_send_bundle

sign_and_send_bundle Signs and sends a bundle to the Skip Relay (a wrapper function combining sign_bundle and send_bundle).

sign_and_send_bundle(bundle: list[bytes], 
                     private_key: bytes, 
                     public_key: str, 
                     rpc_url: str, 
                     desired_height: int,
                     timeout: float | None = 30) -> httpx.Response
"""
Args:
    bundle (list[bytes]): A list of transaction bytes to sign.
        The list of transaction must be in the order as the desired bundle.
        Transaction bytes can be obtained from mempool txs (tx) by applying base64.b64decode(tx)
    private_key (bytes): The private key to sign the bundle with in bytes.
    public_key (str): The base64 encoded public key of the private key used to sign the bundle.
    rpc_url (str): The URL of the Skip Relay RPC.
    desired_height (int): The desired height for the bundle to be included in.
    sync (bool): A flag to indicate if the broadcast should be synchronous or not.
    timeout (float | None): Number of seconds to wait before throwing a read timeout error
        for httpx. Default is 10 seconds.

Returns:
    httpx.Response: The response from the Skip Relay.
"""

send_secure_transaction

send_secure_transaction Sends a transaction securely through Skip Secure. The transaction's memo must be equal to the transaction sender address.

send_secure_transaction(transaction: bytes,
                        rpc_url: str,
                        timeout: float | None = 30) -> httpx.Response
"""
Sends a transaction through Skip Secure.

Args:
    transaction (str): Base64 encoded signed transaction to send.
    rpc_url (str): The URL of the Skip Secure RPC.
    timeout (float | None): Number of seconds to wait before throwing a read timeout error
    for httpx. Default is 10 seconds.

Returns:
    httpx.Response: The response from Skip Secure.
"""

send_bundle_async

send_bundle_async Sends a signed bundle to the Skip Relay asynchronously

send_bundle(b64_encoded_signed_bundle: list[str], 
            bundle_signature: bytes, 
            public_key: str, 
            rpc_url: str, 
            desired_height: int, 
            sync: bool,
            timeout: float | None = 30) -> httpx.Response
"""
Args:
    b64_encoded_signed_bundle (list[str]): A list of base64 encoded signed transactions.
        The list of transaction must be in the order as the desired bundle.
    bundle_signature (bytes): The signature applied to the bundle.
    public_key (str): The base64 encoded public key of the private key used to sign the bundle.
    rpc_url (str): The URL of the Skip Relay RPC.
    desired_height (int): The desired height for the bundle to be included in. 
        Height of 0 can be used to include the bundle in the next block.
    sync (bool): A flag to indicate if the broadcast should be synchronous or not.
    timeout (float | None): Number of seconds to wait before throwing a read timeout error
        for httpx. Default is 10 seconds.

Returns:
    httpx.Response: The response from the Skip Relay.
"""

sign_and_send_bundle_async

sign_and_send_bundle Signs and sends a bundle to the Skip Relay asynchronously (a wrapper function combining sign_bundle and send_bundle_async).

sign_and_send_bundle(bundle: list[bytes], 
                     private_key: bytes, 
                     public_key: str, 
                     rpc_url: str, 
                     desired_height: int,
                     timeout: float | None = 30) -> httpx.Response
"""
Args:
    bundle (list[bytes]): A list of transaction bytes to sign.
        The list of transaction must be in the order as the desired bundle.
        Transaction bytes can be obtained from mempool txs (tx) by applying base64.b64decode(tx)
    private_key (bytes): The private key to sign the bundle with in bytes.
    public_key (str): The base64 encoded public key of the private key used to sign the bundle.
    rpc_url (str): The URL of the Skip Relay RPC.
    desired_height (int): The desired height for the bundle to be included in.
    sync (bool): A flag to indicate if the broadcast should be synchronous or not.
    timeout (float | None): Number of seconds to wait before throwing a read timeout error
        for httpx. Default is 10 seconds.

Returns:
    httpx.Response: The response from the Skip Relay.
"""

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

skip-python-0.1.4.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

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

skip_python-0.1.4-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file skip-python-0.1.4.tar.gz.

File metadata

  • Download URL: skip-python-0.1.4.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for skip-python-0.1.4.tar.gz
Algorithm Hash digest
SHA256 d5aa15cf3a9ce7f79871724f3a41504b3faa0cb3d89714bb1370e9e54234b761
MD5 956a042b4006348bdcdee65731e3d581
BLAKE2b-256 7fcd15bdf352f444a3a546b166b07d88e45d15e938ee0a816f13599abe1dc8a8

See more details on using hashes here.

File details

Details for the file skip_python-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: skip_python-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for skip_python-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 96c29aac46d660eff6cccd87860b8cee144801608f01c87b57c7d5209358b306
MD5 263359a0c48f420a1e4e32f77d06e1cd
BLAKE2b-256 76f504237fe7614c502033000824b9e00bf6c4348a019ce0b44a20f90b7284fa

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