These docs are for v3.0. Click to read the latest docs for v4.0.

Delegated Transfer UAX

Общая информация о токене UAX.

Получение nonce по адресу

Референс метода - https://docs.kuna.io/reference#nonce

Наименование метода:/nonce
Тип запроса:GET
Параметрыaddress - string, обязательный.

Пример ответов

{
  "nonce": 0
}
{
  "message": "string"
}

Получение комиссии за делегирование транзакции

Референс метода - https://docs.kuna.io/reference#fee

Наименование метода:/fee
Тип запроса:GET

Пример ответов

{
  "fee": 0
}
{
  "message": "string"
}

Отправка подписанной транзакции

Референс метода - https://docs.kuna.io/reference#delegate-transfer

Наименование метода:/delegate-transfer
Тип запроса:POST

Параметры

{
  "to": "string",
  "value": 0,
  "fee": 0,
  "nonce": 0,
  "v": 0,
  "r": "string",
  "s": "string",
  "from": "string"
}

Примеры ответов

}
  "status": true
}
{
  "message": "string"
}

Получить delegated transactions по адресу

Референс метода - https://docs.kuna.io/reference#transactions

Наименование метода:/delegated-transactions
Тип запроса:POST

Примеры ответов

{
  "from": "string",
  "to": "string",
  "txid": "string",
  "status": "string",
  "createdAt": "string",
  "updatedAt": "string"
}
{
  "message": "string"
}

Работа с делегатом для Delegated Trasfer

const ethUtil = require('ethereumjs-util');
const web3Utils = require('web3-utils');
const https = require('https');

const apiHost = "api.xreserve.fund";
const contractAddress = "0x1Fc31488f28ac846588FFA201cDe0669168471bD";
const delegatedAddress = "0x8826a55c94915870aceed4ea9f1186678fcbdaf6";

const fromPrivKey = "6aYOURPRIVATEKEYf7";
const from = "0x99YOURPUBLICKEY74";
const to = "0x6ARECIPIENT39";
const value = 3;
const fee = 1; // get this fee via delegated api, as it may change dynamically

https.get("https://" + apiHost + "/nonce?address=" + from, (resp) => {
    resp.on('data', (chunk) => {
        let result = JSON.parse(chunk.toString());
        const nonce = result.nonce;

        const sigArgs = [
            {type: 'address', value: contractAddress},
            {type: 'address', value: delegatedAddress},
            {type: 'address', value: to},
            {type: 'uint256', value: value},
            {type: 'uint256', value: fee},
            {type: 'uint256', value: nonce}
        ];

        const message = web3Utils.soliditySha3(...sigArgs);

        const messageHex = Buffer.from(message.replace('0x', ''), 'hex');

        const {v, r, s} = ethUtil.ecsign(messageHex, Buffer.from(fromPrivKey, 'hex'));

        const data = JSON.stringify({
            to: to,
            value: value,
            fee: fee,
            nonce: nonce,
            v: v,
            r: ethUtil.bufferToHex(r),
            s: ethUtil.bufferToHex(s),
            from: from
        });

        const options = {
            hostname: apiHost,
            port: 443,
            path: '/delegate-transfer',
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'Content-Length': data.length
            }
        };

        const req = https.request(options, (res) => {
            res.on('data', (d) => {
                let result = JSON.parse(d.toString());
                if (result.status) {
                    console.log("Transaction sent. Check ERC-20 transactions to", to);
                }
                else {
                    console.log("Error")
                }
            })
        });

        req.on('error', (err) => {
            console.log("Error: " + err.message);
        });

        req.write(data);
        req.end()
    });
}).on("error", (err) => {
    console.log("Error: " + err.message);
});