Klaytn Docs Archive VN
  • Tài liệu của Klaytn
  • -
    • Tổng quan về Klaytn
      • Tại sao nên chọn Klaytn
      • Thiết kế của Klaytn
        • Cơ chế đồng thuận
        • Tài khoản
        • Giao dịch
          • Cơ bản
          • Ủy thác phí
          • Ủy thác phí một phần
          • Ethereum
        • Tính toán
          • Hợp đồng thông mình Klaytn
          • Mô hình thực thi
          • Chi phí tính toán
            • Chi phí tính toán (Các tài liệu trước)
          • Máy ảo Klaytn
            • Máy ảo Klaytn (Các tài liệu trước)
        • Lưu trữ
        • Phí giao dịch
          • Phí giao dịch (Các tài liệu trước)
        • Đồng tiền mặc định của Klaytn - KLAY
        • Nền kinh tế token
        • Quản trị
        • Đa kênh
        • KNI
      • Các giải pháp mở rộng
    • Bắt đầu
      • Triển khai hợp đồng thông minh bằng Foundry
      • Triển khai hợp đồng thông minh bằng Hardhat
      • Triển khai hợp đồng thông minh bằng KEN
        • Khởi chạy nút điểm cuối
        • Nạp tiền vào tài khoản
        • Cài đặt các công cụ phát triển
        • Triển khai hợp đồng thông minh
        • Kiểm tra quy trình triển khai
        • Quản lý tài khoản
          • Tạo tài khoản
          • Quản lý tài khoản
      • Môi trường phát triển
      • Nhận KLAY
    • Hợp đồng thông minh
      • Solidity - Ngôn ngữ của hợp đồng thông minh
      • Hợp đồng đã lập trước
        • Hợp đồng đã lập trước (Các tài liệu trước)
      • IDE và công cụ
        • Truffle
      • Hợp đồng mẫu
        • KlaytnGreeter
        • ERC-20
          • 1. Soạn hợp đồng thông minh ERC-20
          • 2. Triển khai hợp đồng thông minh
          • 3. Tương tác với token ERC-20 từ Ví Klaytn
        • ERC-721
          • 1. Soạn hợp đồng thông minh ERC-721
          • 2. Triển khai hợp đồng thông minh
      • Hướng dẫn kiểm thử
      • Hướng dẫn triển khai
      • Token tương thích Klaytn
      • Di chuyển hợp đồng Ethereum
    • Chạy một Node
      • Triển khai
        • Nút điểm cuối
          • Yêu cầu hệ thống
          • Hướng dẫn cài đặt
            • Tải xuống
            • Hướng dẫn cài đặt
            • Cấu hình
            • Khởi động EN
            • Thử việc cài đặt
          • các lệnh CLI ken
          • API JSON-RPC
        • Core Cell
          • Yêu cầu hệ thống
          • Cấu hình mạng
          • Hướng dẫn cài đặt
            • Tải xuống
            • Trước khi cài đặt
            • Thiết lập nút đồng thuận
              • Hướng dẫn cài đặt
              • Cấu hình
              • Khởi động CN
            • Thiết lập nút proxy
              • Hướng dẫn cài đặt
              • Cấu hình
              • Khởi động PN
            • Kiểm tra Core Cell
          • Giám sát thiết lập
          • Thiết lập H/A
        • Chuỗi dịch vụ
          • Bắt đầu
            • Thiết lập chuỗi dịch vụ 4 nút
            • Kết nối với Baobab
            • Chuyển giá trị chuỗi chéo
            • HA (Tính sẵn sàng cao) dành cho Chuỗi dịch vụ
            • Chuỗi dịch vụ lồng nhau
            • Chuyển giá trị giữa các chuỗi dịch vụ kết nối
          • Hướng dẫn sử dụng tham chiếu
            • Yêu cầu hệ thống
            • Tải xuống
            • Hướng dẫn sử dụng SCN
              • Cài đặt
              • Cấu hình
              • Bắt đầu/dừng SCN
              • Kiểm tra trạng thái nút
              • các lệnh kscn
              • các lệnh homi
            • Hướng dẫn sử dụng SPN/SEN
              • Cài đặt
              • Cấu hình
              • Bắt đầu/dừng nút
              • Kiểm tra trạng thái nút
            • Cấu hình cầu nối
            • Neo
            • Neo KAS
            • Chuyển giá trị
            • Tập tin cấu hình
            • Tập tin bản ghi
            • Genesis JSON
            • Nâng cấp & Nâng cấp căn bản
          • Hướng dẫn sử dụng
        • Tải Về Các Gói Dịch Vụ
          • v1.11.1
          • v1.11.0
          • v1.10.2
          • v1.10.1
          • v1.10.0
          • v1.9.1
          • v1.9.0
          • v1.8.4
          • v1.8.3
          • v1.8.2
          • v1.8.1
          • v1.8.0
          • v1.7.3
          • v1.7.2
          • v1.7.1
          • v1.7.0
          • v1.6.4
          • v1.6.3
          • v1.6.2
          • v1.6.1
          • v1.6.0
          • v1.5.3
          • v1.5.2
          • v1.5.1
          • v1.5.0
          • v1.4.2
          • v1.4.1
          • v1.4.0
          • v1.3.0
          • v1.2.0
          • v1.1.1
          • v1.0.0
          • v0.9.6
          • v0.8.2
    • Hướng dẫn hoạt động
      • Cấu hình
      • Nhật ký nút
      • Ghi bản ghi hoạt động
      • Lỗi & xử lý sự cố
      • Lệnh Klaytn
      • Thay đổi dữ liệu chuỗi
      • Di chuyển dữ liệu chuỗi
    • dApp Developers
      • API JSON-RPC
        • Tham chiếu API
          • eth
            • Cảnh báo
            • Tài khoản
            • Khối
            • Giao dịch
            • Cấu hình
            • Bộ lọc
            • Gas
            • Khác
          • klay
            • Tài khoản
            • Khối
            • Giao dịch
              • Làm việc với các loại giao dịch của Klaytn
            • Cấu hình
            • Bộ lọc
            • Gas
            • Khác
          • net
          • gỡ lỗi
            • Ghi bản ghi
            • Tạo hồ sơ
            • Theo dõi thời gian chạy
            • Gỡ lỗi thời gian chạy
            • Theo dõi VM
            • Theo dõi tiêu chuẩn VM
            • Kiểm tra chuỗi khối
          • quản trị viên
          • cá nhân
          • txpool
          • quản trị
        • Tham chiếu API chuỗi dịch vụ
          • cầu nối chính
          • cầu nối phụ
        • Mã lỗi giao dịch
      • Nhà cung cấp dịch vụ RPC
        • Điểm cuối công khai
      • SDK & thư viện để tương tác với Nút Klaytn
        • caver-js
          • Bắt đầu
          • Gửi giao dịch mẫu
          • Tham chiếu API
            • caver.tài khoản
            • caver.wallet
              • caver.wallet.keyring
            • caver.transaction
              • Cơ bản
              • Ủy thác phí
              • Ủy thác phí một phần
            • caver.rpc
              • caver.rpc.klay
              • caver.rpc.net
              • caver.rpc.governance
            • caver.contract
            • caver.abi
            • caver.kct
              • caver.kct.kip7
              • caver.kct.kip17
              • caver.kct.kip37
            • caver.validator
            • caver.utils
            • caver.ipfs
          • caver-js ~v1.4.1
            • Bắt đầu (~v1.4.1)
            • Tham chiếu API
              • caver.klay
                • Tài khoản
                • Khối
                • Giao dịch
                  • Cũ
                  • Chuyển giá trị
                  • Ghi chú về chuyển giá trị
                  • Cập nhật tài khoản
                  • Triển khai hợp đồng thông minh
                  • Thực thi hợp đồng thông minh
                  • Cancel
                • Cấu hình
                • Bộ lọc
                • Khác
              • caver.klay.net
              • caver.klay.tài khoảns
              • caver.klay.Contract
              • caver.klay.KIP7
              • caver.klay.KIP17
              • caver.klay.abi
              • caver.utils (~v1.4.1)
            • Di chuyển từ web3.js
        • caver-java
          • Bắt đầu
          • Tham chiếu API
          • caver-java ~v1.4.0
            • Bắt đầu (~v1.4.0)
            • Di chuyển từ web3j
        • ethers.js
        • web3.js
      • Hướng dẫn
        • Bộ công cụ trực tuyến của Klaytn
        • Ví dụ về ủy thác phí
        • Count DApp
          • 1. Thiết lập môi trường
          • 2. Sao chép Count DApp
          • 3. Cấu trúc thư mục
          • 4. Soạn hợp đồng thông minh
          • 5. Tổng quan về mã Frontend
            • 5-1. Thành phần số khối
            • 5-2. Thành phần xác thực
            • 5-3. Thành phần đếm
          • 6. Triển khai hợp đồng
          • 7. Chạy ứng dụng
        • Klaystagram
          • 1. Thiết lập môi trường
          • 2. Sao chép Klaystagram DApp
          • 3. Cấu trúc thư mục
          • 4. Soạn hợp đồng thông minh Klaystagram
          • 5. Triển khai hợp đồng
          • 6. Tổng quan về mã Frontend
          • 7. Trang thông tin
            • 7-1. Kết nối hợp đồng với Frontend
            • 7-2. Thành phần UploadPhoto
            • 7-3. Thành phần nguồn cấp dữ liệu
            • 7-4. Thành phần TransferOwnership
          • 8. Chạy ứng dụng
        • Building a Buy Me a Coffee dApp
          • 1. Project Setup
          • 2. Creating a BMC Smart Contract
          • 3. Testing the contract using scripts
          • 4. Deploying BMC Smart contract
          • 5. Building the BMC Frontend with React and Web3Onboard
          • 6. Deploying Frontend code on IPFS using Fleek
          • 7. Conclusion
        • Migrating Ethereum App to Klaytn
        • Connecting MetaMask
        • Connecting Remix
        • Verifying Smart Contracts Using Block Explorers
      • Công cụ dành cho nhà phát triển
        • Ví
          • Kaikas
          • Ví Klaytn
          • Két Klaytn
            • Thiết kế két Klaytn
            • Tạo két
            • Thêm tài sản
            • Gửi tài sản
            • Tương tác hợp đồng
            • Trình xây dựng giao dịch
            • Các điểm đến nút
            • Câu hỏi thường gặp
          • Thư Viện Ví
            • Web3Auth
            • Web3Modal
            • Web3-Onboard
        • Oracle
          • Hệ Thống Orakl
          • Witnet
          • SupraOracles
        • Trình duyệt khối
          • Klaytnscope
          • Klaytnfinder
        • Klaytn Contracts Wizard
    • Glossary
  • ---
    • Lịch sử nâng cấp căn bản của Klaytn
    • Klaytn 2.0
      • Gói Metaverse
      • Tính hoàn thiện và cải tiến
      • Tương thích với Ethereum
      • Quản trị phi tập trung
      • Quỹ sinh thái lớn
    • Câu hỏi thường gặp
    • Mã nguồn mở
    • Điều khoản sử dụng
    • Ngôn ngữ
  • ℹ️Latest Klaytn Docs
Powered by GitBook
On this page
  • giới thiệu
  • Điều kiện tiên quyết
  • Thiết lập dự án
  • Cài đặt web3.js
  • Khởi động web3.js
  • Đọc dữ liệu từ chuỗi khối
  • Để gửi giao dịch đến chuỗi khối
  • Tương tác với hợp đồng thông minh
  1. -
  2. dApp Developers
  3. SDK & thư viện để tương tác với Nút Klaytn

web3.js

Previousethers.jsNextHướng dẫn

Last updated 1 year ago

giới thiệu

là một thư viện JavaScript cho phép các nhà phát triển tương tác với các mạng chuỗi khối tương tích với EVM như Klaytn. Với các tính năng hỗ trợ của Klaytn dành cho , các công cụ của Ethereum như web3.js có thể được dùng trên Klaytn mà không cần thực hiện những sửa đổi đáng kể.

Do đó, các nhà phát triển có thể tận dụng tính tương thích này và dùng thư viện web3.js để tương tác với một nút Klaytn.

Trong hướng dẫn này, bạn sẽ tìm hiểu cách để dùng thư viện web3.js để gửi một giao dịch, đọc dữ liệu từ chuỗi khối và tương tác với một hợp đồng cõ sẵn trên Mạng Klaytn.

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

Thiết lập dự án

Để bắt đầu, bạn cần tạo một thư mục dự án để chứa các tập tin được tạo trong hướng dẫn này.

mkdir web3-js
cd web3-js

Cài đặt web3.js

Để cài đặt web3.js, hãy chạy lệnh sau trong giao diện dòng lệnh:

npm install web3

Khởi động web3.js

Trong phần hướng dẫn này, chúng ta sẽ tạo một số tập tin mã lập trình để gửi giao dịch, đọc dữ liệu từ chuỗi khối và tương tác với một hợp đồng thông minh có sẵn. Để bắt đầu, bạn cần biết cách để khởi động web3.js cho từng tập tin mã lập trình.

Nhập web3 vào tập tin mã lập trình.

const { Web3 } = require('web3');

Sau khi nhập web3 thành công, bạn cần kết nối với Klaytn bằng cách khởi tạo một đối tượng web3.js với một URL PRC của mạng lưới Klaytn. Thêm mã dưới đây vào mã đã có sẵn:

const url = "RPC URL"  
const web3 = new Web3(url);

Ngoài ra, bạn cần thêm vào khóa riêng tư của mình để ký các giao dịch. Thêm mã dưới đây vào mã đã có sẵn:

const privateKey = "Paste private key";

Đọc dữ liệu từ chuỗi khối

Để đọc dữ liệu từ chuỗi khối, hãy tạo một tập tin read.js trong thư mục dự án bằng cách chạy lệnh sau:

touch read.js

Sau khi tạo tập tin này, hãy khởi động web3 như đã thực hiện trong phần khởi động. Trong phần này, bạn sẽ tìm hiểu cách đọc dữ liệu từ chuỗi khối (ví dụ như blockNumber, số dư KLAY).

Để xem hành động này, hãy dán mã sau vào read.js.

const { Web3 } = require('web3');

const url = "RPC URL"
const web3 = new Web3(url);

async function getLatestBlock() {
    const latestBlock = await web3.eth.getBlockNumber();
    console.log(latestBlock.toString());
}

async function getKlayBalance() {
    const klayBalance  = await web3.eth.getBalance("Paste wallet address");
    const formatBalance = await web3.utils.fromWei(klayBalance, 'ether');
    console.log(`You have ${formatBalance} KLAY`);
}

// call the following functions
getLatestBlock();
getKlayBalance();

Kết quả đầu ra

Để chạy mã lập trình và đọc dữ liệu từ chuỗi khối, bạn có thể chạy lệnh sau trong giao diện dòng lệnh:

node read.js

Nếu giao dịch thành công, bạn sẽ thấy số khối và số dư KLAY của người dùng được ghi lại trong giao diện dòng lệnh của mình.

Để gửi giao dịch đến chuỗi khối

Để gửi giao dịch đến chuỗi khối, hãy tạo một tập tin send.js mới trong thư mục dự án bằng cách chạy lệnh sau:

touch send.js

Sau khi tạo tập tin này, hãy khởi động web3 như đã thực hiện trong phần khởi động. Trong phần này, bạn sẽ tìm hiểu cách để gửi một giao dịch đến chuỗi khối, ví dụ như gửi KLAY đến một địa chỉ.

Để xem hành động này, hãy dán mã sau vào send.js.

const { Web3 } = require('web3');

const url = "RPC URL";
const web3 = new Web3(url);

const senderPrivateKey = "Paste private key";
const senderAddr = "Paste sender address";
const recipientAddr = "Paste recipient address";

async function sendTx() {
    const tx = await web3.eth.accounts.signTransaction({
        from: senderAddr,
        to: recipientAddr,
        value: 90000000000,
        maxFeePerGas: 250000000000,
        maxPriorityFeePerGas: 250000000000,
        gas: 21000,
    }, privateKey);

    const receipt = await web3.eth.sendSignedTransaction(tx.rawTransaction);
    console.log(receipt);
}

// call function
sendTx();

Kết quả đầu ra

Để chạy mã lập trình và gửi dữ liệu đến chuỗi khối, bạn có thể chạy lệnh sau trong giao diện dòng lệnh:

node send.js

Nếu giao dịch thành công, bạn sẽ thấy biên lai giao dịch được ghi lại trong giao diện dòng lệnh của mình.

Tương tác với hợp đồng thông minh

Để tương tác với một hợp đồng thông minh có sẵn trên Klaytn, hãy tạo một tập tin interact.js trong thư mục dự án bằng cách chạy lệnh sau:

touch interact.js

Sau khi tạo tập tin này, hãy khởi động web3 như đã thực hiện trong phần khởi động. Trong phần này, bạn sẽ dùng web3.js để tương tác với một hợp đồng thông minh trên Klaytn bằng cách khởi tạo một đối tượng Contract bằng ABI và địa chỉ của một hợp đồng đã triển khai.

Để xem hành động này, hãy dán mã sau vào interact.js.

const { Web3 } = require('web3');

const url = "RPC URL"  
const web3 = new Web3(url);

const privateKey = "Paste private key";

// replace with your contract ABI
const abi = [
    {
        "inputs": [],
        "name": "retrieve",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "num",
                "type": "uint256"
            }
        ],
        "name": "store",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    }
]

    // replace with your contract address
    const contractAddress = "0x472a1226796b6a0918DC78d40b87d750881fdbDC"

    const contract = new web3.eth.Contract(abi, contractAddress);

    // Can replace `10` with any value you want to store
    const storeTx = contract.methods.store(10);

    // send transaction to smart contract
    // modify contract
    async function setValue() {

     // Sign Tx with private key
    const createTransaction = await web3.eth.tài khoảns.signTransaction(
        {
          to: contractAddress,
          data: storeTx.encodeABI(),
          gas: await storeTx.estimateGas(),
          maxFeePerGas: 250000000000,
          maxPriorityFeePerGas: 250000000000,
        },
        privateKey
      );

      // Send Tx and Wait for Receipt
      const createReceipt = await web3.eth.sendSignedTransaction(createTransaction.rawTransaction);
      console.log(`Tx hash: ${createReceipt.transactionHash}`);

      }

      // read contract data
      async function retrieveValue() {
        // read from contract
        const tx = await contract.methods.retrieve().call();
        console.log(tx);
      }

      // call functions
      setValue();
      retrieveValue();

Kết quả đầu ra

Để chạy mã lập trình và tương tác với hợp đồng thông minh, bạn có thể chạy lệnh sau trong giao diện dòng lệnh:

node interact.js

Nếu giao dịch thành công, trong giao diện dòng lệnh của mình, bạn sẽ thấy hàm băm của giao dịch và giá trị được lưu trữ.

Trình biên tập mã: một trình biên tập mã nguồn như .

: được dùng để triển khai hợp đồng, ký giao dịch và tương tác với hợp đồng.

Điểm cuối RPC: bạn có thể nhận từ một trong những được hỗ trợ.

KLAY thử nghiệm từ : nạp tiền vào tài khoản với một lượng KLAY vừa đủ.

Vì mục đích của hướng dẫn này, một hợp đồng lưu trữ đơn giản đã được lập và triển khai trên . Chúng ta sẽ gửi một giao dịch đến hợp đồng bằng cách gọi hàm store và đọc dữ liệu từ đó bằng cách gọi hàm retrieve.

Để được hướng dẫn sâu hơn về web3.js, vui lòng tham khảo . Ngoài ra, bạn có thể tìm thấy cách triển khai mã đầy đủ cho hướng dẫn này trên

VS-Code
Metamask
Nhà cung cấp điểm cuối
Vòi
NodeJS và NPM
Remix IDE
tài liệu về web3.js
GitHub
web3.js
Sự tương đương với Ethereum