Về bản chất, Ethereum là một máy trạng thái dựa trên giao dịch. Trong khoa học máy tính, máy trạng thái có thể đọc một chuỗi đầu vào rồi dựa vào các đầu vào đó để chuyển sang một trạng thái mới.
Máy trạng thái của Ethereum bắt đầu từ trạng thái khởi nguyên trống (genesis state), rồi được thúc đẩy bởi từng giao dịch để chuyển từ trạng thái này sang trạng thái khác.
Mỗi trạng thái của Ethereum chứa một lượng lớn thông tin giao dịch, được tập hợp vào một khối. Một khối bao gồm một chuỗi giao dịch và được liên kết với khối đứng trước nó.
Để một giao dịch được xem là hợp lệ, giao dịch đó phải được đưa vào một khối và được mạng lưới đồng thuận. Trước “The Merge” vào tháng 9 năm 2022, Ethereum sử dụng cơ chế Bằng chứng công việc (PoW) giống Bitcoin, trong đó các thợ đào cạnh tranh bằng sức mạnh tính toán để tạo khối; sau The Merge, Ethereum chính thức chuyển sang Bằng chứng cổ phần (PoS).
Trong cơ chế PoS, “thợ đào” tiêu tốn sức mạnh tính toán không còn tồn tại; thay vào đó là các trình xác thực (Validator). Trình xác thực phải đặt cọc 32 Ether làm tài sản bảo đảm, sau đó được chọn bằng thuật toán giả ngẫu nhiên để đề xuất khối mới; một ủy ban gồm các trình xác thực khác sẽ chứng thực (Attestation) khối đó. Nếu làm việc trung thực, trình xác thực sẽ nhận được Ether làm phần thưởng; nếu có hành vi sai trái hoặc ngoại tuyến, số Ether đã đặt cọc sẽ bị phạt (Slashing).
1.2 Cơ chế lựa chọn nhánh và đồng thuận (Gasper)
Như đã nói ở trên, Ethereum là một máy trạng thái được các nút trên toàn cầu cùng chia sẻ; trạng thái của nó phải là duy nhất. Việc có nhiều trạng thái (hoặc nhiều chuỗi) sẽ phá hủy hệ thống. Nếu chuỗi bị phân nhánh, bạn có thể có 10 đồng trên một chuỗi, 20 đồng trên chuỗi khác và 40 đồng trên một chuỗi nữa. Trong tình huống như vậy, không thể xác định chuỗi nào là “hợp lệ” nhất.
Bất cứ khi nào xuất hiện nhiều đường đi, một “nhánh” sẽ hình thành. Thông thường, chúng ta muốn tránh phân nhánh vì chúng làm gián đoạn hệ thống và buộc mọi người phải lựa chọn chuỗi mà họ tin tưởng.
Trong thời kỳ PoW, Ethereum dùng giao thức GHOST (Greedy Heaviest Observed Subtree) để chọn nhánh có nhiều phép tính được hoàn tất nhất, nhằm ngăn nhiều chuỗi hình thành. Sau “The Merge” năm 2022, nhiệm vụ xác định chuỗi chính được giao cho các trình xác thực và Ethereum chuyển sang cơ chế đồng thuận có tên Gasper.
Gasper là sự kết hợp của hai thành phần:
Quy tắc lựa chọn nhánh LMD-GHOST: các nút luôn chọn nhánh có tổng trọng số phiếu bầu của trình xác thực lớn nhất (tức có lượng stake lớn nhất) làm chuỗi chính.
Cơ chế chung cuộc Casper FFG: bảo đảm rằng một khi khối được mạng lưới xác nhận là chung cuộc, khối đó sẽ có “tính chung cuộc tuyệt đối”, không thể bị đảo ngược hay sửa đổi, qua đó loại bỏ nguy cơ tái tổ chức chuỗi tiềm ẩn trong thời kỳ PoW trước đây.
2 Tài khoản
Tài khoản Ethereum là một thực thể có số dư Ether (ETH) và có thể gửi giao dịch trên Ethereum. Tài khoản có thể do người dùng kiểm soát hoặc được triển khai dưới dạng hợp đồng thông minh.
Ethereum có hai loại tài khoản:
Tài khoản bên ngoài: được kiểm soát bằng khóa riêng và không gắn với bất kỳ mã nào.
Tài khoản hợp đồng: được kiểm soát bằng mã hợp đồng và có mã gắn với tài khoản.
Cả hai loại tài khoản đều có thể nhận, nắm giữ và gửi ETH cũng như token, đồng thời tương tác với các hợp đồng thông minh đã triển khai.
Tài khoản bên ngoài có thể gửi thông điệp đến một tài khoản bên ngoài khác hoặc tài khoản hợp đồng. Thông điệp được truyền giữa hai tài khoản bên ngoài chỉ đơn giản là chuyển giá trị. Nhưng thông điệp từ tài khoản bên ngoài đến tài khoản hợp đồng sẽ kích hoạt mã của tài khoản hợp đồng, cho phép tài khoản đó thực hiện nhiều hành động khác nhau (chẳng hạn chuyển token, ghi vào bộ nhớ nội bộ, đào một token mới, thực hiện một số phép tính, tạo hợp đồng mới, v.v.). Tài khoản hợp đồng không thể tự khởi tạo giao dịch. Vì vậy, mọi hành động trên Ethereum đều được kích hoạt bởi giao dịch do tài khoản bên ngoài khởi tạo.
Tài khoản Ethereum có bốn trường:
nonce: bộ đếm số lượng giao dịch được gửi từ tài khoản, giúp bảo đảm mỗi giao dịch chỉ được xử lý một lần. Với tài khoản hợp đồng, con số này biểu thị số lượng hợp đồng do tài khoản đó tạo ra.
balance: lượng Wei mà địa chỉ này sở hữu. Wei là đơn vị tính Ether; 1 Ether = 10^18 Wei.
storageRoot: còn gọi là hàm băm lưu trữ, tức hàm băm của nút gốc cây Merkle Patricia.
codeHash: hàm băm mã EVM của tài khoản này. Với tài khoản hợp đồng, mã sẽ được băm và lưu dưới dạng codeHash. Với tài khoản bên ngoài, trường codeHash là hàm băm của chuỗi rỗng.
Trong một thời gian dài, Ethereum phân biệt nghiêm ngặt tài khoản bên ngoài (EOA) và tài khoản hợp đồng. Tuy nhiên, điều này tạo ra rào cản rất lớn cho người dùng: họ phải bảo quản khóa riêng cẩn thận và phải có ETH để trả phí Gas. Tiêu chuẩn ERC-4337 được triển khai vào năm 2023 đã hiện thực hóa “trừu tượng hóa tài khoản”, cho phép tài khoản người dùng vốn dĩ có thể là một hợp đồng thông minh.
Điều này mang lại những cải tiến mang tính cách mạng cho trải nghiệm người dùng: hỗ trợ khôi phục xã hội (có thể nhờ bạn bè giúp khôi phục khi mất khóa riêng), cho phép dùng các token như USDT để trả phí Gas, thậm chí xử lý hàng loạt giao dịch (hoàn tất phê duyệt và hoán đổi chỉ bằng một lần nhấn). Bản nâng cấp Pectra vào tháng 5 năm 2025 còn cho phép EOA truyền thống tạm thời thiết lập ủy quyền mã thông qua EIP-7702, để thực thi logic như hợp đồng thông minh và mang các khả năng của trừu tượng hóa tài khoản đến với những tài khoản cũ. Trừu tượng hóa tài khoản đang làm mờ ranh giới giữa EOA và tài khoản hợp đồng, đồng thời là cơ sở hạ tầng then chốt giúp Ethereum hướng tới việc phổ cập Web3 trên quy mô lớn.
3 Khối
Mọi giao dịch đều được tập hợp thành một “khối”. Một chuỗi khối gồm một loạt các khối được liên kết với nhau như vậy.
3.1 Tiêu đề khối
Mỗi khối đều có một “tiêu đề” chứa các trường sau:
parentHash: hàm băm của tiêu đề khối cha (đây cũng chính là yếu tố khiến các khối tạo thành chuỗi khối)
beneficiary (hiện thường được gọi là feeRecipient): địa chỉ tài khoản nhận phí ưu tiên của khối này
stateRoot: hàm băm của nút gốc cây trạng thái
transactionsRoot: hàm băm của nút gốc cây Merkle chứa mọi giao dịch trong khối này
receiptsRoot: hàm băm của nút gốc cây Merkle chứa mọi biên lai giao dịch trong khối này
logsBloom: bộ lọc Bloom được tạo từ thông tin nhật ký
prevRandao: giá trị ngẫu nhiên do Beacon Chain cung cấp (sau The Merge, trường này thay thế mixHash của thời kỳ PoW)
number: số thứ tự của khối hiện tại (khối khởi nguyên có số thứ tự là 0; mỗi khối tiếp theo tăng thêm 1)
gasLimit: giới hạn gas hiện tại của mỗi khối
gasUsed: tổng lượng gas mà các giao dịch trong khối này đã sử dụng
timestamp: dấu thời gian Unix tại thời điểm khối được tạo
baseFeePerGas: phí cơ sở trên mỗi đơn vị gas của khối này (được đưa vào từ bản nâng cấp London năm 2021 / EIP-1559)
withdrawalsRoot: hàm băm của nút gốc cây Merkle chứa dữ liệu rút tiền đặt cọc của trình xác thực (được đưa vào từ bản nâng cấp Shanghai năm 2023)
blobGasUsed / excessBlobGas: ghi lại mức sử dụng dữ liệu Blob (được đưa vào từ bản nâng cấp Cancun năm 2024)
parentBeaconBlockRoot: hàm băm gốc của khối Beacon cha, cho phép EVM truy cập trạng thái Beacon Chain (được đưa vào từ bản nâng cấp Cancun)
requestsHash: hàm băm của các loại yêu cầu ở lớp thực thi (nạp tiền, rút tiền, hợp nhất trình xác thực) (được đưa vào từ bản nâng cấp Pectra năm 2025)
extraData: dữ liệu bổ sung liên quan đến khối này
Lưu ý: Sau The Merge, một số trường từ thời PoW đã bị loại bỏ—mixHash được thay bằng prevRandao; ommerHash, difficulty và nonce vẫn được giữ lại làm trường dự phòng trong giao thức nhưng đã được cố định thành hằng số, không còn tác dụng thực tế. Sơ đồ tiêu đề khối cổ điển bên dưới vẫn được chú thích theo bố cục cũ và chưa phản ánh những thay đổi trên.
Mỗi khối chứa ba cấu trúc dạng cây, lần lượt tương ứng với:
Trạng thái (stateRoot)
Giao dịch (transactionsRoot)
Biên lai (receiptsRoot)
3.2 Cây MPT
Ethereum sử dụng cấu trúc dữ liệu Merkle Patricia Tree (MPT) để lưu trữ dữ liệu. MPT là một cấu trúc dữ liệu được cải tiến, kết hợp ưu điểm của cả cây Merkle và cây tiền tố. Đây là cấu trúc dữ liệu quan trọng được Ethereum dùng để quản lý dữ liệu tài khoản và tạo hàm băm cho tập hợp giao dịch.
Khả năng lưu trữ thông tin hiệu quả của MPT rất hữu ích đối với “máy khách nhẹ” và “nút nhẹ” của Ethereum. Nói khái quát, Ethereum có hai loại nút: nút đầy đủ và nút nhẹ.
Nút đầy đủ đồng bộ bằng cách tải xuống toàn bộ chuỗi, từ khối khởi nguyên đến khối hiện tại, rồi thực thi mọi giao dịch có trong đó. Trình xác thực thường chạy nút đầy đủ vì việc xác thực và tạo khối đều cần dữ liệu trạng thái đầy đủ.
Thay vì tải xuống và lưu trữ toàn bộ chuỗi rồi thực thi mọi giao dịch trong đó, nút nhẹ chỉ tải xuống các tiêu đề của chuỗi, từ khối khởi nguyên đến khối hiện tại, mà không thực thi giao dịch hay truy xuất trạng thái liên quan. Vì nút nhẹ có thể truy cập tiêu đề khối, trong đó chứa các hàm băm gốc của ba cây MPT, nên chúng vẫn có thể dễ dàng tạo và nhận các câu trả lời có thể xác minh về giao dịch, sự kiện, số dư, v.v.
Cách này hoạt động được vì các hàm băm trong cây MPT được lan truyền ngược lên trên—nếu người dùng độc hại tìm cách thay thế một giao dịch ở đáy cây MPT bằng giao dịch giả, hàm băm của nút phía trên sẽ thay đổi. Sự thay đổi đó lại khiến hàm băm của nút cao hơn nữa thay đổi, cứ thế tiếp diễn cho đến nút gốc của cây.
Tóm lại, ưu điểm của cây MPT là hàm băm của nút gốc phụ thuộc vào dữ liệu được lưu trong cây, đồng thời có thể dùng hàm băm gốc làm dấu nhận dạng an toàn cho dữ liệu đó. Vì tiêu đề khối chứa các hàm băm gốc của cây trạng thái, cây giao dịch và cây biên lai, bất kỳ nút nào cũng có thể xác minh một phần nhỏ trạng thái Ethereum mà không cần lưu toàn bộ trạng thái, vốn có thể rất lớn.
Mặc dù cây MPT đã hoạt động rất tốt trong vài năm qua, khi dữ liệu trạng thái Ethereum phình to lên hàng trăm GB, kích thước bằng chứng MPT trở nên quá lớn, khiến yêu cầu phần cứng để chạy nút đầy đủ ngày càng cao. Để giải quyết vấn đề này, giai đoạn “The Verge” trong lộ trình Ethereum dự kiến chuyển cấu trúc dữ liệu từ MPT sang Verkle Trees (cây Verkle).
Cây Verkle kết hợp ưu điểm của cam kết vectơ (Vector Commitments) và cây Merkle, có thể giảm kích thước bằng chứng mật mã (witness) hơn một bậc độ lớn. Nhờ đó, điện thoại hoặc máy tính cấu hình rất thấp cũng có thể dễ dàng chạy “máy khách phi trạng thái” (Stateless Clients) của Ethereum, giúp đạt được mức độ phi tập trung tối đa. Cần lưu ý rằng, tính đến năm 2026, quá trình chuyển đổi sang Verkle vẫn đang được phát triển và chưa được đưa vào bất kỳ kế hoạch hard fork nào đã được xác nhận.
3.3 Thời gian tạo khối và nhịp thời gian (Slots & Epochs)
Trong thời kỳ Bằng chứng công việc (PoW), thời gian tạo khối mang tính xác suất (trung bình khoảng 13–15 giây) và được điều chỉnh linh hoạt theo độ khó khai thác. Nhưng với cơ chế Bằng chứng cổ phần (PoS) hiện nay, thời gian trên Ethereum trôi qua chính xác như một chiếc đồng hồ.
Ethereum chia thời gian thành các đơn vị cố định:
Khe thời gian (Slot): mỗi khe cố định dài 12 giây, là khoảng thời gian hệ thống dành để tạo một khối mới. Trong mỗi khe, hệ thống chọn một trình xác thực bằng phương thức giả ngẫu nhiên để đề xuất khối; các trình xác thực còn lại sẽ chứng thực (Attestation) khối đó.
Kỷ nguyên (Epoch): cứ 32 khe thời gian hợp thành một kỷ nguyên, tương đương 6,4 phút. Epoch là chu kỳ cơ bản để hệ thống quyết toán phần thưởng và hình phạt của trình xác thực, xáo trộn (phân công lại nhiệm vụ cho trình xác thực) và đạt được tính “chung cuộc” của khối.
Thiết kế nhịp thời gian cố định này giúp hoạt động của mạng Ethereum dễ dự đoán hơn: nhiệm vụ luân phiên của trình xác thực, thời gian xác nhận giao dịch, cũng như việc quyết toán phần thưởng và tiền phạt đều có nhịp độ rõ ràng.
4 Gas và phí
Phí là một khái niệm quan trọng trong Ethereum: mọi phép tính phát sinh từ giao dịch trên mạng Ethereum đều có phí. Phí này được thanh toán bằng Gas.
Gas là đơn vị dùng để đo lượng phí cần thiết cho một phép tính cụ thể. Wei là đơn vị nhỏ nhất của Ether; 1 Ether = 10^18 Wei. Đơn giá gas thường được tính bằng gwei; 1 gwei = 10^9 Wei.
Sau bản nâng cấp London năm 2021 (EIP-1559), thị trường phí của Ethereum đã thay đổi căn bản. Hiện phí giao dịch gồm hai phần:
Phí cơ sở (Base Fee): được giao thức tự động tính toán dựa trên mức độ tắc nghẽn của khối trước đó và áp dụng đồng nhất cho mọi giao dịch trong cùng một khối. Khoản phí này không được trả cho trình xác thực mà bị mạng lưới đốt trực tiếp (Burned).
Phí ưu tiên (Priority Fee / Tip): khoản tiền boa mà người dùng tự nguyện trả thêm cho người đề xuất khối (trình xác thực) để khuyến khích họ ưu tiên đưa giao dịch của mình vào khối.
Do đó, khi gửi giao dịch, người dùng không còn đặt một mức gasPrice duy nhất mà thay vào đó là maxFeePerGas (đơn giá tổng tối đa sẵn sàng trả cho mỗi đơn vị gas) và maxPriorityFeePerGas (mức tiền boa tối đa sẵn sàng trả). Đồng thời, mỗi giao dịch vẫn phải đặt gasLimit, tức lượng gas tối đa mà người gửi sẵn sàng trả để thực thi giao dịch.
Ví dụ, giả sử người gửi đặt gasLimit là 50.000 và maxFeePerGas là 20 gwei. Điều này có nghĩa người gửi sẵn sàng trả tối đa 50.000 × 20 gwei = 1.000.000.000.000.000 Wei = 0,001 Ether để thực thi giao dịch.
Đơn giá thực tế mà giao dịch phải trả là min(maxFeePerGas, Base Fee + maxPriorityFeePerGas). Nếu số dư tài khoản người dùng đủ để thanh toán mức phí tối đa này thì mọi việc sẽ ổn; khi giao dịch kết thúc, lượng gas chưa sử dụng sẽ được hoàn lại cho người gửi.
Nếu người gửi không cung cấp đủ gas để thực thi giao dịch, quá trình thực thi sẽ gặp lỗi “không đủ gas” và giao dịch bị xem là không hợp lệ. Trong trường hợp này, quá trình xử lý giao dịch sẽ dừng lại, mọi thay đổi trạng thái đã thực hiện sẽ được hoàn tác, và trạng thái sẽ trở về đúng như trước khi giao dịch diễn ra—hoàn toàn như thể giao dịch đó chưa từng xảy ra. Vì máy đã thực hiện các phép tính trước khi cạn gas, về nguyên tắc sẽ không có gas nào được hoàn lại cho người gửi.
Vậy khoản tiền gas này rốt cuộc đi đâu?
Phí cơ sở: bị đốt vĩnh viễn (Burned) và loại khỏi tổng cung ETH. Khi hoạt động trên chuỗi sôi động, lượng ETH bị đốt thậm chí có thể khiến ETH trở nên giảm phát.
Phí ưu tiên: được trả cho trình xác thực đã đề xuất thành công khối đó (tức “thợ đào” ngày trước). Người đề xuất nhận khoản thưởng này vì đã bỏ ra chi phí tính toán và băng thông để đưa giao dịch vào khối, thực thi và xác minh chúng.
Thông thường, người gửi sẵn sàng trả phí ưu tiên cao hơn thì trình xác thực có thể thu được nhiều giá trị hơn từ giao dịch đó, nên họ càng có động lực đưa giao dịch vào khối trước. Trình xác thực có quyền tự do chọn giao dịch muốn xác minh hoặc bỏ qua; phí ưu tiên chính là mức giá để cạnh tranh cho quyền lựa chọn này.
Phí trên Ethereum có tác dụng gì?
Thứ nhất, một khía cạnh quan trọng giúp Ethereum vận hành là mọi thao tác được thực hiện trên mạng đều được tất cả các nút đầy đủ thực hiện lại. Tuy nhiên, các phép tính trên Máy ảo Ethereum rất tốn kém. Vì vậy, hợp đồng thông minh Ethereum phù hợp nhất với những tác vụ đơn giản, chẳng hạn chạy logic nghiệp vụ cơ bản hoặc xác minh chữ ký và các đối tượng mật mã khác, chứ không phải các tác vụ phức tạp như lưu trữ tệp, email hay học máy, vốn gây áp lực cho mạng lưới. Do đó, việc thu phí giúp ngăn mạng hoạt động quá tải.
Thứ hai, ngôn ngữ hợp đồng thông minh của Ethereum hoàn chỉnh Turing (nói ngắn gọn, máy Turing là một cỗ máy có thể mô phỏng bất kỳ thuật toán máy tính nào), nghĩa là mã có thể chứa vòng lặp. Nếu không có phí, kẻ xấu có thể làm tê liệt mạng bằng cách thực hiện giao dịch chứa vòng lặp vô hạn. Vì vậy, việc thu phí còn giúp bảo vệ mạng khỏi các cuộc tấn công có chủ đích.
Thứ ba, Gas không chỉ dùng để trả phí tính toán mà còn dùng để trả phí lưu trữ. Tổng phí lưu trữ tỷ lệ thuận với kích thước dữ liệu, qua đó khuyến khích người dùng giảm lượng dữ liệu lưu trữ nhiều nhất có thể. Dung lượng lưu trữ tăng sẽ làm cơ sở dữ liệu trạng thái Ethereum trên mọi nút lớn hơn, tạo ra chi phí mà toàn mạng phải gánh chịu.
5 Giao dịch và thông điệp
Ethereum là một máy trạng thái dựa trên giao dịch. Nói cách khác, các giao dịch diễn ra giữa những tài khoản khác nhau là nguyên nhân khiến trạng thái toàn cục của Ethereum chuyển từ trạng thái này sang trạng thái khác.
Giao dịch là chỉ thị được ký bằng mật mã, do tài khoản bên ngoài tạo, tuần tự hóa rồi gửi lên chuỗi khối. Giao dịch có thể thuộc một trong hai loại: lời gọi thông điệp (message calls) và tạo hợp đồng (contract creations).
Mọi giao dịch đều chứa các thành phần sau, bất kể thuộc loại nào:
nonce: bộ đếm số lượng giao dịch mà người gửi đã gửi
gasPrice: số Wei mà người gửi sẵn sàng trả cho mỗi đơn vị gas cần để thực thi giao dịch. Sau EIP-1559, trường này dần được thay bằng maxFeePerGas và maxPriorityFeePerGas (xem mục 4)
gasLimit: lượng gas tối đa mà người gửi sẵn sàng trả để thực thi giao dịch. Giá trị này được khấu trừ trước khi bất kỳ phép tính nào hoàn tất
to: địa chỉ người nhận. Trong giao dịch tạo hợp đồng, địa chỉ tài khoản hợp đồng chưa tồn tại nên trường này để trống
value: lượng Wei được chuyển từ người gửi sang người nhận. Trong giao dịch tạo hợp đồng, value là số dư ban đầu của tài khoản hợp đồng mới
v, r, s: các giá trị dùng để tạo chữ ký xác định người gửi giao dịch
init: chỉ có trong giao dịch tạo hợp đồng, là đoạn mã EVM dùng để khởi tạo tài khoản hợp đồng mới. Giá trị init được thực thi một lần rồi bị loại bỏ. Khi init được thực thi lần đầu, nó trả về phần thân mã của tài khoản, tức đoạn mã được gắn vĩnh viễn với tài khoản hợp đồng
data: trường không bắt buộc, chỉ có trong giao tiếp bằng thông điệp; chứa dữ liệu đầu vào của thông điệp (tức các tham số). Ví dụ, nếu hợp đồng thông minh là một dịch vụ đăng ký tên miền, lời gọi hợp đồng có thể cần các tham số đầu vào gồm tên miền và địa chỉ IP
Dù là giao tiếp bằng thông điệp hay tạo hợp đồng, giao dịch đều do tài khoản bên ngoài khởi tạo và gửi lên chuỗi khối. Nói cách khác, giao dịch là cầu nối giữa thế giới bên ngoài và trạng thái bên trong Ethereum.
Tuy nhiên, điều đó không có nghĩa là hợp đồng không thể giao tiếp với hợp đồng khác. Các hợp đồng trong phạm vi trạng thái toàn cục của Ethereum có thể giao tiếp với những hợp đồng khác trong cùng phạm vi. Chúng giao tiếp thông qua “thông điệp” hoặc “giao dịch nội bộ”. Khi một hợp đồng gửi giao dịch nội bộ đến hợp đồng khác, đoạn mã gắn với tài khoản hợp đồng nhận sẽ được thực thi.
Một điều quan trọng cần lưu ý là giao dịch nội bộ hoặc thông điệp không có gasLimit. Bởi giới hạn gas do bên khởi tạo giao dịch bên ngoài ban đầu quyết định (tức tài khoản bên ngoài). Gas limit do tài khoản bên ngoài đặt phải đủ cao để hoàn tất giao dịch, bao gồm mọi “lần thực thi con” phát sinh từ giao dịch này, chẳng hạn như thông điệp giữa các hợp đồng.
Khi Ethereum xác lập lộ trình mở rộng quy mô “lấy Rollup (mạng lớp 2) làm trọng tâm”, các Layer 2 cần đăng lượng lớn dữ liệu lên mạng chính để bảo đảm an toàn. Trước đây, dữ liệu này chỉ có thể được nhồi vào các giao dịch thông thường đắt đỏ (chiếm dụng calldata).
Bản nâng cấp Cancun vào tháng 3 năm 2024 giới thiệu loại giao dịch hoàn toàn mới—giao dịch Blob (Type 3 Transaction). Blob (Binary Large Object) là vùng lưu trữ tạm thời được thiết kế riêng để chứa lượng dữ liệu lớn. Đặc điểm cốt lõi của Blob là dữ liệu chỉ được lưu trên chuỗi trong khoảng 18 ngày, sau đó các nút sẽ tự động loại bỏ, không làm tăng gánh nặng trạng thái Ethereum một cách lâu dài. Đổi mới này giúp giảm hơn 90% phí giao dịch của Layer 2, đánh dấu việc Ethereum chính thức bước vào kỷ nguyên ứng dụng chi phí thấp.
Bản nâng cấp Fusaka vào tháng 12 năm 2025 tiếp tục giới thiệu PeerDAS (lấy mẫu tính khả dụng dữ liệu ngang hàng), giúp tăng dung lượng dữ liệu Blob thêm khoảng một bậc độ lớn và giảm sâu hơn nữa chi phí cho Layer 2.
6 Máy ảo Ethereum
Bản thân giao thức Ethereum chỉ tồn tại nhằm duy trì hoạt động liên tục, không gián đoạn và bất biến của cỗ máy trạng thái đặc biệt này.
Máy ảo Ethereum là môi trường mà mọi tài khoản và hợp đồng thông minh Ethereum phụ thuộc vào. Tại bất kỳ khối nào trên chuỗi, Ethereum chỉ có duy nhất một trạng thái “chuẩn”; Máy ảo Ethereum xác định các quy tắc tính toán trạng thái hợp lệ mới từ khối này sang khối khác.
Người ta thường dùng phép so sánh với “sổ cái phân tán” để mô tả các chuỗi khối như Bitcoin. Ethereum cũng có tiền mã hóa gốc riêng (ETH), tuân theo các quy tắc gần như tương tự, nhưng đồng thời hỗ trợ một tính năng mạnh mẽ hơn—hợp đồng thông minh. Vì vậy, Ethereum không chỉ là một sổ cái phân tán; nói chính xác hơn, đó là một máy trạng thái phân tán.
Trạng thái Ethereum là một cấu trúc dữ liệu khổng lồ có tên cây MPT. Cấu trúc này không chỉ lưu mọi tài khoản và số dư mà còn lưu trạng thái của máy. Trạng thái có thể thay đổi giữa các khối theo một bộ quy tắc được xác định trước và thực thi mã máy tùy ý. Các quy tắc cụ thể để thay đổi trạng thái trong khối do EVM xác định.
EVM hoạt động như một máy ngăn xếp với độ sâu ngăn xếp là 1.024 mục; mỗi mục là một từ 256 bit. Độ rộng 256 bit được chọn để thuận tiện cho các phép toán mật mã.
EVM có bộ nhớ, trong đó các mục được lưu dưới dạng mảng byte định địa chỉ theo từ (word-addressed byte arrays). Bộ nhớ là dạng khả biến và không được duy trì giữa các giao dịch.
EVM còn có vùng lưu trữ. Khác với bộ nhớ, vùng lưu trữ là dạng bất biến và được duy trì như một phần của trạng thái hệ thống. EVM lưu riêng mã chương trình trong một ROM ảo, chỉ có thể truy cập ROM ảo bằng các chỉ thị đặc biệt. Đây là điểm khác biệt giữa EVM và kiến trúc Von Neumann điển hình, trong đó mã chương trình nằm trong bộ nhớ hoặc vùng lưu trữ.
EVM cũng có ngôn ngữ riêng—bytecode EVM. Khi lập trình viên viết hợp đồng thông minh trên Ethereum, họ thường dùng ngôn ngữ bậc cao như Solidity. Sau đó, mã có thể được biên dịch thành bytecode EVM để EVM hiểu và thực thi.
Bytecode hợp đồng thông minh đã biên dịch được thực thi dưới dạng nhiều opcode EVM, thực hiện các thao tác ngăn xếp tiêu chuẩn như XOR, AND, ADD, SUB, v.v. EVM cũng hỗ trợ một số thao tác ngăn xếp dành riêng cho chuỗi khối như ADDRESS, BALANCE, BLOCKHASH, v.v.
Mặc dù EVM cực kỳ thành công, định dạng bytecode nền tảng hầu như chưa được tối ưu hóa về cấu trúc kể từ khi ra đời, khiến việc phân tích mã kém hiệu quả và dễ phát sinh lỗ hổng. Các nhà phát triển Ethereum đang thúc đẩy bản nâng cấp EOF (EVM Object Format): đưa vào hợp đồng thông minh một cấu trúc “vùng chứa” rõ ràng, tách riêng các đoạn mã, đoạn dữ liệu và thông tin kiểu. Điều này không chỉ giảm Gas cần thiết để triển khai hợp đồng mà còn loại bỏ tận gốc một số loại lỗ hổng nhảy, giúp việc kiểm toán an toàn hơn. Tuy nhiên, do phạm vi ảnh hưởng rộng, EOF từng được lên kế hoạch ra mắt cùng bản nâng cấp Fusaka vào cuối năm 2025, nhưng cuối cùng đã bị loại khỏi kế hoạch do rủi ro về tiến độ. Tính đến năm 2026, EOF vẫn chưa được triển khai trong bất kỳ hard fork nào.
Ngoài ra, dù Solidity vẫn là ngôn ngữ chủ đạo, hệ sinh thái EVM đang ngày càng đa dạng. Ngôn ngữ Vyper chú trọng tính an toàn và các hướng nghiên cứu sử dụng kiến trúc RISC-V để chạy mã Rust/C++ đã biên dịch đều không ngừng mở rộng giới hạn của Máy ảo Ethereum.
Theo dõi tôi để không bỏ lỡ bài đọc nhanh thị trường tiếp theo.