TxTypeLegacyTransaction đại diện cho một loại giao dịch đã tồn tại trước đây trong Klaytn. Loại giao dịch này tồn tại để hỗ trợ khả năng tương thích nên chỉ hoạt động với các EOA liên kết với [AccountKeyLegacy][]. Các EOA liên kết với loại khóa tài khoản khác sẽ sử dụng những loại giao dịch khác như TxTypeValueTransfer, TxTypeSmartContractExecution, v.v. Loại giao dịch này có thể tạo một tài khoản, chuyển token, triển khai một hợp đồng thông minh, thực thi một hợp đồng thông minh hoặc kết hợp các hoạt động vừa nêu. Loại giao dịch này sẽ khởi tạo các thay đổi sau.
Số dư của người gửi giảm đi một lượng bằng khoản phí giao dịch.
Số dùng một lần của người gửi tăng thêm một đơn vị.
Nếu to không tồn tại trên Klaytn, một EOA liên kết với [AccountKeyLegacy][] sẽ được tạo ra.
value KLAY sẽ được chuyển từ người gửi đến người nhận.
Nếu to chưa có giá trị, nó sẽ được coi là một giao dịch triển khai hợp đồng thông minh. Mã hợp đồng thông minh phải được dùng dưới dạng input.
Nếu to là một hợp đồng thông minh, hàm hợp đồng thông minh được chỉ định trong input sẽ được thực thi.
Thuộc tính
Thuộc tính
type
Mô tả
giá trị
*big.Int (Go)
Số lượng KLAY tính bằng peb sẽ được chuyển.
đến
*common.Address (Go)
Địa chỉ tài khoản sẽ nhận giá trị được chuyển.
nhập
[]byte (Go)
Dữ liệu được gắn kèm giao dịch, dùng để thực thi giao dịch.
v, r, s
*big.Int (Go)
Chữ ký mật mã được tạo bởi người gửi để cho phép người nhận lấy được địa chỉ của người gửi.
nonce
uint64 (Go)
Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu hai giao dịch có cùng một giá trị số dùng một lần do người gửi tạo ra, chỉ có một giao dịch sẽ được thực thi.
gas
uint64 (Go)
Giá trị phí giao dịch tối đa mà giao dịch được phép sử dụng.
giá gas
*big.Int (Go)
Mã hóa RLP cho chữ ký
Để tạo chữ ký của loại giao dịch này, quá trình tuần tự hóa RLP phải diễn ra như sau:
TxTypeValueTransfer được sử dụng khi người dùng muốn gửi KLAY. Vì Klaytn cung cấp nhiều loại giao dịch để mỗi loại giao dịch chỉ phục vụ một mục đích duy nhất, TxTypeValueTransfer bị giới hạn chỉ gửi KLAY đến một tài khoản sở hữu bên ngoài. Vì thế, TxTypeValueTransfer chỉ được chấp nhận nếu to là một tài khoản sở hữu bên ngoài. Để chuyển KLAY đến một tài khoản hợp đồng thông minh, hãy dùng TxTypeSmartContractExecution. Các thay đổi sau sẽ được tạo ra nhờ loại giao dịch này.
Số dư của người gửi giảm đi một lượng bằng khoản phí giao dịch.
Số dùng một lần của người gửi tăng thêm một đơn vị.
value KLAY sẽ được chuyển từ người gửi đến người nhận.
Thuộc tính
Thuộc tính
Loại
Mô tả
type
uint8 (Go)
Loại TxTypeValueTransfer. Thuộc tính này phải là 0x08.
nonce
uint64 (Go)
Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu hai giao dịch có cùng một giá trị số dùng một lần do người gửi tạo ra, chỉ có một giao dịch sẽ được thực thi.
giá gas
*big.Int (Go)
gas
uint64 (Go)
Lượng gas tối đa mà giao dịch được phép sử dụng.
đến
common.Address (Go)
Địa chỉ tài khoản sẽ nhận giá trị được chuyển.
giá trị
*big.Int (Go)
Số lượng KLAY tính bằng peb sẽ được chuyển.
từ
common.Address (Go)
txSignatures
[]{*big.Int, *big.Int, *big.Int} (Go)
Mã hóa RLP cho chữ ký
Để tạo một chữ ký giao dịch, quá trình tuần tự hóa RLP phải diễn ra như sau:
TxTypeValueTransferMemo được sử dụng khi người dùng muốn gửi KLAY với một tin nhắn cụ thể. TxTypeValueTransferMemo chỉ được chấp nhận nếu to là một tài khoản thuộc sở hữu bên ngoài. Để chuyển KLAY đến một tài khoản hợp đồng thông minh, hãy dùng TxTypeSmartContractExecution. Các thay đổi sau sẽ được tạo ra nhờ loại giao dịch này.
Số dư của người gửi giảm đi một lượng bằng khoản phí giao dịch.
Số dùng một lần của người gửi tăng thêm một đơn vị.
value KLAY sẽ được chuyển từ người gửi đến người nhận.
Thuộc tính
Thuộc tính
type
Mô tả
type
uint8 (Go)
Loại TxTypeValueTransferMemo. Thuộc tính này phải là 0x10.
nonce
uint64 (Go)
Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu hai giao dịch có cùng một giá trị số dùng một lần do người gửi tạo ra, chỉ có một giao dịch sẽ được thực thi.
giá gas
*big.Int (Go)
gas
uint64 (Go)
Lượng gas tối đa mà giao dịch được phép sử dụng.
đến
common.Address (Go)
Địa chỉ tài khoản sẽ nhận giá trị được chuyển.
giá trị
*big.Int (Go)
Số lượng KLAY tính bằng peb sẽ được chuyển.
từ
common.Address (Go)
nhập
[]byte (Go)
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.
txSignatures
[]{*big.Int, *big.Int, *big.Int} (Go)
Mã hóa RLP cho chữ ký
Để tạo một chữ ký giao dịch, quá trình tuần tự hóa RLP phải diễn ra như sau:
TxTypeSmartContractDeploy triển khai hợp đồng thông minh đến địa chỉ đã cho. Các thay đổi sau sẽ được tạo ra nhờ loại giao dịch này.
Số dư của người gửi giảm đi một lượng bằng khoản phí giao dịch.
Số dùng một lần của người gửi tăng thêm một đơn vị.
Một hợp đồng thông minh được triển khai bằng mã trong input. Địa chỉ đã triển khai sẽ được trả về qua contractAddress trong biên lai.
value KLAY sẽ được chuyển từ người gửi đến người nhận.
Thuộc tính
Thuộc tính
Loại
Mô tả
type
uint8 (Go)
Loại TxTypeSmartContractDeploy. Thuộc tính này phải là 0x28.
nonce
uint64 (Go)
Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu hai giao dịch có cùng một giá trị số dùng một lần do người gửi tạo ra, chỉ có một giao dịch sẽ được thực thi.
giá gas
*big.Int (Go)
gas
uint64 (Go)
Lượng gas tối đa mà giao dịch được phép sử dụng.
đến
*common.Address (Go)
Địa chỉ tài khoản sẽ nhận giá trị được chuyển. Hiện tại giá trị này phải bằng 0. Tính năng xác định địa chỉ sẽ được hỗ trợ trong tương lai.
giá trị
*big.Int (Go)
Số lượng KLAY tính bằng peb sẽ được chuyển.
từ
common.Address (Go)
nhập
[]byte (Go)
Dữ liệu được gắn kèm giao dịch, dùng để thực thi giao dịch.
humanReadable
bool (Go)
Đây phải là giá trị false vì địa chỉ có thể đọc chưa được hỗ trợ. Nếu giá trị là true, giao dịch sẽ bị từ chối.
codeFormat
uint8 (Go)
Định dạng mã của mã hợp đồng thông minh. Hiện tại, giá trị được hỗ trợ chỉ có EVM(0x00).
txSignatures
[]{*big.Int, *big.Int, *big.Int} (Go)
Mã hóa RLP cho chữ ký
Để tạo chữ ký của loại giao dịch này, quá trình tuần tự hóa RLP phải diễn ra như sau:
TxTypeSmartContractExecution thực thi hợp đồng thông minh với dữ liệu đã cho trong input. TxTypeSmartContractExecution chỉ được chấp nhận nếu to là một tài khoản hợp đồng thông minh. Để chuyển KLAY đến một tài khoản sở hữu bên ngoài, hãy dùng TxTypeValueTransfer. Các thay đổi sau sẽ được tạo ra nhờ loại giao dịch này.
Nếu to là một tài khoản hợp đồng thông minh, mã sẽ được thực thi dựa trên input. Nếu không, giao dịch sẽ bị từ chối.
Số dư của người gửi giảm đi một lượng bằng khoản phí giao dịch.
Số dùng một lần của người gửi tăng thêm một đơn vị.
Nếu value được cung cấp, value KLAY được chuyển từ người gửi đến to của hợp đồng thông minh. Hợp đồng phải có hàm dự phòng khoản phải trả để nhận KLAY.
Thuộc tính
Thuộc tính
Loại
Mô tả
type
uint8 (Go)
Loại TxTypeSmartContractExecution. Thuộc tính này phải là 0x30.
nonce
uint64 (Go)
Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu hai giao dịch có cùng một giá trị số dùng một lần do người gửi tạo ra, chỉ có một giao dịch sẽ được thực thi.
giá gas
*big.Int (Go)
gas
uint64 (Go)
Lượng gas tối đa mà giao dịch được phép sử dụng.
đến
common.Address (Go)
Địa chỉ thực thi tài khoản hợp đồng thông minh.
giá trị
*big.Int (Go)
Số lượng KLAY tính bằng peb sẽ được chuyển.
từ
common.Address (Go)
nhập
[]byte (Go)
Dữ liệu được gắn kèm giao dịch, dùng để thực thi giao dịch.
txSignatures
[]{*big.Int, *big.Int, *big.Int} (Go)
Mã hóa RLP cho chữ ký
Để tạo chữ ký của loại giao dịch này, quá trình tuần tự hóa RLP phải diễn ra như sau:
TxTypeAccountUpdate cập nhật khóa của tài khoản đã cho. Các thay đổi sau sẽ được áp dụng nhờ loại giao dịch này.
Số dư của người gửi giảm đi một lượng bằng khoản phí giao dịch.
Số dùng một lần của người gửi tăng thêm một đơn vị.
Khóa tài khoản được cập nhật bằng key.
Khi loại giao dịch này đã được triển khai, các giao dịch gửi từ tài khoản này từ đó sẽ được xác thực bằng key mới.
Thuộc tính
Thuộc tính
type
Mô tả
type
uint8 (Go)
Loại TxTypeAccountUpdate. Thuộc tính này phải là 0x20.
nonce
uint64 (Go)
Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu hai giao dịch có cùng một giá trị số dùng một lần do người gửi tạo ra, chỉ có một giao dịch sẽ được thực thi.
giá gas
*big.Int (Go)
gas
uint64 (Go)
Giá trị phí giao dịch tối đa mà giao dịch được phép sử dụng.
từ
common.Address (Go)
khóa
AccountKey (Go)
[AccountKey][] cần cập nhật cho tài khoản.
txSignatures
[]{*big.Int, *big.Int, *big.Int} (Go)
Mã hóa RLP cho chữ ký
Để tạo chữ ký của loại giao dịch này, quá trình tuần tự hóa RLP phải diễn ra như sau:
TxTypeCancel hủy bỏ việc thực thi giao dịch có cùng số dùng một lần trong bể giao dịch. Loại giao dịch này có ích khi một giao dịch đã gửi có vẻ như không được xử lý trong một khoảng thời gian nhất định. Có một số trường hợp mà một giao dịch có vẻ như không được xử lý: 1. Giao dịch bị thất lạc ở đâu đó và không đi đến bất kỳ một nút đồng thuận nào. 2. Giao dịch chưa được xử lý tại bất kỳ một nút đồng thuận nào. 3. Giao dịch đã được xử lý nhưng khối chứa giao dịch này đã không được nhận.
Từ phía máy khách, rất khó để biết được lí do chính xác là gì, bởi vì để tìm ra lý do đó, ta cần phải xem nội dung bên trong của tất cả các nút đồng thuận. Tuy nhiên, việc kết nối với bất kỳ nút đồng thuận nào từ phía công chúng đều bị cấm. Trong trường hợp này, trong các nền tảng chuỗi khối thông thường, người dùng thường gửi một giao dịch khác với một giá gas cao hơn để thay thế giao dịch cũ. Tuy nhiên, bởi vì trong Klaytn, giá gas là cố định, việc thay thế giao dịch vũ bằng giá gas cao hơn là không khả thi.
Nếu giao dịch vẫn không được xử lý, các giao dịch khác với số dùng một lần cao hơn cũng sẽ không thể được xử lý, vì số dùng một lần xác định thứ tự thực thi của các giao dịch.
Để giải quyết vấn đề này, Klaytn cung cấp một loại giao dịch TxTypeCancel. Nếu người dùng gặp phải trường hợp như vậy, họ có thể gửi giao dịch TxTypeCancel.
Từng trường hợp nêu trên có thể được xử lý như sau: 1. Nếu giao dịch cũ bị thất lạc, giao dịch TxTypeCancel này sẽ được thực thi và đưa vào một khối. 2. Nếu giao dịch cũ vẫn chưa được xử lý, giao dịch TxType Cancel này sẽ thay thế giao dịch cũ. Sau đó, nó được thực thi và đưa vào một khối. 3. nếu giao dịch cũ đã được triển khai, số dùng một lần đã tăng lên, giao dịch TxTypeCancel này sẽ bị loại bỏ vì có số dùng một lần thấp hơn.
Lưu ý rằng giao dịch TxTypeCancel là giao dịch duy nhất có khả năng thay thế một giao dịch với cùng một số dùng một lần. Các loại giao dịch khác không thể thay thế các giao dịch với cùng một số dùng một lần.
Các thay đổi sau có thể xuất hiện do loại giao dịch này. 1. Số dư của người gửi giảm đi một lượng bằng khoản phí giao dịch. 2. Số dùng một lần của người gửi tăng thêm một đơn vị.
Thuộc tính
Thuộc tính
Loại
Mô tả
type
uint8 (Go)
Loại TxTypeCancel. Thuộc tính này phải là 0x38.
nonce
uint64 (Go)
Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu hai giao dịch có cùng một giá trị số dùng một lần do người gửi tạo ra, chỉ có một giao dịch sẽ được thực thi. Đối với giao dịch TxTypeCancel, giá trị này phải khớp với số dùng một lần mà giao dịch đích cần hủy đang sử dụng.
giá gas
*big.Int (Go)
gas
uint64 (Go)
Giá trị phí giao dịch tối đa mà giao dịch được phép sử dụng.
từ
common.Address (Go)
txSignatures
[]{*big.Int, *big.Int, *big.Int} (Go)
Kết quả:
Nếu một giao dịch có cùng số dùng một lần, nó sẽ được thay thế bởi giao dịch hủy này.
Nếu số dùng một lần không giống nhau, giao dịch này sẽ chỉ được đưa vào như một giao dịch bình thường.
Giao dịch hủy không được thay thế bằng những loại giao dịch khác.
Mã hóa RLP cho chữ ký
Để tạo một chữ ký giao dịch, quá trình tuần tự hóa RLP phải diễn ra như sau:
TxTypeChainDataAnchoringTransaction là một giao dịch neo dữ liệu chuỗi dịch vụ vào chuỗi chính của Klaytn. Các chuỗi dịch vụ gửi định kỳ loại giao dịch này đến chuỗi chính Klaytn để đảm bảo tính bảo mật và độ tin cậy của dữ liệu. Để biết thêm chi tiết về việc neo dữ liệu, hãy xem Neo. Lưu ý rằng giao dịch này không được phép gửi qua RPC. Hiện tại, giao dịch này được thực thi qua các kênh P2P riêng tư vì lý do bảo mật. Giao dịch này không làm thay đổi trạng thái của chuỗi khối Klaytn, ngoại trừ việc số dùng một lần của người gửi tăng lên một đơn vị.
Thuộc tính
Thuộc tính
Loại
Mô tả
type
uint8 (Go)
Loại TxTypeChainDataAnchoringTransaction. Thuộc tính này phải là 0x48.
nonce
uint64 (Go)
Giá trị dùng để định danh duy nhất cho một giao dịch của người gửi. Nếu hai giao dịch có cùng một giá trị số dùng một lần do người gửi tạo ra, chỉ có một giao dịch sẽ được thực thi.
giá gas
*big.Int (Go)
gas
uint64 (Go)
Giá trị phí giao dịch tối đa mà giao dịch được phép sử dụng.
từ
common.Address (Go)
nhập
[]byte (Go)
Dữ liệu của chuỗi dịch vụ.
txSignatures
[]{*big.Int, *big.Int, *big.Int} (Go)
Mã hóa RLP cho chữ ký
Để tạo chữ ký của loại giao dịch này, quá trình tuần tự hóa RLP phải diễn ra như sau:
Hệ số nhân để tính toán số lượng token mà người gửi sẽ thanh toán. Lượng token mà người gửi sẽ thanh toán được tính theo công thức gas * gasPrice. Ví dụ: Người gửi sẽ thanh toán khoản phí giao dịch là 10 KLAY nếu gas bằng 10 và gasPrice là 10^18. Hãy xem .
Đơn giá của gas tính bằng peb mà người gửi sẽ dùng để thanh toán phí giao dịch. Số tiền phí giao dịch được tính theo công thức gas * gasPrice. Ví dụ: nếu giao dịch tốn 10 đơn vị gas và gasPrice là 10^18, phí giao dịch sẽ là 10 KLAY. Hãy xem .
Địa chỉ của người gửi. Để biết thêm chi tiết, hãy xem .
Chữ ký của người gửi. Để biết thêm chi tiết, hãy xem .
Đơn giá của gas tính bằng peb mà người gửi sẽ dùng để thanh toán phí giao dịch. Số tiền phí giao dịch được tính theo công thức gas * gasPrice. Ví dụ: nếu giao dịch tốn 10 đơn vị gas và gasPrice là 10^18, phí giao dịch sẽ là 10 KLAY. Hãy xem .
Địa chỉ của người gửi. Để biết thêm chi tiết, hãy xem .
Chữ ký của người gửi. Để biết thêm chi tiết, hãy xem .
Đơn giá của gas tính bằng peb mà người gửi sẽ dùng để thanh toán phí giao dịch. Số tiền phí giao dịch được tính theo công thức gas * gasPrice. Ví dụ: nếu giao dịch tốn 10 đơn vị gas và gasPrice là 10^18, phí giao dịch sẽ là 10 KLAY. Hãy xem .
Địa chỉ của người gửi. Để biết thêm chi tiết, hãy xem .
Chữ ký của người gửi. Để biết thêm chi tiết, hãy xem .
Đơn giá của gas tính bằng peb mà người gửi sẽ dùng để thanh toán phí giao dịch. Số tiền phí giao dịch được tính theo công thức gas * gasPrice. Ví dụ: nếu giao dịch tốn 10 đơn vị gas và gasPrice là 10^18, phí giao dịch sẽ là 10 KLAY. Hãy xem .
Địa chỉ của người gửi. Để biết thêm chi tiết, hãy xem .
Chữ ký của người gửi. Để biết thêm chi tiết, hãy xem .
Hệ số nhân để tính toán số lượng token mà người gửi sẽ thanh toán. Lượng token mà người gửi sẽ thanh toán được tính theo công thức gas * gasPrice. Ví dụ: Người gửi sẽ thanh toán khoản phí giao dịch là 10 KLAY nếu gas bằng 10 và gasPrice là 10^18. Hãy xem .
Địa chỉ của người gửi. Để biết thêm chi tiết, hãy xem .
Chữ ký của người gửi. Để biết thêm chi tiết, hãy xem .
Đơn giá của gas tính bằng peb mà người gửi sẽ dùng để thanh toán phí giao dịch. Số tiền phí giao dịch được tính theo công thức gas * gasPrice. Ví dụ: nếu giao dịch tốn 10 đơn vị gas và gasPrice là 10^18, phí giao dịch sẽ là 10 KLAY. Hãy xem .
Địa chỉ của người gửi. Để biết thêm chi tiết, hãy xem .
Chữ ký của người gửi. Để biết thêm chi tiết, hãy xem .
Đơn giá của gas tính bằng peb mà người gửi sẽ dùng để thanh toán phí giao dịch. Số tiền phí giao dịch được tính theo công thức gas * gasPrice. Ví dụ: nếu giao dịch tốn 10 đơn vị gas và gasPrice là 10^18, phí giao dịch sẽ là 10 KLAY. Hãy xem .
Địa chỉ của người gửi. Để biết thêm chi tiết, hãy xem .
Chữ ký của người gửi. Để biết thêm chi tiết, hãy xem .