Ethereum Năm Năm: Thức Tỉnh Từ Niết Bàn
Lưu ý của biên tập viên: Bài viết này đến từUnitimes(ID:Uni-times), được xuất bản với sự cho phép.
Lưu ý của biên tập viên: Bài viết này đến từ
"The Prehistory of the Ethereum Protocol" của Vitalik Buterin, dịch bởi: Nabaier
“Ethereum đã 5 tuổi! "Tác giả: Ethereum Foundation, dịch: Johnny
tiêu đề phụ
Khi blockchain một lần nữa lọt vào tầm nhìn của công chúng và nhận được sự quan tâm chưa từng có từ những gã khổng lồ công nghệ, Ethereum đã trở thành một con tàu khổng lồ không thể bỏ qua trong lĩnh vực blockchain. Trong thời đại hỗn loạn của sự tăng trưởng vốn vô nguyên tắc và tàn bạo, các nhà phát triển và cộng đồng Ethereum đã luôn chăm sóc cẩn thận cho con tàu nhỏ này, giữ một hướng đi ổn định và nâng cấp nó thành một thế hệ tàu khổng lồ trên đường đi.
Ngày 30 tháng 7 năm 2020 không chỉ là ngày kỷ niệm 5 năm của Ethereum mà còn là ngày được mong đợi: vài ngày nữa, mạng thử nghiệm của Ethereum 2.0 sẽ chính thức ra mắt, đánh dấu việc Ethereum cách máy tính thế giới một bước. Tính đến thời điểm hiện tại, hơn 92% tiến độ ra mắt của mạng thử nghiệm Ethereum 2.0 đã được hoàn thành.
tiêu đề phụ
Thảm khốc
Vào ngày 17 tháng 6 năm 2016, Vitalik, người sáng lập Ethereum, đã đưa ra một cảnh báo khẩn cấp trên Reddit, thông báo rằng "DAO đã bị tin tặc tấn công, tất cả các nền tảng giao dịch được yêu cầu ngay lập tức đình chỉ giao dịch ETH/DAO cũng như gửi và rút tiền". Cuộc chiến tấn công và phòng thủ kéo dài một tháng này đã kết thúc với việc phân chia chuỗi khối Ethereum thành ETH (tiếp tục với tên "Ethereum") và ETC (Ethereum Classic). Sau khi trải qua sự cố The DAO, Ethereum đã không thể thoát khỏi câu hỏi về "tập trung hóa" trong một thời gian dài và bị bao vây bởi các cộng đồng bên ngoài khác.
Lễ kỷ niệm của người dân ngày nay dường như đã quên những bài học của ngày hôm qua. Trong tương lai, kẻ thù lớn nhất của Ethereum không phải từ bên ngoài, mà từ chính bên trong. Đảm bảo rằng mọi mô-đun chi tiết của tàu sân bay hoạt động tốt khó hơn nhiều so với việc phòng thủ trước kẻ thù nước ngoài.
tương ứng
Sau khi Ethereum ra đời, các thành viên trong nhóm sáng lập dần dần chuyển trọng tâm sang một lĩnh vực rộng lớn hơn, hoặc cống hiến hết mình để mở rộng hệ sinh thái của Ethereum, hoặc cống hiến hết mình để khám phá các công nghệ mới và trở thành đối thủ cạnh tranh của Ethereum. Ngày nay, ngoài Vitalik, người vẫn đang tập trung vào sự phát triển của Ethereum, những người sáng lập khác đang làm việc trên khung xã hội Ethereum Akasha (Mihai Alisie), Ví Jaxx (đã từ chức, Anthony Dilorio), chuỗi công khai Cardano (Charles Hoskinson), Polkadot và Web3 Foundation Will (Gỗ Gavin).
tiêu đề phụhttps://vitalik.cacòn tiếp
Đã viết một bài báo đánh giá "Ethereum được sinh ra như thế nào". Nhân dịp sinh nhật lần thứ năm của Ethereum, chúng ta cũng có thể xem lại "Lịch sử của Giao thức Ethereum" này.
Bài viết này là một đoạn trích từ "Ideal: The Genesis of Ethereum's Blockchain" được viết bởi Vitalik Buterin và được dịch và xuất bản bởi Lingtai Technology và Unicorn Times. Đồng thời, tôi xin chân thành cảm ơn mọi nhà phát triển, dịch giả và nhà truyền giáo trong cộng đồng Ethereum, nhờ các bạn mà thế giới blockchain không còn đơn điệu nữa.
tiêu đề phụ
Tiền sử của giao thức Ethereum
(14-09-2017)
Lưu ý của biên tập viên: Bài viết này là hồi ức của Vitalik về quá trình phát triển của giao thức Ethereum, kể câu chuyện về giao thức Ethereum từ khi hình thành đến phát hành và lặp lại ban đầu.
Mặc dù các ý tưởng đằng sau giao thức Ethereum hiện tại phần lớn đã ổn định trong hai năm qua, nhưng ý tưởng hiện tại và hình thức hoàn chỉnh của Ethereum không hình thành chỉ sau một đêm. Sau khi ra mắt chuỗi khối Ethereum, giao thức của nó đã trải qua một loạt các diễn biến và quyết định quan trọng. Bài viết này nhằm mục đích xem xét sự phát triển của giao thức Ethereum từ khi bắt đầu cho đến khi phát hành. Đối với công việc mở rộng được thực hiện bởi Geth, cpethereum, pyethereum và EthereumJ trong quá trình triển khai giao thức, cũng như ứng dụng và lịch sử kinh doanh của hệ sinh thái Ethereum, nó sẽ nằm ngoài phạm vi của bài viết này.
Cũng nằm ngoài phạm vi là lịch sử của Casper và nghiên cứu sharding. Không còn nghi ngờ gì nữa, chúng tôi có thể viết thêm nhiều bài thảo luận về các điểm khác nhau mà Vlad, Gavin, bản thân tôi và những người khác đã tạo ra và loại bỏ, bao gồm bằng chứng công việc, đa chuỗi phụ trợ, siêu khối, chuỗi bóng tối (có thể nói là tiền thân của Plamsa), sợi chuỗi và các phiên bản lặp lại khác nhau của Casper, cũng như cơ chế khuyến khích được đề xuất của Vlad và bản chất của nó đối với những người tham gia giao thức đồng thuận Sự phát triển nhanh chóng của các ý tưởng lý luận. Bản thân câu chuyện đằng sau những điểm này đủ phức tạp để xứng đáng có một bài viết khác. Vì vậy, chúng tôi sẽ không thảo luận về chúng bây giờ.
Hãy bắt đầu với phiên bản sớm nhất. Phiên bản này cuối cùng đã trở thành Ethereum, nhưng vào thời điểm đó nó thậm chí còn không được gọi là Ethereum. Khi tôi đến thăm Israel vào tháng 10 năm 2013, tôi đã dành nhiều thời gian với nhóm Mastercoin và thậm chí còn đề nghị họ thêm một số tính năng nhất định. Sau khi suy nghĩ kỹ về những gì họ đã làm, tôi đã gửi cho nhóm một đề xuất để làm cho giao thức của họ trở nên tổng quát hơn và có thể hỗ trợ nhiều loại hợp đồng hơn mà không cần thêm một bộ tính năng lớn và phức tạp:
Cần lưu ý rằng phiên bản này rất khác so với tầm nhìn rộng lớn hơn của Ethereum trong giai đoạn sau: nó tập trung hoàn toàn vào công nghệ mà Mastercoin đang cố gắng vượt qua vào thời điểm đó, cụ thể là hợp đồng hai bên. Trong hợp đồng này, bên A và bên B cùng nhau đầu tư tiền, sau đó cả hai bên có thể rút tiền theo một số công thức được quy định trong hợp đồng (ví dụ: nội dung đặt cược là "nếu X xảy ra, hãy đưa tất cả tiền cho A; nếu không , đưa tất cả tiền cho B"). Ngôn ngữ kịch bản triển khai hợp đồng này không phải là Turing hoàn chỉnh.
Nhóm Mastercoin rất ấn tượng về điều này, nhưng họ không quan tâm đến việc từ bỏ mọi thứ họ đã làm để đi theo hướng này và tôi ngày càng tin rằng đây là lựa chọn đúng đắn. Vì vậy, vào khoảng tháng 12, một phiên bản thứ hai đã xuất hiện:
Trong bản phát hành này, bạn có thể xem kết quả của quá trình tái cấu trúc mở rộng được thực hiện. Phần lớn những kết quả này xuất hiện trong tâm trí tôi trong một chuyến đi bộ dài ở San Francisco vào tháng 11. Vào thời điểm đó, tôi nhận ra rằng các hợp đồng thông minh có tiềm năng trở nên hoàn toàn chung chung. So với ngôn ngữ kịch bản chỉ có thể mô tả đơn giản mối quan hệ giữa hai bên, bản thân hợp đồng là một tài khoản trưởng thành và có khả năng giữ, gửi và nhận tài sản, thậm chí có thể duy trì lưu trữ vĩnh viễn (tại thời điểm đó, lưu trữ vĩnh viễn được gọi là "bộ nhớ" và "bộ nhớ" tạm thời duy nhất là 256 thanh ghi). Chỉ là ngôn ngữ đã thay đổi từ máy ảo dựa trên ngăn xếp sang máy ảo dựa trên đăng ký phù hợp hơn với mong muốn của tôi. Tôi có một chút vấn đề với điều này, ngoại trừ việc nó có vẻ phức tạp hơn.
"Ether" có nghĩa đen là ether (nghĩa là nhiên liệu, tương đương với khí đốt). Sau khi hoàn thành mỗi bước tính toán, số dư của hợp đồng được yêu cầu bởi một giao dịch sẽ bị giảm đi một số. Nếu số tiền của hợp đồng cạn kiệt, thì quá trình thực hiện sẽ dừng lại. Lưu ý rằng cơ chế người nhận trả tiền này có nghĩa là bản thân hợp đồng phải yêu cầu người gửi trả một khoản phí cho hợp đồng. Nếu khoản phí chưa được nhận, việc thực hiện sẽ bị thu hồi ngay lập tức. Phiên bản giao thức này chỉ định giới hạn 16 bước thực hiện miễn phí, cho phép các hợp đồng từ chối các giao dịch không trả phí.
Tính đến thời điểm này, giao thức Ethereum hoàn toàn do một mình tôi xây dựng. Tuy nhiên, kể từ thời điểm này, những người chơi mới bắt đầu tham gia trại Ethereum. Người chơi nổi bật nhất về mặt thỏa thuận cho đến nay là Gavin, người đã bắt đầu liên hệ với tôi vào tháng 12 năm 2013 qua tin nhắn riêng trên about.me.
Jeffrey Wilcke, nhà phát triển chính của ứng dụng khách Go (lúc đó được gọi là "ethereal"), cũng liên hệ với tôi vào khoảng thời gian đó và bắt đầu lập trình. Mặc dù những đóng góp của anh ấy nhiều hơn trong việc phát triển khách hàng hơn là nghiên cứu giao thức.
Những đóng góp ban đầu của Gavin đã tăng gấp đôi. Đầu tiên, bạn có thể nhận thấy rằng mô hình yêu cầu hợp đồng trong thiết kế ban đầu là không đồng bộ: mặc dù hợp đồng A có thể tạo giao dịch nội bộ cho hợp đồng B ("giao dịch nội bộ" là thuật ngữ Ethereum: ban đầu chúng chỉ được gọi là "giao dịch") , sau đó được gọi là "giao dịch" thành "cuộc gọi tin nhắn" hoặc "cuộc gọi"). Việc thực hiện giao dịch nội bộ sẽ không bắt đầu cho đến khi việc thực hiện giao dịch đầu tiên hoàn tất. Điều này có nghĩa là các giao dịch không thể sử dụng các giao dịch nội bộ như một cách để lấy thông tin từ các hợp đồng khác; để lấy thông tin từ các hợp đồng khác, bạn chỉ có thể sử dụng mã lệnh EXTRO (giống như SLOAD mà bạn sử dụng để đọc bộ lưu trữ hợp đồng khác), nhưng mã lệnh này sau đó được Xóa với sự hỗ trợ của Gavin và những người khác.
Gavin đã thực hiện một thay đổi rất tinh tế trong tầm nhìn của Ethereum theo một cách lớn: từ một nền tảng để xây dựng tiền có thể lập trình - một nền tảng với các hợp đồng dựa trên chuỗi khối có thể chứa tài sản kỹ thuật số và thực hiện chuyển khoản được thiết lập sẵn theo các quy tắc - thành một nền tảng chung nền tảng điện toán. Thay đổi này bắt đầu với một thay đổi nhỏ về trọng tâm và thuật ngữ cho Ethereum, và sau đó khi chúng tôi chấp nhận tích hợp Web 3 (coi Ethereum là một phần của bộ công nghệ phi tập trung, hai cái còn lại là Whisper và Swarm, Hình 1) ngày càng được nhấn mạnh và hiệu ứng này cũng liên tục được củng cố.
Hình 1
Khoảng đầu năm 2014, chúng tôi cũng đã thực hiện một số thay đổi dựa trên đề xuất từ những người khác. Sau khi Andrew Miller và cộng sự đưa ra ý tưởng quay trở lại kiến trúc dựa trên ngăn xếp, cuối cùng chúng tôi đã quay trở lại (Hình 2).
Hình 2
Mô tả hình ảnh
Hình 2
Charles Hoskinson đề xuất rằng chúng ta nên chuyển từ SHA256 của Bitcoin sang SHA3 mới hơn (hay chính xác hơn là keccak256). Mặc dù nó đã được tranh luận trong một thời gian, nhưng các cuộc thảo luận với Gavin, Andrew và những người khác đã xác định rằng kích thước của các giá trị trên ngăn xếp nên được giới hạn ở 32 Byte. Một giải pháp thay thế—các số nguyên không giới hạn—vẫn đang được xem xét vì vấn đề với nó là rất khó để tìm ra lượng gas cần thiết để thực hiện phép cộng, phép nhân và các hoạt động khác.
Trở lại vào tháng 1 năm 2014, thuật toán khai thác mà chúng tôi nghĩ đến đầu tiên có tên là Dagger:
Dao găm được đặt tên theo Đồ thị theo chu kỳ có hướng (DAG). DAG là một cấu trúc toán học được sử dụng trong thuật toán. Ý tưởng là cứ sau N khối, sẽ có một DAG giả ngẫu nhiên mới được tạo bởi hạt giống. Hơn nữa, lớp dưới cùng của DAG sẽ là một tập hợp các nút cần được lưu trữ trong hàng tỷ byte. Tuy nhiên, trong DAG, việc tạo bất kỳ giá trị riêng lẻ nào chỉ yêu cầu tính toán vài nghìn mục nhập. Tính toán dao găm bao gồm việc lấy một số giá trị nhất định ở bất kỳ đâu trong tập dữ liệu cơ bản này, sau đó băm các giá trị đó lại với nhau. Điều này có nghĩa là có một cách nhanh chóng để thực hiện các phép tính dao găm - đã lưu trữ dữ liệu trong bộ nhớ và sau đó theo cách chậm nhưng không tốn nhiều bộ nhớ - để tạo lại từ DAG mỗi bit bạn cần tìm nạp giá trị từ đầu.
Mục đích của thuật toán này là có cùng tính chất giới hạn bộ nhớ như các thuật toán phổ biến lúc bấy giờ, như thuật toán Scrypt, nhưng vẫn thân thiện với các client nhẹ. Công cụ khai thác sẽ sử dụng các phương pháp nhanh, do đó, việc khai thác của họ sẽ bị giới hạn bởi băng thông bộ nhớ (về mặt lý thuyết, bộ nhớ ở cấp độ người tiêu dùng được tối ưu hóa đủ để tối ưu hóa thêm với ASIC là rất khó), nhưng các ứng dụng khách nhẹ có thể được thực hiện theo cách chậm và dung thứ cho bộ nhớ . Các phương pháp nhanh có thể mất vài phần triệu giây, trong khi các phương pháp chậm và thân thiện với bộ nhớ có thể mất một phần nghìn giây, vì vậy điều này vẫn khả thi đối với các máy khách nhẹ.
Từ đây, thuật toán đã trải qua một số thay đổi trong quá trình phát triển của Ethereum. Ý tưởng tiếp theo là Adaptive Proof of Work. Trong sơ đồ này, bằng chứng công việc sẽ liên quan đến việc thực hiện các hợp đồng Ethereum được chọn ngẫu nhiên và có một cách thông minh để chống lại ASIC: nếu ASIC được phát triển, thì các công ty khai thác cạnh tranh sẽ có động cơ tạo và phát hành hợp đồng mà ASIC không có. giỏi thực hiện. Không có ASIC nào có thể được sử dụng cho máy tính thông thường vì nó chỉ là một CPU. Do đó, chúng ta có thể tận dụng các loại khuyến khích đối nghịch này để triển khai bằng chứng công việc về cơ bản thực hiện tính toán cho mục đích chung.
Ý tưởng sau đó đã sụp đổ vì một lý do đơn giản. Lý do này là một cuộc tấn công tầm xa. Kẻ tấn công có thể xây dựng chuỗi bắt đầu từ khối 1 và tạo chuỗi chỉ bằng các hợp đồng đơn giản. Cần lưu ý rằng kẻ tấn công có thể thiết kế phần cứng đặc biệt cho hợp đồng đơn giản này, để chuỗi tấn công có thể nhanh chóng bắt kịp chuỗi chính. Vì vậy, ... trở lại hình vuông một.
Thuật toán tiếp theo được gọi là "các mạch ngẫu nhiên" và bạn có thể tìm thấy mô tả của thuật toán này trong tài liệu Google. Thuật toán này do tôi và Vlad Zamfir đề xuất và được phân tích bởi Matthew Wampler-Doty và những người khác. Ý tưởng của thuật toán này là mô phỏng tính toán chung trong thuật toán khai thác bằng cách thực hiện một mạch tạo giả ngẫu nhiên. Lần này, không có bất kỳ bằng chứng vững chắc nào cho thấy điều gì đó dựa trên những nguyên tắc này sẽ không hiệu quả. Nhưng các chuyên gia phần cứng máy tính mà chúng tôi đã nói chuyện vào năm 2014 đều rất bi quan. Matthew Wampler-Doty đã đề xuất một giải pháp SAT dựa trên bằng chứng công việc, nhưng giải pháp này cũng bị từ chối.
Cuối cùng, sau một hồi suy nghĩ, chúng tôi đã nghĩ ra thuật toán Dagger Hashimoto, đôi khi được gọi đơn giản là Dashimoto. Thuật toán này mượn nhiều ý tưởng từ Hashimoto. Hashimoto là một cơ chế bằng chứng công việc được đề xuất bởi Thaddeus Dryja, cơ chế đi tiên phong trong khái niệm "bằng chứng công việc bị ràng buộc bởi I/O". Trong cơ chế này, yếu tố hạn chế chính đối với tốc độ khai thác không phải là tốc độ hoạt động băm mỗi giây, mà là số lượng megabyte RAM có thể truy cập mỗi giây. Tuy nhiên, Dagger Hashimoto kết hợp cơ chế bằng chứng công việc này với các bộ dữ liệu được tạo bởi một DAG thân thiện với máy khách nhẹ trong thuật toán Dagger. Sau nhiều lần điều chỉnh bởi chính tôi, Matthew, Tim và những người khác, những ý tưởng này cuối cùng đã được đưa vào thuật toán mà chúng tôi gọi là "Ethash".
Vào mùa hè năm 2014, ngoại trừ việc bằng chứng công việc sẽ không đạt đến giai đoạn Ethash cho đến đầu năm 2015, giao thức đã khá ổn định và thông số kỹ thuật bán chính thức của nó đã được xuất bản dưới dạng bài báo màu vàng của Gavin.
Vào tháng 8 năm 2014, tôi đã phát triển và giới thiệu cơ chế khối chú. Cơ chế này có thể cho phép chuỗi khối của Ethereum có thời gian tạo khối ngắn hơn và khả năng xử lý cao hơn, đồng thời giảm rủi ro tập trung hóa. Để biết phần giới thiệu về cơ chế khối chú, vui lòng tham khảo PoC6.
Sau khi thảo luận với nhóm BitShares, chúng tôi đã cân nhắc việc sử dụng heap làm cấu trúc dữ liệu hạng nhất - mặc dù cuối cùng chúng tôi đã không làm như vậy do thiếu thời gian và các cuộc kiểm tra bảo mật sau đó cũng như các cuộc tấn công DoS đã cho chúng tôi thấy rõ rằng việc triển khai tính năng này một cách an toàn vào thời điểm đó khó hơn nhiều so với những gì chúng tôi nghĩ.
Vào tháng 9, Gavin và tôi dự định thực hiện hai thay đổi lớn đối với thiết kế giao thức. Trước hết, ngoài cây trạng thái và cây giao dịch, mỗi khối cũng sẽ chứa một cây biên nhận. Cây biên nhận sẽ chứa hàm băm của nhật ký được tạo bởi mỗi giao dịch và gốc trạng thái trung gian. Nhật ký sẽ cho phép các giao dịch tạo đầu ra có thể được lưu trữ trong chuỗi khối và được truy cập bởi các ứng dụng khách nhẹ. Tuy nhiên, các tính toán trạng thái trong tương lai không có quyền truy cập vào các nhật ký này. Cách tiếp cận này cho phép các ứng dụng phi tập trung dễ dàng truy vấn các sự kiện như chuyển mã thông báo, mua hàng, lệnh trao đổi được tạo và khớp, đấu giá đang diễn ra, v.v.
Chúng tôi cũng xem xét các ý tưởng khác, chẳng hạn như trích xuất cây Merkle từ dấu vết thực hiện hoàn chỉnh của một giao dịch để cho phép chứng minh nội dung tùy ý. Sau khi thỏa hiệp giữa tính đơn giản và tính đầy đủ, chúng tôi đã chọn sử dụng nhật ký.
Thứ hai là ý tưởng về tiền biên dịch. Biên dịch trước giải quyết vấn đề cho phép tính toán mật mã phức tạp có sẵn trong EVM mà không phải xử lý chi phí EVM. Chúng tôi cũng đã đưa ra rất nhiều ý tưởng đầy tham vọng cho các hợp đồng bản địa. Theo những ý tưởng này, nếu các công ty khai thác có phương pháp thực hiện tốt hơn cho một số hợp đồng nhất định, thì họ sẽ bỏ phiếu để giảm giá gas của các hợp đồng này. Theo cách này, những hợp đồng có thể được thực hiện nhanh chóng bởi hầu hết các thợ đào sẽ đương nhiên có giá gas thấp hơn. Tuy nhiên, tất cả những ý tưởng này đã bị từ chối vì chúng tôi không thể đưa ra một cách an toàn về mặt kinh tế tiền điện tử để thực hiện nó. Kẻ tấn công luôn có thể tạo một số hợp đồng để thực hiện thao tác mã hóa với một cửa bẫy, sau đó phân phối cửa sập đó cho chính anh ta và bạn bè của họ để có thể thực hiện hợp đồng này nhanh hơn. Sau đó, kẻ tấn công bỏ phiếu hạ giá gas và sử dụng điều này để DoS mạng. Thay vào đó, chúng tôi đã chọn cách tiếp cận ít tham vọng hơn là chỉ định số lượng nhỏ được biên dịch trước trong giao thức cho các hoạt động phổ biến như hàm băm và sơ đồ chữ ký.
Gavin cũng là nhân vật chủ chốt trong việc hỗ trợ ban đầu cho ý tưởng phát triển các giao thức trừu tượng. Cái gọi là trừu tượng hóa giao thức là chuyển nhiều phần của giao thức, chẳng hạn như số dư của Ethereum, thuật toán chữ ký giao dịch, số ngẫu nhiên, v.v., vào chính giao thức dưới dạng hợp đồng. Mục tiêu cuối cùng về mặt lý thuyết của nó là đạt được mục tiêu trong đó toàn bộ giao thức Ethereum có thể được mô tả là thêm các lệnh gọi hàm vào một máy ảo với trạng thái được khởi tạo trước cụ thể. Chúng tôi không có đủ thời gian để kết hợp tất cả những ý tưởng này vào bản phát hành tiên tiến ban đầu, nhưng hy vọng những nguyên tắc này sẽ dần bắt đầu được tích hợp thông qua một số thay đổi trong "Constantinople", hợp đồng Casper và thông số kỹ thuật phân mảnh.
Tất cả đều được triển khai trong PoC 7. Giao thức không thực sự thay đổi nhiều sau PoC 7, ngoại trừ một số thay đổi nhỏ nhưng trong một số trường hợp là đáng kể. Những chi tiết này sẽ được công bố sau khi vượt qua kiểm toán bảo mật.
Đến đầu năm 2015, Jutta Steiner và những người khác đã tổ chức kiểm tra bảo mật trước khi phát hành, bao gồm kiểm tra mã phần mềm và kiểm tra học thuật. Kiểm toán mã phần mềm chủ yếu được triển khai bằng ngôn ngữ C++ và Go do Gavin và Jeffrey phụ trách. Mặc dù việc triển khai Pyethereum của tôi cũng thực hiện kiểm tra đơn giản. Trong số hai cuộc kiểm toán học thuật, một cuộc kiểm toán do Ittay Eyal (nổi tiếng vì đề xuất "khai thác ích kỷ") và cuộc kiểm toán kia do Andrew Miller và các thành viên khác của Least Authority thực hiện. Quá trình kiểm tra của Eyal dẫn đến một thay đổi giao thức nhỏ, theo đó các khối chú sẽ không được tính vào tổng giá trị độ khó của chuỗi. Cuộc kiểm toán của Least Authority tập trung nhiều hơn vào hợp đồng thông minh, tiết kiệm nhiên liệu và cây Patricia. Việc kiểm toán cũng dẫn đến một số thay đổi giao thức. Trong số đó, một thay đổi tương đối nhỏ là sử dụng sha3(addr) và sha3(key) làm giá trị khóa của cây thay vì sử dụng trực tiếp địa chỉ và giá trị khóa. Điều này sẽ khiến kẻ tấn công khó thực hiện các cuộc tấn công trong trường hợp xấu nhất vào cây.
Một vấn đề quan trọng khác mà chúng tôi đã thảo luận là cơ chế bỏ phiếu giới hạn gas. Vào thời điểm đó, chúng tôi đã lo ngại về sự thiếu tiến triển trong cuộc tranh luận về kích thước khối Bitcoin và muốn có một thiết kế linh hoạt trong Ethereum: một thiết kế có thể được điều chỉnh theo thời gian khi cần thiết. Nhưng thách thức là, các ràng buộc tối ưu là gì? Suy nghĩ ban đầu của tôi là có giới hạn động gấp 1,5 lần mức trung bình động hàm mũ dài hạn của mức sử dụng nhiên liệu thực tế. Do đó, về lâu dài, khối trung bình sẽ chiếm 2/3 dung lượng. Tuy nhiên, Andrew chứng minh rằng giới hạn này có thể bị khai thác theo một số cách—cụ thể là những người khai thác muốn tăng giới hạn chỉ cần bao gồm các giao dịch tiêu tốn nhiều gas nhưng mất ít thời gian xử lý trong các khối của riêng họ, do đó tạo ra các khối được tải đầy đủ mà không mất chi phí. Do đó, ít nhất là trong kết quả cuối cùng, mô hình bảo mật của cơ chế này tương đương với việc chỉ cho phép những người khai thác bỏ phiếu về giới hạn gas.
Sau một mini-hackathon với Gavin và Jeff, PoC 9 cuối cùng đã ra mắt vào tháng Ba. Nó được dự định là phiên bản cuối cùng của bằng chứng về khái niệm. Chúng tôi đã chạy mạng thử nghiệm có tên "Olympiad" trong 4 tháng. Testnet này sử dụng giao thức sẽ được sử dụng trong mainnet. Đồng thời, chúng tôi cũng thiết lập các kế hoạch dài hạn cho Ethereum. Vinay Gupta đã viết một bài báo - "Quá trình ra mắt Ethereum". Bài viết này mô tả 4 giai đoạn phát triển mạng chính Ethereum, đưa ra các tên tương ứng hiện đã quen thuộc với mọi người: "Biên giới", "Quê hương", "Thủ đô" và "Sự thanh thản".
Testnet "Olympic" đã chạy được 4 tháng. Trong 2 tháng đầu tiên, chúng tôi đã tìm thấy nhiều lỗi trong các phiên bản triển khai khác nhau và các vấn đề khác như lỗi đồng thuận cũng xảy ra. Nhưng đến khoảng tháng 6 mạng đã ổn định đáng kể. Vào tháng 7, chúng tôi đã quyết định đóng băng mã; vào ngày 30 tháng 7, mạng chính Ethereum đã chính thức được phát hành.
Lễ kỷ niệm sinh nhật từ Ethereum Foundation
chữ
chữ
chữ
chữ
chữ
chữ
Trong 5 năm này, Ethereum đã phát triển vượt ra ngoài phạm vi của bất kỳ nhà xây dựng, nhóm hoặc tổ chức nào, nhưng tôi hy vọng bạn sẽ tiếp tục giữ cho suy nghĩ của mình trôi chảy như mọi khi và tiếp tục làm việc cùng nhau để Ethereum đạt được mọi thứ mà tất cả chúng ta có thể mơ ước, và thậm chí nhiều hơn nữa. 🦄


