Ví dụ về ủy thác phí
Mục lục
2. Cách hoạt động của ủy thác phí
2.1 Ký giao dịch do người gửi thực hiện
2.2 Ký giao dịch do người trả phí thực hiện
3. Máy chủ và máy khách đơn giản dành cho ủy thác phí
3.1 Máy khách của người gửi
3.2 Máy chủ của người trả phí
4.1 Chạy
feepayer_server.js4.2 Chạy
sender_client.js4.3 Kiểm tra
feepayer_server.js4.4 Phạm vi Klaytn
1. Giới thiệu
Hướng dẫn này giúp bạn sử dụng SDK caver-js để viết một ví dụ máy chủ-máy khách đơn giản nhằm minh họa cách hoạt động của giao dịch chuyển giá trị ủy thác phí trong Klaytn. Hướng dẫn và mã ví dụ đều sử dụng mạng testnet Baobab.
2. Cách hoạt động của ủy thác phí
Hãy xem lướt qua cách hoạt động của ủy thác phí.
2.1 Ký giao dịch do người gửi thực hiện
Sender luôn phải ký giao dịch trước khi gửi giao dịch.
Để ký giao dịch, hãy dùng [signTransaction](../sdk/caver-js/v1.4.1/api-references/caver.klay.tài khoảns.md#signtransaction) nào ký giao dịch với khóa riêng tư đã cho.
Nếu không có lỗi, senderRawTransaction sẽ có một giao dịch đã ký do senderPrivateKey ký.
Bây giờ, bạn cần gửi senderRawTransaction cho người trả phí. Có nhiều cách thực hiện khác nhau. Trong hướng dẫn này, chúng tôi sẽ cung cấp cho bạn một mã máy chủ-máy khách đơn giản để làm ví dụ về việc gửi senderRawTransaction cho người trả phí.
2.2 Ký giao dịch do người trả phí thực hiện
Khi fee payer nhận senderRawTransaction, fee payer ký lại senderRawTransaction bằng khóa riêng tư của mình và gửi giao dịch đến Klaytn. Đoạn mã dưới đây minh họa quá trình đó. Phương thức klay.sendTransaction ký giao dịch bằng khóa riêng tư của tài khoản đã cho trước khi gửi giao dịch. Trước khi chạy mã, hãy thay thế "FEEPAYER_ADDRESS" và "PRIVATE_KEY" bằng các giá trị thật.
Chú ý rằng khi fee payer đại diện cho sender gửi giao dịch đến Klaytn, loại senderRawTransaction phải là một FEE_DELEATED loại giao dịch. Ví dụ dưới đây gọi ra phương pháp sendTransaction(FEE_DELEGATED_VALUE_TRANSFER), vì senderRawTransaction nguyên bản do người gửi tạo là TxTypeFeeDelegatedValueTransfer.
3. Máy chủ và máy khách đơn giản dành cho ủy thác phí
Hãy viết một máy chủ và máy khách đơn giản bằng mã ủy thác phí trên.
Thiết lập môi trường
Chúng tôi sử dụng npm and caver-js để thiết lập môi trường cho ví dụ này như dưới đây.
3.1 Máy khách của người gửi
Đầu tiên, chúng tôi sẽ viết một sender_client.js như dưới đây.
Hãy thay thế "SENDER_ADDRESS", "SENDER_PRIVATEKEY" và "TO_ADDRESS" trong ví dụ bằng giá trị thật.
Mã trên ký một giao dịch chuyển giá trị ủy thác phí bằng senderPrivateKey và gửi senderRawTransaction đã ký đến máy chủ của người trả phí đang chạy trên cổng 1337 trên 127.0.0.1, tức là localhost.
3.2 Máy chủ của người trả phí
Bây giờ hãy viết máy chủ của người trả phí feepayer_server.js, là máy chủ ký senderRawTransaction đã được nhận với feePayerPrivateKey và gửi nó đến testnet Baobab.
Hãy thay thế "FEEPAYER_ADDRESS" và "FEEPAYER_PRIVATEKEY" trong ví dụ dưới đây bằng giá trị thật.
Máy chủ nghe trên cổng 1337.
Khi có data đến, nó sẽ báo hiệu data với feePayerPrivateKey và gửi đến chuỗi khối Klaytn. Giả định rằng data là senderRawTransaction từ sender_client.js.
4. Chạy ví dụ
Chuẩn bị hai cửa sổ lệnh, một cho sender_client.js và một cho feepayer_server.js.
4.1 Chạy feepayer_server.js
feepayer_server.jsMáy chủ của người trả phí sẽ khởi động bên dưới lệnh.
Máy chủ bắt đầu và đang nghe trên cổng 1337.
4.2 Chạy sender_client.js
sender_client.jsHãy chạy sender_client.js để gửi giao dịch có phí ủy thác.
Giao dịch sẽ được ký với khóa riêng tư sender; giao dịch đã ký được gửi đến dịch vụ ủy thác phí (nghĩa là máy chủ của người trả phí). Sau đó, máy chủ sẽ nhận phản hồi từ dịch vụ ủy thác phí bao gồm địa chỉ của Fee payer, Tx hash, và Sender Tx hash. Tx hash là hàm băm của giao dịch được gửi đến mạng lưới Klaytn, trong khi đó Sender Tx hash là hàm băm của giao dịch không có địa chỉ, chữ ký của người trả phí. Để biết thêm chi tiết, vui lòng xem SenderTxHash.
4.3 Kiểm tra feepayer_server.js
feepayer_server.jsTại bảng điều khiển của máy chủ, bạn sẽ thấy kết quả đầu ra dưới đây. Đây là biên lai giao dịch từ Klaytn.
4.4 Phạm vi Klaytn
Bạn cũng có thể tìm thấy giao dịch trên tại Klaytn scope.
Nó cho thấy giao dịch là TxTypeFeeDelegatedValueTransfer và Fee payer là 0x2645ba5be42ffee907ca8e9d88f6ee6dad8c1410 hoặc feepayerAddress mà bạn đã nhập, đồng thời From là một địa chỉ khác lẽ ra phải là senderAddress trong ví dụ trên.

Last updated