Tìm hiểu mạng solana

I.Giới thiệu:

  • Solana là một blockchain đang phát triển nhằm tìm cách giải quyết các vấn đề về khả năng mở rộng mà Ethereum đã và đang xử lý.
  • Solana sử dụng một sự đồng thuận được gọi là Bằng chứng lịch sử (Proof of History).
  • Proof of History hoạt động thông qua giải pháp ghi dấu thời gian; mỗi giao dịch có một dấu thời gian được phân bổ cho nó để cho phép phần còn lại của mạng xác minh là giao dịch hợp pháp chỉ trong một phần nhỏ của giây.

II. Cách thực hiện:

A.Setup env

B. Tạo token và gửi token :

Step 1. Kết nối đến devnet cluster
Step 2. Tạo ví , xin SOL
Step 3. Tạo token
Step 4. Tạo ví để nhận token
Step 5. Tạo giao dịch
Step 6. Kí giao dịch , gửi và xác nhận

Source code :

const web3 = require('@solana/web3.js');
const splToken = require('@solana/spl-token');

(async () => {
  // Connect to cluster
  const connection = new web3.Connection(
    web3.clusterApiUrl('devnet'),
    'confirmed',
  );

  // Generate a new wallet keypair and airdrop SOL
  var fromWallet = web3.Keypair.generate();
  var fromAirdropSignature = await connection.requestAirdrop(
    fromWallet.publicKey,
    web3.LAMPORTS_PER_SOL,
  );
  // Wait for airdrop confirmation
  await connection.confirmTransaction(fromAirdropSignature);

  // Generate a new wallet to receive newly minted token
  const toWallet = web3.Keypair.generate();

  // Create new token mint
  const mint = await splToken.Token.createMint(
    connection,
    fromWallet,
    fromWallet.publicKey,
    null,
    9,
    splToken.TOKEN_PROGRAM_ID,
  );

  // Get the token account of the fromWallet Solana address, if it does not exist, create it
  const fromTokenAccount = await mint.getOrCreateAssociatedAccountInfo(
    fromWallet.publicKey,
  );

  //get the token account of the toWallet Solana address, if it does not exist, create it
  const toTokenAccount = await mint.getOrCreateAssociatedAccountInfo(
    toWallet.publicKey,
  );

  // Minting 1 new token to the "fromTokenAccount" account we just returned/created
  await mint.mintTo(
    fromTokenAccount.address,
    fromWallet.publicKey,
    [],
    1000000000,
  );

  // Add token transfer instructions to transaction
  const transaction = new web3.Transaction().add(
    splToken.Token.createTransferInstruction(
      splToken.TOKEN_PROGRAM_ID,
      fromTokenAccount.address,
      toTokenAccount.address,
      fromWallet.publicKey,
      [],
      1,
    ),
  );

  // Sign transaction, broadcast, and confirm
  const signature = await web3.sendAndConfirmTransaction(
    connection,
    transaction,
    [fromWallet],
    {commitment: 'confirmed'},
  );
  console.log('SIGNATURE', signature);
})();


Kết quả transfer token:
https://explorer.solana.com/tx/5ib6jPougUyvjRC3QRUW1Z4RzDYsUDo7VE1pLhNrndkH3hG6VfvNod1P5XqA69xeQmxvbuJps4d7Gjrr1nxmGN74?cluster=devnet