logos-storage-js/README.md
2024-08-15 12:11:17 +02:00

3.9 KiB

Codex SDK

The Codex SDK provides an API for interacting with the Codex decentralized storage network.

The SDK has a small bundle size and support tree shaking.

Import

import { Codex } from "@codex/sdk-js";

or

const { Codex } = require("@codex/sdk-js");

How to use

To create a Codex instance, provide the REST API url to interact with the Codex client:

const codex = new Codex("http://localhost:3000")

To use a module, you need to use the await syntax. If the module is not loaded yet, it will be imported first and then cached in memory.

const marketplace = await codex.marketplace()

Error handling

The SDK provides a type called SafeValue for error handling instead of throwing errors. It is inspired by Go's "error as value" concept. If the value represents an error, error is true and data will contain the error. If the value is not an error, error is false and data will contain the requested data.

The error type is a CodexError which can be error object of 3 types:

  • error: Object containing the error message
  • api: Object containing the api error message and the status code
  • validation: Object containing the error message and a field errors of type ValidationError containing the error message for each fields.

Example:

const slots = marketplace.activeSlots(); 

if (slots.error) {
    // Do something to handle the error in slots.data 
    return 
}

// Access the slots within slots.data.

Marketplace

The following API assume that you have already a marketplace module loaded, example:

const codex = new Codex("http://localhost:3000")
const marketplace = await codex.marketplace()

activeSlots()

Returns active slots.

Example:

const slots = await marketplace.activeSlots(); 

activeSlot(slotId)

Returns active slot with id {slotId} for the host.

  • slotId (string, required)
  • returns Promise<CodexSlot[]>

Example:

const slotId=  "AB9........"
const slot = await marketplace.activeSlot(slotId); 

availabilities

Returns storage that is for sale.

Example:

const availabilities = await marketplace.availabilities(); 

createAvailability

Offers storage for sale.

Example:

const response = await marketplace.createAvailability({
    maxCollateral: 1,
    totalSize: 3000,
    minPrice: 100,
    duration: 100,
}); 

reservations

Return list of reservations for ongoing Storage Requests that the node hosts.

Example:

const reservations = await marketplace.reservations("Ox..."); 

createStorageRequest

Creates a new Request for storage

Example:

const request = await marketplace.createStorageRequest({
    duration: 3000,
    reward: 100,
    proofProbability: 1,
    nodes: 1,
    tolerance: 0,
    collateral: 100,
    expiry: 3000
}); 

purchaseIds

Returns list of purchase IDs

  • returns Promise<string[]>

Example:

const ids = await marketplace.purchaseIds(); 

purchaseDetail

Returns purchase details

Example:

const purchaseId =  "Ox........"
const purchase = await marketplace.purchaseDetail(purchaseId);