MỚI: Helius mua lại Light Protocol
cách tạo giao dịch Solana
Blog/Phát triển

Solana Dev 101 - Cách tạo giao dịch Solana

Kỹ sư trải nghiệm nhà phát triểnOwen Venter trên XOwen Venter trên LinkedIn
Đọc trong 5 phút

Giới thiệu

Chào buổi sáng! Trong bài viết này, thuộc loạt bài Solana Dev 101, chúng ta sẽ tìm hiểu cách tạo và gửi giao dịch bằng JavaScript trên Solana. Đây là hướng dẫn dành cho người mới bắt đầu, vì vậy đừng lo nếu bạn chưa quen với Solana hoặc công nghệ blockchain.

Nếu có bất kỳ câu hỏi nào, hãy tham gia Discord của Helius hoặc gắn thẻ Helius trên X  để được hỗ trợ.‍

Điều kiện tiên quyết

Để bắt đầu, chúng ta cần cài đặt Node.js và npm trên máy. Nếu cần, bạn có thể tải xuống tại đây.

Chúng ta cũng cần cài đặt thư viện Solana web3.js, một bộ công cụ và thư viện JavaScript được thiết kế để tương tác với blockchain Solana.

Bạn có thể cài đặt thư viện này bằng npm qua terminal với đoạn mã sau:

Mã
npm install @solana/web3.js

‍Bước 1: Thiết lập kết nối

Trước tiên, hãy tạo kết nối đến cụm Solana. Chúng ta sẽ dùng Helius để kết nối với một cụm devnet. Bạn cần tạo tài khoản Helius và khóa API. Bạn có thể tạo miễn phí trong bảng điều khiển.

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

Bước 2: Tạo ví mới

Bây giờ, chúng ta cần một ví để gửi giao dịch. Ví chỉ đơn giản là một cặp khóa công khai và khóa riêng tư, đồng thời có thể được tạo dễ dàng. Khóa công khai chính là địa chỉ ví, còn khóa riêng tư được dùng để ký giao dịch. Bạn có thể tìm hiểu thêm về mật mã khóa công khai tại đây.

Chúng ta có thể tạo một ví mới trên hệ thống tệp. Cặp khóa của ví này sẽ được lưu trên máy cục bộ. Nếu đã cài đặt các công cụ Solana CLI, bạn có thể chạy lệnh sau trong terminal để tạo ví mới.

Mã
solana-keygen new

Nếu chưa cài đặt, bạn sẽ cần cài đặt bộ công cụ Solana CLI. Bạn có thể xem thêm thông tin về cách thực hiện trong tài liệu Solana tại đây: https://docs.solana.com/cli/install-solana-cli-tools

Sau đó, chúng ta có thể đưa ví này vào mã:

Mã
const sender=solanaWeb3.Keypair.fromSecretKey(new Uint8Array([61,23,....,60,49]));

Bạn có thể sao chép khóa bí mật từ ví trên hệ thống tệp JSON đã tạo ở bước trước và sử dụng khóa đó.

Bước 3: Nạp tiền vào ví

Để gửi giao dịch, chúng ta cần có một ít SOL trong ví. Mỗi giao dịch trên Solana đều cần một khoản phí nhỏ để được xử lý.

Để thử nghiệm, chúng ta sẽ dùng vòi Devnet để nạp tiền vào ví. Hãy dùng vòi Helius trong bảng điều khiển hoặc làm theo hướng dẫn này để yêu cầu SOL trên Devnet qua CLI. Sau đó, nhập khóa công khai của ví vừa tạo và yêu cầu một ít SOL.

Bước 4: Tạo giao dịch

Giờ đây, khi ví đã có tiền, chúng ta có thể tạo giao dịch. Trong ví dụ này, chúng ta sẽ tạo giao dịch và thêm chỉ thị chuyển tiền vào giao dịch đó. Chúng ta sẽ dùng giao dịch này để chuyển 0,1 SOL đến một ví tùy chọn.

Một giao dịch có thể thực hiện nhiều tác vụ khác nhau tùy theo chỉ thị được cung cấp. Trong ví dụ này, chúng ta sẽ gửi SOL bằng chỉ thị chuyển tiền.

Mã
// 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,}),);

‍Trong đoạn mã trên, chúng ta tạo một đối tượng PublicKey mới bằng một ví tùy chọn. Để tạo giao dịch, cần dùng đối tượng PublicKey thay vì chỉ dùng địa chỉ. Chỉ thị chuyển tiền cũng nhận 3 tham số:

  1. fromPubkey: khóa công khai của tài khoản người gửi.
  2. toPubkey: khóa công khai của tài khoản người nhận.
  3. lamports: số lamport (đơn vị tiền tệ nhỏ nhất trên Solana) cần chuyển. solanaWeb3.LAMPORTS_PER_SOL tương đương 1 SOL.

Bước 5: Ký và gửi giao dịch

Sau khi tạo giao dịch, chúng ta cần ký giao dịch đó và gửi lên mạng.

Thư viện Solana Web3 có một hàm tên là sendAndConfirmTransaction(), giúp chúng ta dễ dàng thực hiện tất cả các thao tác này.

Phương thức sendAndConfirmTransaction gửi giao dịch lên mạng, chờ xác nhận và trả về chữ ký của giao dịch.

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

Phương thức sendAndConfrimTransaction nhận ba tham số:

  1. connection: Đây là đối tượng kết nối mạng Solana mà chúng ta đã tạo bằng kết nối Helius RPC. Tham số này xác định kết nối dùng để gửi và xác nhận giao dịch.
  2. transaction: Đây là đối tượng giao dịch vừa tạo, chứa chỉ thị chuyển tiền.
  3. [sender]: Đây là một mảng chứa tất cả các tài khoản ký giao dịch. Trong trường hợp này, mảng chứa một phần tử duy nhất là sender, đại diện cho tài khoản ký và cấp quyền cho giao dịch.

Vậy là xong!

Chúng ta vừa tạo và gửi một giao dịch trên Solana bằng JavaScript.

Bạn có thể dùng node sendTransaction.js để chạy tập lệnh.

Kết luận

Nhờ thư viện JavaScript toàn diện của Solana, việc tạo và gửi giao dịch trên Solana bằng JavaScript là một quy trình đơn giản. Chỉ với vài dòng mã, chúng ta đã có thể tương tác với blockchain Solana, mở ra vô số khả năng.

Đây là một ví dụ cơ bản, minh họa cấu trúc và quy trình tạo cũng như gửi giao dịch. Các ứng dụng thực tế có thể sử dụng những giao dịch phức tạp hơn và cần thêm các biện pháp bảo mật.

Hy vọng hướng dẫn này hữu ích. Chúc bạn lập trình vui vẻ!

Bạn có thể xem mã hoàn chỉnh tại đây.

Tài nguyên

‍

Đăng ký nhận tin từ Helius

Luôn cập nhật những thông tin mới nhất về phát triển Solana và nhận thông báo khi chúng tôi đăng bài