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);
});
Updated over 4 years ago