@acurast/sdk
v1.2.0
Published
Programmatic SDK for interacting with the Acurast Cloud.
Readme
Acurast SDK
Programmatic SDK for interacting with the Acurast Cloud.
@acurast/sdk is the main entry point for developers who want to deploy and manage deployments on Acurast from TypeScript/JavaScript. It bundles everything needed to upload a project to IPFS, register a job on-chain, match it with processors, and manage deployments.
Installation
$ npm install @acurast/sdkThe SDK relies on @polkadot/* packages as peer dependencies:
$ npm install @polkadot/api @polkadot/api-augment @polkadot/keyring \
@polkadot/types @polkadot/types-codec @polkadot/util \
@polkadot/util-crypto @polkadot/wasm-cryptoModules
The SDK is split into subpath exports so you can import only the parts you need.
@acurast/sdk/deploy
High-level deployment utilities. Zip a local project, upload it to IPFS, and register the job on the Acurast chain in a single call.
import { deployProject, loadAcurastConfig } from '@acurast/sdk/deploy'
const config = await loadAcurastConfig('./acurast.json')
await deployProject({ config /* ... */ })Also exports zipFolder, createManifest, checkIsFolder, and a Logger interface with a NOOP_LOGGER default.
@acurast/sdk/chain
Direct access to the Acurast chain: wallets, balances, job registration, assignments, environment variables, and app versions.
import {
walletFromMnemonic,
getBalance,
registerJob,
jobAssignments,
AcurastService,
setEnvVars
} from '@acurast/sdk/chain'Helpers include convertConfigToJob, duration constants (second, minute, hour, day), sensible defaults (DEFAULT_REWARD, DEFAULT_REPLICAS, ...), the JobEnvironmentService for encrypted env vars, and an InMemoryKeyStore.
@acurast/sdk/ipfs
Upload deployment scripts to IPFS.
import { uploadScript } from '@acurast/sdk/ipfs'
const cid = await uploadScript({
/* IpfsUploadOptions */
})@acurast/sdk/matcher
Pricing and matching helpers for jobs: check whether a job has matching processors, analyze fees, and get pricing advice.
import {
checkMatch,
checkMatchWithReward,
getAveragePrice,
getPriceDistribution,
getProcessorCount,
suggestCostPerExecution,
getFeeAnalysis,
analyzePricing,
fetchPricingAdvice
} from '@acurast/sdk/matcher'@acurast/sdk/types
Shared TypeScript types used across the SDK.
Runtimes
Set runtime on AcurastProjectConfig to pick the execution environment:
DeploymentRuntime.NodeJSWithBundle(default) — Node.js, bundled file deployment.DeploymentRuntime.NodeJS— Node.js, single-file deployment.DeploymentRuntime.Shell— native binary inside a Linux distro image (PRoot-isolated). Requiresimage: { url, sha256 }on the config; the SDK auto-addsRequiredModules.ShelltorequiredModulesand embeds the image reference inmanifest.json.
import { DeploymentRuntime } from '@acurast/sdk/types'
const config = {
runtime: DeploymentRuntime.Shell,
entrypoint: 'acurast.sh',
image: {
url: 'https://github.com/termux/proot-distro/releases/download/v4.30.1/ubuntu-questing-aarch64-pd-v4.30.1.tar.xz',
sha256: '5ab35b90cd9a9f180656261ba400a135c4c01c2da4b74522118342f985c2d328',
},
// ...
}Examples
See the examples/ folder for end-to-end usage.
