MEM
WebsiteLabsGuides
  • โš—๏ธMolecular Execution Machine
  • ๐Ÿ‘‹Introduction
    • What is MEM?
    • MEM features
    • MEM vs alternatives
    • Technical architecture
    • Use-case examples
  • โšกQuickstart
    • Quickstart guide
  • ๐Ÿ“–MEM Specifications
    • Function syntax
    • Function specs
    • Transaction specs
    • Supported languages
    • About MIPs
  • โš›๏ธMolecules
    • Overview
    • Multichain authentication
    • Using APIs
    • API reference
  • ๐ŸงชMEM IDE
    • Overview
    • Function ABI
  • โš’๏ธMEM Carbon Testnet
    • Overview
    • Deploy to testnet
    • Interact with testnet functions
  • โš™๏ธMEM SDK
    • SDK Usage
  • ๐Ÿ–ฅ๏ธMEM CLI
    • Function deployment
    • Function interaction
  • ๐Ÿ—๏ธMEM API
    • Overview
    • Write operations
    • Read operations
  • โš›๏ธ3EM-MEM
    • Overview
    • EXM API
    • Key-Value Storage (KVS)
  • ๐ŸงฉExamples
    • Pastebin clone
    • Query onchain data
Powered by GitBook

mem.tech ยฉ 2023

On this page
  • Install
  • Source code
  1. MEM SDK

SDK Usage

How to use the SDK

PreviousInteract with testnet functionsNextFunction deployment

Last updated 1 year ago

Install

npm install -g mem-sdk

Import MEM SDK

React, and other frameworks (also check out ):

import Mem from "mem-sdk";

const mem : Mem = new Mem({
  network: "mainnet" || "testnet"
});

Node (TS)

const { Mem } = require("mem-sdk");
const mem: Mem = new Mem({
  network: "mainnet" || "testnet"
});

Node (ES6)

import { Mem } from "mem-sdk"
const mem = new Mem({
  network: "mainnet" || "testnet"
});

Retrieve a function state

const FUNCTION_ID = "...";
const state = await mem.read(FUNCTION_ID);

Send an interaction (only works on server-side)

const FUNCTION_ID = "...";
const inputs = { function: "test", inputA: "valueA" };

const txid = await mem.write(FUNCTION_ID, inputs);

Deploy a function

const SRC = `export async function handle(state, action) {
  const input = action.input;


if (input.function === "save") {
    const { username, bio } = input;

    ContractAssert(username.trim().length, "ERROR_INVALID_INPUT");
    ContractAssert(typeof username === "string" && typeof bio === "string");
    state.logs.push ({ username, bio });
    return { state }
  }
}`;

const INIT_STATE = '{"logs": []}';

const id = await mem.deploy(SRC, INIT_STATE);

Fork a function to mainnet or testnet

While the SDK should be initialized for mainnet using this method, the fork functionality allows forking mainnet deployed function to either mainnet or carbon testnet:

const MAINNET_FUNCTION_ID = "...";
const FORK_IT_TO = "mainnet" || "testnet";
const OVERWRITE_INIT_STATE = btoa('{"new": "state"}'); // optional

const id = await mem.fork(MAINNET_FUNCTION_ID, FORK_IT_TO, OVERWRITE_INIT_STATE?);

Get a function's KV object (only mainnet)

const MAINNET_FUNCTION_ID = "...";
const kv = await mem.kvGet(MAINNET_FUNCTION_ID);

Named functions resolving DX (only mainnet)

await mem.read("ans.mem");

Source code

It is possible to assign a memorable name to a function ID using the (e.g., ans.mem instead of Tih...I5M). These .mem names are resolvable with the MEM SDK the same way you would pass a function ID:

The MEM SDK is an OSS licensed under the MIT license, check out the code's repository .

โš™๏ธ
React Version
function registry tool
here