dydx-v3-rust 0.2.3

Rust SDK for dYdX v3 API
Documentation
from signers import SignWithKey
from eth_prive_action import SignEthPrivateAction
from onboarding_action import SignOnboardingAction
from web3 import Web3
import base64

def sign_private(network_id, ethereum_address, method, request_path, body, timestamp, private_key):
    eth_signer = SignWithKey(private_key)
    signer = SignEthPrivateAction(eth_signer, network_id)
    signature = signer.sign(
            ethereum_address,
            method=method,
            request_path=request_path,
            body=body,
            timestamp=timestamp
        )
    return signature

def sign_onboarding(network_id, ethereum_address, action, private_key):
    eth_signer = SignWithKey(private_key)
    signer = SignOnboardingAction(eth_signer, network_id)
    signature = signer.sign(
            ethereum_address,
            action=action
        )
    return signature

def derive_stark_private_key(signature):
    signature_int = int(signature, 16)
    hashed_signature = Web3.solidityKeccak(['uint256'], [signature_int])
    private_key_int = int(hashed_signature.hex(), 16) >> 5
    return hex(private_key_int)

def derive_secret(signature):
    signature_int = int(signature, 16)
    hashed_r_bytes = bytes(Web3.solidityKeccak(['uint256'], [signature_int]))
    secret_bytes = hashed_r_bytes[:30]
    secret = base64.urlsafe_b64encode(secret_bytes).decode()
    return secret

def derive_passphrase(signature):
    s_int = int(signature, 16)
    hashed_s_bytes = bytes(Web3.solidityKeccak(['uint256'], [s_int]))
    key_bytes = hashed_s_bytes[:16]
    passphrase_bytes = hashed_s_bytes[16:31]
    passphrase = base64.urlsafe_b64encode(passphrase_bytes).decode()
    return passphrase

def derive_key(signature):
    s_int = int(signature, 16)
    hashed_s_bytes = bytes(Web3.solidityKeccak(['uint256'], [s_int]))
    key_bytes = hashed_s_bytes[:16]
    key_hex = key_bytes.hex()
    key_uuid = '-'.join([
        key_hex[:8],
        key_hex[8:12],
        key_hex[12:16],
        key_hex[16:20],
        key_hex[20:],
    ])
    return key_uuid