Bourse.Signing.Lighter.Protocol (bourse v0.1.0)

Copy Markdown View Source

Versioned framed protocol for the isolated Lighter signing helper.

Frames carry typed values only. The helper never returns native error text, so failures cannot reflect key material into the BEAM or logs.

Summary

Functions

Decodes one response and verifies its operation and request ID.

Encodes the one-time helper initialization request.

Encodes a whitelisted signing operation.

Types

operation()

@type operation() ::
  :auth_token
  | :create_order
  | :cancel_order
  | :cancel_all_orders
  | :modify_order
  | :update_leverage
  | :update_margin

protocol_error()

@type protocol_error() ::
  :protocol_error
  | :not_initialized
  | :already_initialized
  | :invalid_argument
  | :client_initialization_failed
  | :signing_failed
  | :response_too_large

signed_transaction()

@type signed_transaction() :: %{
  tx_type: non_neg_integer(),
  tx_info: String.t(),
  tx_hash: String.t(),
  message_to_sign: String.t()
}

Functions

decode_response(response, operation, request_id)

@spec decode_response(binary(), :init | operation(), non_neg_integer()) ::
  :ok | {:ok, String.t() | signed_transaction()} | {:error, protocol_error()}

Decodes one response and verifies its operation and request ID.

encode_init(request_id, url, private_key, chain_id, api_key_index, account_index)

@spec encode_init(
  non_neg_integer(),
  String.t(),
  String.t(),
  non_neg_integer(),
  non_neg_integer(),
  pos_integer()
) :: {:ok, binary()} | {:error, :invalid_argument}

Encodes the one-time helper initialization request.

encode_request(request_id, operation, params)

@spec encode_request(non_neg_integer(), operation(), map()) ::
  {:ok, binary()} | {:error, :invalid_argument}

Encodes a whitelisted signing operation.