ExSui (ex_sui v0.1.0)

View Source

ExSui is a comprehensive Elixir library that provides a high-performance, type-safe interface for interacting with the Sui blockchain through its native gRPC API.

Sui is a Layer 1 blockchain designed for near-instant, low-cost transactions with parallel processing and optimized scalability, making it ideal for DeFi, NFTs, and gaming. Sui uses Move, a smart contract language designed for safety and efficiency. Unlike traditional smart contract languages like Solidity, Move is built with security in mind, minimizing common vulnerabilities such as reentrancy attacks and ensuring better resource management.

Summary

Functions

Gets the current Sui blockchain checkpoint.

Gets the current Sui blockchain checkpoint.

Gets a transaction details.

Functions

get_checkpoint()

@spec get_checkpoint() ::
  {:ok, Sui.Rpc.V2beta.Checkpoint.t()} | {:error, GRPC.RPCError.t()}

Gets the current Sui blockchain checkpoint.

Examples

iex> ExSui.get_checkpoint()
{:ok,
  %Sui.Rpc.V2beta.Checkpoint{
    sequence_number: 212984592,
    digest: "4iuCTmYRJgVKGtZV2cN1piwgsftqFMcepo4ezRgTYoEE",
    summary: nil,
    signature: nil,
    contents: nil,
    transactions: [],
    __unknown_fields__: []
  }}

get_checkpoint(request)

@spec get_checkpoint(Sui.Rpc.V2beta.GetCheckpointRequest.t()) ::
  {:ok, Sui.Rpc.V2beta.Checkpoint.t()} | {:error, GRPC.RPCError.t()}

Gets the current Sui blockchain checkpoint.

Examples

iex> ExSui.get_checkpoint(%Sui.Rpc.V2beta.GetCheckpointRequest{})
{:ok,
  %Sui.Rpc.V2beta.Checkpoint{
    sequence_number: 212984592,
    digest: "4iuCTmYRJgVKGtZV2cN1piwgsftqFMcepo4ezRgTYoEE",
    summary: nil,
    signature: nil,
    contents: nil,
    transactions: [],
    __unknown_fields__: []
  }}

get_transaction(request)

@spec get_transaction(Sui.Rpc.V2beta.GetTransactionRequest.t()) ::
  {:ok, Sui.Rpc.V2beta.Transaction.t()} | {:error, GRPC.RPCError.t()}

Gets a transaction details.

Examples

iex> transaction = %Sui.Rpc.V2beta.GetTransactionRequest{digest: "3CadAYpBgYmgDVHWrKYne2V2bfN3ZkXfELVsBtoe7jHq", read_mask: %{paths: ["digest", "signatures", "events", "transaction"]}}
iex> ExSui.get_transaction(transaction)
{:ok,
  %Sui.Rpc.V2beta.ExecutedTransaction{
    digest: "3CadAYpBgYmgDVHWrKYne2V2bfN3ZkXfELVsBtoe7jHq",
    transaction: %Sui.Rpc.V2beta.Transaction{
      bcs: %Sui.Rpc.V2beta.Bcs{
        name: "TransactionData",
        value: <<0, 0, 11, ...>>,
        __unknown_fields__: []
      },
      digest: "3CadAYpBgYmgDVHWrKYne2V2bfN3ZkXfELVsBtoe7jHq",
      version: 1,
      kind: %Sui.Rpc.V2beta.TransactionKind{
        kind: {:programmable_transaction, ...},
        __unknown_fields__: []
      },
      sender: "0xe193565230dd7147bf7a9155cfbe1f25eec0feea71553dd76e84c3557f2c72db",
      gas_payment: %Sui.Rpc.V2beta.GasPayment{...},
      ...
    },
    signatures: [
      %Sui.Rpc.V2beta.UserSignature{
        bcs: %Sui.Rpc.V2beta.Bcs{
          name: "UserSignatureBytes",
          value: <<0, ...>>,
          __unknown_fields__: []
        },
        scheme: :ED25519,
        signature: <<107, ...>>,
        public_key: <<...>>,
        ...
      }
    ],
    effects: nil,
    events: %Sui.Rpc.V2beta.TransactionEvents{
      bcs: %Sui.Rpc.V2beta.Bcs{name: "TransactionEvents", value: <<...>>, ...},
      digest: "6ZWN85BdqXQEogb96zMMW9YDWps9dN3N4kf1CSrGr8Gj",
      events: [...],
      ...
    },
    checkpoint: nil,
    timestamp: nil,
    balance_changes: [],
    ...
  }}