Ethereum (ETH) là một nền tảng điện toán có tính chất phân tán, công cộng, mã nguồn mở dựa trên công nghệ Blockchain. Nó có tính năng hợp đồng thông minh (kịch bản), tạo thuận lợi cho các thỏa thuận hợp đồng trực tuyến. Nền tảng này bao gồm một máy ảo hoàn toàn Turing - Ethereum Virtual Machine (EVM), có thể thực thi các kịch bản bằng cách sử dụng một mạng lưới máy tính Ethereum. Ethereum cũng cung cấp một loại tiền mã hóa gọi là "Ether", có thể được chuyển giữa các tài khoản và được sử dụng để trả công cho các thợ đào giúp thực hiện việc tính toán. "Gas" là một cơ chế giá giao dịch nội bộ, được sử dụng để giảm thiểu giao dịch rác (spam) và phân bổ các nguồn lực trên mạng lưới. Ethereum đã được đề xuất vào cuối năm 2013 bởi Vitalik Buterin, một nhà nghiên cứu tiền mã hóa và nhà lập trình. Việc phát triển Ethereum ban đầu được tài trợ qua hình thức crowd funding (tài trợ đám đông) suốt tháng 7 và tháng 8 năm 2014. Hệ thống này đã được khởi động vào ngày 30 tháng 7 năm 2015, với 11,9 triệu đồng ether đã được đào sẵn (premined) để bán lại cho những người đã tài trợ. Số tiền này chiếm khoảng 13% tổng số ether được lưu hành. Năm 2016, Ethereum bị chia rẽ thành hai blockchain, do sự sụp đổ của dự án DAO (Decentralized autonomous organization). Hai chuỗi có số lượng người sử dụng khác nhau, và nhánh thiểu số được đổi tên thành Ethereum Classic. Nhánh đa số giữ nguyên tên Ethereum. Ethereum ban đầu được mô tả trong một văn bản của Vitalik Buterin, một lập trình viên liên quan đến Bitcoin vào cuối năm 2013 với mục tiêu xây dựng các ứng dụng phân quyền. Buterin đã lập luận rằng Bitcoin cần một ngôn ngữ kịch bản để phát triển ứng dụng. Không đạt được thỏa thuận với nhóm phát triển Bitcoin, ông đề xuất phát triển một nền tảng mới với một ngôn ngữ kịch bản tổng quát hơn. Bốn thành viên ban đầu của nhóm Ethereum là Vitalik Buterin, Mihai Alisie, Anthony Di Iorio và Charles Hoskinson. Phát triển chính thức của dự án phần mềm Ethereum bắt đầu vào đầu năm 2014 thông qua một công ty Thụy Sĩ tên là Ethereum Switzerland GmbH (EthSuisse). Sau đó, một tổ chức phi lợi nhuận tại Thụy Sĩ với tên gọi là Ethereum Foundation cũng được thành lập. Việc phát triển Ethereum được tài trợ bởi đám đông trực tuyến trong suốt tháng 7 và tháng 8 năm 2014, với những người tham gia mua Ethereum bằng các loại tiền kỹ thuật số khác như bitcoin. Mặc dù đã có những lời khen ngợi đầu tiên về những đổi mới kỹ thuật của Ethereum, nhưng cũng có các ngờ vực về tính an toàn và khả năng mở rộng của nó. Về nguồn gốc, Bitcoin được tạo ra như một loại tiền tệ và để lưu trữ giá trị. Còn Ethereum được tạo ra như một nền tảng giao dịch hợp đồng thông minh phân tán. Lưu ý rằng Bitcoin cũng có thể xử lý được hợp đồng thông minh, và Ethereum cũng có thể được sử dụng như một loại tiền tệ. Ngoài ra, giữa Bitcoin và Ethereum còn có những điểm khác biệt cơ bản sau: Tiền mã hóa được giao dịch trong mạng lưới Ethereum được gọi là ether. Nó được liệt kê dưới mã ETH và giao dịch trên các sàn giao dịch tiền mã hóa. Nó cũng được sử dụng để trả phí giao dịch và dịch vụ tính toán trên mạng Ethereum. Giá trị của ether có thể biến động lớn, ví dụ như sự sụt giảm của ether từ 21,50 đô la Mỹ xuống còn 8 đô la Mỹ sau khi The DAO bị tấn công vào ngày 17 tháng 6 năm 2016. Máy ảo Ethereum (EVM) là một môi trường chạy các hợp đồng thông minh Ethereum. Định nghĩa chính thức của EVM được quy định trong Ethereum Yellow Paper của Gavin Wood. Nó được hoàn toàn cô lập từ mạng, hệ thống tập tin và các quá trình khác của hệ thống máy chủ. Mỗi nút Ethereum trong mạng chạy một EVM và thực hiện các hướng dẫn giống nhau. Ethereum Virtual Machines đã được lập trình trong C++, Go, Haskell, Java, Python, Ruby, Rust và WebAssembly (hiện đang được phát triển). Bình thường, khi ký một hợp đồng để trao đổi giá trị kinh tế, chúng ta cần một bên thứ 3 có trách nhiệm hòa giải (ví dụ: Nhà môi giới, Tòa án, Sở đất đai...) Hợp đồng thông minh là một cơ chế trao đổi xác định, được kiểm soát bởi các phương tiện kỹ thuật số mà có thể giúp cho việc thực hiện giao dịch trực tiếp giữa các thực thể mà không cần tin cậy nhau. Các hợp đồng này được định nghĩa bằng cách lập trình và được chạy chính xác như mong muốn mà không bị kiểm duyệt, lừa đảo hay sự can thiệp từ bên thứ ba trung gian. Chúng có thể được sử dụng để tạo điều kiện, xác minh và thực thi việc đàm phán hoặc thực hiện các hướng dẫn thủ tục kinh tế và có khả năng tránh được sự kiểm duyệt, thông đồng và rủi ro từ phía đối tác. Trong Ethereum, các hợp đồng thông minh được coi là các kịch bản tự trị hoặc các ứng dụng phân cấp được lưu trữ trong chuỗi khối Ethereum để thực hiện sau đó bởi EVM. Các hướng dẫn được nhúng trong các hợp đồng Ethereum được thanh toán bằng ether và có thể được thực hiện bằng nhiều ngôn ngữ Turing-complete khác nhau. Mỗi tài khoản Ethereum được đại diện bởi 20 ký tự. Các thông số sau được lưu trong dữ liệu trạng thái (state) của Ethereum cho mỗi tài khoản: Các giao dịch giữa các tài khoản được trả tiền bằng Ether. Có hai loại tài khoản: Tài khoản ngoại vi được quản lý bởi khóa riêng tư, và tài khoản hợp đồng được quản lý bởi mã hợp đồng. Tài khoản ngoại vi không chứa mã hợp đồng, có thể gửi thông điệp đi bằng cách tạo và ký kết một giao dịch, giống như tài khoản Bitcoin. Về phía tài khoản hợp đồng, mỗi khi nó nhận được 1 thông điệp, mã hợp đồng sẽ chạy và cho phép đọc và ghi vào phần lưu trữ của nó, kèm theo việc gửi thông điệp đi và tạo ra hợp đồng khác lần lượt. Lưu ý rằng "hợp đồng" trong Ethereum không phải là một cái gì đó phải "hoàn thành" hoặc "tuân thủ". Thay vào đó, nó giống như các "thực thể tự trị" sống bên trong môi trường Ethereum, luôn thực hiện một đoạn mã cụ thể khi được tác động bởi một thông điệp hoặc giao dịch, và có quyền kiểm soát trực số Ether và dữ liệu trong phần lưu trữ của nó. Thuật ngữ "giao dịch" được sử dụng để chỉ tới gói dữ liệu mà bao gồm thông điệp. Một giao dịch bao gồm: Ba trường dữ liệu đầu tiên là các trường tiêu chuẩn ​​trong các loại tiền mã hóa. Trường dữ liệu không có chức năng theo mặc định, nhưng EVM có mã opcode mà hợp đồng có thể truy cập vào dữ liệu. Ví dụ: Nếu một hợp đồng đang hoạt động như là một dịch vụ đăng ký tên miền trên blockchain, thì nó có thể nhận dữ liệu được truyền cho nó như là có chứa hai trường: Trường đầu tiên là tên miền đăng ký, trường thứ hai là địa chỉ IP để đăng ký với tên miền đó. Hợp đồng sẽ đọc các giá trị này từ dữ liệu thông điệp và đưa chúng vào lưu trữ một cách hợp lý. Các trường codice_1 và codice_2 rất quan trọng để chống tấn công từ chối dịch vụ. Để ngăn chặn các vòng vô hạn hoặc các lãng phí điện toán khác trong mã, mỗi giao dịch được yêu cầu để đặt một giới hạn số bước tính toán của việc thực thi mã nó có thể sử dụng. Đơn vị cơ bản của tính toán là "gas". Thông thường, một bước tính toán tốn 1 gas, nhưng một số mã tốn nhiều tiền hơn vì chúng cần nhiều tính toán hơn, hoặc tăng lượng dữ liệu phải lưu giữ vào dữ liệu state. Ngoài ra, có một khoản phí là 5 gas cho mỗi byte trong dữ liệu giao dịch. Mục đích của hệ thống phí là yêu cầu một kẻ tấn công phải trả một cách tương xứng cho mọi nguồn lực mà họ tiêu thụ, bao gồm tính toán, băng thông và lưu trữ. Một hợp đồng có khả năng gửi "thông điệp" đến các hợp đồng khác. Thông điệp là các đối tượng ảo không bao giờ được serialize và chỉ tồn tại trong môi trường thực thi Ethereum. Một thông điệp chứa: Về cơ bản, một thông điệp giống như một giao dịch, ngoại trừ nó được tạo ra bởi hợp đồng chứ không phải là tài khoản ngoại vi. Một thông điệp được tạo ra khi hợp đồng hiện đang thực thi mà gọi đến mã lệnh CALL, tạo ra và thực hiện một thông điệp. Giống như giao dịch, một thông điệp được gửi tới tài khoản nhận. Do đó, các hợp đồng có thể có mối quan hệ với các hợp đồng khác giống như cách mà các bên tham gia bên ngoài có thể. Blockchain của Ethereum có nhiều điểm tương tự như của Bitcoin, tuy nhiên có một số khác biệt sau: Khối Ethereum chứa một bản sao của cả danh sách giao dịch và trạng thái gần nhất. Bên cạnh đó, số khối và độ khó cũng được lưu trữ trong khối. Thuật toán xác nhận khối cơ bản trong Ethereum như sau: Cách tiếp cận có thể có vẻ không hiệu quả ở cái nhìn đầu tiên, bởi vì nó cần phải lưu trữ toàn bộ trạng thái với mỗi khối, nhưng hiệu quả thực tế là ngang với Bitcoin. Lý do là trạng thái được lưu trữ trong cấu trúc cây, và sau mỗi khối chỉ cần một phần nhỏ của cây phải thay đổi. Do đó, nói chung, giữa hai khối liền kề, phần lớn cây phải giống nhau, và do đó dữ liệu có thể được lưu trữ một lần và được tham chiếu hai lần bằng cách sử dụng các con trỏ (ví dụ: hash các cây con). Một loại cây đặc biệt được gọi là "cây Patricia" được sử dụng để thực hiện việc này, bao gồm sửa đổi khái niệm cây Merkle cho phép chèn và xóa các nút một cách hiệu quả. Ngoài ra, vì tất cả các thông tin trạng thái là một phần của khối cuối cùng nên không cần lưu trữ toàn bộ lịch sử blockchain đối với các nút không có khả năng lưu trữ nhiều.