Cơ bản
LegacyTransaction
LegacyTransaction
biểu thị một giao dịch cũ. [Tài khoản Klaytn](../../../../../klaytn/design/tài khoảns.md#klaytn-tài khoảns) có thể thực thi LegacyTransaction
chỉ bằng [AccountKeyLegacy (Khóa tài khoản cũ)][]. transactionObject
có thể có các thuộc tính dưới đây để tạo LegacyTransaction
.
LegacyTransaction
có các thuộc tính sau đây giống như các biến thành viên. Thuộc tính được đánh dấu là optional
nghĩa là các thuộc tính được tùy ý đưa ra trong transactionObject
khi người dùng tạo LegacyTransaction
.
LƯU Ý: Bạn có thể tạo một phiên bản LegacyTransaction
từ chuỗi mã hóa RLP. Hãy xem ví dụ dưới đây. LƯU Ý: caver.transaction.legacyTransaction.create
được hỗ trợ kể từ phiên bản caver-js v1.6.1.
LƯU Ý: Kể từ phiên bản caver-js v1.8.1-rc.4, tính năng tạo giao dịch chỉ được hỗ trợ bằng cách sử dụng hàm create
. Nếu bạn đang tạo giao dịch bằng cách sử dụng hàm tạo như new caver.transaction.legacyTransaction({...})
, vui lòng đổi thành caver.transaction.legacyTransaction.create({...})
.
thuộc tính
Tên | type | Mô tả |
---|---|---|
gas | chuỗi | Giá trị phí giao dịch tối đa mà giao dịch được phép sử dụng. |
giá trị | chuỗi | (tùy chọn, mặc định: |
từ | chuỗi | (tùy chọn) Địa chỉ của người gửi. Nếu bỏ qua tham số này, địa chỉ của keyring được sử dụng để ký sẽ được thiết lập. |
đến | chuỗi | (tùy chọn, mặc định: |
nhập | chuỗi | (tùy chọn) Dữ liệu gắn kèm giao dịch, dùng để triển khai/thực thi hợp đồng thông minh. |
chữ ký | Mảng | (tùy chọn) Mảng các chữ ký. Một giao dịch cũ có thể chỉ có một chữ ký. |
nonce | chuỗi | (tùy chọn) Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu bỏ qua tham số này, |
giá gas | chuỗi | (tùy chọn) Một tham số nhân để tính toán số lượng token mà người gửi sẽ thanh toán. Nếu bỏ qua tham số này, |
chainId | chuỗi | (tùy chọn) Mã chuỗi của mạng lưới Klaytn. Nếu bỏ qua tham số này, |
Ví dụ
ValueTransfer
ValueTransfer
biểu thị một giao dịch chuyển giá trị. transactionObject
có thể có các thuộc tính dưới đây để tạo giao dịch ValueTransfer
.
ValueTransfer
có các thuộc tính sau đây giống như các biến thành viên. Thuộc tính được đánh dấu là optional
nghĩa là các thuộc tính được tùy ý đưa ra trong transactionObject
khi người dùng tạo giao dịch ValueTransfer
.
LƯU Ý: Bạn có thể tạo một đối tượng ValueTransfer
từ chuỗi mã hóa RLP. Hãy xem ví dụ dưới đây. LƯU Ý: caver.transaction.valueTransfer.create
được hỗ trợ kể từ phiên bản caver-js v1.6.1.
LƯU Ý: Kể từ phiên bản caver-js v1.8.1-rc.4, tính năng tạo giao dịch chỉ được hỗ trợ bằng cách sử dụng hàm create
. Nếu bạn đang tạo giao dịch bằng cách sử dụng hàm tạo như new caver.transaction.valueTransfer({...})
, vui lòng đổi thành caver.transaction.valueTransfer.create({...})
.
thuộc tính
Tên | Loại | Mô tả |
---|---|---|
giá trị | chuỗi | Số lượng KLAY tính bằng peb sẽ được chuyển. Bạn có thể sử dụng hàm |
từ | chuỗi | Địa chỉ của người gửi. |
đến | chuỗi | Địa chỉ tài khoản sẽ nhận giá trị được chuyển. |
gas | chuỗi | Giá trị phí giao dịch tối đa mà giao dịch được phép sử dụng. |
chữ ký | Mảng | (tùy chọn) Mảng các chữ ký. |
nonce | chuỗi | (tùy chọn) Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu bỏ qua tham số này, |
giá gas | chuỗi | (tùy chọn) Một tham số nhân để tính toán số lượng token mà người gửi sẽ thanh toán. Nếu bỏ qua tham số này, |
chainId | chuỗi | (tùy chọn) Mã chuỗi của mạng lưới Klaytn. Nếu bỏ qua tham số này, |
Ví dụ
ValueTransferMemo
ValueTransferMemo
biểu thị một giao dịch chuyển giá trị kèm ghi chú. transactionObject
có thể có các thuộc tính dưới đây để tạo giao dịch ValueTransferMemo
.
ValueTransferMemo
có các thuộc tính sau đây giống như các biến thành viên. Thuộc tính được đánh dấu là optional
nghĩa là các thuộc tính được tùy ý đưa ra trong transactionObject
khi người dùng tạo giao dịch ValueTransferMemo
.
LƯU Ý: Bạn có thể tạo một đối tượng ValueTransferMemo
từ chuỗi mã hóa RLP. Hãy xem ví dụ dưới đây. LƯU Ý: caver.transaction.valueTransferMemo.create
được hỗ trợ kể từ phiên bản caver-js v1.6.1.
LƯU Ý: Kể từ phiên bản caver-js v1.8.1-rc.4, tính năng tạo giao dịch chỉ được hỗ trợ bằng cách sử dụng hàm create
. Nếu bạn đang tạo giao dịch bằng cách sử dụng hàm tạo như new caver.transaction.valueTransferMemo({...})
, vui lòng đổi thành caver.transaction.valueTransferMemo.create({...})
.
thuộc tính
Tên | type | Mô tả |
---|---|---|
giá trị | chuỗi | Số lượng KLAY tính bằng peb sẽ được chuyển. Bạn có thể sử dụng hàm |
từ | chuỗi | Địa chỉ của người gửi. |
đến | chuỗi | Địa chỉ tài khoản sẽ nhận giá trị được chuyển. |
nhập | chuỗi | Dữ liệu gắn kèm theo giao dịch. Thông điệp cần được truyền vào thuộc tính này. |
gas | chuỗi | Giá trị phí giao dịch tối đa mà giao dịch được phép sử dụng. |
chữ ký | Mảng | (tùy chọn) Mảng các chữ ký. |
nonce | chuỗi | (tùy chọn) Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu bỏ qua tham số này, |
giá gas | chuỗi | (tùy chọn) Một tham số nhân để tính toán số lượng token mà người gửi sẽ thanh toán. Nếu bỏ qua tham số này, |
chainId | chuỗi | (tùy chọn) Mã chuỗi của mạng lưới Klaytn. Nếu bỏ qua tham số này, |
Ví dụ
AccountUpdate
AccountUpdate
biểu thị một [giao dịch cập nhật tài khoản](../../../../../klaytn/design/transactions/basic.md#txtypetài khoảnupdate). transactionObject
có thể có các thuộc tính dưới đây để tạo giao dịch AccountUpdate
.
AccountUpdate
có các thuộc tính sau đây giống như các biến thành viên. Thuộc tính được đánh dấu là optional
nghĩa là các thuộc tính được tùy ý đưa ra trong transactionObject
khi người dùng tạo giao dịch AccountUpdate
.
LƯU Ý: Bạn có thể tạo một đối tượng AccountUpdate
từ chuỗi mã hóa RLP. Hãy xem ví dụ dưới đây. LƯU Ý: caver.transaction.tài khoảnUpdate.create
được hỗ trợ kể từ phiên bản caver-js v1.6.1.
LƯU Ý: Kể từ phiên bản caver-js v1.8.1-rc.4, tính năng tạo giao dịch chỉ được hỗ trợ bằng cách sử dụng hàm create
. Nếu bạn đang tạo giao dịch bằng cách sử dụng hàm tạo như new caver.transaction.tài khoảnUpdate({...})
, vui lòng đổi thành caver.transaction.tài khoảnUpdate.create({...})
.
thuộc tính
Tên | Loại | Mô tả |
---|---|---|
từ | chuỗi | Địa chỉ của người gửi. |
tài khoản | [Tài khoản][] | Một đối tượng [Tài khoản][] chứa các thông tin cần thiết để cập nhật tài khoản của bạn. |
gas | chuỗi | Giá trị phí giao dịch tối đa mà giao dịch được phép sử dụng. |
chữ ký | Mảng | (tùy chọn) Mảng các chữ ký. |
nonce | chuỗi | (tùy chọn) Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu bỏ qua tham số này, |
giá gas | chuỗi | (tùy chọn) Một tham số nhân để tính toán số lượng token mà người gửi sẽ thanh toán. Nếu bỏ qua tham số này, |
chainId | chuỗi | (tùy chọn) Mã chuỗi của mạng lưới Klaytn. Nếu bỏ qua tham số này, |
Để biết cách tạo một đối tượng [Tài khoản][] cho mỗi AccountKey
, hãy tham khảo [Bắt đầu - Cập nhật tài khoản](../../getting-started.md#tài khoản-update) hoặc [caver.tài khoản.create](../caver.tài khoản.md#caver-tài khoản-create).
Ví dụ
SmartContractDeploy
SmartContractDeploy
biểu thị một giao dịch triển khai hợp đồng thông minh. transactionObject
có thể có các thuộc tính dưới đây để tạo giao dịch SmartContractDeploy
.
SmartContractDeploy
có các thuộc tính sau đây giống như các biến thành viên. Thuộc tính được đánh dấu là optional
nghĩa là các thuộc tính được tùy ý đưa ra trong transactionObject
khi người dùng tạo giao dịch SmartContractDeploy
.
LƯU Ý: Bạn có thể tạo một đối tượng SmartContractDeploy
từ chuỗi mã hóa RLP. Hãy xem ví dụ dưới đây. LƯU Ý: caver.transaction.smartContractDeploy.create
được hỗ trợ kể từ phiên bản caver-js v1.6.1.
LƯU Ý: Kể từ phiên bản caver-js v1.8.1-rc.4, tính năng tạo giao dịch chỉ được hỗ trợ bằng cách sử dụng hàm create
. Nếu bạn đang tạo giao dịch bằng cách sử dụng hàm tạo như new caver.transaction.smartContractDeploy({...})
, vui lòng đổi thành caver.transaction.smartContractDeploy.create({...})
.
thuộc tính
Tên | Loại | Mô tả |
---|---|---|
từ | chuỗi | Địa chỉ của người gửi. |
nhập | chuỗi | Dữ liệu gắn kèm theo giao dịch. Chỉ thị biên dịch của hợp đồng thông minh sẽ được triển khai và các đối số của nó. Bạn có thể lấy dữ liệu này bằng hàm caver.abi.encodeContractDeploy. |
gas | chuỗi | Giá trị phí giao dịch tối đa mà giao dịch được phép sử dụng. |
giá trị | chuỗi | (tùy chọn, mặc định: |
đến | chuỗi | (tùy chọn, mặc định: |
humanReadable | kiểu dữ liệu Boolean | (tùy chọn, mặc định: |
codeFormat | chuỗi | (tùy chọn, mặc định: |
chữ ký | Mảng | (tùy chọn) Mảng các chữ ký. |
nonce | chuỗi | (tùy chọn) Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu bỏ qua tham số này, |
giá gas | chuỗi | (tùy chọn) Một tham số nhân để tính toán số lượng token mà người gửi sẽ thanh toán. Nếu bỏ qua tham số này, |
chainId | chuỗi | (tùy chọn) Mã chuỗi của mạng lưới Klaytn. Nếu bỏ qua tham số này, |
Ví dụ
SmartContractExecution
SmartContractExecution
biểu thị một giao dịch thực thi hợp đồng thông minh. transactionObject
có thể có các thuộc tính dưới đây để tạo giao dịch SmartContractExecution
.
SmartContractExecution
có các thuộc tính sau đây giống như các biến thành viên. Thuộc tính được đánh dấu là optional
nghĩa là các thuộc tính được tùy ý đưa ra trong transactionObject
khi người dùng tạo giao dịch SmartContractExecution
.
LƯU Ý: Bạn có thể tạo một đối tượng SmartContractExecution
từ chuỗi mã hóa RLP. Hãy xem ví dụ dưới đây. LƯU Ý: caver.transaction.smartContractExecution.create
được hỗ trợ kể từ phiên bản caver-js v1.6.1.
LƯU Ý: Kể từ phiên bản caver-js v1.8.1-rc.4, tính năng tạo giao dịch chỉ được hỗ trợ bằng cách sử dụng hàm create
. Nếu bạn đang tạo giao dịch bằng cách sử dụng hàm tạo như new caver.transaction.smartContractExecution({...})
, vui lòng đổi thành caver.transaction.smartContractExecution.create({...})
.
thuộc tính
Tên | Loại | Mô tả |
---|---|---|
từ | chuỗi | Địa chỉ của người gửi. |
đến | chuỗi | Địa chỉ thực thi tài khoản hợp đồng thông minh. |
nhập | chuỗi | Dữ liệu được gắn kèm giao dịch, dùng để thực thi giao dịch. Đầu vào là một chuỗi mã hóa cho biết một hàm cần gọi và các tham số được truyền vào hàm này. Bạn có thể lấy dữ liệu này bằng hàm caver.abi.encodeFunctionCall. |
gas | chuỗi | Giá trị phí giao dịch tối đa mà giao dịch được phép sử dụng. |
giá trị | chuỗi | (tùy chọn, mặc định: |
chữ ký | Mảng | (tùy chọn) Mảng các chữ ký. |
nonce | chuỗi | (tùy chọn) Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu bỏ qua tham số này, |
giá gas | chuỗi | (tùy chọn) Một tham số nhân để tính toán số lượng token mà người gửi sẽ thanh toán. Nếu bỏ qua tham số này, |
chainId | chuỗi | (tùy chọn) Mã chuỗi của mạng lưới Klaytn. Nếu bỏ qua tham số này, |
Ví dụ
Cancel
Cancel
biểu thị một giao dịch hủy. transactionObject
có thể có các thuộc tính dưới đây để tạo giao dịch Cancel
.
Giao dịch Cancel
hủy bỏ việc thực thi giao dịch có cùng số dùng một lần trong nhóm giao dịch chờ.
Cancel
có các thuộc tính sau đây giống như các biến thành viên. Thuộc tính được đánh dấu là optional
nghĩa là các thuộc tính được tùy ý đưa ra trong transactionObject
khi người dùng tạo giao dịch Cancel
.
LƯU Ý: Bạn có thể tạo một đối tượng Cancel
từ chuỗi mã hóa RLP. Hãy xem ví dụ dưới đây. LƯU Ý: caver.transaction.cancel.create
được hỗ trợ kể từ phiên bản caver-js v1.6.1.
LƯU Ý: Kể từ phiên bản caver-js v1.8.1-rc.4, tính năng tạo giao dịch chỉ được hỗ trợ bằng cách sử dụng hàm create
. Nếu bạn đang tạo giao dịch bằng cách sử dụng hàm tạo như new caver.transaction.xcancelxx({...})
, vui lòng đổi thành caver.transaction.cancel.create({...})
.
thuộc tính
Tên | Loại | Mô tả |
---|---|---|
từ | chuỗi | Địa chỉ của người gửi. |
gas | chuỗi | Giá trị phí giao dịch tối đa mà giao dịch được phép sử dụng. |
nonce | chuỗi | (tùy chọn) Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu bỏ qua tham số này, |
chữ ký | Mảng | (tùy chọn) Mảng các chữ ký. |
giá gas | chuỗi | (tùy chọn) Một tham số nhân để tính toán số lượng token mà người gửi sẽ thanh toán. Nếu bỏ qua tham số này, |
chainId | chuỗi | (tùy chọn) Mã chuỗi của mạng lưới Klaytn. Nếu bỏ qua tham số này, |
Ví dụ
ChainDataAnchoring
ChainDataAnchoring
biểu thị một giao dịch neo dữ liệu chuỗi. transactionObject
có thể có các thuộc tính dưới đây để tạo giao dịch ChainDataAnchoring
.
ChainDataAnchoring
có các thuộc tính sau đây giống như các biến thành viên. Thuộc tính được đánh dấu là optional
nghĩa là các thuộc tính được tùy ý đưa ra trong transactionObject
khi người dùng tạo giao dịch ChainDataAnchoring
.
LƯU Ý: Bạn có thể tạo một đối tượng ChainDataAnchoring
từ chuỗi mã hóa RLP. Hãy xem ví dụ dưới đây. LƯU Ý: caver.transaction.chainDataAnchoring.create
được hỗ trợ kể từ phiên bản caver-js v1.6.1.
LƯU Ý: Kể từ phiên bản caver-js v1.8.1-rc.4, tính năng tạo giao dịch chỉ được hỗ trợ bằng cách sử dụng hàm create
. Nếu bạn đang tạo giao dịch bằng cách sử dụng hàm tạo như new caver.transaction.chainDataAnchoring({...})
, vui lòng đổi thành caver.transaction.chainDataAnchoring.create({...})
.
thuộc tính
Tên | Loại | Mô tả |
---|---|---|
từ | chuỗi | Địa chỉ của người gửi. |
nhập | chuỗi | Dữ liệu của chuỗi dịch vụ. |
gas | chuỗi | Giá trị phí giao dịch tối đa mà giao dịch được phép sử dụng. |
nonce | chuỗi | (tùy chọn) Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu bỏ qua tham số này, |
chữ ký | Mảng | (tùy chọn) Mảng các chữ ký. |
giá gas | chuỗi | (tùy chọn) Một tham số nhân để tính toán số lượng token mà người gửi sẽ thanh toán. Nếu bỏ qua tham số này, |
chainId | chuỗi | (tùy chọn) Mã chuỗi của mạng lưới Klaytn. Nếu bỏ qua tham số này, |
Ví dụ
EthereumAccessList
EthereumAccessList
biểu thị một giao dịch danh sách tiếp cận Ethereum. [Tài khoản Klaytn](../../../../../klaytn/design/tài khoảns.md#klaytn-tài khoảns) có thể thực thi giao dịch EthereumAccessList
chỉ bằng [AccountKeyLegacy (Khóa tài khoản cũ)][]. transactionObject
có thể có các thuộc tính dưới đây để tạo EthereumAccessList
.
EthereumAccessList
có các thuộc tính sau đây giống như các biến thành viên. Thuộc tính được đánh dấu là optional
nghĩa là các thuộc tính được tùy ý đưa ra trong transactionObject
khi người dùng tạo EthereumAccessList
.
LƯU Ý: Bạn có thể tạo một đối tượng EthereumAccessList
từ chuỗi mã hóa RLP. Hãy xem ví dụ dưới đây. LƯU Ý: caver.transaction.ethereumAccessList
được hỗ trợ kể từ phiên bản caver-js v1.8.0.
LƯU Ý: Kể từ phiên bản caver-js v1.8.1-rc.4, tính năng tạo giao dịch chỉ được hỗ trợ bằng cách sử dụng hàm create
. Nếu bạn đang tạo giao dịch bằng cách sử dụng hàm tạo như new caver.transaction.ethereumAccessList({...})
, vui lòng đổi thành caver.transaction.ethereumAccessList.create({...})
.
thuộc tính
Tên | type | Mô tả |
---|---|---|
gas | chuỗi | Giá trị phí giao dịch tối đa mà giao dịch được phép sử dụng. |
giá trị | chuỗi | (tùy chọn, mặc định: |
từ | chuỗi | (tùy chọn) Địa chỉ của người gửi. Nếu bỏ qua tham số này, địa chỉ của keyring được sử dụng để ký sẽ được thiết lập. |
đến | chuỗi | (tùy chọn, mặc định: |
nhập | chuỗi | (tùy chọn) Dữ liệu gắn kèm giao dịch, dùng để triển khai/thực thi hợp đồng thông minh. |
chữ ký | Mảng | (tùy chọn) Mảng các chữ ký. Một giao dịch danh sách tiếp cận ethereum có thể chỉ có một chữ ký. |
nonce | chuỗi | (tùy chọn) Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu bỏ qua tham số này, |
giá gas | chuỗi | (tùy chọn) Một tham số nhân để tính toán số lượng token mà người gửi sẽ thanh toán. Nếu bỏ qua tham số này, |
chainId | chuỗi | (tùy chọn) Mã chuỗi của mạng lưới Klaytn. Nếu bỏ qua tham số này, |
accessList | Mảng | (tùy chọn) Là danh sách truy cập EIP-2930 chứa tất cả các khe lưu trữ và địa chỉ mà giao dịch đọc và ghi. |
Ví dụ
EthereumDynamicFee
EthereumDynamicFee
biểu thị một giao dịch phí biến đổi Ethereum. [Tài khoản Klaytn](../../../../../klaytn/design/tài khoảns.md#klaytn-tài khoảns) có thể thực thi giao dịch EthereumDynamicFee
chỉ bằng [AccountKeyLegacy (Khóa tài khoản cũ)][]. transactionObject
có thể có các thuộc tính dưới đây để tạo EthereumDynamicFee
.
EthereumDynamicFee
có các thuộc tính sau đây giống như các biến thành viên. Thuộc tính được đánh dấu là optional
nghĩa là các thuộc tính được tùy ý đưa ra trong transactionObject
khi người dùng tạo EthereumDynamicFee
. Và lưu ý rằng giao dịch EthereumDynamicFee
không sử dụng gasPrice
, giao dịch này sử dụng maxPriorityFeePerGas
và maxFeePerGas
.
LƯU Ý: Bạn có thể tạo một đối tượng EthereumDynamicFee
từ chuỗi mã hóa RLP. Hãy xem ví dụ dưới đây. LƯU Ý: caver.transaction.ethereumDynamicFee
được hỗ trợ kể từ phiên bản caver-js v1.8.0.
LƯU Ý: Kể từ phiên bản caver-js v1.8.1-rc.4, tính năng tạo giao dịch chỉ được hỗ trợ bằng cách sử dụng hàm create
. Nếu bạn đang tạo giao dịch bằng cách sử dụng hàm tạo như new caver.transaction.ethereumDynamicFee({...})
, vui lòng đổi thành caver.transaction.ethereumDynamicFee.create({...})
.
thuộc tính
Tên | type | Mô tả |
---|---|---|
gas | chuỗi | Giá trị phí giao dịch tối đa mà giao dịch được phép sử dụng. |
giá trị | chuỗi | (tùy chọn, mặc định: |
từ | chuỗi | (tùy chọn) Địa chỉ của người gửi. Nếu bỏ qua tham số này thì sẽ được thiết lập thành địa chỉ keyring được sử dụng để ký. |
đến | chuỗi | (tùy chọn, mặc định: |
nhập | chuỗi | (tùy chọn) Dữ liệu gắn kèm giao dịch, dùng để triển khai/thực thi hợp đồng thông minh. |
chữ ký | Mảng | (tùy chọn) Mảng các chữ ký. Một giao dịch phí biến đổi ethereum có thể chỉ có một chữ ký. |
nonce | chuỗi | (tùy chọn) Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu bỏ qua tham số này thì sẽ được thiết lập thành |
maxPriorityFeePerGas | chuỗi | (tùy chọn) Giới hạn tối đa mức phí trả thêm cho giao dịch theo đơn vị peb. Do Klaytn có giá gas cố định, giá trị này nên được đặt giống với giá trị của |
maxFeePerGas | chuỗi | (tùy chọn) Số tiền tối đa chi trả cho việc thực thi giao dịch. Do Klaytn có giá gas cố định, giá trị này nên được đặt giống với giá trị của |
chainId | chuỗi | (tùy chọn) Mã chuỗi của mạng lưới Klaytn. Nếu bỏ qua tham số này thì sẽ được thiết lập thành |
accessList | Mảng | (tùy chọn) Là danh sách truy cập EIP-2930 chứa tất cả các khe lưu trữ và địa chỉ mà giao dịch đọc và ghi. |
Ví dụ
[AccountKeyLegacy (Khóa tài khoản cũ)]: ../../../../../klaytn/design/tài khoảns.md#tài khoảnkeylegacy [Tài khoản]: ../caver.account.md#account [Tài khoản]: ../caver.tài khoản.md#tài khoản
Last updated