НОВОЕ: Helius приобретает Light Protocol
как создать транзакцию в Solana
Блог/Разработка

Solana Dev 101 — как создать транзакцию в Solana

Инженер по работе с разработчикамиOwen Venter в XOwen Venter в LinkedIn
Чтение: 5 мин

Введение

GM! В этой статье из серии Solana Dev 101 мы рассмотрим, как создать и отправить транзакцию в Solana с помощью JavaScript. Это руководство подходит для начинающих, поэтому не беспокойтесь, если вы только знакомитесь с Solana или блокчейн-технологиями.

Если у вас возникнут вопросы, присоединяйтесь к Helius Discord или отметьте Helius в X, чтобы получить помощь.‍

Предварительные требования

Для начала на вашем компьютере должны быть установлены Node.js и npm. При необходимости их можно скачать здесь.

Также потребуется установить библиотеку Solana web3.js — набор инструментов и библиотек JavaScript для взаимодействия с блокчейном Solana.

Чтобы установить ее с помощью npm, выполните в терминале следующий код:

Код
npm install @solana/web3.js

‍Шаг 1. Настройка подключения

Сначала создадим подключение к кластеру Solana. Для подключения к кластеру devnet мы будем использовать Helius. Вам потребуется создать аккаунт Helius и API-ключ. Это можно сделать бесплатно в панели управления.

Код
const solanaWeb3 = require('@solana/web3.js');
const connection = new solanaWeb3.Connection('<https://rpc-devnet.helius.xyz/?api-key=><api_key>','confirmed',);

Шаг 2. Создание нового кошелька

Теперь нам нужен кошелек, с которого мы будем отправлять транзакции. Кошелек — это пара из публичного и приватного ключей, которую легко создать. Публичный ключ — это адрес вашего кошелька, а приватный ключ используется для подписи транзакций. Подробнее о криптографии с публичным ключом можно прочитать здесь.

Мы можем создать новый кошелек в файловой системе. Пара ключей этого кошелька будет храниться на вашем локальном компьютере. Если вы уже установили инструменты Solana CLI, выполните в терминале следующую команду, чтобы создать новый кошелек.

Код
solana-keygen new

Если инструменты еще не установлены, вам потребуется установить набор Solana CLI. Подробнее об установке читайте в документации Solana: https://docs.solana.com/cli/install-solana-cli-tools

Затем добавим этот кошелек в наш код:

Код
const sender=solanaWeb3.Keypair.fromSecretKey(new Uint8Array([61,23,....,60,49]));

Скопируйте секретный ключ из JSON-файла кошелька, созданного на предыдущем шаге, и используйте его.

Шаг 3. Пополнение кошелька

Для отправки транзакций на кошельке должно быть немного SOL. За обработку каждой транзакции в Solana взимается небольшая комиссия.

Для тестирования мы пополним кошелек через наш кран Devnet. Используйте кран Helius в панели управления или следуйте этим инструкциям, чтобы запросить SOL в Devnet через CLI. Введите публичный ключ только что созданного кошелька и запросите SOL.

Шаг 4. Создание транзакции

Теперь, когда на кошельке есть средства, можно создать транзакцию. В этом примере мы создадим транзакцию и добавим в нее инструкцию перевода. С ее помощью мы переведем 0,1 SOL на выбранный кошелек.

Транзакция может выполнять разные действия в зависимости от инструкции. В этом примере мы отправим SOL с помощью инструкции перевода.

Код
// Set up the address to send to
const receiver = new solanaWeb3.PublicKey("86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY");

// Create a transaction    
const transaction = new solanaWeb3.Transaction().add(solanaWeb3.SystemProgram.transfer({
fromPubkey: sender.publicKey,toPubkey: receiver,
lamports: solanaWeb3.LAMPORTS_PER_SOL * 0.01,}),);

‍В приведенном выше коде мы создаем новый объект PublicKey с адресом выбранного кошелька. Для создания транзакции требуется объект PublicKey, а не просто адрес. Инструкция перевода также принимает три параметра:

  1. fromPubkey: публичный ключ аккаунта отправителя.
  2. toPubkey: публичный ключ аккаунта получателя.
  3. lamports: количество переводимых лампортов — наименьших единиц валюты в Solana. solanaWeb3.LAMPORTS_PER_SOL соответствует 1 SOL.

Шаг 5. Подпись и отправка транзакции

После создания транзакции нужно подписать ее и отправить в сеть.

В библиотеке Solana Web3 есть функция sendAndConfirmTransaction(), которая позволяет легко выполнить все эти действия.

Метод sendAndConfirmTransaction отправляет транзакцию в сеть, ожидает подтверждения и возвращает подпись транзакции.

Код
// Sign and confirm the transaction      
const signature = await solanaWeb3.sendAndConfirmTransaction(connection,transaction,[sender],);      
console.log('Transaction: ', signature);

Метод sendAndConfrimTransaction принимает три параметра:

  1. connection: объект подключения к сети Solana, созданный через RPC-подключение Helius. Этот параметр задает подключение, через которое транзакция будет отправлена и подтверждена.
  2. transaction: созданный нами объект транзакции, содержащий инструкцию перевода.
  3. [sender]: массив со всеми аккаунтами, подписывающими транзакцию. В данном случае он содержит один элемент sender, который представляет аккаунт, подписывающий и авторизующий транзакцию.

Готово!

Мы создали и отправили транзакцию в Solana с помощью JavaScript.

Чтобы запустить скрипт, выполните node sendTransaction.js.

Заключение

Благодаря функциональной библиотеке JavaScript создать и отправить транзакцию в Solana довольно просто. Всего несколько строк кода позволяют взаимодействовать с блокчейном Solana и открывают множество возможностей.

Это базовый пример, который показывает структуру и процесс создания и отправки транзакции. В реальных приложениях транзакции могут быть сложнее, а также могут потребоваться дополнительные меры безопасности.

Надеюсь, это руководство было полезным. Удачи в разработке!

Полный код доступен здесь.

Ресурсы

‍

Подпишитесь на Helius

Следите за новостями разработки на Solana и получайте уведомления о наших публикациях