ethereum2021 - #eth - vietnamese - translatewhitepaper

45
Ethereum Whitepaper Bài giới thiệu này ban đầu được xuất bản vào năm 2013 bởi Vitalik Buterin, người sáng lập Ethereum, trước khi dự án ra mắt vào năm 2015. Điều đáng chú ý là Ethereum, giống như nhiều dự án phần mềm mã nguồn mở, do cộng đồng phát triển, đã phát triển kể từ khi thành lập ban đầu. . Mặc dù đã được vài năm nhưng chúng tôi vẫn duy trì bài báo này vì nó tiếp tục đóng vai trò là tài liệu tham khảo hữu ích và đại diện chính xác về Ethereum và tầm nhìn của nó. Để tìm hiểu về những phát triển mới nhất của Ethereum và cách thực hiện các thay đổi đối với giao thức, chúng tôi đề xuất hướng dẫn này. Hợp đồng thông minh thế hệ tiếp theo và nền tảng ứng dụng phi tập trung Sự phát triển Bitcoin của Satoshi Nakamoto vào năm 2009 thường được ca ngợi là một sự phát triển triệt để về tiền tệ và tiền tệ, là ví dụ đầu tiên về tài sản kỹ thuật số đồng thời không có sự hỗ trợ hoặc giá trị nội tạivà không có nhà phát hành hoặc kiểm soát tập trung. Tuy nhiên, một phần khác - được cho là quan trọng hơn - một phần của thử nghiệm Bitcoin là công nghệ blockchain cơ bản như một công cụ của sự đồng thuận phân tán và sự chú ý đang nhanh chóng bắt đầu chuyển sang khía cạnh khác này của Bitcoin. Các ứng dụng thay thế thường được trích dẫn của công nghệ blockchain bao gồm sử dụng tài sản kỹ thuật số trên blockchain để đại diện cho các loại tiền tệ và công cụ tài chính tùy chỉnh (đồng tiềnmàu ), quyền sở hữu thiết bị vật lý cơ bản (smart property), tài sản không thể thay thế như tên miền tên (Namecoin), cũng như các ứng dụng phức tạp hơn liên quan đến việc tài sản kỹ thuật số được kiểm soát trực tiếp bởi một đoạn mã thực hiện các quy tắc tùy ý (thông minh hợp đồng) hoặc thậm chí là cácdựa trên blockchaintổ chức tự trị phi tập trung (DAO). Những gì Ethereum dự định cung cấp là một blockchain với ngôn ngữ lập trình hoàn chỉnh đầy đủ được tích hợp sẵn Turing có thể được sử dụng để tạo "hợp đồng" có thể được sử dụng để mã hóa các chức năng chuyển đổi trạng thái tùy ý, cho phép người dùng tạo bất kỳ hệ thống nào được mô tả ở trên , cũng như nhiều thứ khác mà chúng ta chưa hình dung, chỉ đơn giản bằng cách viết ra logic trong một vài dòng mã. Giới thiệu về Bitcoin vàkhái niệm hiện tại Khái

Upload: khangminh22

Post on 16-Jan-2023

1 views

Category:

Documents


0 download

TRANSCRIPT

Ethereum WhitepaperBài giới thiệu này ban đầu được xuất bản vào năm 2013 bởi Vitalik Buterin, người sánglập Ethereum, trước khi dự án ra mắt vào năm 2015. Điều đáng chú ý là Ethereum, giốngnhư nhiều dự án phần mềm mã nguồn mở, do cộng đồng phát triển, đã phát triển kể từ khithành lập ban đầu. .

Mặc dù đã được vài năm nhưng chúng tôi vẫn duy trì bài báo này vì nó tiếp tục đóng vaitrò là tài liệu tham khảo hữu ích và đại diện chính xác về Ethereum và tầm nhìn của nó.Để tìm hiểu về những phát triển mới nhất của Ethereum và cách thực hiện các thay đổiđối với giao thức, chúng tôi đề xuất hướng dẫn này.

Hợp đồng thông minh thế hệ tiếp theo và nền tảng ứngdụng phi tập trung

Sự phát triển Bitcoin của Satoshi Nakamoto vào năm 2009 thường được ca ngợi là một sựphát triển triệt để về tiền tệ và tiền tệ, là ví dụ đầu tiên về tài sản kỹ thuật số đồng thờikhông có sự hỗ trợ hoặc giá trị nội tại↗ và không có nhà phát hành hoặc kiểm soát tậptrung. Tuy nhiên, một phần khác - được cho là quan trọng hơn - một phần của thử nghiệmBitcoin là công nghệ blockchain cơ bản như một công cụ của sự đồng thuận phân tán và sựchú ý đang nhanh chóng bắt đầu chuyển sang khía cạnh khác này của Bitcoin. Các ứngdụng thay thế thường được trích dẫn của công nghệ blockchain bao gồm sử dụng tài sản kỹthuật số trên blockchain để đại diện cho các loại tiền tệ và công cụ tài chính tùy chỉnh (đồngtiềnmàu ), quyền sở hữu thiết bị vật lý cơ bản (smart property↗ ), tài sản không thể thay thếnhư tên miền tên (Namecoin↗ ), cũng như các ứng dụng phức tạp hơn liên quan đến việctài sản kỹ thuật số được kiểm soát trực tiếp bởi một đoạn mã thực hiện các quy tắc tùy ý(thông minh hợp đồng↗) hoặc thậm chí là cácdựa trên blockchain↗ tổ chức tự trị phi tậptrung (DAO). Những gì Ethereum dự định cung cấp là một blockchain với ngôn ngữ lập trìnhhoàn chỉnh đầy đủ được tích hợp sẵn Turing có thể được sử dụng để tạo "hợp đồng" có thểđược sử dụng để mã hóa các chức năng chuyển đổi trạng thái tùy ý, cho phép người dùngtạo bất kỳ hệ thống nào được mô tả ở trên , cũng như nhiều thứ khác mà chúng ta chưahình dung, chỉ đơn giản bằng cách viết ra logic trong một vài dòng mã.

Giới thiệu về Bitcoin vàkhái niệm hiện tại Khái

Lịch sử các

niệm về tiền tệ kỹ thuật số phi tập trung, cũng như các ứng dụng thay thế như đăng ký tàisản, đã xuất hiện trong nhiều thập kỷ. Các giao thức tiền điện tử ẩn danh của những năm1980 và những năm 1990, chủ yếu dựa vào một loại tiền điện tử nguyên thủy được gọi làChaumian blind, cung cấp một loại tiền tệ có mức độ riêng tư cao, nhưng các giao thứcphần lớn không đạt được sức hút vì phụ thuộc vào một trung gian tập trung . Năm 1998,Wei Dai's b-money↗ đã trở thành đề xuất đầu tiên giới thiệu ý tưởng tạo tiền thông qua giảicác câu đố tính toán cũng như sự đồng thuận phi tập trung, nhưng đề xuất này còn rất ít chitiết về cách thức đồng thuận phi tập trung có thể thực sự được thực hiện. Vào năm 2005,Hal Finney đã đưa ra khái niệm vềcủa công việc có thể tái sử pmái nhàdụng↗ , một hệthống sử dụng ý tưởng từ b-money cùng với các câu đố Hashcash khó tính toán của AdamBack để tạo ra một khái niệm cho một loại tiền điện tử, nhưng một lần nữa lại không đạtđược lý tưởng bởi dựa vào máy tính đáng tin cậy làm chương trình phụ trợ. Vào năm 2009,một loại tiền tệ phi tập trung lần đầu tiên được Satoshi Nakamoto triển khai trên thực tế, kếthợp các nguyên tắc ban đầu để quản lý quyền sở hữu thông qua mật mã khóa công khaivới một thuật toán đồng thuận để theo dõi ai sở hữu tiền, được gọi là "bằng chứng côngviệc".

Cơ chế đằng sau bằng chứng công việc là một bước đột phá trong không gian vì nó giảiquyết đồng thời hai vấn đề. Đầu tiên, nó cung cấp một thuật toán đồng thuận đơn giản vàhiệu quả vừa phải, cho phép các nút trong mạng đồng ý chung về một tập hợp các bản cậpnhật chuẩn cho trạng thái của sổ cái Bitcoin. Thứ hai, nó cung cấp một cơ chế cho phép tựdo tham gia vào quá trình đồng thuận, giải quyết vấn đề chính trị trong việc quyết định ai cóthể ảnh hưởng đến sự đồng thuận, đồng thời ngăn chặn các cuộc tấn công tổng hợp. Nóthực hiện điều này bằng cách thay thế một rào cản chính thức đối với sự tham gia, chẳnghạn như yêu cầu đăng ký là một thực thể duy nhất trong một danh sách cụ thể, bằng mộtrào cản kinh tế - trọng lượng của một nút duy nhất trong quy trình bỏ phiếu đồng thuận tỷ lệthuận với khả năng tính toán mà nút mang lại. Kể từ đó, một cách tiếp cận thay thế đã đượcđề xuất được gọi là bằng chứng cổ phần, tính toán trọng lượng của một nút tỷ lệ với việcnắm giữ tiền tệ của nó chứ không phải tài nguyên tính toán; cuộc thảo luận về giá trị tươngđối của hai cách tiếp cận nằm ngoài phạm vi của bài báo này nhưng cần lưu ý rằng cả haicách tiếp cận đều có thể được sử dụng để đóng vai trò là xương sống của tiền điện tử.Đây là một bài đăng trên blog của Vitalik Buterin, người sáng lập Ethereum, trên

Ethereum pre history re . Đây↗ là một bài đăng blog khác có nhiều lịch sử hơn.

Bitcoin

là một hệ thống chuyển đổi trạng thái Từ quan điểm kỹ thuật, sổ cái của tiền điện tử nhưBitcoin có thể được coi là một hệ thống chuyển đổi trạng thái, trong đó có một "trạng thái"bao gồm trạng thái sở hữu của tất cả các bitcoin hiện có và "chuyển đổi trạng thái hàm"nhận một trạng thái và một giao dịch và xuất ra một trạng thái mới là kết quả. Ví dụ: tronghệ thống ngân hàng tiêu chuẩn, trạng thái là bảng cân đối kế toán, giao dịch là yêu cầuchuyển $ X từ A sang B và chức năng chuyển đổi trạng thái làm giảm giá trị trong tài khoảncủa A thêm $ X và tăng giá trị trong tài khoản B. tài khoản của $ X. Nếu tài khoản của A cóít hơn $ X ngay từ đầu, hàm chuyển trạng thái sẽ trả về một lỗi. Do đó, người ta có thểchính thức định nghĩa:

"Trạng thái" trong Bitcoin là tập hợp tất cả các đồng tiền (về mặt kỹ thuật, "đầu ra giaodịch chưa sử dụng" hoặc UTXO) đã được khai thác và chưa được chi tiêu, với mỗi

UTXO có một mệnh giá và một chủ sở hữu (được xác định bởi một địa chỉ 20 byte vềcơ bản là một fn. 1

khóa công khai mật mã). Một giao dịch chứa một hoặc nhiều đầu vào, với mỗi đầu vàochứa tham chiếu đến một UTXO hiện có và chữ ký mật mã được tạo bởi khóa riêng đượcliên kết với địa chỉ của chủ sở hữu và một hoặc nhiều đầu ra, với mỗi đầu ra chứa mộtUTXO mới sẽ được thêm vào nhà nước.

Hàm chuyển đổi trạng thái ÁP DỤNG (S, TX) -> S 'có thể được định nghĩa gần như sau:

1. Đối với mỗi đầu vào trong TX:

Nếu UTXO được tham chiếu không có trong S, hãy trả về một lỗi.

Nếu chữ ký đã cung cấp không khớp với chủ sở hữu của UTXO, hãy trả lại lỗi.

2. Nếu tổng các mệnh giá của tất cả UTXO đầu vào nhỏ hơn tổng các mệnh giácủa tất cả UTXO đầu ra, hãy trả về một lỗi.

3. Trả về S 'với tất cả UTXO đầu vào đã bị loại bỏ và tất cả UTXO đầu ra đã được thêm vào.

Nửa đầu của bước đầu tiên ngăn người gửi giao dịch tiêu tiền không tồn tại, nửa sau củabước đầu tiên ngăn người gửi giao dịch tiêu tiền của người khác và bước thứ hai thực thibảo toàn giá trị. Để sử dụng điều này cho thanh toán, giao thức như sau. Giả sử Alicemuốn gửi 11,7 BTC cho Bob. Đầu tiên, Alice sẽ tìm kiếm một tập hợp UTXO có sẵn mà côấy sở hữu với tổng số lên đến ít nhất 11,7 BTC. Trên thực tế, Alice sẽ không thể nhậnđược chính xác 11,7 BTC; nói rằng số nhỏ nhất mà cô ấy có thể nhận được là 6 + 4 + 2 =12. Sau đó, cô ấy tạo một giao dịch với ba đầu vào và hai đầu ra. Đầu ra đầu tiên sẽ là11,7 BTC với địa chỉ của Bob là chủ sở hữu của nó và đầu ra thứ hai sẽ là 0,3 BTC còn lại"thay đổi", với chủ sở hữu là chính Alice.

Khai thác

Nếu chúng tôi có quyền truy cập vào một dịch vụ tập trung đáng tin cậy, thì hệ thống này sẽrất nhỏ để triển khai; nó chỉ có thể được mã hóa chính xác như mô tả, sử dụng ổ cứng củamáy chủ tập trung để theo dõi trạng thái. Tuy nhiên, với Bitcoin, chúng tôi đang cố gắngxây dựng một hệ thống tiền tệ phi tập trung, vì vậy chúng tôi sẽ cần kết hợp hệ thốngchuyển đổi trạng thái với hệ thống đồng thuận để đảm bảo rằng mọi người đều đồng ý vềthứ tự giao dịch. Quy trình đồng thuận phi tập trung của Bitcoin yêu cầu các nút trongmạng liên tục cố gắng tạo ra các gói giao dịch được gọi là "khối". Mạng dự định tạo rakhoảng một khối cứ sau mười phút, với mỗi khối chứa một dấu thời gian, một nonce, mộttham chiếu đến (tức là. Băm của) khối trước đó và danh sách tất cả các giao dịch đã diễnra kể từ trước đó khối. Theo thời gian, điều này tạo ra một "blockchain" bền bỉ, khôngngừng phát triển, cập nhật liên tục để đại diện cho trạng thái mới nhất của sổ cái Bitcoin.

Thuật toán để kiểm tra xem một khối có hợp lệ hay không, được thể hiện trong mô hình

này, như sau: 1. Kiểm tra xem khối trước đó được khối tham chiếu có tồn tại và hợp lệ

hay không.

fn. 22. Kiểm tra xem dấu thời gian của khối lớn hơn dấu thời gian của khối trước đó và

ít hơn 2 giờ trong tương lai

3. Kiểm tra xem bằng chứng công việc trên khối có hợp lệ không.

4. Cho S [0] là trạng thái ở cuối khối trước đó.

5. Giả sử TX là danh sách giao dịch của khối với n giao dịch. Đối với tất cả các i trong 0 ...n-1, hãy đặt S [i + 1] = ÁP DỤNG (S [i], TX [i]) Nếu bất kỳ ứng dụng nào trả về lỗi, hãythoát và trả về false.

6. Trả về true, và đăng ký S [n] là trạng thái ở cuối khối này.Về cơ bản, mỗi giao dịch trong khối phải cung cấp một chuyển đổi trạng thái hợp lệ từ trạngthái chuẩn trước khi giao dịch được thực hiện sang một số trạng thái mới. Lưu ý rằng trạngthái không được mã hóa trong khối theo bất kỳ cách nào; nó hoàn toàn là một phần trừutượng cần được ghi nhớ bởi nút xác thực và chỉ có thể được tính (an toàn) cho bất kỳ khốinào bằng cách bắt đầu từ trạng thái gốc và áp dụng tuần tự mọi giao dịch trong mọi khối.Ngoài ra, hãy lưu ý rằng thứ tự mà người khai thác bao gồm các giao dịch trong khối quantrọng; nếu có hai giao dịch A và B trong một khối sao cho B sử dụng UTXO được tạo bởi A,thì khối sẽ hợp lệ nếu A đến trước B nhưng không phải là trường hợp khác.

Một điều kiện hợp lệ có trong danh sách trên mà không có trong các hệ thống khác là yêucầu về "bằng chứng công việc". Điều kiện chính xác là băm SHA256 kép của mọi khối,

được coi là số 256 bit, phải nhỏ hơn mục tiêu được điều chỉnh động, 187

mà tính đến thời điểm viết bài này là khoảng 2. Mục đích của việc này là làm cho việc tạokhối trở nên "khó" về mặt tính toán, do đó ngăn chặn những kẻ tấn công sybil tạo lại toànbộ chuỗi khối có lợi cho chúng. Bởi vì SHA256 được thiết kế để trở thành một hàm giảngẫu nhiên hoàn toàn không thể đoán trước, cách duy nhất để tạo một khối hợp lệ chỉđơn giản là thử và sai, liên tục tăng số nonce và xem liệu băm mới có khớp hay không.

187 69Tại mục tiêu hiện tại là ~ 2, mạng phải thực hiện trung bình ~ 2 lần thử trước khi tìm thấy

khối hợp lệ; nói chung, mục tiêu được mạng hiệu chuẩn lại sau mỗi 2016 khối để trung bìnhmột khối mới được tạo ra bởi một số nút trong mạng cứ sau mười phút. Để bù đắp chonhững người khai thác cho công việc tính toán này, người khai thác của mỗi khối đượcquyền bao gồm một giao dịch mang lại cho chính họ 12,5 BTC. Ngoài ra, nếu bất kỳ giaodịch nào có tổng mệnh giá đầu vào cao hơn so với đầu ra của nó, thì phần chênh lệch cũngsẽ được chuyển cho người khai thác dưới dạng "phí giao dịch". Ngẫu nhiên, đây cũng là cơchế duy nhất mà BTC được phát hành; trạng thái ban đầu không chứa đồng xu nào cả.

Để hiểu rõ hơn về mục đích khai thác, chúng ta hãy xem xét điều gì sẽ xảy ra trongtrường hợp có kẻ tấn công ác ý. Vì mật mã cơ bản của Bitcoin được biết là an toàn, kẻtấn công sẽ nhắm mục tiêu trực tiếp vào một phần của hệ thống Bitcoin không được bảovệ bằng mật mã: thứ tự giao dịch. Chiến lược của kẻ tấn công rất đơn giản:

1. Gửi 100 BTC cho người bán để đổi lấy một số sản phẩm (tốt nhất là hàng hóa kỹ thuậtsố giao hàng nhanh)

2. Chờ sản phẩm được giao

3. Thực hiện một giao dịch khác gửi 100 BTC tương tự cho chính anh ta 4 Cố gắng thuyết

phục mạng lưới rằng giao dịch của anh ta với chính anh ta là giao dịch đến trước.

Khi bước (1) đã diễn ra, sau một vài phút, một số người khai thác sẽ đưa giao dịch vào mộtkhối, chẳng hạn như khối số 270. Sau khoảng một giờ, năm khối nữa sẽ được thêm vàochuỗi sau khối đó, với mỗi khối các khối đó gián tiếp trỏ đến giao dịch và do đó "xác nhận"nó. Tại thời điểm này, người bán sẽ chấp nhận thanh toán như đã hoàn tất và giao sảnphẩm; vì chúng tôi đang giả định đây là hàng hóa kỹ thuật số, nên việc phân phối diễn rangay lập tức. Bây giờ, kẻ tấn công tạo một giao dịch khác gửi 100 BTC cho chính mình.Nếu kẻ tấn công chỉ cần thả nó vào tự nhiên, giao dịch sẽ không được xử lý; các thợ đàosẽ cố gắng chạy APPLICY (S, TX) và nhận thấy rằng TX sử dụng UTXO không còn ở trạngthái. Vì vậy, thay vào đó, kẻ tấn công tạo ra một "fork" của blockchain, bắt đầu bằng cáchkhai thác một phiên bản khác của khối 270 trỏ đến cùng một khối 269 như một khối cha mẹnhưng với giao dịch mới thay cho giao dịch cũ. Bởi vì dữ liệu khối khác nhau, điều này đòihỏi phải làm lại bằng chứng công việc. Hơn nữa, phiên bản mới của kẻ tấn công của khối270 có một hàm băm khác, vì vậy các khối ban đầu từ 271 đến 275 không "trỏ" đến nó; dođó, chuỗi ban đầu và chuỗi mới của kẻ tấn công hoàn toàn tách biệt. Quy tắc là trong mộtfork, chuỗi khối dài nhất được coi là sự thật và vì vậy những người khai thác hợp pháp sẽlàm việc trên chuỗi 275 trong khi chỉ riêng kẻ tấn công đang làm việc trên chuỗi 270. Để kẻ

tấn công tạo ra chuỗi khối của mình lâu nhất, anh ta sẽ cần có nhiều sức mạnh tính toánhơn phần còn lại của mạng cộng lại để bắt kịp (do đó, "tấn công 51%").

Merkle Trees

Left: chỉ cần trình bày một số lượng nhỏ các nút trong cây Merkle để cung cấp bằng chứngvề tính hợp lệ của một nhánh.

Đúng: bất kỳ nỗ lực nào để thay đổi bất kỳ phần nào của cây Merkle cuối cùng sẽdẫn đến sự không nhất quán ở đâu đó trong chuỗi.

Một tính năng quan trọng về khả năng mở rộng của Bitcoin là khối được lưu trữ trong cấutrúc dữ liệu đa cấp. "Hàm băm" của khối thực sự chỉ là hàm băm của tiêu đề khối, một đoạndữ liệu khoảng 200 byte chứa dấu thời gian, nonce, mã băm khối trước đó và hàm băm gốccủa cấu trúc dữ liệu được gọi là cây Merkle lưu trữ tất cả các giao dịch trong khối. CâyMerkle là một loại cây nhị phân, bao gồm một tập hợp các nút với một số lượng lớn các nútlá ở dưới cùng của cây chứa dữ liệu bên dưới, một tập hợp các nút trung gian trong đó mỗinút là băm của hai nút con của nó, và cuối cùng là một nút gốc duy nhất, cũng được hìnhthành từ băm của hai nút con của nó, đại diện cho "đỉnh" của cây. Mục đích của cây Merklelà cho phép dữ liệu trong một khối được phân phối từng phần: một nút chỉ có thể tải xuống

tiêu đề của khối từ một nguồn, phần nhỏ của cây có liên quan đến chúng từ một nguồnkhác và vẫn được đảm bảo rằng tất cả dữ liệu đều đúng. Lý do tại sao điều này hoạt độnglà do hàm băm lan truyền lên trên: nếu một người dùng độc hại cố gắng hoán đổi trong mộtgiao dịch giả mạo vào phần dưới cùng của cây Merkle, thay đổi này sẽ gây ra sự thay đổitrong nút phía trên và sau đó là sự thay đổi trong nút phía trên , cuối cùng thay đổi gốc củacây và do đó là băm của khối, khiến giao thức đăng ký nó như một khối hoàn toàn khác(gần như chắc chắn với bằng chứng công việc không hợp lệ).

Giao thức cây Merkle được cho là rất cần thiết cho sự bền vững lâu dài. Một "nút đầy đủ"trong mạng Bitcoin, một nút lưu trữ và xử lý toàn bộ mọi khối, chiếm khoảng 15 GB dunglượng đĩa trong mạng Bitcoin tính đến tháng 4 năm 2014 và đang tăng hơn một gigabytemỗi tháng. Hiện tại, điều này khả thi đối với một số máy tính để bàn chứ không phải điệnthoại, và sau này trong tương lai chỉ các doanh nghiệp và những người có sở thích mới cóthể tham gia. Một giao thức được gọi là "xác minh thanh toán đơn giản hóa" (SPV) chophép tồn tại một lớp nút khác, được gọi là "nút sáng", tải xuống tiêu đề khối, xác minh bằngchứng công việc trên tiêu đề khối và sau đó chỉ tải xuống "nhánh "liên quan đến các giaodịch có liên quan đến chúng. Điều này cho phép các nút nhẹ xác định với sự đảm bảo antoàn mạnh mẽ về trạng thái của bất kỳ giao dịch Bitcoin nào và số dư hiện tại của chúngtrong khi chỉ tải xuống một phần rất nhỏ của toàn bộ chuỗi khối.

Các ứng dụng Blockchain thay thế

Ý tưởng lấy ý tưởng blockchain cơ bản và áp dụng nó vào các khái niệm khác cũng có lịchsử lâu đời. Năm 1998, Nick Szabo ra với các khái niệm về an toàn propdanh hiệu erty vớiquyền hạn của chủ sở hữu↗ , một tài liệu mô tả cách "những tiến bộ mới trong công nghệcơ sở dữ liệu được nhân rộng" sẽ cho phép một hệ thống dựa trên blockchain lưu trữ sổđăng ký ai sở hữu mảnh đất nào, tạo ra một khuôn khổ phức tạp bao gồm các khái niệmnhư nhà ở, sở hữu bất lợi và đất của Gruzia Thuế. Tuy nhiên, rất tiếc là không có hệ thốngcơ sở dữ liệu nhân bản hiệu quả nào có sẵn tại thời điểm đó, và do đó, giao thức này khôngbao giờ được triển khai trong thực tế. Tuy nhiên, sau năm 2009, khi sự đồng thuận phi tậptrung của Bitcoin được phát triển, một số ứng dụng thay thế nhanh chóng bắt đầu xuất hiện.

Namecoin - được tạo vào năm 2010, Namecoin↗ được mô tả tốt nhất như một cơ sở dữliệu đăng ký tên phân quyền. Trong các giao thức phi tập trung như Tor, Bitcoin vàBitMessage, cần phải có một số cách xác định tài khoản để người khác có thể tương tác

với chúng, nhưng trong tất cả các giải pháp hiện có, loại mã nhận dạng duy nhất có sẵnlà băm ngẫu nhiên giả như 1LW79wp5ZBqaHW1jL5TCiBCrhQYtHagUWy. Lý tưởng nhấtlà một người muốn có một tài khoản với tên như "george". Tuy nhiên, vấn đề là nếu mộtngười có thể tạo tài khoản có tên "george" thì người khác cũng có thể sử dụngtương tựquy trìnhđể đăng ký "george" cho chính họ và mạo danh họ. Giải pháp duy nhất là môhình đầu tiên đến tệp, trong đó người đăng ký đầu tiên thành công và người thứ haikhông thành công - một vấn đề hoàn toàn phù hợp với giao thức đồng thuận Bitcoin.Namecoin là lâu đời nhất và thành công nhất, triển khai hệ thống đăng ký tên bằngcách sử dụng ý tưởng như vậy.

Đồng tiền màu - mục đích của đồng tiền màu↗ là để phục vụ như một giao thức chophép mọi người tạo tiền tệ kỹ thuật số của riêng họ - hoặc, trong trường hợp quan trọnglà một loại tiền tệ có một đơn vị, mã thông báo kỹ thuật số, trên chuỗi khối Bitcoin. Tronggiao thức tiền xu có màu, người ta "phát hành" một loại tiền mới bằng cách chỉ địnhcông khai màu cho một UTXO Bitcoin cụ thể và giao thức xác định một cách đệ quy màucủa UTXO khác giống với màu của đầu vào mà giao dịch tạo ra chúng đã sử dụng (mộtsố quy tắc đặc biệt áp dụng trong trường hợp đầu vào có nhiều màu sắc hỗn hợp). Điềunày cho phép người dùng duy trì ví chỉ chứa UTXO có màu cụ thể và gửi chúng đi xungquanh giống như bitcoin thông thường, kiểm tra lại thông qua blockchain để xác địnhmàu của bất kỳ UTXO nào mà họ nhận được.

Metacoin - ý tưởng đằng sau một metacoin là có một giao thức sống trên Bitcoin, sửdụng các giao dịch Bitcoin để lưu trữ các giao dịch metacoin nhưng có chức năngchuyển đổi trạng thái khác, ÁP DỤNG '. Bởi vì giao thức metacoin không thể ngăn cácgiao dịch metacoin không hợp lệ xuất hiện trong chuỗi khối Bitcoin, một quy tắc đượcthêm vào rằng nếu APPLICY '(S, TX) trả về lỗi, giao thức sẽ mặc định là APPLICY' (S,TX) = S. Điều này cung cấp một cơ chế dễ dàng để tạo một giao thức tiền điện tử tùy ý,có khả năng có các tính năng nâng cao không thể thực hiện bên trong chính Bitcoin,nhưng với chi phí phát triển rất thấp vì sự phức tạp của khai thác và mạng đã được xửlý bởi giao thức Bitcoin. Metacoin đã được sử dụng để thực hiện một số loại hợp đồngtài chính, đăng ký tên và trao đổi phi tập trung.

Do đó, nói chung, có hai cách tiếp cận để xây dựng một giao thức đồng thuận: xây dựngmột mạng lưới độc lập và xây dựng một giao thức dựa trên Bitcoin. Cách tiếp cận trướcđây, trong khi thành công một cách hợp lý trong trường hợp các ứng dụng như Namecoin,rất khó thực hiện; mỗi triển khai riêng lẻ cần khởi động một chuỗi khối độc lập, cũng nhưxây dựng và thử nghiệm tất cả mã mạng và chuyển đổi trạng thái cần thiết. Ngoài ra, chúng

tôi dự đoán rằng tập hợp các ứng dụng cho công nghệ đồng thuận phi tập trung sẽ tuântheo quy luật phân bổ quyền lực trong đó phần lớn các ứng dụng sẽ quá nhỏ để đảm bảoblockchain của riêng chúng và chúng tôi lưu ý rằng tồn tại nhiều lớp ứng dụng phi tập trung,đặc biệt là phân quyền tự trị các tổ chức cần tương tác với nhau.Mặt khác, cách tiếp cận dựa trên Bitcoin có một lỗ hổng là nó không kế thừa các tính năngxác minh thanh toán đơn giản của Bitcoin. SPV hoạt động cho Bitcoin vì nó có thể sử dụngchiều sâu blockchain làm đại diện cho tính hợp lệ; tại một số điểm, một khi tổ tiên của mộtgiao dịch quay trở lại đủ xa, có thể an toàn để nói rằng chúng là một phần hợp pháp củanhà nước. Mặt khác, các giao thức meta dựa trên chuỗi khối không thể buộc blockchainkhông bao gồm các giao dịch không hợp lệ trong bối cảnh của các giao thức riêng củachúng. Do đó, việc triển khai siêu giao thức SPV hoàn toàn an toàn sẽ cần phải quétngược tất cả các cách từ đầu của chuỗi khối Bitcoin để xác định xem liệu các giao dịchnhất định có hợp lệ hay không. Hiện tại, tất cả các triển khai "nhẹ" của các giao thức metadựa trên Bitcoin đều dựa vào một máy chủ đáng tin cậy để cung cấp dữ liệu, được cho làmột kết quả không tối ưu cao, đặc biệt khi một trong những mục đích chính của tiền điện tửlà loại bỏ nhu cầu tin cậy.

Viết kịch bản

Ngay cả khi không có bất kỳ phần mở rộng nào, giao thức Bitcoin thực sự tạo điều kiện chomột phiên bản yếu của khái niệm "hợp đồng thông minh". UTXO trong Bitcoin có thể đượcsở hữu không chỉ bởi một khóa công khai mà còn bởi một tập lệnh phức tạp hơn được thểhiện bằng một ngôn ngữ lập trình dựa trên ngăn xếp đơn giản. Trong mô hình này, chi tiêugiao dịch mà UTXO phải cung cấp dữ liệu đáp ứng tập lệnh. Thật vậy, ngay cả cơ chế sởhữu khóa công khai cơ bản cũng được triển khai thông qua một tập lệnh: tập lệnh lấy chữký đường cong elip làm đầu vào, xác minh nó dựa trên giao dịch và địa chỉ sở hữu UTXO,và trả về 1 nếu xác minh thành công và 0 nếu không. Các tập lệnh khác, phức tạp hơn, tồntại cho nhiều trường hợp sử dụng bổ sung khác nhau. Ví dụ: người ta có thể xây dựng mộttập lệnh yêu cầu chữ ký từ hai trong số ba khóa cá nhân nhất định để xác thực ("multisig"),một thiết lập hữu ích cho tài khoản công ty, tài khoản tiết kiệm an toàn và một số tình huốngký quỹ của người bán. Các tập lệnh cũng có thể được sử dụng để trả tiền thưởng cho cácgiải pháp cho các vấn đề tính toán và thậm chí người ta có thể xây dựng một tập lệnh cónội dung như "Bitcoin UTXO này là của bạn nếu bạn có thể cung cấp bằng chứng SPV rằngbạn đã gửi giao dịch Dogecoin có mệnh giá này cho tôi" , về cơ bản cho phép trao đổi tiềnđiện tử chéo phi tập trung.

Tuy nhiên, ngôn ngữ kịch bản được triển khai trong Bitcoin có một số hạn chếquan trọng:

Thiếu tính hoàn chỉnh của Turing - có nghĩa là, trong khi có một tập hợp con lớn cáctính toán mà ngôn ngữ kịch bản Bitcoin hỗ trợ, nó gần như không hỗ trợ mọi thứ. Danhmục chính bị thiếu là vòng lặp. Điều này được thực hiện để tránh vòng lặp vô hạn trongquá trình xác minh giao dịch; về mặt lý thuyết, nó là một trở ngại lớn đối với các lập trìnhviên script, vì bất kỳ vòng lặp nào cũng có thể được mô phỏng bằng cách lặp lại mã cơbản nhiều lần với một câu lệnh if, nhưng nó dẫn đến các script rất không hiệu quả vềkhông gian. Ví dụ, việc triển khai một thuật toán chữ ký đường cong elliptic thay thế cóthể sẽ yêu cầu 256 vòng nhân lặp lại tất cả được bao gồm riêng lẻ trong mã.

Mù giá trị - không có cách nào để tập lệnh UTXO cung cấp khả năng kiểm soát chi tiếtđối với số tiền có thể được rút. Ví dụ: một trường hợp sử dụng mạnh mẽ của hợp đồngtiên tri sẽ là hợp đồng bảo hiểm rủi ro, trong đó A và B đặt BTC trị giá $ 1000 và sau 30ngày, kịch bản sẽ gửi BTC trị giá $ 1000 cho A và phần còn lại cho B. Điều này sẽ yêu

cầu oracle để xác định giá trị của 1 BTC bằng USD, nhưng ngay cả khi đó thì đó cũng làmột sự cải tiến lớn về độ tin cậy và yêu cầu cơ sở hạ tầng so với các giải pháp tập trunghoàn toàn hiện có. Tuy nhiên, bởi vì UTXO là tất cả hoặc không có gì, cách duy nhất để

đạt được điều này là thông qua việc hack rất kém hiệu quả là có nhiều k

UTXO với các mệnh giá khác nhau (ví dụ: một UTXO của 2 cho mỗi k lên đến 30) và cóO chọn UTXO nào để gửi đến A và gửi đến B.

Thiếu trạng thái - UTXO có thể là spent hoặc unspent↗ ; không có cơ hội cho các hợpđồng hoặc kịch bản nhiều giai đoạn giữ cho bất kỳ trạng thái nội bộ nào khác ngoàitrạng thái đó. Điều này gây khó khăn cho việc thực hiện các hợp đồng quyền chọnnhiều giai đoạn, đề nghị trao đổi phi tập trung hoặc các giao thức cam kết mật mã haigiai đoạn (cần thiết cho tiền thưởng tính toán an toàn). Điều đó cũng có nghĩa là UTXOchỉ có thể được sử dụng để xây dựng các hợp đồng đơn giản, một lần và không phứctạp hơn các hợp đồng "trạng thái" như các tổ chức phi tập trung và làm cho các giaothức meta khó thực hiện. Trạng thái nhị phân kết hợp với mù giá trị cũng có nghĩa làmột ứng dụng quan trọng khác, giới hạn rút tiền, là không thể.

Sự mù quáng của chuỗi khối - UTXO mù với dữ liệu chuỗi khối như nonce, dấu thờigian và mã băm khối trước đó. Điều này hạn chế nghiêm trọng các ứng dụng trong cờbạc và một số danh mục khác, bằng cách tước bỏ ngôn ngữ kịch bản thành một nguồnngẫu nhiên có giá trị tiềm năng.

Do đó, chúng ta thấy ba cách tiếp cận để xây dựng các ứng dụng tiên tiến trên nền tảng tiềnđiện tử: xây dựng một chuỗi khối mới, sử dụng tập lệnh trên Bitcoin và xây dựng một giaothức meta trên Bitcoin. Việc xây dựng một chuỗi khối mới cho phép tự do không giới hạntrongviệc xây dựng một bộ tính năng, nhưng với chi phí là thời gian phát triển, nỗ lực khởiđộng và bảo mật. Sử dụng tập lệnh dễ thực hiện và chuẩn hóa, nhưng rất hạn chế vềkhả năng của nó và các giao thức meta, mặc dù dễ dàng, nhưng lại mắc phải lỗi về khảnăng mở rộng. Với Ethereum, chúng tôi dự định xây dựng một khuôn khổ thay thế manglại lợi ích lớn hơn nữa trong việc dễ dàng phát triển cũng như các thuộc tính ứng dụngkhách nhẹ hơn nữa, đồng thời cho phép các ứng dụng chia sẻ môi trường kinh tế và bảomật chuỗi khối.

Ethereum

Mục đích của Ethereum là tạo ra một giao thức thay thế để xây dựng các ứng dụng phi tậptrung, cung cấp một loạt các cân bằng khác nhau mà chúng tôi tin rằng sẽ rất hữu ích chomột loại lớn các ứng dụng phi tập trung, đặc biệt nhấn mạnh vào các tình huống mà thờigian phát triển nhanh chóng, bảo mật cho quy mô nhỏ và các ứng dụng hiếm khi được sửdụng và khả năng tương tác rất hiệu quả của các ứng dụng khác nhau là rất quan trọng.Ethereum thực hiện điều này bằng cách xây dựng những gì về cơ bản là lớp nền tảng trừutượng cuối cùng: một blockchain với ngôn ngữ lập trình hoàn chỉnh được tích hợp sẵnTuring, cho phép bất kỳ ai viết các hợp đồng thông minh và các ứng dụng phi tập trung, nơihọ có thể tạo các quy tắc tùy ý cho quyền sở hữu, định dạng giao dịch và các chức năngchuyển trạng thái. Một phiên bản cơ bản của Namecoin có thể được viết bằng hai dòng mãvà các giao thức khác như tiền tệ và hệ thống danh tiếng có thể được xây dựng dưới haimươi. Hợp đồng thông minh, "hộp" mật mã có chứa giá trị và chỉ mở khóa nó nếu đáp ứngmột số điều kiện nhất định, cũng có thể được xây dựng trên nền tảng này, với sức mạnhlớn hơn rất nhiều so với khả năng được cung cấp bởi tập lệnh Bitcoin vì sức mạnh bổ sungcủa Turing-completeness, nhận thức về giá trị, nhận thức về blockchain và trạng thái.

Triết lý

Thiết kế đằng sau Ethereum nhằm tuân theo các nguyên tắc sau:

1. Tính đơn giản: giao thức Ethereum phải càng đơn giản càng tốt, ngay cả với cái giáphải trả là fn. 3

một số dữ liệu lưu trữ hoặc thời gian không hiệu quả. Một lập trình viên trung bình lýtưởng nên là fn. 4

có thể theo dõi và triển khai toàn bộ đặc điểm kỹ thuật, để nhận ra đầy đủ tiềm năngdân chủ hóa chưa từng có mà tiền điện tử mang lại và xa hơn tầm nhìn củaEthereum như một giao thức mở cho tất cả mọi người. Không nên đưa vào bất kỳ tốiưu hóa nào làm tăng thêm độ phức tạp trừ khi tối ưu hóa đó mangrất đáng kểlại lợi ích.

2. Tính phổ biến: một phần cơ bản trong triết lý thiết kế của Ethereum là Ethereum fn. 5

không có "tính năng". Thay vào đó, Ethereum cung cấp một ngôn ngữ kịch bản hoànchỉnh bên trong Turing, mà một lập trình viên có thể sử dụng để xây dựng bất kỳ hợpđồng thông minh hoặc loại giao dịch nào có thể được xác định bằng toán học. Bạn muốnphát minh ra phái sinh tài chính của riêng mình? Với Ethereum, bạn có thể. Bạn muốntạo tiền tệ của riêng bạn? Thiết lập nó như một hợp đồng Ethereum. Bạn muốn thiết lậpDaemon hoặc Skynet quy mô đầy đủ? Bạn có thể cần phải có vài nghìn hợp đồng lồngvào nhau và hãy đảm bảo cung cấp cho chúng một cách hào phóng, để làm được điềuđó, nhưng không có gì ngăn cản bạn với Ethereum trong tầm tay của bạn.

3. Tính mô-đun: các phần của giao thức Ethereum nên được thiết kế theo mô-đun và cóthể tách biệt được. Trong quá trình phát triển, mục tiêu của chúng tôi là tạo ra mộtchương trình mà nếu một người thực hiện một sửa đổi giao thức nhỏ ở một nơi, thìngăn xếp ứng dụng sẽ tiếp tục hoạt động mà không cần sửa đổi gì thêm. Thành tựu nhưEthash (xem Vàng Paper Mộtppendix↗ hoặc wiki article↗ ), các cây Patricia đã sửa đổi(Yellow Paper↗ , wiki↗ ) và RLP (YP↗ , wiki↗ ) nên được, và được triển khai dưới dạngcác thư viện riêng biệt, đầy đủ tính năng. Điều này để mặc dù chúng được sử dụngtrong Ethereum, ngay cả khi Ethereum không yêu cầu các tính năng nhất định, các tínhnăng đó vẫn có thể sử dụng được trong các giao thức khác. Việc phát triển Ethereumnên được thực hiện tối đa để mang lại lợi ích cho toàn bộ hệ sinh thái tiền điện tử,không chỉ cho chính nó.

4. Sự nhanh nhẹn: các chi tiết của giao thức Ethereum không được đặt trong đá. Mặc dùchúng tôi sẽ cực kỳ thận trọng khi thực hiện các sửa đổi đối với các cấu trúc cấp cao, vídụ như với đường dẫn sắc nétp↗ , thực thi trừu tượng hóa, chỉ có dữ liệu sẵn có đượclưu giữ trong sự đồng thuận. Các bài kiểm tra tính toán sau này trong quá trình pháttriển có thể khiến chúng tôi phát hiện ra rằng một số sửa đổi nhất định, ví dụ như đối với

kiến trúc giao thức hoặc đối với Máy ảo Ethereum (EVM), sẽ cải thiện đáng kể khả năngmở rộng hoặc bảo mật. Nếu tìm thấy bất kỳ cơ hội nào như vậy, chúng tôi sẽ khai thácchúng.

5. Không phân biệt đối xử và không kiểm duyệt: giao thức không nên cố gắng tích cựchạn chế hoặc ngăn chặn các danh mục sử dụng cụ thể. Tất cả các cơ chế quản lý tronggiao thức phải được thiết kế để điều chỉnh trực tiếp tác hại và không cố gắng chống lạicác ứng dụng không mong muốn cụ thể. Một lập trình viên thậm chí có thể chạy mộttập lệnh lặp vô hạn trên Ethereum miễn là họ sẵn sàng tiếp tục trả phí giao dịch cho mỗibước tính toán.

Tài khoản EthereumTrong Ethereum, trạng thái được tạo thành từ các đối tượng được gọi là "tài khoản", vớimỗi tài khoản có một địa chỉ 20 byte và các chuyển đổi trạng thái là chuyển trực tiếp giá trịvà thông tin giữa các tài khoản. Một tài khoản Ethereum chứa bốn trường:

The nonce, một bộ đếm được sử dụng để đảm bảo mỗi giao dịch chỉ có thể được xử lý

một lần Số dư ether hiện tại

của tài khoản Mã hợp đồng của tài khoản, nếu có

thì nơi lưu trữ của tài khoản (trống theo mặc định)

"Ether" là nội bộ chính nhiên liệu tiền điện tử của Ethereum và được sử dụng để thanh toánphí giao dịch. Nói chung, có hai loại tài khoản: tài khoản thuộc sở hữu bên ngoài, đượckiểm soát bởi khóa riêng và tài khoản hợp đồng, được kiểm soát bởi mã hợp đồng củachúng. Tài khoản thuộc sở hữu bên ngoài không có mã và người ta có thể gửi tin nhắn từtài khoản thuộc sở hữu bên ngoài bằng cách tạo và ký một giao dịch; trong tài khoản hợpđồng, mỗi khi tài khoản hợp đồng nhận được tin nhắn, mã của nó sẽ kích hoạt, cho phép nóđọc và ghi vào bộ nhớ trong và lần lượt gửi các tin nhắn khác hoặc tạo hợp đồng.

Lưu ý rằng "hợp đồng" trong Ethereum không nên được coi là thứ cần được "hoàn thành"hoặc "tuân thủ"; thay vào đó, chúng giống như "các tác nhân tự trị" sống bên trong môitrường thực thi Ethereum, luôn thực thi một đoạn mã cụ thể khi bị tin nhắn hoặc giao dịch"chọc" và có quyền kiểm soát trực tiếp số dư ether của chính chúng và khóa của riêngchúng / kho giá trị để theo dõi các biến liên tục.

Tin nhắn và Giao dịch

Thuật ngữ "giao dịch" được sử dụng trong Ethereum để chỉ gói dữ liệu đã ký lưu trữ một tinnhắn sẽ được gửi từ một tài khoản thuộc sở hữu bên ngoài. Các giao dịch chứa:

Người nhận thông điệp

Chữ ký xác định người gửi

Số lượng ether cần chuyển từ người gửi đến người nhận

Một trường dữ liệu tùy chọnGiá trị STARTGAS, đại diện cho số bước tính toán tối đa mà việc thực hiện giaodịch được phép nhận

giá trị A GASPRICE , đại diện cho phí mà người gửi trả cho mỗi bước tính toán

Ba đầu tiên là các trường tiêu chuẩn được mong đợi trong bất kỳ loại tiền điện tử nào.Trường dữ liệu không có chức năng theo mặc định, nhưng máy ảo có mã opcode mà hợpđồng có thể sử dụng để truy cập dữ liệu; như một trường hợp sử dụng ví dụ, nếu một hợpđồng đang hoạt động như một dịch vụ đăng ký miền trên blockchain, thì nó có thể diễn giảidữ liệu được chuyển đến nó là có chứa hai "trường", trường đầu tiên là miền để đăng ký vàtrường thứ hai là địa chỉ IP để đăng ký. Hợp đồng sẽ đọc các giá trị này từ dữ liệu tin nhắnvà đặt chúng vào bộ nhớ một cách thích hợp.

Các trường STARTGAS và GASPRICE rất quan trọng đối với mô hình chống từ chối dịchvụ của Ethereum. Để ngăn chặn các vòng lặp vô hạn ngẫu nhiên hoặc thù địch hoặc sựlãng phí tính toán khác trong mã, mỗi giao dịch được yêu cầu đặt giới hạn cho số bướctính toán thực thi mã mà nó có thể sử dụng. Đơn vị tính toán cơ bản là "khí"; thôngthường, một bước tính toán tốn 1 lượng khí, nhưng một số hoạt động tiêu tốn lượng khícao hơn vì chúng đắt hơn về mặt tính toán hoặc tăng lượng dữ liệu phải được lưu trữ nhưmột phần của trạng thái. Ngoài ra còn có một khoản phí là 5 gas cho mỗi byte trong dữ liệugiao dịch. Mục đích của hệ thống tính phí là yêu cầu kẻ tấn công phải trả một cách tươngxứng cho mọi tài nguyên mà chúng sử dụng, bao gồm tính toán, băng thông và lưu trữ; dođó, bất kỳ giao dịch nào dẫn đến mạng tiêu thụ một lượng lớn hơn bất kỳ tài nguyên nàotrong số các tài nguyên này đều phải có phí gas tương ứng với mức tăng.

Tin nhắn Các

hợp đồng có khả năng gửi "tin nhắn" đến các hợp đồng khác. Tin nhắn là các đối tượngảo không bao giờ được tuần tự hóa và chỉ tồn tại trong môi trường thực thi Ethereum. Mộtthông điệp có chứa:

Người gửi thông điệp (ngầm hiểu)

Người nhận thông điệp

Số lượng ether cần chuyển cùng với thông điệpTrường dữ liệu tùy chọn

Giá trị STARTGAS

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 một hợpđồng và không phải là tác nhân bên ngoài. Một thông báo được tạo ra khi một hợp đồnghiện đang thực thi mã thực thi mã opcode CALL, mã này tạo và thực thi một thông báo.Giống như một giao dịch, một tin nhắn dẫn đến tài khoản người nhận chạy mã của nó. Nhưvậy, hợp đồng có thể có mối quan hệ với các hợp đồng khác theo đúng cách mà các chủthể bên ngoài có thể thực hiện.

Lưu ý rằng lượng khí đốt được chỉ định bởi một giao dịch hoặc hợp đồng áp dụng cho tổnglượng khí đốt được tiêu thụ bởi giao dịch đó và tất cả các lần thực hiện phụ. Ví dụ: nếu mộttác nhân bên ngoài A gửi một giao dịch cho B với 1000 khí, và B tiêu thụ 600 khí trước khigửi tin nhắn đến C, và việc thực hiện bên trong của C tiêu thụ 300 khí trước khi quay trởlại, thì B có thể tiêu thêm 100 khí trước khi chạy. hết xăng.

Chức năng

chuyển đổi trạng thái Ethereum Chức năng chuyển đổi trạng thái Ethereum, APPLICY (S, TX) -> S 'cóthể được định nghĩa như sau:

1. Kiểm tra xem giao dịch có được hình thành tốt hay không (nghĩa là có đúng sốlượng giá trị), chữ ký là hợp lệ và nonce khớp với nonce trong tài khoản của ngườigửi. Nếu không, hãy trả về một lỗi.

2. Tính phí giao dịch dưới dạng STARTGAS * GASPRICE và xác định địa chỉ gửi từ chữký. Trừ khoản phí từ số dư tài khoản của người gửi và tăng số dư của người gửi. Nếu

không có đủ số dư để chi tiêu, hãy trả lại lỗi.

3. Khởi tạo GAS = STARTGAS và lấy ra một lượng khí nhất định trên mỗi byte để trả chocác byte trong giao dịch.

4. Chuyển giá trị giao dịch từ tài khoản của người gửi sang tài khoản nhận. Nếu tài khoảnnhận chưa tồn tại, hãy tạo nó. Nếu tài khoản nhận là một hợp đồng, hãy chạy mã củahợp đồng cho đến khi hoàn thành hoặc cho đến khi quá trình thực hiện hết xăng.

5. Nếu việc chuyển giá trị không thành công do người gửi không có đủ tiền hoặc quá trìnhthực thi mã hết xăng, hãy hoàn nguyên tất cả các thay đổi trạng thái ngoại trừ việcthanh toán phí và thêm phí vào tài khoản của người khai thác.

6. Nếu không, hãy hoàn lại phí cho tất cả khí còn lại cho người gửi và gửi phí đã trả chokhí đã tiêu thụ cho người khai thác.

Ví dụ, giả sử rằng mã của hợp đồng là:

Lưu ý rằng trênthực tế, mã hợp đồng được viết bằng mã EVM cấp thấp; ví dụ này được viết bằng Serpent, một trongnhững ngôn ngữ cấp cao của chúng tôi, để rõ ràng và có thể được biên dịch thành mã EVM. Giả sửrằng bộ nhớ của hợp đồng bắt đầu trống và một giao dịch được gửi với giá trị 10 ether, 2000 gas,0,001 ether gasprice và 64 byte dữ liệu, với byte

fn. 60-31 đại diện cho số 2 và byte 32-63 đại diện cho chuỗi CHARLIE. Quy trình cho chứcnăng chuyển đổi trạng thái trong trường hợp này như sau:

1. Kiểm tra xem giao dịch có hợp lệ và được hình thành tốt hay không.

2. Kiểm tra xem người gửi giao dịch có ít nhất 2000 * 0,001 = 2 ether hay không. Nếuđúng, sau đó trừ 2 ether vào tài khoản của người gửi.

3. Khởi tạo khí = 2000; giả sử giao dịch dài 170 byte và phí byte là 5, hãy trừ đi 850 đểcòn lại 1150 gas.

4. Trừ thêm 10 ether từ tài khoản của người gửi và thêm nó vào tài khoản củahợp đồng.

5. Chạy mã. Trong trường hợp này, điều này rất đơn giản: nó kiểm tra xem bộ lưu trữ củahợp đồng ở chỉ mục 2 có được sử dụng hay không, thông báo rằng nó không được sửdụng, và vì vậy nó đặt bộ lưu trữ ở chỉ mục 2 thành giá trị CHARLIE. Giả sử điều nàymất 187 khí, vì vậy lượng khí còn lại là 1150 - 187 = 963

6. Thêm 963 * 0,001 = 0,963 ete trở lại tài khoản của người gửi và trả về trạng thái kếtquả.

Nếu không có hợp đồng nào vào thời điểm kết thúc giao dịch, thì tổng phí giao dịch sẽđơn giản bằng GASPRICE được cung cấp nhân với thời lượng của giao dịch tính bằngbyte và dữ liệu được gửi cùng với giao dịch sẽ không liên quan.

Lưu ý rằng các thông báo hoạt động tương đương với các giao dịch về mặt hoàn nguyên:nếu một thực thi thông báo hết gas, thì việc thực thi thông báo đó và tất cả các thực thikhác được kích hoạt bởi việc thực thi đó, hoàn nguyên, nhưng các thực thi mẹ không cầnphải hoàn nguyên. Điều này có nghĩa là một hợp đồng gọi một hợp đồng khác là "an toàn",vì nếu A gọi B bằng G khí thì việc thực hiện của A được đảm bảo mất nhiều nhất G khí.

Cuối cùng, hãy lưu ý rằng có một opcode, CREATE, tạo ra một hợp đồng; cơ chế thực thicủa nó nói chung tương tự như CALL, ngoại trừ việc đầu ra của việc thực thi xác định mãcủa một hợp đồng mới được tạo.

Thực thi

mã Mã trong hợp đồng Ethereum được viết bằng ngôn ngữ bytecode cấp thấp, dựa trênngăn xếp, được gọi là "mã máy ảo Ethereum" hoặc "mã EVM". Mã bao gồm một chuỗi cácbyte, trong đó mỗi byte đại diện cho một hoạt động. Nói chung, thực thi mã là một vòng lặpvô hạn bao gồm thực hiện lặp đi lặp lại hoạt động tại bộ đếm chương trình hiện tại (bắt đầutừ 0) và sau đó tăng dần bộ đếm chương trình lên một, cho đến khi đạt đến cuối mã hoặccó lỗi hoặc DỪNG hoặc lệnh RETURN được phát hiện. Các hoạt động có quyền truy cậpvào ba loại không gian để lưu trữ dữ liệu:

Ngăn xếp, một vùng chứa cuối cùng vào-trước-ra mà các giá trị có thể được đẩy và

bật lên Bộ nhớ, một mảng byte có thể mở rộng vô hạn

Bộ lưu trữ dài hạn của hợp đồng, a kho khóa / giá trị. Không giống như ngăn xếp vàbộ nhớ, được đặt lại sau khi tính toán kết thúc, bộ nhớ vẫn tồn tại trong thời gian dài.

Mã cũng có thể truy cập giá trị, người gửi và dữ liệu của thư đến, cũng như dữ liệu tiêu đềkhối và mã cũng có thể trả về một mảng dữ liệu byte làm đầu ra.

Mô hình thực thi chính thức của mã EVM đơn giản một cách đáng ngạc nhiên. Trong khimáy ảo Ethereum đang chạy, trạng thái tính toán đầy đủ của nó có thể được xác định bởi bộtuple (block_state, transaction, message, code, memory, stack, pc, gas), trong đóblock_state là trạng thái toàn cục chứa tất cả các tài khoản và bao gồm số dư và bộ nhớ .Khi bắt đầu mỗi vòng thực thi, lệnh hiện tại được tìm thấy bằng cách lấy byte mã thứ pc(hoặc 0 nếu pc> = len (mã)) và mỗi lệnh có định nghĩa riêng về cách nó ảnh hưởng đếntuple. Ví dụ: ADD bật hai mục ra khỏi ngăn xếp và đẩy tổng của chúng, giảm gas đi 1 vàtăng pc lên 1, và SSTORE bật hai mục trên cùng ra khỏi ngăn xếp và chèn mục thứ hai vàokho lưu trữ của hợp đồng tại chỉ mục được chỉ định bởi Mục đầu tiên. Mặc dù có nhiều cáchđể tối ưu hóa việc thực thi máy ảo Ethereum thông qua biên dịch đúng lúc, nhưng việc triểnkhai Ethereum cơ bản có thể được thực hiện trong vài trăm dòng mã.

Blockchain và khai thác Blockchain

Ethereum về nhiều mặt tương tự như blockchain Bitcoin, mặc dù nó có một số điểm khácbiệt. Sự khác biệt chính giữa Ethereum và Bitcoin về kiến trúc blockchain là, không giốngnhư Bitcoin (chỉ chứa một bản sao của danh sách giao dịch), các khối Ethereum chứa mộtbản sao của cả danh sách giao dịch và trạng thái gần đây nhất. Bên cạnh đó, hai giá trịkhác, số khối và độ khó, cũng được lưu trữ trong khối. Thuật toán xác thực khối cơ bảntrong Ethereum như sau:

1. Kiểm tra xem khối trước đó được tham chiếu có tồn tại và hợp lệ hay không.

2. Kiểm tra xem dấu thời gian của khối có lớn hơn dấu thời gian của khối được tham chiếu trước đókhông và ít hơn 15 phút trong tương lai

3. Kiểm tra xem số khối, độ khó, gốc giao dịch, gốc chú ý và giới hạn gas(Ethereum cấp thấp khác nhau -các khái niệm cụ thể) là hợp lệ.

4. Kiểm tra xem bằng chứng về công việc trên khối là hợp lệ.

5. Cho S [0] là trạng thái ở cuối khối trước đó.

6. Gọi TX là danh sách giao dịch của khối, với n giao dịch. Với tất cả các i trong 0 ... n-1,đặt S [i + 1] = ÁP DỤNG (S [i], TX [i]). Nếu bất kỳ ứng dụng nào trả về lỗi hoặc nếu tổnglượng khí tiêu thụ trong khối cho đến thời điểm này vượt quá GASLIMIT, hãy trả về lỗi.

7. Đặt S_FINAL là S [n], nhưng thêm phần thưởng khối được trả cho người khai thác.

8. Kiểm tra xem gốc cây Merkle của trạng thái S_FINAL có bằng với gốc trạng tháicuối cùng được cung cấp trong tiêu đề khối hay không. Nếu đúng, khối hợp lệ; nếu

không, nó không hợp lệ.

Thoạt nhìn, phương pháp này có vẻ không hiệu quả cao vì nó cần phải lưu trữ toàn bộtrạng thái với mỗi khối, nhưng trên thực tế, hiệu quả có thể tương đương 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 thay đổi một phần nhỏcủa cây. 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 con trỏ (tứclà số băm của 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 điều 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útchứ không chỉ thay đổi một cách hiệu quả. Ngoài ra, vì tất cả thông tin trạng thái là mộtphần của khối cuối cùng, nên không cần phải lưu trữ toàn bộ lịch sử blockchain - một chiếnlược, nếu có thể áp dụng cho Bitcoin, có thể được tính toán để tiết kiệm 5-20 lần trongkhông gian.

Một câu hỏi thường được đặt ra là mã hợp đồng "ở đâu" được thực thi, về mặt phần cứngvật lý. Điều này có một câu trả lời đơn giản: quá trình thực thi mã hợp đồng là một phầntrong định nghĩa của chức năng chuyển đổi trạng thái, là một phần của thuật toán xác thựckhối, vì vậy nếu một giao dịch được thêm vào khối B thì việc thực thi mã được tạo ra bởigiao dịch đó sẽ là được thực thi bởi tất cả các nút, bây giờ và trong tương lai, tải xuống vàxác thực khối B.

Ứng dụngNói chung, có ba loại ứng dụng trên Ethereum. Loại đầu tiên là các ứng dụng tài chính,cung cấp cho người dùng những cách thức mạnh mẽ hơn để quản lý và giao kết hợp đồngbằng tiền của họ. Điều này bao gồm tiền tệ phụ, các công cụ tài chính phái sinh, hợp đồngbảo hiểm rủi ro, ví tiết kiệm, di chúc và thậm chí là một số loại hợp đồng lao động quy môđầy đủ. Loại thứ hai là các ứng dụng bán tài chính, trong đó tiền có liên quan nhưng cũngcó khía cạnh phi tiền tệ nặng nề đối với những gì đang được thực hiện; một ví dụ hoànhảo là tiền thưởng tự thực thi cho các giải pháp cho các vấn đề tính toán. Cuối cùng, cónhững ứng dụng như bỏ phiếu trực tuyến và quản trị phi tập trung mà không phải là tàichính.

Hệ thống

mã thông báo Hệ thống mã thông báo trên blockchain có nhiều ứng dụng khác nhau, từ cácloại tiền tệ phụ đại diện cho tài sản như USD hoặc vàng đến cổ phiếu công ty, mã thôngbáo riêng lẻ đại diện cho tài sản thông minh, phiếu thưởng an toàn không thể chấp nhậnđược và thậm chí cả hệ thống mã thông báo không liên quan đến giá trị thông thường,

được sử dụng như hệ thống điểm để khuyến khích. Hệ thống mã thông báo dễ thực hiệnmột cách đáng ngạc nhiên trong Ethereum. Điểm mấu chốt cần hiểu là một loại tiền tệ,hoặc hệ thống mã thông báo, về cơ bản là một cơ sở dữ liệu với một hoạt động: trừ X đơnvị cho A và đưa X đơn vị cho B, với điều kiện (1) A có ít nhất X đơn vị trước giao dịch và (2)giao dịch được chấp thuận bởi A. Tất cả những gì cần thiết để triển khai hệ thống mã thôngbáo là thực hiện logic này thành hợp đồng.

Mã cơ bản để triển khai hệ thống mã thông báo trong Serpent trông như sau:

Đây về cơ bản là triển khai theo nghĩa đen của chức năng chuyển đổi trạng thái "hệ thốngngân hàng" được mô tả thêm ở trên trong tài liệu này. Một vài dòng mã bổ sung cần đượcthêm vào để cung cấp cho bước đầu tiên của việc phân phối đơn vị tiền tệ ngay từ đầu vàmột vài trường hợp cạnh khác và lý tưởng nhất là một hàm sẽ được thêm vào để cho phépcác hợp đồng khác truy vấnsố dư của một địa chỉ . Nhưng đó là tất cả những gì cần làm. Về mặt lý thuyết, các hệ thốngmã thông báo dựa trên Ethereum hoạt động như tiền tệ phụ có thể bao gồm một tính năngquan trọng khác mà các siêu tiền tệ dựa trên Bitcoin trên chuỗi thiếu: khả năng thanh toánphí giao dịch trực tiếp bằng đơn vị tiền tệ đó. Cách thực hiện điều này là hợp đồng sẽ duytrì số dư ether mà hợp đồng sẽ hoàn lại ether được sử dụng để thanh toán phí cho ngườigửi và nó sẽ nạp lại số dư này bằng cách thu các đơn vị tiền tệ nội bộ mà nó có tính phí vàbán lại chúng. một cuộc đấu giá đang diễn ra liên tục. Do đó, người dùng sẽ cần phải "kíchhoạt" tài khoản của họ bằng ether, nhưng khi ether ở đó, nó sẽ có thể được sử dụng lại vìhợp đồng sẽ hoàn lại tiền mỗi lần.

Các công cụ phái sinh tài chính và đơn vị tiền tệ có giá trị ổn định

Các công cụ tài chính phái sinh là ứng dụng phổ biến nhất của "hợp đồng thông minh" và là

một trong những ứng dụng đơn giản nhất để triển khai trong mã. Thách thức chính trongviệc thực hiện các hợp đồng tài chính là phần lớn chúng yêu cầu tham chiếu đến một mãgiá bên ngoài; ví dụ: một ứng dụng rất mong muốn là một hợp đồng thông minh bảo vệchống lại sự biến động của ether (hoặc một loại tiền điện tử khác) đối với đô la Mỹ, nhưnglàm điều này yêu cầu hợp đồng phải biết giá trị của ETH / USD là bao nhiêu. Cách đơngiản nhất để làm điều này là thông qua hợp đồng "nguồn cấp dữ liệu" được duy trì bởi mộtbên cụ thể (ví dụ: NASDAQ) được thiết kế để bên đó có khả năng cập nhật hợp đồng khicần thiết và cung cấp một giao diện cho phép các hợp đồng khác gửi một nhắn tin cho hợpđồng đó và nhận lại phản hồi cung cấp giá cả.

Với thành phần quan trọng đó, hợp đồng bảo hiểm rủi ro sẽ như sau: 1.

Chờ bên A nhập 1000 ether.

2. Chờ bên B nhập 1000 ether.

3. Ghi lại giá trị USD của 1000 ether, được tính bằng cách truy vấn hợp đồng nguồn cấpdữ liệu, trong bộ nhớ, giả sử đây là $ x.

4. Sau 30 ngày, cho phép A hoặc B để "Kích hoạt" hợp đồng để gửi $ x giá trị của ether(tính bằng cách truy vấn hợp đồng cung cấp dữ liệu một lần nữa để có được giá mới)đến A và phần còn lại cho B.

một như vậy hợp đồng sẽ có tiềm năng đáng kể trong thương mại tiền điện tử. Một trongnhững vấn đề chính được trích dẫn về tiền điện tử là thực tế là nó dễ bay hơi; mặc dùnhiều người dùng vàngười bán có thể muốn sự an toàn và tiện lợi khi giao dịch với các tài sản mật mã, nhưnghọ có thể không muốn đối mặt với viễn cảnh mất 23% giá trị tiền của họ trong một ngày.Cho đến nay, giải pháp được đề xuất phổ biến nhất là tài sản được nhà phát hành bảo đảm;ý tưởng là một tổ chức phát hành tạo ra một đơn vị tiền tệ phụ mà họ có quyền phát hànhvà thu hồi các đơn vị, đồng thời cung cấp một đơn vị tiền tệ cho bất kỳ ai cung cấp cho họ(ngoại tuyến) một đơn vị của một tài sản cơ bản cụ thể (ví dụ: vàng , ĐÔ LA MỸ). Sau đó,nhà phát hành hứa hẹn sẽ cung cấp một đơn vị tài sản cơ bản cho bất kỳ ai gửi lại một đơnvị tài sản tiền điện tử. Cơ chế này cho phép bất kỳ tài sản không phải là tiền mã hóa nàođược "nâng cấp" thành tài sản mật mã, với điều kiện người phát hành có thể được tin cậy.

Tuy nhiên, trên thực tế, các tổ chức phát hành không phải lúc nào cũng đáng tin cậy, và

trong một số trường hợp, cơ sở hạ tầng ngân hàng quá yếu, hoặc quá thù địch, để cácdịch vụ đó tồn tại. Các công cụ tài chính phái sinh cung cấp một giải pháp thay thế. Ởđây, thay vì một tổ chức phát hành duy nhất cung cấp tiền để sao lưu tài sản, một thịtrường phi tập trung của các nhà đầu cơ, đặt cược rằng giá củamật mã

tài sản tham chiếu(ví dụ: ETH) sẽ tăng lên, đóng vai trò đó. Không giống như các tổchức phát hành, các nhà đầu cơ không có lựa chọn nào để mặc cả mặc cả bởi vì hợpđồng bảo hiểm rủi ro giữ tiền của họ dưới dạng ký quỹ. Lưu ý rằng cách tiếp cận nàykhông được phân cấp hoàn toàn, bởi vì vẫn cần một nguồn đáng tin cậy để cung cấp mãgiá, mặc dù vẫn được cho rằng đây là một cải tiến lớn về mặt giảm yêu cầu cơ sở hạtầng (không giống như một nhà phát hành, việc phát hành một nguồn cấp dữ liệu giákhông cần giấy phép và có thể được phân loại là tự do ngôn luận) và giảm khả nănggian lận.

Hệ thống nhận dạng và danh tiếng

Loại tiền điện tử thay thế sớm nhất, Namecoin↗ , đã cố gắng sử dụng một chuỗi khối giốngBitcoin để cung cấp hệ thống đăng ký tên, nơi người dùng có thể đăng ký tên của họ trongcơ sở dữ liệu công khai cùng với các dữ liệu khác. Trường hợp sử dụng được trích dẫnchính là dành cho DNS↗ hệ thống, ánh xạ các tên miền như "bitcoin.org" (hoặc, trongtrường hợp của Namecoin là "bitcoin.bit") với một địa chỉ IP. Các trường hợp sử dụng khácbao gồm xác thực email và các hệ thống danh tiếng có khả năng nâng cao hơn. Đây là hợpđồng cơ bản để cung cấp hệ thống đăng ký tên giống như Namecoin trên Ethereum:

Hợp đồng rất đơn giản; tất cả nó là một cơ sở dữ liệu bên trong mạng Ethereum có thểđược thêm vào, nhưng không được sửa đổi hoặc xóa khỏi. Bất kỳ ai cũng có thể đăng kýmột tên với một số giá trị và việc đăng ký đó sau đó sẽ tồn tại mãi mãi. Hợp đồng đăng kýtên phức tạp hơn cũng sẽ có "điều khoản chức năng" cho phép các hợp đồng khác truy vấnnó, cũng như cơ chế để "chủ sở hữu" (tức là người đăng ký đầu tiên) của tên thay đổi dữ

liệu hoặc chuyển quyền sở hữu. Người ta thậm chí có thể thêm danh tiếng và chức năngweb đáng tin cậy trên đầu trang.

Lưu trữ tệp phi tập trung

Trong vài năm qua, đã xuất hiện một số công ty khởi nghiệp lưu trữ tệp trực tuyến phổbiến, nổi bật nhất là Dropbox, tìm cách cho phép người dùng tải lên bản sao lưu ổ cứngcủa họ và có dịch vụ lưu trữ bản sao lưu và cho phép người dùng để truy cập nó để đổi lấymột khoản phí hàng tháng. Tuy nhiên, tại thời điểm này, thị trường lưu trữ tệp đôi khi tươngđối kém hiệu quả; một cái nhìn lướt qua về cáckhác giải pháp hiện cónhau↗ cho thấy rằng,đặc biệt là ở mức 20-200 GB ở "thung lũng kỳ lạ" mà tại đó không có hạn ngạch miễn phícũng như chiết khấu cấp doanh nghiệp, giá hàng tháng cho chi phí lưu trữ tệp chính thốngđến mức bạn đang phải trả nhiều hơn chi phí của toàn bộ lái xe trong một tháng. Các hợpđồng Ethereum có thể cho phép phát triển một hệ sinh thái lưu trữ tệp phi tập trung, nơingười dùng cá nhân có thể kiếm được số tiền nhỏ bằng cách thuê ổ cứng của riêng họ vàdung lượng không sử dụng có thể được sử dụng để giảm thêm chi phí lưu trữ tệp.

Phần nền tảng quan trọng của một thiết bị như vậy sẽ là những gì chúng tôi đã gọi là "hợpđồng Dropbox phi tập trung". Hợp đồng này hoạt động như sau. Đầu tiên, người ta chia dữliệu mong muốn thành các khối, mã hóa từng khối để bảo mật và xây dựng một cây Merkletừ nó. Sau đó, người ta lập một hợp đồng với quy tắc rằng, cứ N khối, hợp đồng sẽ chọnmột chỉ mục ngẫu nhiên trong cây Merkle (sử dụng hàm băm khối trước đó, có thể truy cậptừ mã hợp đồng, như một nguồn ngẫu nhiên) và cung cấp X ether cho thực thể đầu tiêncung cấp giao dịch với bằng chứng xác minh thanh toán đơn giản giống như bằng chứng vềquyền sở hữu khối tại chỉ mục cụ thể đó trong cây. Khi người dùng muốn tải xuống lại tệpcủa họ, họ có thể sử dụng giao thức kênh vi thanh toán (ví dụ: trả 1 szabo cho mỗi 32kilobyte) để khôi phục tệp; cách tiếp cận hiệu quả nhất về phí là người thanh toán khôngcông bố giao dịch cho đến khi kết thúc, thay vào đó thay thế giao dịch bằng một giao dịchsinh lợi hơn một chút với cùng một nonce sau mỗi 32 kilobyte.Một tính năng quan trọng của giao thức là, mặc dù có vẻ như một người đang tin tưởngnhiều nút ngẫu nhiên không quyết định bỏ quên tệp, nhưng người ta có thể giảm nguy cơđó xuống gần bằng 0 bằng cách chia tệp thành nhiều phần thông qua chia sẻ bí mật vàxem các hợp đồng để xem

từng phần vẫn thuộc quyền sở hữu của một số nút. Nếu một hợp đồng vẫn đang thanhtoán tiền, điều đó cung cấp bằng chứng mật mã cho thấy ai đó ngoài kia vẫn đang lưu

trữ tệp.

Các tổ chức tự trị phi tập trung

Khái niệm chung về một "tổ chức tự trị phi tập trung" là một thực thể ảo có một số thànhviên hoặc cổ đông nhất định, có lẽ với 67% đa số, có quyền chi tiêu quỹ của tổ chức và sửađổi mã của tổ chức đó. Các thành viên sẽ quyết định chung về cách tổ chức nên phân bổquỹ của mình. Các phương pháp phân bổ quỹ của DAO có thể bao gồm tiền thưởng, tiềnlương cho đến các cơ chế kỳ lạ hơn như tiền tệ nội bộ để thưởng cho công việc. Điều nàyvề cơ bản sao chép các bẫy hợp pháp của một công ty hoặc tổ chức phi lợi nhuận truyềnthống nhưng chỉ sử dụng công nghệ blockchain mã hóa để thực thi. Cho đến nay phần lớncác cuộc thảo luận xung quanh các DAO chỉ xoay quanh mô hình "tư bản chủ nghĩa" củamột "công ty tự trị phi tập trung" (DAC) với các cổ đông nhận cổ tức và cổ phiếu có thể giaodịch; một giải pháp thay thế, có lẽ được mô tả là một "cộng đồng tự trị phi tập trung", sẽ cótất cả các thành viên có phần bình đẳng trong việc ra quyết định và yêu cầu 67% thành viênhiện tại đồng ý thêm hoặc bớt một thành viên. Sau đó, yêu cầu rằng một người chỉ có thểcó một thành viên sẽ cần được thực thi chung bởi nhóm.

Sơ lược chung về cách viết mã DAO như sau. Thiết kế đơn giản nhất chỉ đơn giản làmột đoạn mã tự sửa đổi và thay đổi nếu 2/3 thành viên đồng ý về sự thay đổi. Mặc dùvề mặt lý thuyết, mã là bất biến, nhưng người ta có thể dễ dàng giải quyết vấn đề nàyvà có khả năng thay đổi trên thực tế bằng cách có các đoạn mã trong các hợp đồngriêng biệt và có địa chỉ của các hợp đồng để gọi được lưu trữ trong bộ nhớ có thể sửađổi. Trong một cách triển khai đơn giản của một hợp đồng DAO như vậy, sẽ có ba loạigiao dịch, được phân biệt bởi dữ liệu được cung cấp trong giao dịch:

[0, i, K, V] để đăng ký một đề xuất với chỉ mục i để thay đổi địa chỉ tại chỉ mục lưutrữ K giá trị V

[1, i] để đăng ký một phiếu ủng hộ đề xuất i[2, i] để hoàn thiện đề xuất i nếu đã có đủ số phiếu bầu.

Sau đó, hợp đồng sẽ có các điều khoản cho mỗi đề xuất này. Nó sẽ duy trì một hồ sơ về tấtcả các thay đổi trong bộ nhớ mở, cùng với danh sách những người đã bỏ phiếu cho chúng.Nó cũng sẽ có một danh sách tất cả các thành viên. Khi bất kỳ thay đổi nào về dung lượngđược 2/3 thành viên bỏ phiếu cho nó, giao dịch cuối cùng có thể thực hiện thay đổi. Một bộ

khung phức tạp hơn cũng sẽ có khả năng bỏ phiếu tích hợp cho các tính năng như gửigiao dịch, thêm thành viên và xóa thành viên và thậm chí có thể cung cấp cho Dân chủLỏng phái đoàn bỏ phiếu theo phong cách(ví dụ: bất kỳ ai cũng có thể chỉ định ai đó bỏphiếu cho họ và nhiệm vụ có tính bắc cầu nên nếu A giao B và B giao C thì C xác địnhphiếu của A). Thiết kế này sẽ cho phép DAO phát triển một cách tự nhiên như một cộngđồng phi tập trung, cho phép mọi người cuối cùng ủy quyền nhiệm vụ lọc ra ai là thành viêncho các chuyên gia, mặc dù không giống như trong "hệ thống hiện tại", các chuyên gia cóthể dễ dàng xuất hiện và không tồn tại theo thời gian khi các thành viên cộng đồng thay đổisự sắp xếp của họ.

Một mô hình thay thế dành cho một công ty phi tập trung, nơi bất kỳ tài khoản nào cũng cóthể có không hoặc nhiều cổ phần và 2/3 số cổ phần được yêu cầu để đưa ra quyết định.Một khung hoàn chỉnh sẽ liên quan đến chức năng quản lý tài sản, khả năng đưa ra đềnghị mua hoặc bán cổ phiếu và khả năng chấp nhận đề nghị (tốt nhất là với cơ chế khớplệnh bên trong hợp đồng). Ủy quyền cũng sẽ tồn tại theo kiểu Dân chủ lỏng, khái quát hóakhái niệm "hội đồng quản trị".

Các ứng dụng khác

1. Ví tiết kiệm. Giả sử Alice muốn giữ an toàn cho tiền của mình nhưng lại lo lắng rằng côấy sẽ bị mất hoặc ai đó sẽ hack khóa riêng của cô ấy. Cô ấy đặt ether vào một hợp đồngvới Bob, một ngân hàng, như sau: Một

mình Alice có thể rút tối đa 1% số tiền mỗi ngày.

Một mình Bob có thể rút tối đa 1% số tiền mỗi ngày, nhưng Alice có khả năng thực hiệngiao dịch với chìa khóa của cô ấy đã tắt khả năng này.

Alice và Bob cùng nhau có thể rút bất cứ thứ gì.

Thông thường, 1% mỗi ngày là đủ cho Alice, và nếu Alice muốn rút thêm, cô ấy có thểliên hệ với Bob để được giúp đỡ. Nếu khóa của Alice bị hack, cô ấy sẽ chạy đến gặpBob để chuyển tiền sang mộthợp đồng mới. Nếu cô ấy làm mất chìa khóa của mình, cuối cùng Bob sẽ lấy hết tiền. NếuBob trở nên ác ý, thì cô ấy có thể tắt khả năng rút lui của anh ấy.

2. Bảo hiểm cây trồng. Người ta có thể dễ dàng thực hiện một hợp đồng phái sinh tàichính bằng cách sử dụng nguồn cấp dữ liệu về thời tiết thay vì bất kỳ chỉ số giá nào. Nếumột nông dân ở Iowa mua một sản phẩm phái sinh trả tiền tỷ lệ nghịch dựa trên lượngmưa ở Iowa, thì nếu có hạn hán,

nông dân sẽ tự động nhận được tiền và nếu có đủ mưa, nông dân sẽ rất vui vì mùamàng của họ sẽ tốt. Điều này có thể được mở rộng sang bảo hiểm thiên tai nóichung.

3. Nguồn cấp dữ liệu phi tập trung. Đối với các hợp đồng tài chính cho sự khác biệt, thựcsự có thể phân cấp nguồn cấp dữ liệu thông qua một giao thức được gọi là SchellingCoin↗. SchellingCoin về cơ bản hoạt động như sau: Tất cả các bên đều đưa vào hệ thống giá trịcủa một mức dữ liệu nhất định (ví dụ: giá ETH / USD), các giá trị được sắp xếp và mọingười từ phân vị thứ 25 đến 75 đều nhận được một mã thông báo làm phần thưởng. Mọingười đều có động cơ để đưa ra câu trả lời mà những người khác sẽ cung cấp và giá trịduy nhất mà một số lượng lớn người chơi có thể đồng ý trên thực tế là mặc định hiểnnhiên: sự thật. Điều này tạo ra một giao thức phi tập trung về mặt lý thuyết có thể cung cấpbất kỳ số lượng giá trị nào, bao gồm giá ETH / USD, nhiệt độ ở Berlin hoặc thậm chí là kếtquả của một phép tính cứng cụ thể.

4. Ký quỹ đa chữ ký thông minh. Bitcoin cho phép các hợp đồng giao dịch đa chữ ký, ví dụ,ba trong số năm khóa nhất định có thể tiêu tiền. Ethereum cho phép chi tiết hơn; ví dụ: 4/5có thể chi tiêu mọi thứ, 3/4 có thể chi tới 10% mỗi ngày và 2/3 có thể chi tới 0,5% mỗingày. Ngoài ra, Ethereum multisig không đồng bộ - hai bên có thể đăng ký chữ ký của họtrên blockchain vào những thời điểm khác nhau và chữ ký cuối cùng sẽ tự động gửi giaodịch.

5. Điện toán đám mây. Công nghệ EVM cũng có thể được sử dụng để tạo ra một môitrường máy tính có thể xác minh được, cho phép người dùng yêu cầu người khác thực hiệncác phép tính và sau đó tùy chọn yêu cầu bằng chứng rằng các phép tính tại một số điểmkiểm tra được chọn ngẫu nhiên đã được thực hiện đúng cách. Điều này cho phép tạo ramột thị trường điện toán đám mây nơi bất kỳ người dùng nào cũng có thể tham gia với máytính để bàn, máy tính xách tay hoặc máy chủ chuyên dụng của họ và việc kiểm tra tại chỗcùng với tiền gửi bảo mật có thể được sử dụng để đảm bảo rằng hệ thống đáng tin cậy (tứclà các nút không thể gian lận một cách có lợi) . Mặc dù một hệ thống như vậy có thể không

phù hợp cho tất cả các nhiệm vụ; Chẳng hạn, các tác vụ đòi hỏi mức độ giao tiếp giữa cácquá trình cao không thể dễ dàngthực hiện được trên một đám mây lớn các nút. Tuy nhiên, các nhiệm vụ khác dễ thựchiện song song hơn nhiều; các dự án như SETI @ home, fold @ home và các thuật toándi truyền có thể dễ dàng được thực hiện trên nền tảng như vậy.

6. Đánh bạc ngang hàng. Bất kỳ số lượng các giao thức cờ bạc peer-to-peer, chẳng hạnnhư Frank Stajano vàRichard Cyberdice↗ Clayton,có thể được thực hiện trên blockchainEthereum. Giao thức cờ bạc đơn giản nhất thực sự chỉ đơn giản là một hợp đồng chênhlệch trên băm khối tiếp theo và các giao thức nâng cao hơn có thể được xây dựng từ đó,tạo ra các dịch vụ cờ bạc với mức phí gần như bằng không và không có khả năng gianlận.

7. Dự đoán thị trường. Được cung cấp một tiên tri hoặc SchellingCoin, các thị trường dựđoán cũng dễ thực hiện và các thị trường dự đoán cùng với SchellingCoin có thể chứngminh là ứng dụng chính thống đầu tiên của tương lai↗ như một giao thức quản trị cho cáctổ chức phi tập trung.

8. Thị trường phi tập trung trên chuỗi, sử dụng hệ thống nhận dạng và danh tiếng làm cơsở.

Miscellanea và những lo ngại

Thực hiện GHOST được sửa đổi

Giao thức "Cây con được quan sát nhiều nhất" (GHOST) là một cải tiến lần đầu tiên đượcgiới thiệu bởi Yonatan Sompolinsky và Aviv Zohar vào tháng 12 năm 2013↗ . Động lựcđằng sau GHOST là các blockchain có thời gian xác nhận nhanh hiện đang bị giảm tính bảomật do tỷ lệ cũ cao - vì các khối cần một thời gian nhất định để truyền qua mạng, nếu ngườikhai thác A khai thác một khối và sau đó người khai thác B sẽ khai thác một khối khác trướckhi khối của người khai thác A truyền sang B, khối của người khai thác B sẽ bị lãng phí vàkhông đóng góp vào an ninh mạng. Hơn nữa, có một vấn đề tập trung: nếu người khai thácA là một nhóm khai thác với 30% sức mạnh băm và B có 10% sức mạnh băm, A sẽ có nguy

cơ tạo ra một khối cũ 70% thời gian (kể từ 30% thời gian còn lại A đã tạo ra khối cuối cùngvà do đó sẽ nhận được dữ liệu khai thác ngay lập tức) trong khi B sẽ có nguy cơ tạo ra mộtkhối cũ là 90% thời gian. Do đó, nếu khoảng thời gian khối đủ ngắn để tốc độ cũ cao, thì Asẽ hiệu quả hơn đáng kể chỉ đơn giản là nhờ kích thước của nó.Với hai hiệu ứng này kết hợp, các blockchain tạo ra các khối nhanh chóng rất có khả năngdẫn đến một nhóm khai thác có tỷ lệ băm mạng đủ lớn để có quyền kiểm soát trên thực tếđối với quá trình khai thác.

Theo mô tả của Sompolinsky và Zohar, GHOST giải quyết vấn đề đầu tiên về mất an ninhmạng bằng cách đưa các khối cũ vào tính toán chuỗi nào là "dài nhất"; có nghĩa là, khôngchỉ cha mẹ và tổ tiên khác của một khối, mà còn cả những hậu duệ cũ của tổ tiên khối(trong thuật ngữ Ethereum, "chú") được thêm vào phép tính khối nào có tổng số bằngchứng công việc ủng hộ lớn nhất nó. Để giải quyết vấn đề thứ hai về thiên vị tập trung,chúng tôi vượt ra ngoài giao thức được mô tả bởi Sompolinsky và Zohar, đồng thời cungcấp phần thưởng khối cho những con lai: một khối cũ nhận được 87,5% phần thưởng cơbản của nó và cháu trai bao gồm khối cũ nhận được phần thưởng còn lại 12,5%. Phí giaodịch, tuy nhiên, không được trao cho các chú.

Ethereum triển khai một phiên bản đơn giản của GHOST chỉ giảm xuống bảy cấp. Cụ thể,nó được định nghĩa như sau:

Khối A phải chỉ định cha, mẹ và phải chỉ định từ 0 chú trở lên

Chú bác nằm trong khối B phải có các đặc tính sau:

Phải là con trực hệ của tổ tiên đời thứ k của B , trong đó 2 <= k <= 7. Nó không thể là

tổ tiên của B

Một chú phải là tiêu đề khối hợp lệ, nhưng không cần phải là một khối đã được xácminh trước đó hoặc thậm chí hợp lệ.

Chú phải khác với tất cả các chú được bao gồm trong các khối trước đó và tất cảcác chú khác được bao gồm trong cùng một khối (không bao gồm kép)

Đối với mỗi chú U trong khối B, người khai thác B được thêm 3,125% vào phầnthưởng coinbase của nó và người khai thác U nhận được 93,75% phần thưởngcoinbase tiêu chuẩn.

Phiên bản giới hạn của GHOST này, với các chú chỉ có thể bao gồm tối đa 7 thế hệ, đượcsử dụng vì hai lý do. Đầu tiên, GHOST không giới hạn sẽ bao gồm quá nhiều phức tạptrong việc tính toán xem chú thích nào cho một khối nhất định là hợp lệ. Thứ hai, GHOSTkhông giới hạn với khoản bồi thường như được sử dụng trong Ethereum sẽ loại bỏ độngcơ cho người khai thác trên chuỗi chính chứ không phải chuỗi của kẻ tấn công công khai.

Phí

Bởi vì mọi giao dịch được xuất bản trong chuỗi khối đều áp đặt trên mạng chi phí cần tảixuống và xác minh nó, nên cần có một số cơ chế quản lý, thường liên quan đến phí giaodịch, để ngăn chặn việc lạm dụng. Cách tiếp cận mặc định, được sử dụng trong Bitcoin, làcó các khoản phí hoàn toàn tự nguyện, dựa vào các thợ đào đóng vai trò là người gác cổngvà đặt mức tối thiểu động. Cách tiếp cận này đã được đón nhận rất tích cực trong cộngđồng Bitcoin, đặc biệt vì nó "dựa trên thị trường", cho phép cung và cầu giữa thợ đào vàngười gửi giao dịch xác định giá. Tuy nhiên, vấn đề với dòng suy luận này là việc xử lý giaodịch không phải là thị trường; mặc dù việc xây dựng xử lý giao dịch như một dịch vụ màngười khai thác đang cung cấp cho người gửi là hấp dẫn trực quan, nhưng trên thực tế, mọigiao dịch mà người khai thác bao gồm sẽ cần được xử lý bởi mọi nút trong mạng, vì vậyphần lớn chi phí giao dịch quá trình xử lý do bên thứ ba thực hiện chứ không phải ngườikhai thác đang đưa ra quyết định có đưa vào hay không. Do đó, rất có thể xảy ra các vấn đềvề bi kịch.

Tuy nhiên, vì nó chỉ ra lỗ hổng này trong cơ chế dựa trên thị trường, khi đưa ra một giảđịnh đơn giản hóa không chính xác cụ thể, nó sẽ tự loại bỏ một cách kỳ diệu. Lập luận nhưsau. Giả sử rằng:

1. Một giao dịch dẫn đến k hoạt động, cung cấp kR phần thưởng cho bất kỳ người khaithác nào bao gồm nó trong đó R được đặt bởi người gửi và k và R (gần như) hiển thịtrước với người khai thác.

2. Một hoạt động có chi phí xử lý C cho bất kỳ nút nào (tức là tất cả các nút đềucó hiệu suất như nhau)

3. Có N nút khai thác, mỗi nút có công suất xử lý chính xác bằng nhau (tức là 1 / N của

tổng số) 4. Không có khai thác các nút đầy đủ tồn tại.

Một người khai thác sẽ sẵn sàng xử lý một giao dịch nếu phần thưởng mong đợi lớn hơnchi phí. Do đó, phần thưởng dự kiến là kR / N vì người khai thác có 1 / N cơ hội xử lý khốitiếp theo và chi phí xử lý cho người khai thác chỉ đơn giản là kC. Do đó, các thợ đào sẽbao gồm các giao dịch trong đó kR / N> kC hoặc R> NC. Lưu ý rằng R là phí cho mỗi hoạtđộng do người gửi cung cấp và do đó, là ràng buộc thấp hơn đối với lợi ích mà người gửithu được từ giao dịch và NC là chi phí cho toàn bộ mạng cùng xử lý một hoạt động. Dođó, các thợ đào có động cơ chỉ bao gồm nhữnggiao dịch mà tổng lợi ích thực dụng vượt quá chi phí.

Tuy nhiên, có một số sai lệch quan trọng so với những giả định đó trong thực tế:

1. Người khai thác phải trả chi phí cao hơn để xử lý giao dịch so với các nút xác minhkhác, vì thời gian xác minh thêm sẽ làm chậm quá trình lan truyền khối và do đó làmtăng cơ hội khối sẽ trở thành cũ.

2. Có tồn tại các nút đầy đủ không khai thác.

3. Trên thực tế, việc phân phối điện khai thác có thể trở nên phi bình đẳng hoàn toàn.

4. Những kẻ đầu cơ, kẻ thù chính trị và kẻ điên có chức năng tiện ích bao gồm gây hại chomạng vẫn tồn tại và chúng có thể khéo léo thiết lập các hợp đồng mà chi phí của chúngthấp hơn nhiều so với chi phí mà các nút xác minh khác phải trả.

(1) cung cấp xu hướng cho người khai thác bao gồm ít giao dịch hơn và (2) tăng NC; Làmthế nào? ↗

do đó, hai tác động này ít nhất một phần triệt tiêu lẫn ngoài khác. (3) và (4) là vấn đềchính; để giải quyết chúng, chúng tôi chỉ cần thiết lập giới hạn động: không khối nào có thểcó nhiều hoạt động hơn BLK_LIMIT_FACTOR nhân với đường trung bình động hàm mũdài hạn. Cụ thể:

BLK_LIMIT_FACTOR và EMA_FACTOR là các hằng số sẽ được đặt thành 65536 và 1.5trong thời điểm hiện tại, nhưng có thể sẽ được thay đổi sau khi phân tích thêm.

Có một yếu tố khác không phân biệt kích thước khối lớn trong Bitcoin: các khối có kíchthước lớn sẽ mất nhiều thời gian hơn để lan truyền và do đó có xác suất trở thành cuốngcao hơn. Trong Ethereum, các khối tiêu tốn nhiều gas cũng có thể mất nhiều thời gianhơn để truyền cả hai vì chúng lớn hơn về mặt vật lý và vì chúng mất nhiều thời gian hơnđể xử lý các chuyển đổi trạng thái giao dịch để xác thực. Sự không khuyến khích trì hoãnnày là một sự cân nhắc đáng kể đối với Bitcoin, nhưng ít hơn ở Ethereum vì giao thứcGHOST; do đó, dựa vào các giới hạn khối được quy định sẽ cung cấp một đường cơ sởổn định hơn.

Computation And Turing-Completeness

Một lưu ý quan trọng là máy ảo Ethereum là Turing-complete; điều này có nghĩa là mã EVMcó thể mã hóa bất kỳ tính toán nào có thể được thực hiện một cách hình dung, bao gồm cảcác vòng lặp vô hạn. Mã EVM cho phép lặp theo hai cách. Đầu tiên, có một lệnh JUMP chophép chương trình nhảy trở lại vị trí trước đó trong mã và một lệnh JUMPI để thực hiện việcnhảy có điều kiện, cho phép các câu lệnh như while x <27: x = x * 2. Thứ hai, các hợp đồngcó thể gọi các hợp đồng khác, có khả năng cho phép lặp lại thông qua đệ quy. Điều nàyđương nhiên dẫn đến một vấn đề: về cơ bản, liệu người dùng độc hại có thể đóng cửa cácthợ đào và các nút đầy đủ bằng cách buộc họ tham gia vào một vòng lặp vô hạn không?Vấn đề nảy sinh do một vấn đề trong khoa học máy tính được gọi là vấn đề tạm dừng:không có cách nào để nói, trong trường hợp chung, liệu một chương trình nhất định có baogiờ bị dừng hay không.

Như được mô tả trong phần chuyển đổi trạng thái, giải pháp của chúng tôi hoạt độngbằng cách yêu cầu một giao dịch đặt số lượng bước tính toán tối đa mà nó được phépthực hiện và nếu quá trình thực thi mất nhiều thời gian hơn thì tính toán sẽ được hoànnguyên nhưng vẫn phải trả phí. Tin nhắn hoạt động theo cùng một cách. Để cho thấyđộng lực đằng sau giải pháp của chúng tôi, hãy xem xét các ví dụ sau:

Kẻ tấn công tạo ra một hợp đồng chạy một vòng lặp vô hạn và sau đó gửi một giao dịchkích hoạt vòng lặp đó cho người khai thác. Người khai thác sẽ xử lý giao dịch, chạyvòng lặp vô hạn và đợi nó hết gas. Mặc dù quá trình thực hiện hết gas và dừng lại giữachừng, giao dịch vẫn có hiệu lực và người khai thác vẫn yêu cầu kẻ tấn công trả phí chomỗi bước tính toán.

Kẻ tấn công tạo ra một vòng lặp vô hạn rất dài với mục đích buộc người khai thác phải

tiếp tục tính toán trong một thời gian dài đến mức vào thời điểm tính toán kết thúc, mộtvài khối nữa sẽ xuất hiện và người khai thác sẽ không thể bao gồm giao dịch. để yêucầu phí. Tuy nhiên, kẻ tấn công sẽ được yêu cầu gửi một giá trị cho STARTGAS giớihạn số bước tính toán mà việc thực thi có thể thực hiện, do đó, người khai thác sẽ biếttrước rằng việc tính toán sẽ thực hiện một số lượng quá lớn các bước.

Kẻ tấn công nhìn thấy một hợp đồng với mã của một số hình thức nhưgửi (A, contract.storage [A]); contract.storage [A] = 0 và gửi một giao dịch với lượngxăng vừa đủ để chạy bước đầu tiên chứ không phải bước thứ hai (tức là thực hiện rúttiền nhưng không để số dư giảm xuống). Tác giả hợp đồng không cần phải lo lắng vềviệc bảo vệ chống lại các cuộc tấn công như vậy, bởi vì nếu quá trình thực hiện dừnggiữa chừngcác thay đổi thì chúng sẽ được hoàn nguyên.

Hợp đồng tài chính hoạt động bằng cách lấy trung bình của chín nguồn cấp dữ liệu độcquyền để giảm thiểu rủi ro. Kẻ tấn công chiếm đoạt một trong các nguồn cấp dữ liệu,được thiết kế để có thể sửa đổi thông qua cơ chế gọi địa chỉ thay đổi được mô tả trongphần trên DAO và chuyển đổi nó để chạy một vòng lặp vô hạn, do đó cố gắng buộc bấtkỳ nỗ lực nào để đòi

tiền từ hợp đồng tài chính để hết xăng. Tuy nhiên, hợp đồng tài chính có thể thiết lậpgiới hạn khí trên tin nhắn để ngăn chặn vấn đề này.

Sự thay thế cho tính hoàn chỉnh của Turing là tính không hoàn chỉnh của Turing, trong đóJUMP và JUMPI không tồn tại và chỉ một bản sao của mỗi hợp đồng được phép tồn tạitrong ngăn xếp cuộc gọi tại bất kỳ thời điểm nào. Với hệ thống này, hệ thống phí được môtả và những điều không chắc chắn xung quanh tính hiệu quả của giải pháp của chúng tôi cóthể không cần thiết, vì chi phí thực hiện hợp đồng sẽ bị giới hạn ở trên theo quy mô của nó.Ngoài ra, tính không đầy đủ của Turing thậm chí không phải là một hạn chế lớn; trong số tấtcả các ví dụ hợp đồng mà chúng tôi đã hình thành trong nội bộ, cho đến nay chỉ có một yêucầu vòng lặp và thậm chí vòng lặp đó có thể được loại bỏ bằng cách thực hiện 26 lần lặp lạiđoạn mã một dòng. Với những tác động nghiêm trọng của tính hoàn chỉnh Turing và lợi íchhạn chế, tại sao không chỉ đơn giản là có một ngôn ngữ không hoàn chỉnh Turing? Tuynhiên, trong thực tế, tính không đầy đủ Turing không phải là một giải pháp gọn gàng chovấn đề. Để biết lý do tại sao, hãy xem xét các hợp đồng sau:

Bây giờ, gửi một giao dịch đến A. Như vậy, trong 51 giao dịch, chúng ta có một hợpđồng thực hiện 50

2 bước tính toán. Những người khai thác có thể cố gắng phát hiện những quả bom logicnhư vậy trước thời hạn bằng cách duy trì một giá trị cùng với mỗi hợp đồng chỉ định sốbước tính toán tối đa mà nó có thể thực hiện và tính toán điều này cho các hợp đồng gọicác hợp đồng khác một cách đệ quy, nhưng điều đó sẽ yêu cầu người khai thác cấm cáchợp đồng tạo các hợp đồng khác (vì việc tạo và thực hiện tất cả 26 hợp đồng ở trên có thểdễ dàng được chuyển thành một hợp đồng duy nhất). Một vấn đề khác là trường địa chỉcủa một thông báo là một biến, vì vậy nói chung, thậm chí không thể biết hợp đồng nàokhác mà một hợp đồng nhất địnhsẽ gọi trước thời hạn. Do đó, nhìn chung, chúng tôi có một kết luận đáng ngạc nhiên: Tínhhoàn chỉnh của Turing dễ quản lý một cách đáng ngạc nhiên và việc thiếu tính hoàn chỉnhcủa Turing cũng khó quản lý một cách đáng ngạc nhiên trừ khi có các biện pháp kiểm soátchính xác - nhưng trong trường hợp đó, tại sao không chỉ để giao thức được Turing-hoànthành?

Tiền tệ và phát hành

Mạng Ethereum bao gồm tiền tệ tích hợp của riêng nó, ether, phục vụ mục đích kép làcung cấp lớp thanh khoản chính để cho phép trao đổi hiệu quả giữa các loại tài sản kỹthuật số và quan trọng hơn là cung cấp cơ chế thanh toán giao dịch lệ phí. Để thuận tiệnvà tránh tranh cãi trong tương lai (xem cuộc tranh luận mBTC / uBTC / satoshi hiện tạitrong Bitcoin), các mệnh giá sẽ được gắn nhãn trước:

Đây nên được coi là phiên bản mở rộng của khái niệm "đô la" và "xu" hoặc " BTC "và"satoshi ". Trong tương lai gần, chúng tôi hy vọng "ether" sẽ được sử dụng cho các giaodịch thông thường, "finney" cho các giao dịch vi mô và "szabo" và "wei" cho các cuộc thảoluận kỹ thuật về phí và triển khai giao thức; các mệnh giá còn lại có thể trở nên hữu íchsau này và không nên đưa vào máy khách tại thời điểm này.

Mô hình phát hành sẽ như sau:

Ether sẽ được phát hành dưới dạng bán tiền tệ với giá 1000-2000 ether mỗi BTC, mộtcơ chế nhằm tài trợ cho tổ chức Ethereum và trả tiền cho sự phát triển đã được sửdụng thành công bởi các nền tảng khác như Mastercoin và NXT. Những người muasớm hơn sẽ được hưởng lợi từ chiết khấu lớn hơn. BTC nhận được từ việc bán sẽđược sử dụng hoàn toàn để trả lương và tiền thưởng cho các nhà phát triển và đầu tưvào các dự án vì lợi nhuận và phi lợi nhuận khác nhau trong hệ sinh thái Ethereum vàtiền điện tử.

0,099x tổng số tiền đã bán (60102216 ETH) sẽ được phân bổ cho tổ chức để bồithường cho những người đóng góp sớm và thanh toán chi phí bằng ETH trước khikhối khởi đầu.0,099x tổng số tiền đã bán sẽ được duy trì như một khoản dự trữ dài hạn. 0,26x tổng

số tiền bán được sẽ được phân bổ cho các thợ đào mỗi năm mãi mãi sau thời điểm đó.

Nhóm Khi ra mắt Sau 1 năm Sau 5 năm

Đơn vị tiền tệ 1,198X 1,458X 2,498X Người mua 83,5% 68,6% 40,0% Dự trữ đã chi trướckhi bán 8,26% 6,79% 3,96% Dự trữ đã sử dụng sau bán 8,26% 6,79% 3,96% Người khaithác 0% 17,8% 52,0%

Tỷ lệ tăng trưởng nguồn cung dài hạn (phần trăm)

Mặc dù phát hành tiền tệ tuyến tính, giống như với Bitcoin theo thời gian, tỷ lệ tăng trưởngnguồn cung có xu hướng bằng không

. Hai lựa chọn chính trong mô hình trên là (1) sự tồn tại và quy mô của tài sản và (2) sựtồn tại của nguồn cung tuyến tính phát triển vĩnh viễn, trái ngược với nguồn cung bị giớihạn như trong Bitcoin. Lý do của nhóm tài trợ như sau. Nếu nhóm tài trợ không tồn tại vàviệc phát hành tuyến tính giảm xuống 0,217 lần để cung cấpcùng một tỷ lệ lạm phát, thì tổng lượng ether sẽ ít hơn 16,5% và do đó mỗi đơn vị sẽ có giátrị hơn 19,8%. Do đó, ở trạng thái cân bằng, sẽ có thêm 19,8% ether được mua trong đợtbán hàng, vì vậy mỗi đơn vị sẽ một lần nữa có giá trị chính xác như trước đây. Sau đó, tổchức cũng sẽ có số BTC gấp 1,198 lần, có thể được coi là được chia thành hai phần: BTCban đầu và 0,198x bổ sung. Do đó, tình huống này chính xác tương đương với tài trợ,nhưng có một điểm khác biệt quan trọng: tổ chức nắm giữ hoàn toàn BTC và do đó không

được khuyến khích để hỗ trợ giá trị của đơn vị ether.

Mô hình tăng trưởng nguồn cung tuyến tính vĩnh viễn làm giảm rủi ro mà một số người coilà tập trung quá nhiều của cải vào Bitcoin và mang lại cho các cá nhân sống trong thời đạihiện tại và tương lai cơ hội hợp lý để có được các đơn vị tiền tệ, đồng thời duy trì động cơmạnh mẽ để có được và ether vì "tỷ lệ tăng trưởng cung" theo phần trăm vẫn có xu hướngbằng không theo thời gian. Chúng tôi cũng đưa ra giả thuyết rằng vì tiền xu luôn bị mất theothời gian do bất cẩn, chết chóc, v.v. và tổn thất tiền xu có thể được mô phỏng theo tỷ lệphần trăm của tổng cung mỗi năm, nên tổng cung tiền tệ đang lưu thông trên thực tế cuốicùng sẽ ổn định ở một giá trị bằng đợt phát hành hàng năm chia cho tỷ lệ lỗ (ví dụ: với tỷ lệlỗ 1%, khi nguồn cung đạt 26X thì 0,26X sẽ được khai thác và 0,26X bị mất mỗi năm, tạo ratrạng thái cân bằng).

Lưu ý rằng trong tương lai, có khả năng Ethereum sẽ chuyển sang mô hình bằng chứngcổ phần để bảo mật, giảm yêu cầu phát hành xuống khoảng từ 0 đến 0,05X mỗi năm.Trong trường hợp tổ chức Ethereum mất nguồn tài trợ hoặc vì bất kỳ lý do nào khác biếnmất, chúng tôi để ngỏ một "hợp đồng xã hội": bất kỳ ai cũng có quyền tạo ra một phiên bảnứng cử viên trong tương lai của Ethereum, với điều kiện duy nhất là số lượng ether phải lànhiều nhất bằng 60102216 * (1,198 + 0,26 * n) trong đó n là số năm sau khối gốc. Ngườisáng tạo có thể tự do bán cộng đồng hoặc chỉ định một số hoặc tất cả sự khác biệt giữamở rộng nguồn cung cấp theo hướng PoS và mở rộng nguồn cung tối đa cho phép để trảtiền cho sự phát triển. Các bản nâng cấp của ứng viên không tuân thủ hợp đồng xã hội cóthể được chuyển thành các phiên bản tuân thủ một cách chính đáng.

Tập trung

khai thác Thuật toán khai thác Bitcoin hoạt động bằng cách yêu cầu các thợ đào tính toánSHA256 trên các phiên bản được sửa đổi một chút của tiêu đề khối lặp đi lặp lại hàng triệulần, cho đến khi cuối cùng một nút đưa ra phiên bản có hàm băm nhỏ hơn mục tiêu (hiệntại là khoảng 2). Tuy nhiên, thuật toán khai thác này dễ bị ảnh hưởng bởi hai hình thức tập

trung. 192

Đầu tiên, hệ sinh thái khai thác đã bị chi phối bởi ASIC (mạch tích hợp dành riêng cho ứngdụng), chip máy tính được thiết kế cho và do đó hiệu quả hơn hàng nghìn lần đối với nhiệmvụ cụ thể của khai thác Bitcoin. Điều này có nghĩa là khai thác Bitcoin không còn là mộthoạt động theo đuổi phi tập trung và bình đẳng cao, đòi hỏi hàng triệu đô la vốn để tham

gia một cách hiệu quả. Thứ hai, hầu hết các thợ đào Bitcoin không thực sự thực hiện xácnhận khối cục bộ; thay vào đó, họ dựa vào một nhóm khai thác tập trung để cung cấp cáctiêu đề khối. Vấn đề này được cho là tồi tệ hơn: tính đến thời điểm viết bài này, ba nhómkhai thác hàng đầu kiểm soát gián tiếp khoảng 50% sức mạnh xử lý trong mạng Bitcoin,mặc dù điều này được giảm nhẹ bởi thực tế là các thợ đào có thể chuyển sang các nhómkhai thác khác nếu một nhóm khai thác hoặc liên minh cố gắng tấn công 51%.

Mục đích hiện tại của Ethereum là sử dụng một thuật toán khai thác trong đó các thợ đàođược yêu cầu tìm nạp dữ liệu ngẫu nhiên từ trạng thái, tính toán một số giao dịch đượcchọn ngẫu nhiên từ N khối cuối cùng trong chuỗi khối và trả về hàm băm của kết quả. Điềunày có hai lợi ích quan trọng. Đầu tiên, các hợp đồng Ethereum có thể bao gồm bất kỳ loạitính toán nào, vì vậy Ethereum ASIC về cơ bản sẽ là một ASIC để tính toán chung - tức là.CPU tốt hơn. Thứ hai, khai thác yêu cầu quyền truy cập vào toàn bộ blockchain, buộc cácthợ đào phải lưu trữ toàn bộ blockchain và ít nhất có khả năng xác minh mọi giao dịch. Điềunày loại bỏ nhu cầu về các nhóm khai thác tập trung; mặc dù các nhóm khai thác vẫn có thểphục vụ vai trò hợp pháp của việc loại bỏ tính ngẫu nhiên của việc phân phối phần thưởng,chức năng này có thể được phục vụ tốt như nhau bởi các nhóm ngang hàng mà không cókiểm soát trung tâm.

Mô hình này chưa được thử nghiệm và có thể có khó khăn trong quá trình tránh một số tốiưu hóa thông minh khi sử dụng thực thi hợp đồng làm thuật toán khai thác. Tuy nhiên, mộttính năng thú vị đáng chú ý của thuật toán này là nó cho phép bất kỳ ai "đầu độc giếng",bằng cách đưa một số lượng lớn các hợp đồng vào blockchain được thiết kế đặc biệt đểngăn chặn một số ASIC nhất định. Các khuyến khích kinh tế tồn tại cho các nhà sản xuấtASIC sử dụng một thủ thuật như vậy để tấn công lẫn nhau. Vì vậy, giải pháp mà chúng tôiđang phát triển cuối cùng là một giải pháp kinh tế thích ứng cho con người chứ không phảilà một giải pháp kỹ thuật thuần túy.

Khả năng mở rộng

Một mối quan tâm chung về Ethereum là vấn đề khả năng mở rộng. Giống như Bitcoin,Ethereum có một lỗ hổng là mọi giao dịch cần được xử lý bởi mọi nút trong mạng. VớiBitcoin, kích thước của blockchain hiện tại nằm ở khoảng 15 GB, tăng khoảng 1 MB mỗigiờ. Nếu mạng Bitcoin xử lý 2000 giao dịch của Visa mỗigiây, nó sẽ tăng 1 MB mỗi ba giây (1 GB mỗi giờ, 8 TB mỗi năm). Ethereum có khả năng

chịu một mô hình tăng trưởng tương tự, tồi tệ hơn bởi thực tế là sẽ có nhiều ứng dụng trênblockchain Ethereum thay vì chỉ là một loại tiền tệ như trường hợp của Bitcoin, nhưng đượccải thiện bởi thực tế là các nút đầy đủ của Ethereum cần phải lưu trữ chỉ trạng thái thay vìtoàn bộ lịch sử blockchain.

Vấn đề với kích thước blockchain lớn như vậy là rủi ro tập trung. Nếu kích thước blockchaintăng lên, chẳng hạn như 100 TB, thì kịch bản có khả năng xảy ra là chỉ một số lượng rấtnhỏ các doanh nghiệp lớn sẽ chạy các nút đầy đủ, với tất cả người dùng thường xuyên sửdụng các nút SPV nhẹ. Trong tình huống như vậy, có thể nảy sinh mối lo ngại rằng các nútđầy đủ có thể kết hợp với nhau và tất cả đều đồng ý gian lận theo một cách nào đó có lợi(ví dụ: thay đổi phần thưởng khối, tự nhận BTC). Các nút sáng sẽ không có cách nào pháthiện ra điều này ngay lập tức. Tất nhiên, ít nhất một nút đầy đủ trung thực có thể sẽ tồn tạivà sau một vài giờ thông tin về gian lận sẽ được truyền ra qua các kênh như Reddit, nhưngtại thời điểm đó sẽ là quá muộn: người dùng bình thường sẽ tổ chức nỗ lực đưa vào danhsách đen các khối đã cho, một vấn đề phối hợp lớn và có khả năng không khả thi trên quymô tương tự như việc thực hiện một cuộc tấn công 51% thành công. Trong trường hợp củaBitcoin, đây hiện là một vấn đề, nhưng tồn tại một sửa đổi blockchain được đề xuất bởiPeter Todd↗ sẽ làm giảm bớt vấn đề này.

Trong thời gian tới, Ethereum sẽ sử dụng hai chiến lược bổ sung để đối phó với vấn đề này.Đầu tiên, do các thuật toán khai thác dựa trên blockchain, ít nhất mỗi người khai thác sẽ bịbuộc phải là một nút đầy đủ, tạo ra một giới hạn thấp hơn về số lượng nút đầy đủ. Tuynhiên, thứ hai và quan trọng hơn, chúng tôi sẽ bao gồm một gốc cây trạng thái trung giantrong blockchain sau khi xử lý mỗi giao dịch. Ngay cả khi xác thực khối là tập trung, miễn làtồn tại một nút xác minh trung thực, vấn đề tập trung có thể được giải quyết thông qua mộtgiao thức xác minh. Nếu người khai thác xuất bản một khối không hợp lệ, khối đó phảiđược định dạng sai hoặc trạng thái S [n] không chính xác. Vì S [0] được biết là đúng, phảicó một số trạng thái đầu tiên S [i] không đúng trong đó S [i-1] là đúng. Nút xác minh sẽ cungcấp chỉ số i, cùng với "bằng chứng về tính không hợp lệ" bao gồm tập con của các nút trêncây Patricia cần xử lý APPLICY (S [i-1], TX [i]) -> S [i]. Các nút có thể sử dụng các nútPatricia đó để chạy phần tính toán đó và thấy rằng S [i] được tạo ra không khớp với S [i] đãcung cấp.

Một cuộc tấn công khác, tinh vi hơn, sẽ liên quan đến việc những kẻ khai thác độc hại xuấtbản các khối chưa hoàn chỉnh, do đó, thông tin đầy đủ thậm chí không tồn tại để xác định

liệuhay khôngcác khối có hợp lệ. Giải pháp cho điều này là một giao thức phản hồi thách thức: các nútxác minh đưa ra "thử thách" dưới dạng chỉ số giao dịch mục tiêu và khi nhận được mộtnút, một nút nhẹ sẽ coi khối là không đáng tin cậy cho đến khi một nút khác, cho dù ngườikhai thác hay người xác minh khác, cung cấp một tập hợp con của các nút Patricia nhưmột bằng chứng về tính hợp lệ.

Kết luận

Giao thức Ethereum ban đầu được hình thành như một phiên bản nâng cấp của tiền điệntử, cung cấp các tính năng nâng cao như ký quỹ trên blockchain, giới hạn rút tiền, hợpđồng tài chính, thị trường cờ bạc và những thứ tương tự thông qua một ngôn ngữ lập trìnhcó tính tổng quát hóa cao. Giao thức Ethereum sẽ không trực tiếp "hỗ trợ" bất kỳ ứngdụng nào, nhưng sự tồn tại của ngôn ngữ lập trình hoàn chỉnh Turing có nghĩa là về mặt lýthuyết, các hợp đồng tùy ý có thể được tạo cho bất kỳ loại giao dịch hoặc ứng dụng nào.Tuy nhiên, điều thú vị hơn về Ethereum là giao thức Ethereum không chỉ đơn thuần là tiềntệ. Các giao thức xung quanh việc lưu trữ tệp phi tập trung, tính toán phi tập trung và thịtrường dự đoán phi tập trung, trong số hàng chục khái niệm khác như vậy, có tiềm năngtăng đáng kể hiệu quả của ngành công nghiệp tính toán và cung cấp một sự thúc đẩy lớncho các giao thức ngang hàng khác bằng cách thêm lần đầu tiên một tầng kinh tế. Cuốicùng, cũng có một loạt các ứng dụng đáng kể không liên quan gì đến tiền bạc.

Khái niệm về một chức năng chuyển đổi trạng thái tùy ý được thực hiện bởi giao thứcEthereum cung cấp cho một nền tảng có tiềm năng duy nhất; thay vì là một giao thứckhép kín, mục đích duy nhất dành cho một loạt ứng dụng cụ thể trong lưu trữ dữ liệu, cờbạc hoặc tài chính, Ethereum được thiết kế mở và chúng tôi tin rằng nó cực kỳ phù hợpđể đóng vai trò là nền tảng lớp cho một số lượng rất lớn các giao thức tài chính và phi tàichính trong những năm tới.

Notes và đọc thêm

ghi chú

1. Một độc giả tinh vi có thể nhận thấy rằng trong thực tế, một địa chỉ Bitcoin là băm củakhóa đường cong elliptic công cộng, và không phải là khóa công khai của chính nó.Tuy nhiên, trên thực tế, thuật ngữ mật mã hoàn toàn hợp pháp để chỉ mã băm pubkeynhư một khóa công khai. Điều này là do tiền mã hóa của Bitcoin có thể được coi là mộtthuật toán chữ ký số tùy chỉnh, trong đó khóa công khai bao gồm băm của ECCpubkey, chữ ký bao gồm ECC pubkey được nối với chữ ký ECC và thuật toán xác minhliên quan đến việc kiểm tra ECC pubkey trong chữ ký chống lại mã băm pubkey ECCđược cung cấp dưới dạng khóa công khai và sau đó xác minh chữ ký ECC đối với mãECC pubkey.

2. Về mặt kỹ thuật, trung vị của 11 khối trước.

3. Giao thức Ethereum nên càng đơn giản càng tốt, nhưng có thể cần mức độ phức tạpkhá cao, chẳng hạn như mở rộng quy mô, để nội bộ hóa chi phí lưu trữ, băng thông và I/ O, để bảo mật, quyền riêng tư, minh bạch, vv Trong trường hợp phức tạp là cần thiết,tài liệu phải rõ ràng, ngắn gọn và cập nhật nhất có thể để một người nào đó hoàn toànchưa qua học về Ethereum có thể học nó và trở thành một chuyên gia.

4. Xem Pamàu vàngper↗ cho Máy ảo Ethereum (hữu ích như một thông số kỹ thuật vàlàm tài liệu tham khảo để xây dựng một ứng dụng khách Ethereum từ đầu), trong khicũng có nhiều chủ đề trong Ethereum wiki↗ , chẳng hạn như phát triển sharding,phát triển cốt lõi, phát triển dapp, nghiên cứu, Casper R & D và các giao thức mạng.Để nghiên cứu và có thể triển khai trong tương lai, có ethresear.ch↗ .

5. Một cách khác để diễn đạt điều này là trừu tượng. Các roadmamới nhấtp↗ đang lênkế hoạch thực thi trừu tượng, cho phép các công cụ thực thi không nhất thiết phảituân theo một đặc điểm kỹ thuật chính tắc, nhưng ví dụ, nó có thể được điều chỉnhcho một ứng dụng cụ thể, cũng như một phân đoạn. (Sự không đồng nhất này củacác công cụ thực thi không được nêu rõ ràng trong lộ trình. Ngoài ra còn có shardingkhông đồng nhất, được Vlad Zamfir lên ý tưởng.)

6. Về nội bộ, 2 và "CHARLIE" đều là số, với phần sau nằm trong cơ sở big-endian 256

256 sự đại diện. Các số có thể ít nhất là 0 và nhiều nhất là 2 -1.

Đọc thêm

1. Giá trị nội tại↗

2. Thông minh property↗

3. Hợp đồng thông minh↗4. B-tiền↗

5. có thể tái sử Pmái nhàdụng↗

6. an toàn proptiêu đềertyvới chủ sở hữu authority↗

7. Bitcoin trắngpaper↗

8. Namecoin↗

9. Hình tam giác của Zooko↗

10. Đồng tiền màu trắngpaper↗

11. Mastercoin trắngpaper↗

12. Phân cấpcor tựpvăn tếtrị, Bitcoin Magazine↗

13. simplified pXác minhayment↗

14. Merkle tree↗

15. Cây Patricia↗

16. GHOST↗

17. StorJ và Đặc vụ tự trị, Jeff Garzik↗

18. Mike Hearn trên Smart Property tại Turing Festival↗

19. Ethereum RLP↗

20. Cây Ethereum Merkle Patricia↗

21. Peter Todd trên cây sum suê Merkle↗

Để biết lịch sử của sách trắng, hãy xem https:

//github.com/ethereum/wiki/blob/old-before-deleting-all-filesEthereum, giống như nhiều dự án phần

mềm nguồn mở, do cộng đồng phát triển, đã phát triển kể từ khi nó ban đầu trong