Перейти к содержанию

Быстрый старт

По умолчанию Kaspeak SDK работает в сети TESTNET-10, но ничто не мешает Вам использовать MAINET для запуска Вашего приложения.

Вы можете получить немного TKAS в TESTNET-10, обратившись к крану.

Установка

npm i kaspeak-sdk

Инициализация

1
2
3
4
5
6
7
const { Kaspeak } = require("kaspeak-sdk");

const PREFIX = "TEST";
const PRIV_KEY = 6;

const sdk = await Kaspeak.create(PRIV_KEY, PREFIX, "testnet-10");
await sdk.connect();

PREFIX это уникальное название вашего приложения, размер которого ограничен 4 байтами. Благодаря ему, сообщения других пользователей SDK не будут пересекаться с Вашими сообщениями.

Запуск примеров

Чтобы увидеть список доступных примеров, выполните:

npx kaspeak-example

Чтобы сразу запустить определённый пример, используйте одну из команд:

1
2
3
npx kaspeak-example quick-start
npx kaspeak-example delegate
npx kaspeak-example secret-message

Также для запуска основных примеров можно воспользоваться командами:

1
2
3
npm run example:quick-start
npm run example:secret-message
npm run example:delegate

Создание, отправка и прием простого незашифрованного сообщения

const { Kaspeak, BaseMessage, SecretIdentifier } = require("kaspeak-sdk");

class ExampleMessage extends BaseMessage {
    static requiresEncryption = false;
    static messageType = 1;

    constructor(foo = "", bar = "", header) {
        super(header);
        this.foo = foo;
        this.bar = bar;
    }

    toPlainObject() {
        return { f: this.foo, b: this.bar };
    }

    fromPlainObject(obj) {
        this.foo = obj.f ?? "";
        this.bar = obj.b ?? "";
    }
}

const PREFIX = "TEST";
const PRIV_KEY = 6;
const NETWORK_ID = "testnet-10";

let sdk;

async function exampleHandler(header, raw) {
    const msg = await sdk.decode(header, raw);
    console.log("Foo:", msg.foo, "Bar:", msg.bar);
}

async function main() {
    sdk = await Kaspeak.create(PRIV_KEY, PREFIX, NETWORK_ID);
    await sdk.connect();
    console.log("Public key:", sdk.publicKey);
    console.log("Address:", sdk.address);

    sdk.registerMessage(ExampleMessage, exampleHandler);

    const msg = new ExampleMessage("hello", "world");
    const encoded = await sdk.encode(msg);
    const identifier = SecretIdentifier.random();
    const tx = await sdk.createTransaction(encoded.length);
    const opIds = sdk.getOutpointIds(tx);
    const payload = await sdk.createPayload(opIds, ExampleMessage.messageType, identifier, encoded);
    await sdk.sendTransaction(tx, payload);
}

main();

Для запуска примера в основной сети, используйте NETWORK_ID = "mainnet"

Данный пример НЕ использует шифрование сообщений. Если вы хотите отправлять зашифрованные сообщения, обратитесь к разделу документации по шифрованию.