Tìm hiểu về các loại giao dịch mới trên Ethereum trong một bài viết
Bài viết này đến từMycryptoBài viết này đến từ

, tác giả gốc: Maarten Zuidhoorn, dịch giả Katie Ku của Odaily biên soạn.
Có nhiều loại giao dịch khác nhau trên Ethereum, chẳng hạn như gửi ETH đến một địa chỉ, triển khai hợp đồng, v.v. Trước khi nâng cấp mạng Berlin, có bốn loại giao dịch khác nhau trên Ethereum:
Giao dịch thông thường với địa chỉ nhận, trường dữ liệu, v.v.;
Đối với giao dịch triển khai hợp đồng không có địa chỉ đích, trường dữ liệu được sử dụng cho mã hợp đồng;
Giao dịch với phương thức chữ ký giá trị v, nhưng không bao gồm ID chuỗi (trước EIP-155);
Giao dịch có chữ ký giá trị v, nhưng bao gồm ID chuỗi.
Các ứng dụng khách Ethereum khác nhau, thư viện và các công cụ khác phân tích từng giao dịch và hiểu từng loại giao dịch. Mặc dù chỉ có bốn loại giao dịch, nhưng có rất nhiều phức tạp và tình huống cần giải quyết. Kỹ thuật viên nên kiểm tra tất cả các trường trong giao dịch để tìm ra loại giao dịch đó là gì. Đây là chìa khóa cho các loại giao dịch mới, chẳng hạn như các loại giao dịch trước EIP-2718, chẳng hạn như giao dịch meta và giao dịch nhiều chữ ký.
Trong bài viết này, chúng tôi sẽ trình bày chi tiết một số tiêu chuẩn có trong bản nâng cấp Berlin, cũng như các tiêu chuẩn khác có thể được đưa vào trong tương lai.
tiêu đề phụ
Phong bì giao dịch tiêu chuẩn
RLP([nonce, gasPrice, gasLimit, to, value, data, v, r, s])
Ethereum có một định dạng giao dịch. Mỗi giao dịch bao gồm một nonce, giá gas, giới hạn gas, địa chỉ đích, giá trị, dữ liệu, v, r và s. Các trường này được mã hóa RLP như sau:
TransactionType || TransactionPayload
EIP-2718 định nghĩa một phong bì rộng mới cho các giao dịch đã nhập. Trong tiêu chuẩn mới, các giao dịch trông giống như sau:
trong đó các trường được định nghĩa là:
Loại giao dịch: Một số từ 0 đến 0x7f, có tổng cộng 128 loại giao dịch có thể.
Tải trọng giao dịch: Một mảng byte tùy ý như được xác định bởi loại giao dịch.
Các trường này được nối và kết hợp để tạo thành một giao dịch đã nhập. Tiêu chuẩn không mô tả định dạng của tải trọng giao dịch; nó có thể là bất kỳ chuỗi byte tùy ý nào, được mã hóa bởi bộ mã hóa được xác định bởi các loại giao dịch mới (ví dụ: RLP, SSZ, v.v.). Nối byte đơn giản đã được chọn vì việc đọc byte đầu tiên của mảng byte không yêu cầu bất kỳ thư viện hoặc công cụ nào: bạn không cần trình phân tích cú pháp RLP hoặc SSZ để kiểm tra loại giao dịch.
Một ví dụ điển hình về độ phức tạp được thêm vào là EIP-155, giới thiệu tính năng bảo vệ phản hồi bằng cách sử dụng ID chuỗi trong các giao dịch. Việc thêm một trường mới vào tham số giao dịch sẽ phá vỡ khả năng tương thích ngược, do đó ID chuỗi được mã hóa thành tham số khôi phục (v) của chữ ký giao dịch (v). Với EIP-2718, chúng ta có thể chỉ cần tạo một loại giao dịch mới để duy trì khả năng tương thích ngược.
tiêu đề phụ
Khả năng tương thích ngược và giao dịch thô
Một chủ đề lớn của EIP-2718 là khả năng tương thích ngược. EIP-2718 ở chế độ tương thích ngược hoàn toàn, có nghĩa là mọi công cụ, thư viện, ví (phần cứng) và giao dịch hiện có đều có thể sử dụng nó, nhưng họ sẽ không thể sử dụng "tính năng" mới do EIP-2718 và tiêu chuẩn cung cấp . Định dạng giao dịch cũ (hiện được gọi là giao dịch thô) vẫn hợp lệ cho các giao dịch mới trên mạng Ethereum.
Số loại giao dịch mới tối đa, 0x7f, đã được chọn để duy trì khả năng tương thích ngược với các giao dịch cũ này. Các giao dịch được mã hóa RLP luôn bắt đầu bằng một byte l và tham số lớn hơn hoặc bằng 0xc0, vì vậy các giao dịch đã nhập sẽ không bao giờ xung đột với các giao dịch cũ và có thể phân biệt các giao dịch đã nhập chỉ bằng cách kiểm tra byte đầu tiên và các giao dịch cũ.
Bản thân EIP-2718 không xác định bất kỳ loại giao dịch nào, nhưng có một số đề xuất cho tiêu chuẩn mới:
EIP-1559: Thay đổi phí thị trường chuỗi ETH1.0;
EIP-2711: Tài trợ, hết hạn và giao dịch hàng loạt, cũng được tạo bởi nhà phát triển Micah Zoltu, đó là lý do tại sao EIP-2718 được tạo;
Một số tiêu chí này được trình bày chi tiết hơn dưới đây.
tiêu đề phụ
Tại sao cần có các loại giao dịch mới?
EIP-2711 bổ sung chức năng này nguyên bản vào mạng Ethereum, đồng thời duy trì khả năng tương thích ngược với các giao dịch kiểu nguyên thủy (như được mô tả trong phần trước). Nó không yêu cầu hợp đồng thông minh hoặc các nút chuyên dụng để chạy. Tuy nhiên, hiện tại EIP-2711 vẫn là bản nháp và không rõ liệu EIP này có sớm tham gia vào mạng Ethereum hay không. Nó cũng có thể được chia thành nhiều EIP nhỏ hơn (chẳng hạn như EIP-3074).
tiêu đề phụ
Định dạng giao dịch mới cho EIP-1559
0x02 || RLP([chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data, accessList, signatureYParity, signatureR, signatureS])
Trong EIP-1559, cách thức hoạt động của gas đã thay đổi đáng kể. Thay vì trả đầy đủ gas cho thợ mỏ, một phần gas bị đốt cháy. Chúng tôi không nêu chi tiết tất cả các thay đổi trong EIP-1559, nhưng nó chỉ định một định dạng giao dịch mới:
Những thay đổi đáng chú ý nhất là:
Giá gas đã được thay thế bằng "phí ưu tiên cao nhất cho mỗi loại gas" và "phí tối đa cho mỗi loại gas".
ID chuỗi được mã hóa riêng thay vì được bao gồm trong giá trị chữ ký v. Điều này về cơ bản thay thế EIP-155 bằng cách triển khai đơn giản hơn.
Giá trị chữ ký v bây giờ là một bit chẵn lẻ đơn giản ("chẵn lẻ chữ ký Y") là 0 hoặc 1, tùy thuộc vào điểm nào trên đường cong elip sẽ được sử dụng.
Vì EIP-1559 tạo ra những thay đổi đáng kể đối với cách thức hoạt động của phí gas nên nó không tương thích trực tiếp với các giao dịch thô. Để duy trì khả năng tương thích ngược, EIP-1559 mô tả phương pháp nâng cấp giao dịch thô thành giao dịch tương thích với EIP-1559. Nó thực hiện điều này bằng cách sử dụng giá khí đốt thô làm phí ưu tiên cao nhất và phí khí đốt cao nhất cho mỗi loại khí đốt.
tiêu đề phụ
Giao dịch meta thô và giao dịch hàng loạt
Các giao dịch siêu dữ liệu đã xuất hiện được vài năm, nhưng cho đến nay vẫn cần có hợp đồng thông minh. Đối với các giao dịch hết hạn, điều này yêu cầu gửi ETH đến một hợp đồng thông minh, hợp đồng này phải hỗ trợ cụ thể các giao dịch meta.
0x02 || RLP([...SenderPayload, ...SenderSignature, ...GasPayerPayload, ...GasPayerSignature])
EIP-2711 cho phép giao dịch meta gốc (được gọi là giao dịch được tài trợ) và giao dịch hàng loạt mà không cần hợp đồng thông minh. Định dạng giao dịch mới được xác định với loại giao dịch 0x02 (mặc dù điều này có thể thay đổi vì EIP-1559 sử dụng cùng loại giao dịch). Giao dịch như sau:
[1, ChildTransaction[], nonce, ChainId, ValidUntil, gasLimit, gasPrice]
Về cơ bản, EIP-2711 bao gồm tải trọng (tùy chọn) và chữ ký của người trả tiền gas. Tài khoản này sẽ được dùng để thanh toán phí gas trong giao dịch. Ví dụ: mã thông báo ERC-20 có thể được gửi từ một địa chỉ mà địa chỉ đó không chứa bất kỳ ETH nào. Tải trọng của người gửi, chữ ký, v.v. được xác định dựa trên loại phụ giao dịch. Ví dụ: đối với giao dịch có loại giao dịch 1, tải trọng của người gửi được xác định là:
tiêu đề phụ
tóm tắt
tóm tắt
Các giao dịch đã nhập mang lại nhiều khả năng cho mạng Ethereum. Chúng có thể được tạo mà không cần thêm nhiều phức tạp vào ứng dụng khách Ethereum, thư viện và các công cụ khác có sẵn.


