Установка и использование платформы
Создание и отправка транзакций при помощи JS SDK¶
Принципы создания транзакции¶
Вызов любой транзакции осуществляется при помощи функции Waves.API.Transactions.<ИМЯ_ТРАНЗАКЦИИ>.<ВЕРСИЯ_ТРАНЗАКЦИИ>
.
Например, так выглядит вызов транзакции для перевода токенов 3 версии:
const tx = Waves.API.Transactions.Transfer.V3(txBody);
txBody – тело транзакции, содержащее необходимые параметры. К примеру, для вышеуказанной транзакции Transfer оно может выглядеть так:
const tx = Waves.API.Transactions.Transfer.V3(txBody);
{
"sender": "3M6dRZXaJY9oMA3fJKhMALyYKt13D1aimZX",
"password": "",
"recipient": "3M6dRZXaJY9oMA3fJKhMALyYKt13D1aimZX",
"amount": 40000000000,
"fee": 100000
}
Тело транзакции можно оставить пустым и заполнить необходимые параметры позднее при помощи обращения к переменной, в которую возвращается результат функции вызова транзакции (в примере – переменная tx
):
const tx = Waves.API.Transactions.Transfer.V3({});
tx.recipient = '12afdsdga243134';
tx.amount = 10000;
//...
tx.sender = "3M6dRZXaJY9oMA3fJKhMALyYKt13D1aimZX";
//...
tx.amount = 40000000000;
tx.fee = 10000;
Такой способ вызова транзакции позволяет более гибко производить числовые операции в коде и пользоваться отдельными функциями для определения тех или иных параметров.
Транзакции 3, 13, 14 и 112 используют текстовое поле description
, а транзакции 4 и 6 – текстовое поле attachment
.
Сообщения, отправляемые в этих полях транзакций, перед отправкой необходимо перевести в формат base58.
Для этого в JS SDK предусмотрены две функции:
base58.encode
– перевод текстовой строки в формат base58;base58.decode
– обратная расшифровка строки в формате base58 в текст.
Пример тела транзакции с применением base58.encode
:
const txBody = {
recipient: seed.address,
assetId: '',
amount: 10000,
fee: minimumFee[4],
attachment: Waves.tools.base58.encode('Examples transfer attachment'),
timestamp: Date.now()
}
const tx = Waves.API.Transactions.Transfer.V3(txBody);
Внимание
При вызове транзакций при помощи JS SDK вам требуется заполнить все необходимые параметры тела транзакции, кроме type
, version
, id
, proofs
и senderPublicKey
. Эти параметры заполняются автоматически при генерации пары ключей (keyPair).
Описание параметров, входящих в тело каждой транзакции, см. в разделе Описание транзакций.
Отправка транзакции¶
Для отправки транзакции в сеть посредством JS SDK используется метод broadcast
:
await tx.broadcast(seed.keyPair);
Этот метод вызывается после создания транзакции и заполнения ее параметров.
Результат его выполнения может быть присвоен переменной для отображения результата отправки транзакции в сеть (в примере – переменная result
):
try {
const result = await tx.broadcast(seed.keyPair);
console.log('Broadcast PolicyCreate result: ', result)
} catch (err) {
console.log('Broadcast error:', err)
}
Ниже приведен полный листинг вызова транзакции перевода токенов и ее отправки:
Примеры вызова и отправки других транзакций см. в разделе «Примеры использования» Дополнительные методы, доступные при создании и отправке транзакции
Помимо метода broadcast, для отладки и определения параметров транзакции доступны следующие методы:
isValid
– проверка тела транзакции, возвращает0
или1
;getErrors
– возвращает строковый массив, содержащий описание ошибок, допущенных при заполнении полей;getSignature
– возвращает строку с ключом, которым была подписана транзакция;getId
– возвращает строку с идентификатором отправляемой транзакции;getBytes
– внутренний метод, который возвращает массив байт для подписания.