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
  • Kiến trúc hệ thống
  • Tài khoản người vận hành cầu nối
  • Tập tin mật khẩu và lưu trữ khóa
  • Kiểm tra địa chỉ người vận hành cầu nối
  • Gửi KLAY đến Người vận hành cầu nối
  • Hợp đồng cầu nối
  • Triển khai
  • Đăng ký
  • Kiểm tra trạng thái
  • Hợp đồng token (ERC-20/721)
  • Triển khai
  • Đăng ký
  • Yêu cầu chuyển giá trị
  • Chuyển KLAY
  • Chuyển ERC-20
  • Chuyển ERC-721
  • Khôi phục chuyển giá trị
  • Thu phí cho lệnh chuyển KLAY/ERC-20
  • Tuỳ chỉnh hợp đồng cầu nối của bạn
  1. -
  2. Chạy một Node
  3. Triển khai
  4. Chuỗi dịch vụ
  5. Hướng dẫn sử dụng tham chiếu

Chuyển giá trị

PreviousNeo KASNextTập tin cấu hình

Last updated 1 year ago

Như đã giải thích trong phần thiết kế Klaytn, Chuỗi dịch vụ hỗ trợ chuyển giá trị (KLAY, ERC-20 và ERC-721) giữa chuỗi mẹ & chuỗi con. Trang này hiển thị cách bật tính năng chuyển giá trị trong SCN.

Sau khi thiết lập EN và SCN, quy trình sau đây là bắt buộc để có thể chuyển giá trị giữa các chuỗi.

  1. Kiểm tra địa chỉ của các tài khoản người vận hành cầu nối và thêm KLAY vào tài khoản người vận hành cầu nối.

  2. Triển khai hợp đồng cầu nối cho chuỗi mẹ/con.

  3. Triển khai hợp đồng token (ERC-20 or 721) cho chuỗi mẹ/con. (Nếu bạn chỉ cần chuyển KLAY, bạn có thể bỏ qua bước 3 & 4.)

  4. Đăng ký hợp đồng token với hợp đồng cầu nối trên chuỗi mẹ/con.

  5. Đặt mua hợp đồng cầu nối cho chuỗi mẹ/con.

Trước khi làm theo các bước này, chúng ta hãy xem kiến trúc hệ thống cấp cao để hiểu cơ chế đằng sau đó.

Kiến trúc hệ thống

Hình 1 cho thấy kiến trúc hệ thống của Chuỗi dịch vụ với các hợp đồng cầu nối/token và các nút cầu nối.

Các hợp đồng bên dưới giao tiếp với nhau thông qua cầu nối chính/cầu nối con để xử lý các yêu cầu chuyển giá trị của người dùng.

  • Hợp đồng cầu nối

  • Hợp đồng ERC-20 (nếu cần)

  • Hợp đồng ERC-721 (nếu cần)

Tài khoản người vận hành cầu nối

Đối với ServiceChain, có hai tài khoản người vận hành: tài khoản người vận hành cầu nối chuỗi mẹ, tài khoản người vận hành cầu nối chuỗi dịch vụ. Mỗi tài khoản người vận hành được sử dụng để ký kết các giao dịch. Nếu giao dịch chuyển giá trị sang chuỗi mẹ, tài khoản người vận hành cầu nối chuỗi mẹ sẽ ký giao dịch. Nếu giao dịch chuyển giá trị sang chuỗi con, tài khoản người vận hành cầu nối chuỗi con sẽ được sử dụng. Nếu người dùng gửi giao dịch "yêu cầu chuyển giá trị", cầu nối con sẽ tạo giao dịch "xử lý chuyển giá trị" được ký bởi tài khoản người vận hành cầu nối. Do đó, người vận hành cầu nối chuỗi mẹ cần có đủ số dư KLAY để trả phí giao dịch cho chuỗi mẹ. Nếu giá gas của chuỗi dịch vụ được đặt khác không, người vận hành cầu nối chuỗi dịch vụ cũng phải có KLAY trong số dư của mình.

Tập tin mật khẩu và lưu trữ khóa

Khi SCN được khởi động, các tập tin mật khẩu và lưu trữ khóa cho người vận hành mẹ/con sẽ tự động được tạo nếu khóa của chúng không tồn tại. Nếu bạn muốn sử dụng một tài khoản cụ thể làm người vận hành, bạn có thể cung cấp khóa. Đặt các tập tin bên dưới vào đường dẫn được chỉ định trước khi khởi động SCN. Tập tin mật khẩu phải có chuỗi mật khẩu của tập tin lưu trữ khóa. Tên của tập tin mật khẩu phải có địa chỉ tài khoản của tập tin lưu trữ khóa tương ứng.

tập tin

  • tập tin lưu trữ khóa : UTC--2019-10-21T04-05-41.493850000Z--2ed72a9d7fe5da7672fd21567e07302431649b0b

  • tập tin mật khẩu : 0x2eD72a9D7fe5da7672fD21567e07302431649B0B

đường dẫn tập tin

  • Người vận hành cầu nối chuỗi mẹ : $datadir/parent_bridge_tài khoản

  • Người vận hành cầu nối chuỗi con : $datadir/child_bridge_tài khoản

> pwd
/$dataDIR/child_bridge_tài khoản

> ls
0x2eD72a9D7fe5da7672fD21567e07302431649B0B
UTC--2019-10-21T04-05-41.493850000Z--2ed72a9d7fe5da7672fd21567e07302431649b0b

> cat 0x2eD72a9D7fe5da7672fD21567e07302431649B0B
%S~f5qqM38cB47jL%

> cat UTC--2019-10-21T04-05-41.493850000Z--2ed72a9d7fe5da7672fd21567e07302431649b0b
{"address":"2ed72a9d7fe5da7672fd21567e07302431649b0b","crypto":{"cipher":"aes-128-ctr","ciphertext":"6486509e8158bf4984608cbc5562cf2c9a27cd988a98e543731b39251144e633","cipherparams":{"iv":"96d7e5b6a936278c0797faae6cb3d903"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"8928ba41b8228af19390ec881c51452fa3ea973ad2c253ca0f5bc9197a8b24c4"},"mac":"9c8ec63694c20a473e0ea33840e7d16e9f1a20afc52b3244b703a3ac0a66cfa3"},"id":"9ae10527-7fd3-4aae-a4eb-316af211494e","version":3}

Kiểm tra địa chỉ người vận hành cầu nối

Nếu bạn chạy SCN thành công, bạn có thể kiểm tra địa chỉ người vận hành cầu nối chuỗi mẹ/con bằng API RPC như sau.

$ kscn attach ~/kscnd_home/klay.ipc
Chào mừng bạn đến với bảng điều khiển Klaytn JavaScript!

instance: Klaytn/vvX.X.X/XXXX-XXXX/goX.X.X

 datadir: ~/kscnd_home
 modules: admin:1.0 subbridge:1.0 debug:1.0 governance:1.0 istanbul:1.0 klay:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 servicechain:1.0 txpool:1.0

> subbridge.parentOperator
"0xA057995175B93Ee0D1bdfA54f078Ad0F0116130b"
> subbridge.childOperator
"0x5C1C757a6Cb6c6FcEFE398674D8209FDA2A74Df4"

Bạn có thể tham khảo API cầu nối con để biết thêm chi tiết.

Gửi KLAY đến Người vận hành cầu nối

Giống như việc neo, người vận hành cầu nối chuỗi mẹ cần KLAY để thực hiện giao dịch chuyển giá trị. Nếu giá gas của chuỗi dịch vụ được đặt khác không, người vận hành cầu nối chuỗi dịch vụ cũng phải có KLAY trong số dư của mình.

Sau khi nạp tiền vào tài khoản người vận hành, bạn có thể kiểm tra số dư như bên dưới.

Người vận hành cầu nối chuỗi mẹ

$ kscn attach ~/kscnd_home/klay.ipc
Chào mừng bạn đến với bảng điều khiển Klaytn JavaScript!

 instance: Klaytn/vvX.X.X/XXXX-XXXX/goX.X.X
 datadir: ~/kscnd_home
 modules: admin:1.0 subbridge:1.0 debug:1.0 klay:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

> subbridge.parentOperatorBalance
1e+50

Người vận hành cầu nối chuỗi con

$ kscn attach ~/kscnd_home/klay.ipc
Chào mừng bạn đến với bảng điều khiển Klaytn JavaScript!

 instance: Klaytn/vvX.X.X/XXXX-XXXX/goX.X.X
 datadir: ~/kscnd_home
 modules: admin:1.0 subbridge:1.0 debug:1.0 klay:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

> subbridge.childOperatorBalance
1e+50

Hợp đồng cầu nối

Đối với việc chuyển giá trị chuỗi chéo, nên triển khai một hợp đồng cầu nối cho các chuỗi mẹ/con. Người dùng có thể yêu cầu chuyển KLAY sang hợp đồng cầu nối để gửi KLAY của họ sang chuỗi khác. Ngoài ra, nếu hợp đồng token được đăng ký trong hợp đồng cầu nối, hợp đồng cầu nối có thể xử lý việc chuyển token giữa chuỗi mẹ và chuỗi con.

Triển khai

Cầu nối con cung cấp API triển khai hợp đồng cầu nối. Bạn có thể triển khai các hợp đồng cầu nối cho cả hai chuỗi bằng một lệnh gọi RPC như bên dưới. Trước khi làm vậy, bạn cần kết nối cầu nối chính và cầu nối con. Vui lòng tham chiếu Cấu hình cầu nối để biết hướng dẫn chi tiết.

$ kscn attach ~/kscnd_home/klay.ipc
Chào mừng bạn đến với bảng điều khiển Klaytn JavaScript!

instance: Klaytn/vvX.X.X/XXXX-XXXX/goX.X.X

 datadir: ~/kscnd_home
 modules: admin:1.0 subbridge:1.0 debug:1.0 governance:1.0 istanbul:1.0 klay:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 servicechain:1.0 txpool:1.0

> subbridge.deployBridge()
["0x27caeba831d98b5fbb1d81ce0ed20801702f443a", "0x22c41ae528627b790233d2e59ea520be12350eb5"]

> subbridge.listBridge
[{
    localAddress: "0x27caeba831d98b5fbb1d81ce0ed20801702f443a",
    remoteAddress: "0x22c41ae528627b790233d2e59ea520be12350eb5",
    subscribed: false
}]

Bạn có thể tham chiếu API cầu nối con để biết thêm chi tiết.

subbridge_listBridge thể hiện địa chỉ hợp đồng cầu nối và trạng thái đăng ký của chúng. Cầu nối con lưu danh sách các địa chỉ hợp đồng cầu nối trong một tập tin. Khi khởi động lại hệ thống, cầu nối con tải lại danh sách hợp đồng cầu nối từ tập tin đó.

Đăng ký

Sau khi triển khai hợp đồng cầu nối, bạn nên đăng ký cầu nối con với các hợp đồng cầu nối đã triển khai để kích hoạt tính năng chuyển giá trị. Bạn có thể làm việc này bằng cách sử dụng một lệnh gọi RPC API khác, subbridge_subscribeBridge.

> subbridge.subscribeBridge("0x27caeba831d98b5fbb1d81ce0ed20801702f443a", "0x22c41ae528627b790233d2e59ea520be12350eb5")
null

> subbridge.listBridge
[{
    localAddress: "0x27caeba831d98b5fbb1d81ce0ed20801702f443a",
    remoteAddress: "0x22c41ae528627b790233d2e59ea520be12350eb5",
    subscribed: true
}]

Kiểm tra trạng thái

Sau khi đăng ký, SCN sẽ tự động xử lý các giao dịch "yêu cầu chuyển giá trị" của người dùng. Phần này giải thích cách để kiểm tra trạng thái hợp đồng cầu nối.

Trong một hợp đồng cầu nối có hai số dùng một lần, requestNonce và handleNonce. Không giống như các giao dịch theo chuỗi, cầu nối con có thể xử lý yêu cầu số dùng một lần cao hơn trước những yêu cầu số dùng một lần thấp hơn.

  • requestNonce : số lượng yêu cầu "chuyển giá trị chuỗi chéo" của người dùng với hợp đồng cầu nối này.

  • handleNonce : số dùng một lần cao nhất mà cầu nối con đã xử lý.

  • lowerHandleNonce : số dùng một lần thấp nhất mà cầu nối con sẽ xử lý.

Do đó, nếu số dùng một lần được cập nhật như dưới đây, chúng ta có thể nói việc chuyển giá trị chuỗi chéo đang được xử lý chính xác.

  • "handleNonce" và "lowerHandleNonce" của hợp đồng cầu nối chuỗi mẹ liên tục tiến dần đến "requestNonce" của hợp đồng cầu nối chuỗi con.

  • "handleNonce" và "lowerHandleNonce" liên tục tiến dần đến "requestNonce" của hợp đồng cầu nối chuỗi mẹ.

Nếu "handleNonce" bằng với "requestNonce" của hợp đồng cầu nối đối ứng và "lowerHandleNonce" lớn hơn "handleNonce" 1 đơn vị, khi đó tất cả các yêu cầu của người dùng đều đã được xử lý.

Nhật ký

Dưới đây là đầu ra bản ghi điển hình từ SCN trong quá trình hoạt động thông thường. Trạng thái của các hợp đồng cầu nối được in ra mỗi giây.

INFO[10/16,19:37:40 +09] [45] VT : Parent -> Child Chain                request=8699 handle=4826 lowerHandle=4826 pending=3873
INFO[10/16,19:37:40 +09] [45] VT : Child -> Parent Chain                request=7894 handle=4207 lowerHandle=4207 pending=3687

Nhật ký này hiển thị request, handle, lowerHandle, và pending nonces. Mỗi giá trị có ý nghĩa như sau

  • request : tổng số dùng một lần yêu cầu chuyển giá trị của tất cả (các) hợp đồng cầu nối đã đăng ký.

  • handle : tổng số dùng một lần xử lý tối đa của tất cả (các) hợp đồng cầu nối đã đăng ký.

  • lowerHandle : tổng số dùng một lần xử lý tối thiểu của tất cả (các) hợp đồng cầu nối đã đăng ký.

  • pending : chênh lệch số lượng giữa request và lowerHandle.

RPC API

Bạn có thể kiểm tra trạng thái của hợp đồng cầu nối như sau. Bạn có thể tham chiếu API cầu nối con để biết thêm chi tiết.

> subbridge.getBridgeInformation("0x27caeba831d98b5fbb1d81ce0ed20801702f443a")
{
  counterPart: "0x22c41ae528627b790233d2e59ea520be12350eb5",
  handleNonce: 0,
  lowerHandleNonce: 0,
  isRunning: true,
  isSubscribed: true,
  onServiceChain: true,
  pendingEventSize: 0,
  requestNonce: 0
}

Hợp đồng token (ERC-20/721)

ServiceChain cũng hỗ trợ chuyển giá trị ERC-20/721. Để hỗ trợ, chuỗi dịch vụ tương thích với các hợp đồng token ERC-20/721 nên được triển khai trên cả chuỗi mẹ và chuỗi con. Đối với mã hợp đồng token ERC-20/721, bạn có thể tham chiếu Tiêu chuẩn token.

Triển khai

SCN hiện chưa hỗ trợ API triển khai các token ERC-20/721. Bạn cần triển khai các token này qua caver-js. Khi bạn triển khai hợp đồng ERC-20/721, bạn nên sử dụng đúng tài khoản người vận hành cầu nối. Sử dụng tài khoản toán tử mẹ để triển khai chuỗi chính và tài khoản người vận hành con để triển khai chuỗi dịch vụ. Nếu bạn dùng sai tài khoản để triển khai hợp đồng token, việc chuyển giá trị sẽ không hoạt động và bạn cần dùng đúng tài khoản để triển khai lại hợp đồng token.

Đăng ký

Sau khi triển khai hợp đồng token, bạn nên đăng ký hợp đồng đó với hợp đồng cầu nối trên các chuỗi mẹ/con như dưới đây.

> subbridge.registerToken("0x27caeba831d98b5fbb1d81ce0ed20801702f443a", "0x22c41ae528627b790233d2e59ea520be12350eb5", "0x376b72abe1b29cace831bd3f5acdfa967814c9cd", "0x53160735f7cc6ff75e48619f368bb94daff66a1b")
null

Lệnh này đăng ký token chuỗi con ("0x376b72abe1b29cace831bd3f5acdfa967814c9cd") với hợp đồng cầu nối chuỗi con ("0x27caeba831d98b5fbb1d81ce0ed20801702f443a"). Và token chuỗi mẹ ("0x53160735f7cc6ff75e48619f368bb94daff66a1b") với hợp đồng cầu nối chuỗi mẹ ("0x22c41ae528627b790233d2e59ea520be12350eb5").

Bạn có thể tham chiếu API chuỗi dịch vụ để biết thêm chi tiết.

Yêu cầu chuyển giá trị

Phần này giải thích về các phương pháp hợp đồng sẽ được người dùng gọi để yêu cầu chuyển giá trị. Yêu cầu giao dịch không cho phép giá trị bằng 0 (KLAY/ERC-20).

Chuyển KLAY

Người dùng có thể thực hiện giao dịch "yêu cầu chuyển giá trị" sang hợp đồng cầu nối bằng cách sử dụng các phương pháp sau.

dự phòng

Nếu người dùng gọi hàm dự phòng của cầu nối, lệnh này yêu cầu chuyển KLAY đến cùng địa chỉ tài khoản của người dùng đưa ra yêu cầu trong chuỗi đối ứng.

function () external payable;

requestKLAYTransfer

Nếu người dùng gọi hàm này với _to, lệnh này yêu cầu chuyển KLAY đến _to địa chỉ trong chuỗi đối ứng.

function requestKLAYTransfer(address _to, uint256 _value, bytes calldata _extraData) external payable

Chuyển ERC-20

Yêu cầu 2 bước qua hợp đồng cầu nối

Người dùng có thể thực hiện giao dịch "yêu cầu chuyển giá trị" đến hợp đồng cầu nối bằng cách sử dụng phương pháp dưới đây sau khi phê duyệt token sang hợp đồng cầu nối.

function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value,uint256 _feeLimit,bytes memory _extraData) external

Yêu cầu 1 bước qua hợp đồng ERC-20

Người dùng có thể thực hiện giao dịch "yêu cầu chuyển giá trị" trực tiếp sang hợp đồng ERC-20 bằng cách sử dụng phương pháp sau mà không cần phê duyệt. Sau đó, hợp đồng ERC-20 sẽ triển khai lệnh.

function requestValueTransfer(uint256 _amount, address _to, uint256 _feeLimit, bytes calldata _extraData) external

Chuyển ERC-721

Yêu cầu 2 bước qua hợp đồng cầu nối

Người dùng có thể thực hiện giao dịch "yêu cầu chuyển giá trị" đến hợp đồng cầu nối bằng cách sử dụng phương pháp dưới đây sau khi phê duyệt token sang hợp đồng cầu nối.

function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes memory _extraData) external

Yêu cầu 1 bước qua hợp đồng ERC-721

Người dùng có thể thực hiện giao dịch "yêu cầu chuyển giá trị" trực tiếp sang hợp đồng ERC-721 bằng cách sử dụng phương pháp sau mà không cần phê duyệt. Sau đó, hợp đồng ERC-721 sẽ triển khai lệnh.

function requestValueTransfer(uint256 _uid, address _to) external

Khôi phục chuyển giá trị

Yêu cầu chuyển giá trị có thể không thành công vì nhiều lý do. Ví dụ, bạn đã yêu cầu chuyển KLAY từ cầu nối phụ đến cầu nối chính hoặc từ cầu nối chính đến cầu nối phụ. Trong trường hợp đó, hợp đồng cầu nối ở bên nhận phải có đủ KLAY hơn số lượng KLAY được yêu cầu. Nếu không, lệnh chuyển sẽ thất bại mà không có thông báo lỗi về giá trị trả về. Một tính năng của lệnh khôi phục chuyển giá trị là lệnh này tìm ra những sự kiện chưa được xử lý, đồng thời thêm chúng vào bể sự kiện trong một khoảng thời gian nhất định, nghĩa là giao dịch không thành công có thể được thực hiện lại thành công khi cầu nối đối ứng có thể thành công xử lý sự kiện đó. Trong trường hợp như ở ví dụ trên, giao dịch không thành công cuối cùng sẽ được xử lý bởi lệnh khôi phục chuyển giá trị khi cầu nối đối ứng có đủ KLAY. Để thiết lập lệnh khôi phục chuyển giá trị làm mặc định, bạn cần thiết lập hai thuộc tính:

SC_VTRECOVERY=1
SC_VTRECOVERY_INTERVAL=5

Lệnh khôi phục chuyển giá trị sẽ tự động chạy bằng cách thiết lập SC_VTRECOVERY=1. SC_VTRECOVERY_INTERVAL là khoảng thời gian mỗi lần lệnh khôi phục chuyển giá trị được thực hiện.

Thu phí cho lệnh chuyển KLAY/ERC-20

Trong Service Chain có tính năng thu phí cho các lệnh chuyển KLAY/ERC-20.

Sẽ sớm được cập nhật.

Tuỳ chỉnh hợp đồng cầu nối của bạn

Trong ServiceChain, bạn có thể sử dụng hợp đồng cầu nối tuỳ chỉnh mà bạn kế thừa từ hợp đồng cầu nối gốc cho dịch vụ của riêng bạn. Phần này giải thích cách để tuỳ chỉnh hợp đồng cầu nối và đưa ra mã ví dụ.

Sẽ sớm được cập nhật.

Hình 1. Kiến trúc Chuỗi dịch vụ