Skip to main content

v2-action-signing-python

Python package to sign the following on-chain self-custodial requests:

  1. order
  2. RFQ quote
  3. RFQ execution
  4. transfer positions

Although the below actions are supported by the SDK, we recommend you use the UX developer portal (https://docs.derive.xyz/docs/onboard-via-interface):

  1. create subaccount
  2. deposit
  3. withdrawal
  4. transfer collateral

⚠️ Warning: Note, the owner address and the X-LyraWallet is the Derive wallet address of the user. This is NOT your original EOA, but the smart contract wallet on the Derive Chain. To find it in the website go to Home -> Developers -> "Derive Wallet".

Usage

  1. Install package: pip install derive_action_signing

  2. Sign an order

from web3 import Web3
from derive_action_signing import SignedAction, TradeModuleData, utils

session_key_wallet = Web3().eth.account.from_key("0x2ae8be44db8a590d20bffbe3b6872df9b569147d3bf6801a35a28281a4816bbd")

action = SignedAction(
    subaccount_id=30769,
    # The Derive wallet address (not "owner") of account. This is NOT your original EOA, but the smart contract wallet on the Derive Chain. To find it in the website go to Home -> Developers -> "Derive Wallet".
    owner=SMART_CONTRACT_WALLET_ADDRESS,
    signer=session_key_wallet.address,
    signature_expiry_sec=utils.MAX_INT_32,
    nonce=utils.get_action_nonce(),
    module_address=TRADE_MODULE_ADDRESS, # from Protocol Constants table in docs.lyra.finance
    module_data=TradeModuleData(
        asset=instrument_ticker["base_asset_address"],
        sub_id=int(instrument_ticker["base_asset_sub_id"]),
        limit_price=Decimal("100"),
        amount=Decimal("1"),
        max_fee=Decimal("1000"),
        recipient_id=30769,
        is_bid=True,
    ),
    DOMAIN_SEPARATOR=DOMAIN_SEPARATOR, # from Protocol Constants table in docs.derive.xyz
    ACTION_TYPEHASH=ACTION_TYPEHASH, # from Protocol Constants table in docs.derive.xyz
)

action.sign(session_key_wallet.key)

For full signing examples see examples/ in https://github.com/derivexyz/v2-action-signing-python/tree/master/examples.

Acknowledgements

Thank you 8baller for building a full Python client for the v2 API. Much of the signing logic in the repo was used to inform this package: https://github.com/8ball030/lyra_client

Developers

  1. Install Poetry: curl -sSL https://install.python-poetry.org | python3 -
  2. poetry install
  3. poetry shell (activate venv)
  4. pytest

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

derive_action_signing-0.0.9.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

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

derive_action_signing-0.0.9-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file derive_action_signing-0.0.9.tar.gz.

File metadata

  • Download URL: derive_action_signing-0.0.9.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.9.21 Linux/6.8.0-1021-azure

File hashes

Hashes for derive_action_signing-0.0.9.tar.gz
Algorithm Hash digest
SHA256 7506828f3a6007bacf45a313c987158f5d053639390db6e535e84c815fd179d6
MD5 d0401899a874bf678fd2f6e047da1f32
BLAKE2b-256 f303f4cd96e5840740baf16470d55632405327154a1aecba0c248098330e7e94

See more details on using hashes here.

File details

Details for the file derive_action_signing-0.0.9-py3-none-any.whl.

File metadata

File hashes

Hashes for derive_action_signing-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 b2792c486d974ee435def3a03b1ce128360f503b2e23cdcd720ea04c44a2994e
MD5 4b40ba72ae820a1bb98a87563fac04de
BLAKE2b-256 7179929800cef35c58c18616234aec7e0b1985d24022493b4566454e29665e1e

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