EIP-2537 là lệnh tiền biên dịch EVM được xác định thêm trong bản nâng cấp phân nhánh Pectra mới nhất. Lệnh này bổ sung nhiều chức năng tính toán của đường cong BLS12-381 cho EVM, chẳng hạn như tính toán cặp trên miền đường cong.
EIP-2573 được đề xuất lần đầu vào năm 2020 và đến năm 2025 mới được xác nhận đưa vào nâng cấp Ethereum. Bài viết này chủ yếu giới thiệu lịch sử quản trị của EIP-2537, khám phá lý do tại sao phải mất 5 năm để đưa đề xuất này vào nâng cấp.
Bối cảnh đề xuất
Vào tháng 1 năm 2017, Vitalik Buterin đã lần đầu tiên giới thiệu các thuật toán đối đôi và đường cong alt_bn128 trong Exploring Elliptic Curve Pairings. Sau đó, vào tháng 2 năm 2017, Vitalik Buterin và Christian Reitwiessner đã đề xuất các đề xuất EIP-196 và EIP-197, nội dung đề xuất là thêm hỗ trợ tính toán đường cong alt_bn128 vào EVM.
Trong bản nâng cấp Byzantium vào tháng 10 năm 2017, đã chính thức đưa vào đường cong alt_bn128. Nói một cách đơn giản, alt_bn128 lần đầu tiên thực hiện tính toán cặp miền đường cong trong EVM, điều này cho phép xác minh chứng minh ZK-Snarks có thể hoàn thành trong EVM.
Nhưng với sự phát triển của mật mã, vào tháng 11 năm 2017, đội phát triển zcash đã lần đầu tiên đưa ra đường cong BLS12-381 trong BLS12-381: New zk-SNARK Elliptic Curve Construction. So với alt_bn128, BLS12-381 có độ an toàn cao hơn và hiệu suất tốt hơn. Nhiều giao thức blockchain đã sử dụng đường cong BLS12-381 và loại bỏ đường cong alt_bn128.
Vào tháng 5 năm 2018, Justin Drake đã công bố bài viết "Tổng hợp chữ ký thực tiễn với BLS" trên ethresear, chỉ ra rằng trong tương lai, các nâng cấp PoS và phân đoạn của Ethereum có thể sử dụng thuật toán ký đa BLS dựa trên đường cong BLS12-381. Khi đó, các nhà nghiên cứu Ethereum hy vọng sử dụng EIP-1011 để giải quyết vấn đề lớp đồng thuận, nhưng giải pháp EIP-1011 chỉ có thể chứa tối đa 900 người xác nhận, do đó thiết lập quy mô đặt cược khổng lồ 1500 ETH cho mỗi người xác nhận. Với sự xuất hiện của kế hoạch ký đa BLS, EIP-1011 đã rút lui khỏi sân khấu lịch sử. Thực tế chứng minh rằng, nâng cấp ETH2 sau này cuối cùng cũng đã sử dụng đường cong BLS12-381.
Cùng với sự phát triển của ETH2, BLS12-381 được sử dụng trong ETH2 đã bắt đầu được kêu gọi đưa vào tầng thực thi ETH. Vào tháng 2 năm 2020, một số nhà nghiên cứu đã đề xuất EIP-2537 và hy vọng rằng đề xuất này có thể được thử nghiệm cùng với mạng thử nghiệm ETH2. Tác giả của EIP-2537, Alex Stokes, đã kêu gọi đưa EIP-2537 vào đợt hard fork Berlin trong bài viết "What eth2 needs from eth1 over the next six months".
Thú vị là, tác giả của EIP-2537 cũng là đồng sáng lập của Matter Labs, và sản phẩm nổi tiếng nhất của Matter Labs chính là ZKSync.
Berlin hỗn loạn
Trước khi giới thiệu nội dung tiếp theo, chúng ta cần giới thiệu EIP-1962. EIP-1962 là đề xuất đầu tiên về tiền biên dịch cặp miền đường cong elip mà Matter Labs đưa ra vào tháng 4 năm 2019, đề xuất này hỗ trợ ba đường cong, đó là:
BLS12
BN
MNT4/6 (Ate pairing)
EIP này chuẩn bị tăng cường 10 lệnh tiền biên dịch một lần để xử lý các đường cong khác nhau. Tuy nhiên, sau khi đề xuất này ra đời, khá nhiều nhà phát triển đã đặt câu hỏi về việc đề xuất quá phức tạp khiến nhà phát triển khó thực hiện. Đồng thời, do EIP1962 rất tổng quát, việc gọi cũng rất phiền phức đối với các kỹ sư hợp đồng thông minh. Tất nhiên, với tư cách là người đề xuất EIP-1962, Matter Labs thực chất đã hoàn thành công việc phát triển thuật toán đường cong elip và cung cấp các triển khai tham chiếu bằng Rust / Go / C++.
Để giải quyết vấn đề EIP-1962, Matter Labs đã đề xuất nhiều EIP tách ra từ EIP-1962 vào tháng 2 năm 2020, tất cả các EIP này đều kế thừa một phần giao diện của EIP-1962. Các EIP này bao gồm:
EIP-2537 cung cấp hỗ trợ BLS12-381
EIP-2539 cung cấp hỗ trợ BLS12-377
PR#2541 cung cấp BLS12-377 (Zexe curve) hỗ trợ, nhưng lưu ý rằng đề xuất này cuối cùng không được cấp số EIP, không thể tìm thấy trên trang web tài liệu EIP.
Trong số các EIP này, quan trọng nhất là EIP-2537, vì lớp đồng thuận cũng sử dụng đường cong BLS12-381. Mục tiêu cốt lõi của cả EIP-1962 và EIP-2537 là thực hiện xác thực chữ ký BLS của lớp đồng thuận trong mạng chính. Vào thời điểm đó, ETH2 đang phát triển thiết kế hợp đồng gửi tiền cho lớp đồng thuận. Khi hợp đồng gửi tiền được thiết kế ban đầu, do lớp thực thi không bao gồm thuật toán xác thực BLS, nên hợp đồng gửi tiền sẽ không xác thực chữ ký; chữ ký BLS cụ thể sẽ được lớp đồng thuận xác thực sau khi người dùng gửi tiền. Nếu phát hiện không đúng (đối với các xác thực viên mới), việc gửi tiền sẽ thất bại, và ETH mà người dùng đã gửi sẽ bị mất.
Trong bối cảnh này, các nhà phát triển cốt lõi muốn giới thiệu BLS12-381 tiền biên dịch để thực hiện xác thực chữ ký trong hợp đồng gửi tiền, tránh khả năng mất mát tiền ETH2 của người dùng. Đây cũng là lý do mà nhiều nhà phát triển lúc đó quan tâm đến EIP-1962 và EIP-2537.
Khi EIP-2537 vừa được đề xuất, Vitalik ngay lập tức phát hiện một loạt vấn đề tồn tại trong EIP:
Các nghi ngờ này chỉ tập trung vào nội dung của tài liệu EIP, sau đó tác giả EIP đã phản hồi và thảo luận về vấn đề này. Tiếp theo, vào ngày 6 tháng 3 năm 2020, trong cuộc họp Ethereum Core Devs Meeting #82, các nhà phát triển cốt lõi của Ethereum đã thảo luận về EIP-2537. Trong cuộc họp này, Vitalik cho rằng EIP-2537 và các EIP tương tự rất hiệu quả cho việc chứng minh SNARK đệ quy và về lâu dài sẽ không làm tổn hại đến Ethereum. Đồng thời, cuộc họp cũng xác nhận vị trí ưu tiên của EIP-2537, tất cả các client đều đồng ý thực hiện EIP-2537 càng sớm càng tốt và có kế hoạch hoàn thành tất cả các phát triển trước khi nâng cấp Berlin.
Sau đó, EIP-2537 đã trở thành một nhiệm vụ có ưu tiên cao hơn. Vào ngày 20 tháng 3 năm 2020, trong cuộc họp Ethereum Core Devs Meeting #83, EIP-2537 vẫn là đề xuất được thảo luận đầu tiên. Cuộc họp này xác nhận rằng EIP-2537 thay thế EIP-1962 trở thành đề xuất BLS cốt lõi và trở thành danh sách EIP dự kiến cho bản nâng cấp Berlin ( tức Eligibility for Inclusion (EFI)).
Tại cuộc họp Ethereum Core Devs Meeting #84 vào tháng 4 năm 2020, cuộc họp đã chính thức đưa EIP-2537 vào nâng cấp hard fork Berlin, và xác định thời gian nâng cấp Berlin sẽ được thực hiện vào tháng 4 và thử nghiệm vào tháng 5 - 6. Đáng chú ý, trong cuộc thảo luận này, EIP-2537 được liệt kê là vấn đề ưu tiên hàng đầu.
Sau đó, EIP-2537 đã bước vào giai đoạn phát triển và thử nghiệm lớn, trong gần 20 cuộc họp nhà phát triển cốt lõi tiếp theo, mỗi cuộc họp đều liên quan đến việc thảo luận về EIP-2537. Tiếp theo, chúng ta có thể xem mỗi cuộc họp đã thảo luận những vấn đề gì liên quan đến EIP-2537.
Trong cuộc họp các nhà phát triển cốt lõi của Ethereum #85, Danno và Axic đã thảo luận về vấn đề mã hóa ABI của EIP-2537. Sau đó, các nhà phát triển cốt lõi đã đồng bộ hóa tình hình thực hiện hiện tại, trong đó do người đề xuất EIP-2537 là Matter Labs đã hoàn thành cơ bản việc thực hiện phiên bản Rust, nên khách hàng Besu tuyên bố đã cơ bản hoàn thành chức năng của EIP-2537, nhưng phía Geth cho biết hiện tại không ai đang làm việc cho việc thực hiện EIP-2537.
Trong cuộc họp nhà phát triển lõi Ethereum #86, các triển khai nút Ethereum khác nhau đã đồng bộ lại tình hình thực hiện EIP-2537, trong đó Geth cho biết đã hoàn thành một phần công việc, nhưng vẫn còn rất nhiều công việc chờ hoàn thành.
Trong cuộc họp các nhà phát triển lõi Ethereum #87, nội dung cốt lõi của cuộc họp các nhà phát triển lần này chính là vấn đề thực hiện EIP-2537. Các nhà phát triển Geth cho biết hiện tại có một PR dài 16000 dòng thực hiện EIP-2537, nhưng các nhà phát triển Geth không thể xác định liệu PR có an toàn và thực hiện hiệu quả EIP-2537 hay không, vì vậy các nhà phát triển chỉ có thể đánh giá tình trạng mã thông qua việc thử nghiệm mờ đơn giản.
Các lập trình viên Geth nói: "Vì vậy, phản ứng trực giác của tôi là không có khả năng Geth sẽ sẵn sàng với các hoạt động đường cong BLS cho việc ra mắt mainnet vào tháng Bảy." tức là Geth rất có khả năng sẽ không hoàn thành phát triển liên quan đến EIP-2537 trước thời gian dự kiến ở Berlin.
Hudson Jameson đề xuất tìm kiếm kỹ sư mật mã để hỗ trợ xem xét PR cho Geth, và đề xuất sử dụng mạng thử nghiệm để kiểm tra tính an toàn của việc triển khai EIP-2537. Bởi vì lúc này nhóm phát triển ETH2 cũng đang triển khai xác minh chữ ký BLS, nên nhóm ETH2 có thể tham gia vào việc kiểm tra.
Tại đây, chúng ta cần bổ sung một kiến thức nền, đó là PR triển khai EIP-2537 của Geth đã sử dụng rất nhiều mã lắp để đảm bảo hiệu quả, và phần mã lắp này rất khó đọc và hiểu. Vì vậy, Alex Vlasov đã đề nghị loại bỏ các tối ưu hóa mã lắp phức tạp trong PR để giảm bớt độ khó khi kiểm tra.
Chúng tôi đã giới thiệu một mục tiêu cốt lõi của EIP-2537 ở trên, đó là hỗ trợ hợp đồng gửi ETH2, nhưng trong cuộc họp lần này, các nhà phát triển hợp đồng gửi cho biết họ không sử dụng hợp đồng gửi EIP-2537 đã được kiểm toán, vì vậy một số nhà phát triển đề xuất tốt nhất là không nên phát hành một hợp đồng gửi sử dụng EIP-2537.
Cuối cùng, cuộc họp đã quyết định tăng cường mạng thử nghiệm YOLO, mà cốt lõi chính là thử nghiệm EIP-2537. Thực tế, trong cuộc họp này, chúng ta có thể thấy tầm quan trọng của EIP-2537 đã giảm đáng kể khi hợp đồng gửi tiền đã hoàn thành, trong khi các nhà phát triển Geth đã cho rằng EIP này rất có thể sẽ không thể được thực hiện trước khi nâng cấp Berlin. Dường như việc EIP-2537 không được Berlin chấp nhận đã trở thành một điều chắc chắn.
Tại cuộc họp các nhà phát triển Ethereum Core #88, các nhà phát triển Geth đã phát hiện ra rằng PR triển khai EIP-2537 gặp phải một loạt vấn đề, và họ cho biết cần phải thực hiện thêm kiểm tra và sửa chữa. Lúc này, trong hệ thống Geth có hai triển khai EIP-2537, một trong số đó bao gồm tối ưu hóa assembly, trong khi triển khai còn lại hoàn toàn được viết bằng ngôn ngữ go. Một số nhà phát triển đã đề xuất sử dụng trực tiếp phiên bản viết bằng ngôn ngữ go để giảm bớt độ khó trong việc kiểm tra mã.
Tại cuộc họp các nhà phát triển cốt lõi của Ethereum #89, một vấn đề nghiêm trọng hơn đã xảy ra, thử nghiệm YOLO gặp một số vấn đề, các nhà phát triển nghi ngờ rằng vấn đề là do chữ ký BLS gây ra, nhưng các nhà phát triển EIP2537 đã phản bác điều này, cho rằng vấn đề của mạng thử nghiệm không phải do chữ ký BLS gây ra. Tin tốt cho EIP-2537 là hợp đồng gửi tiền dựa trên EIP-2537 đã hoàn thành phát triển cơ bản, hợp đồng này đang chờ kiểm toán hợp đồng.
Tại cuộc họp các nhà phát triển lõi của Ethereum #90内,这次会议锁定了 7 月份上线 Berlin 升级的 DDL。当然,这次会议另一个有趣的论点是客户端多样性问题,在此次会议中,开发者主要讨论了 Geth 占据主导地位的情况,并且有开发者提议冻结当前 EIP 实现来降低其他客户端的开发成本。更加有趣的是,在 #91, một nhà phát triển đã đề xuất sử dụng giải pháp mô-đun để giảm chi phí phát triển nhằm tăng tính đa dạng của các máy khách. Nếu độc giả quan tâm đến sự đa dạng của máy khách Ethereum, có thể đọc biên bản của hai cuộc họp này.
Tại cuộc họp Ethereum Core Devs Meeting #92, 2537 vẫn được xác nhận là EIP cần thiết cho nâng cấp Berlin.
Trong cuộc họp Các nhà phát triển lõi Ethereum #96, dựa trên Celo đã đưa cả EIP-2537 và EIP-2539 vào bản nâng cấp hard fork của mạng lưới của họ, vì vậy Matter Labs hy vọng sẽ đưa EIP-2539, được đề xuất cùng với EIP-2537, vào mạng thử nghiệm YOLO v2 để thử nghiệm và đưa vào nâng cấp Berlin. Tuy nhiên, các nhà phát triển Geth phản đối, cho rằng EIP-2537 hiện tại vẫn chưa được thử nghiệm đầy đủ trong Geth. Cuối cùng, cuộc họp quyết định không thêm 2696 vào nâng cấp Berlin, để lại cho các cuộc thảo luận trong tương lai.
Trong cuộc họp các nhà phát triển cốt lõi của Ethereum #99, cuộc họp này đã quyết định loại bỏ EIP-2537 khỏi mạng thử nghiệm YOLO v3 và bản nâng cấp Berlin, lý do chính là EIP-2537 đã lãng phí quá nhiều thời gian của các nhà phát triển cốt lõi, dẫn đến việc phát triển các EIP khác trong bản nâng cấp Berlin bị cản trở. Yếu tố thứ yếu là quỹ Ethereum đã đề xuất EVM384 như một sự thay thế cho EIP-2537, EVM 384 cung cấp một giải pháp tính toán đường cong elliptic tổng quát hơn. Tuy nhiên, các nhà phát triển cốt lõi đã bày tỏ mối quan tâm về vấn đề an ninh trong cuộc thảo luận của cuộc họp.
Nội dung trên là quá trình đầu tiên của EIP-2537, chúng ta có thể thấy EIP-2537 là một trong những EIP quan trọng nhất trong nâng cấp Berlin, nhưng do vấn đề thực hiện mà cuối cùng nó đã bị loại bỏ. Cuối cùng, vào tháng 4 năm 2021, Ethereum đã hoàn thành nâng cấp Berlin, các EIP cốt lõi như EIP-2565 trong nâng cấp không phức tạp, có vẻ như nâng cấp Berlin hơi mỏng manh, điều này là do EIP-2537 phức tạp nhất đã bị loại khỏi nâng cấp Berlin.
phát triển tiếp theo
Như mọi người đã biết, mỗi lần nâng cấp Ethereum đều có một đề xuất cốt lõi, chẳng hạn như nâng cấp London sau nâng cấp Berlin đã giới thiệu đề xuất phí quan trọng nhất trong lịch sử Ethereum EIP-1559. Đối với EIP-2537, từng là một đề xuất cốt lõi, các lần nâng cấp tiếp theo rất khó để đưa đề xuất này vào.
Trong quá trình nâng cấp sau Berlin London, các nhà phát triển đã đồng bộ hóa sự phát triển hiện tại của EIP-2537 trong issues#369曾考虑在 London 升级中增加 EIP-2537。在Ethereum Core Devs Meeting #109 và tại thời điểm này đã giới thiệu một cuộc thảo luận về việc sử dụng khí cho EIP-2537 do sử dụng các thư viện khác để thực hiện EIP-2537. Đồng thời, một số nhà phát triển đã đề xuất thay thế EIP-2537 bằng EVM384. Tuy nhiên, #111内 Hội nghị các nhà phát triển cốt lõi Ethereum vào tháng 4 năm 2021, EIP-2537 đã được chuyển ra khỏi bản nâng cấp London do sự phức tạp. Sự phức tạp cốt lõi nằm ở việc thay thế các thư viện phụ thuộc của việc triển khai tiêu chuẩn EIP-2537, dẫn đến những thay đổi có thể xảy ra về giá khí đốt và một khoảng thời gian đáng kể để các triển khai máy khách khác nhau đánh giá lại mức tiêu thụ khí.
Vào tháng 6 năm 2021, đã chính thức đưa ra đề xuất EIP-2537 vào trong nâng cấp Shanghai trong issues#343. Tuy nhiên, cần lưu ý rằng sau nâng cấp London, thực tế nâng cấp Pairs hay còn gọi là The Merge đã chiếm rất nhiều thời gian của các nhà phát triển, các nhà phát triển tầng thực thi cần phải viết rất nhiều mã để thực hiện nâng cấp PoS. Vào tháng 9 năm 2022, nâng cấp Pairs đã hoàn thành, các nhà phát triển tầng thực thi cuối cùng có cơ hội tiếp tục thảo luận về một số mục tiêu của nâng cấp Shanghai.
Vào tháng 11 năm 2022, cuộc họp các nhà phát triển Ethereum Core Devs #150 đã thảo luận ngắn gọn về việc có nên đưa EIP-2537 vào bản nâng cấp Shanghai hay không, nhưng các nhà phát triển cho rằng EIP-2537 cần phải bị hoãn lại, vì bản nâng cấp Shanghai chủ yếu tập trung vào việc hỗ trợ rút tiền PoS. Cuối cùng, EIP-2537 đã không được đưa vào bản nâng cấp Shanghai với chức năng rút tiền là trọng tâm.
Thậm chí tồi tệ hơn là bản nâng cấp Cancun vẫn chưa thảo luận về EIP-2537, vì cốt lõi của bản nâng cấp Cancun là hỗ trợ EIP-4844 cho các nút lớp thực thi. EIP-4844 cung cấp Blob cho Ethereum Layer 2 để thuận tiện cho việc sử dụng Ethereum làm lớp dữ liệu khả dụng.
Cuối cùng, trong cuộc họp các nhà phát triển Ethereum Core #181 vào tháng 2 năm 2024, các nhà phát triển đã thảo luận về việc đưa EIP-2537 vào bản nâng cấp Pectra, và vào thời điểm đó, các nhà phát triển cho rằng việc triển khai EIP-2537 không còn là vấn đề, chỉ còn một số vấn đề liên quan đến giá gas tiêu thụ.
Tại cuộc họp Ethereum Core Devs vào ngày 19 tháng 12 năm 2024, các nhà phát triển đã thảo luận về việc điều chỉnh giá của BLS precompile, nhà phát triển Geth Jared Wasinger đã đề xuất tăng chi phí gas lên 20%, và nhận được sự hỗ trợ từ nhóm Besu trong việc kiểm tra hiệu suất.
| Ngày | Sự kiện |
| --- | --- |
| Tháng 2 năm 2020 | Đề xuất EIP-1962 chính thức tách rời EIP-2537 |
| Tháng 4 năm 2020 - Tháng 10 năm 2020 | Cuộc họp của các nhà phát triển đã nhiều lần thảo luận về các vấn đề thực hiện EIP-2537, và cuối cùng đã bị từ bỏ trong nâng cấp Berlin do không thể thực hiện.
| Tháng 3 năm 2021 - Tháng 4 năm 2021 | Cuộc họp các nhà phát triển thảo luận về vấn đề chi phí gas EIP-2537, cuối cùng đã bị bỏ qua trong nâng cấp London do tính phức tạp |
| Tháng 11 năm 2022 | Cuộc họp của các nhà phát triển thảo luận về việc có nên đưa vào nâng cấp Shanghai hay không, không có kết quả |
| Tháng 2 năm 2024 | Các nhà phát triển cho rằng EIP-2537 không có vấn đề gì về việc thực hiện, nhưng vẫn còn một số vấn đề về chi phí gas, cho rằng có thể đưa vào bản nâng cấp Pectra |
| Tháng 12 năm 2024 - Tháng 1 năm 2025 | Cuộc họp các nhà phát triển thảo luận về mô hình tính toán chi phí cụ thể, chính thức giải quyết vấn đề chi phí EIP-2537 |
Có thể thấy, việc EIP có được đưa vào nâng cấp Ethereum hay không "tất nhiên phải dựa vào nỗ lực tự thân, nhưng cũng cần xem xét đến hành trình lịch sử". Mỗi lần nâng cấp Ethereum đều có chủ đề riêng của nó, giống như EIP-2537 từng là EIP quan trọng nhất trong nâng cấp Berlin, nhưng đã bị loại bỏ do độ khó và phức tạp trong việc thực hiện. Sau đó, Ethereum đã bước vào tiến trình lịch sử PoS, các EIP thực thi phức tạp thuần túy không được chú trọng, trong khi đó, nhiều EIP thực thi liên quan đến PoS được coi là mục tiêu nâng cấp cốt lõi, điều này dẫn đến việc EIP-2537 không được chấp nhận trong một thời gian dài.
Nội dung chỉ mang tính chất tham khảo, không phải là lời chào mời hay đề nghị. Không cung cấp tư vấn về đầu tư, thuế hoặc pháp lý. Xem Tuyên bố miễn trừ trách nhiệm để biết thêm thông tin về rủi ro.
Ethereum quản trị quan sát: Quá trình tiền biên dịch EIP-2537
Tác giả: shew
Tóm tắt
EIP-2537 là lệnh tiền biên dịch EVM được xác định thêm trong bản nâng cấp phân nhánh Pectra mới nhất. Lệnh này bổ sung nhiều chức năng tính toán của đường cong BLS12-381 cho EVM, chẳng hạn như tính toán cặp trên miền đường cong.
EIP-2573 được đề xuất lần đầu vào năm 2020 và đến năm 2025 mới được xác nhận đưa vào nâng cấp Ethereum. Bài viết này chủ yếu giới thiệu lịch sử quản trị của EIP-2537, khám phá lý do tại sao phải mất 5 năm để đưa đề xuất này vào nâng cấp.
Bối cảnh đề xuất
Vào tháng 1 năm 2017, Vitalik Buterin đã lần đầu tiên giới thiệu các thuật toán đối đôi và đường cong
alt_bn128
trong Exploring Elliptic Curve Pairings. Sau đó, vào tháng 2 năm 2017, Vitalik Buterin và Christian Reitwiessner đã đề xuất các đề xuất EIP-196 và EIP-197, nội dung đề xuất là thêm hỗ trợ tính toán đường congalt_bn128
vào EVM.Trong bản nâng cấp Byzantium vào tháng 10 năm 2017, đã chính thức đưa vào đường cong
alt_bn128
. Nói một cách đơn giản,alt_bn128
lần đầu tiên thực hiện tính toán cặp miền đường cong trong EVM, điều này cho phép xác minh chứng minh ZK-Snarks có thể hoàn thành trong EVM.Nhưng với sự phát triển của mật mã, vào tháng 11 năm 2017, đội phát triển zcash đã lần đầu tiên đưa ra đường cong
BLS12-381
trong BLS12-381: New zk-SNARK Elliptic Curve Construction. So vớialt_bn128
,BLS12-381
có độ an toàn cao hơn và hiệu suất tốt hơn. Nhiều giao thức blockchain đã sử dụng đường congBLS12-381
và loại bỏ đường congalt_bn128
.Vào tháng 5 năm 2018, Justin Drake đã công bố bài viết "Tổng hợp chữ ký thực tiễn với BLS" trên ethresear, chỉ ra rằng trong tương lai, các nâng cấp PoS và phân đoạn của Ethereum có thể sử dụng thuật toán ký đa BLS dựa trên đường cong
BLS12-381
. Khi đó, các nhà nghiên cứu Ethereum hy vọng sử dụng EIP-1011 để giải quyết vấn đề lớp đồng thuận, nhưng giải pháp EIP-1011 chỉ có thể chứa tối đa 900 người xác nhận, do đó thiết lập quy mô đặt cược khổng lồ 1500 ETH cho mỗi người xác nhận. Với sự xuất hiện của kế hoạch ký đa BLS, EIP-1011 đã rút lui khỏi sân khấu lịch sử. Thực tế chứng minh rằng, nâng cấp ETH2 sau này cuối cùng cũng đã sử dụng đường congBLS12-381
.Cùng với sự phát triển của ETH2,
BLS12-381
được sử dụng trong ETH2 đã bắt đầu được kêu gọi đưa vào tầng thực thi ETH. Vào tháng 2 năm 2020, một số nhà nghiên cứu đã đề xuất EIP-2537 và hy vọng rằng đề xuất này có thể được thử nghiệm cùng với mạng thử nghiệm ETH2. Tác giả của EIP-2537, Alex Stokes, đã kêu gọi đưa EIP-2537 vào đợt hard fork Berlin trong bài viết "What eth2 needs from eth1 over the next six months".Thú vị là, tác giả của EIP-2537 cũng là đồng sáng lập của Matter Labs, và sản phẩm nổi tiếng nhất của Matter Labs chính là ZKSync.
Berlin hỗn loạn
Trước khi giới thiệu nội dung tiếp theo, chúng ta cần giới thiệu EIP-1962. EIP-1962 là đề xuất đầu tiên về tiền biên dịch cặp miền đường cong elip mà Matter Labs đưa ra vào tháng 4 năm 2019, đề xuất này hỗ trợ ba đường cong, đó là:
EIP này chuẩn bị tăng cường 10 lệnh tiền biên dịch một lần để xử lý các đường cong khác nhau. Tuy nhiên, sau khi đề xuất này ra đời, khá nhiều nhà phát triển đã đặt câu hỏi về việc đề xuất quá phức tạp khiến nhà phát triển khó thực hiện. Đồng thời, do EIP1962 rất tổng quát, việc gọi cũng rất phiền phức đối với các kỹ sư hợp đồng thông minh. Tất nhiên, với tư cách là người đề xuất EIP-1962, Matter Labs thực chất đã hoàn thành công việc phát triển thuật toán đường cong elip và cung cấp các triển khai tham chiếu bằng Rust / Go / C++.
Để giải quyết vấn đề EIP-1962, Matter Labs đã đề xuất nhiều EIP tách ra từ EIP-1962 vào tháng 2 năm 2020, tất cả các EIP này đều kế thừa một phần giao diện của EIP-1962. Các EIP này bao gồm:
Trong số các EIP này, quan trọng nhất là EIP-2537, vì lớp đồng thuận cũng sử dụng đường cong BLS12-381. Mục tiêu cốt lõi của cả EIP-1962 và EIP-2537 là thực hiện xác thực chữ ký BLS của lớp đồng thuận trong mạng chính. Vào thời điểm đó, ETH2 đang phát triển thiết kế hợp đồng gửi tiền cho lớp đồng thuận. Khi hợp đồng gửi tiền được thiết kế ban đầu, do lớp thực thi không bao gồm thuật toán xác thực BLS, nên hợp đồng gửi tiền sẽ không xác thực chữ ký; chữ ký BLS cụ thể sẽ được lớp đồng thuận xác thực sau khi người dùng gửi tiền. Nếu phát hiện không đúng (đối với các xác thực viên mới), việc gửi tiền sẽ thất bại, và ETH mà người dùng đã gửi sẽ bị mất.
Trong bối cảnh này, các nhà phát triển cốt lõi muốn giới thiệu BLS12-381 tiền biên dịch để thực hiện xác thực chữ ký trong hợp đồng gửi tiền, tránh khả năng mất mát tiền ETH2 của người dùng. Đây cũng là lý do mà nhiều nhà phát triển lúc đó quan tâm đến EIP-1962 và EIP-2537.
Khi EIP-2537 vừa được đề xuất, Vitalik ngay lập tức phát hiện một loạt vấn đề tồn tại trong EIP:
Các nghi ngờ này chỉ tập trung vào nội dung của tài liệu EIP, sau đó tác giả EIP đã phản hồi và thảo luận về vấn đề này. Tiếp theo, vào ngày 6 tháng 3 năm 2020, trong cuộc họp Ethereum Core Devs Meeting #82, các nhà phát triển cốt lõi của Ethereum đã thảo luận về EIP-2537. Trong cuộc họp này, Vitalik cho rằng EIP-2537 và các EIP tương tự rất hiệu quả cho việc chứng minh SNARK đệ quy và về lâu dài sẽ không làm tổn hại đến Ethereum. Đồng thời, cuộc họp cũng xác nhận vị trí ưu tiên của EIP-2537, tất cả các client đều đồng ý thực hiện EIP-2537 càng sớm càng tốt và có kế hoạch hoàn thành tất cả các phát triển trước khi nâng cấp Berlin.
Sau đó, EIP-2537 đã trở thành một nhiệm vụ có ưu tiên cao hơn. Vào ngày 20 tháng 3 năm 2020, trong cuộc họp Ethereum Core Devs Meeting #83, EIP-2537 vẫn là đề xuất được thảo luận đầu tiên. Cuộc họp này xác nhận rằng EIP-2537 thay thế EIP-1962 trở thành đề xuất BLS cốt lõi và trở thành danh sách EIP dự kiến cho bản nâng cấp Berlin ( tức Eligibility for Inclusion (EFI)).
Tại cuộc họp Ethereum Core Devs Meeting #84 vào tháng 4 năm 2020, cuộc họp đã chính thức đưa EIP-2537 vào nâng cấp hard fork Berlin, và xác định thời gian nâng cấp Berlin sẽ được thực hiện vào tháng 4 và thử nghiệm vào tháng 5 - 6. Đáng chú ý, trong cuộc thảo luận này, EIP-2537 được liệt kê là vấn đề ưu tiên hàng đầu.
Sau đó, EIP-2537 đã bước vào giai đoạn phát triển và thử nghiệm lớn, trong gần 20 cuộc họp nhà phát triển cốt lõi tiếp theo, mỗi cuộc họp đều liên quan đến việc thảo luận về EIP-2537. Tiếp theo, chúng ta có thể xem mỗi cuộc họp đã thảo luận những vấn đề gì liên quan đến EIP-2537.
Trong cuộc họp các nhà phát triển cốt lõi của Ethereum #85, Danno và Axic đã thảo luận về vấn đề mã hóa ABI của EIP-2537. Sau đó, các nhà phát triển cốt lõi đã đồng bộ hóa tình hình thực hiện hiện tại, trong đó do người đề xuất EIP-2537 là Matter Labs đã hoàn thành cơ bản việc thực hiện phiên bản Rust, nên khách hàng Besu tuyên bố đã cơ bản hoàn thành chức năng của EIP-2537, nhưng phía Geth cho biết hiện tại không ai đang làm việc cho việc thực hiện EIP-2537.
Trong cuộc họp nhà phát triển lõi Ethereum #86, các triển khai nút Ethereum khác nhau đã đồng bộ lại tình hình thực hiện EIP-2537, trong đó Geth cho biết đã hoàn thành một phần công việc, nhưng vẫn còn rất nhiều công việc chờ hoàn thành.
Trong cuộc họp các nhà phát triển lõi Ethereum #87, nội dung cốt lõi của cuộc họp các nhà phát triển lần này chính là vấn đề thực hiện EIP-2537. Các nhà phát triển Geth cho biết hiện tại có một PR dài 16000 dòng thực hiện EIP-2537, nhưng các nhà phát triển Geth không thể xác định liệu PR có an toàn và thực hiện hiệu quả EIP-2537 hay không, vì vậy các nhà phát triển chỉ có thể đánh giá tình trạng mã thông qua việc thử nghiệm mờ đơn giản.
Các lập trình viên Geth nói: "Vì vậy, phản ứng trực giác của tôi là không có khả năng Geth sẽ sẵn sàng với các hoạt động đường cong BLS cho việc ra mắt mainnet vào tháng Bảy." tức là Geth rất có khả năng sẽ không hoàn thành phát triển liên quan đến EIP-2537 trước thời gian dự kiến ở Berlin.
Hudson Jameson đề xuất tìm kiếm kỹ sư mật mã để hỗ trợ xem xét PR cho Geth, và đề xuất sử dụng mạng thử nghiệm để kiểm tra tính an toàn của việc triển khai EIP-2537. Bởi vì lúc này nhóm phát triển ETH2 cũng đang triển khai xác minh chữ ký BLS, nên nhóm ETH2 có thể tham gia vào việc kiểm tra.
Tại đây, chúng ta cần bổ sung một kiến thức nền, đó là PR triển khai EIP-2537 của Geth đã sử dụng rất nhiều mã lắp để đảm bảo hiệu quả, và phần mã lắp này rất khó đọc và hiểu. Vì vậy, Alex Vlasov đã đề nghị loại bỏ các tối ưu hóa mã lắp phức tạp trong PR để giảm bớt độ khó khi kiểm tra.
Chúng tôi đã giới thiệu một mục tiêu cốt lõi của EIP-2537 ở trên, đó là hỗ trợ hợp đồng gửi ETH2, nhưng trong cuộc họp lần này, các nhà phát triển hợp đồng gửi cho biết họ không sử dụng hợp đồng gửi EIP-2537 đã được kiểm toán, vì vậy một số nhà phát triển đề xuất tốt nhất là không nên phát hành một hợp đồng gửi sử dụng EIP-2537.
Cuối cùng, cuộc họp đã quyết định tăng cường mạng thử nghiệm YOLO, mà cốt lõi chính là thử nghiệm EIP-2537. Thực tế, trong cuộc họp này, chúng ta có thể thấy tầm quan trọng của EIP-2537 đã giảm đáng kể khi hợp đồng gửi tiền đã hoàn thành, trong khi các nhà phát triển Geth đã cho rằng EIP này rất có thể sẽ không thể được thực hiện trước khi nâng cấp Berlin. Dường như việc EIP-2537 không được Berlin chấp nhận đã trở thành một điều chắc chắn.
Tại cuộc họp các nhà phát triển Ethereum Core #88, các nhà phát triển Geth đã phát hiện ra rằng PR triển khai EIP-2537 gặp phải một loạt vấn đề, và họ cho biết cần phải thực hiện thêm kiểm tra và sửa chữa. Lúc này, trong hệ thống Geth có hai triển khai EIP-2537, một trong số đó bao gồm tối ưu hóa assembly, trong khi triển khai còn lại hoàn toàn được viết bằng ngôn ngữ go. Một số nhà phát triển đã đề xuất sử dụng trực tiếp phiên bản viết bằng ngôn ngữ go để giảm bớt độ khó trong việc kiểm tra mã.
Tại cuộc họp các nhà phát triển cốt lõi của Ethereum #89, một vấn đề nghiêm trọng hơn đã xảy ra, thử nghiệm YOLO gặp một số vấn đề, các nhà phát triển nghi ngờ rằng vấn đề là do chữ ký BLS gây ra, nhưng các nhà phát triển EIP2537 đã phản bác điều này, cho rằng vấn đề của mạng thử nghiệm không phải do chữ ký BLS gây ra. Tin tốt cho EIP-2537 là hợp đồng gửi tiền dựa trên EIP-2537 đã hoàn thành phát triển cơ bản, hợp đồng này đang chờ kiểm toán hợp đồng.
Tại cuộc họp các nhà phát triển lõi của Ethereum #90内,这次会议锁定了 7 月份上线 Berlin 升级的 DDL。当然,这次会议另一个有趣的论点是客户端多样性问题,在此次会议中,开发者主要讨论了 Geth 占据主导地位的情况,并且有开发者提议冻结当前 EIP 实现来降低其他客户端的开发成本。更加有趣的是,在 #91, một nhà phát triển đã đề xuất sử dụng giải pháp mô-đun để giảm chi phí phát triển nhằm tăng tính đa dạng của các máy khách. Nếu độc giả quan tâm đến sự đa dạng của máy khách Ethereum, có thể đọc biên bản của hai cuộc họp này.
Tại cuộc họp Ethereum Core Devs Meeting #92, 2537 vẫn được xác nhận là EIP cần thiết cho nâng cấp Berlin.
Trong cuộc họp Các nhà phát triển lõi Ethereum #96, dựa trên Celo đã đưa cả EIP-2537 và EIP-2539 vào bản nâng cấp hard fork của mạng lưới của họ, vì vậy Matter Labs hy vọng sẽ đưa EIP-2539, được đề xuất cùng với EIP-2537, vào mạng thử nghiệm YOLO v2 để thử nghiệm và đưa vào nâng cấp Berlin. Tuy nhiên, các nhà phát triển Geth phản đối, cho rằng EIP-2537 hiện tại vẫn chưa được thử nghiệm đầy đủ trong Geth. Cuối cùng, cuộc họp quyết định không thêm 2696 vào nâng cấp Berlin, để lại cho các cuộc thảo luận trong tương lai.
Trong cuộc họp các nhà phát triển cốt lõi của Ethereum #99, cuộc họp này đã quyết định loại bỏ EIP-2537 khỏi mạng thử nghiệm YOLO v3 và bản nâng cấp Berlin, lý do chính là EIP-2537 đã lãng phí quá nhiều thời gian của các nhà phát triển cốt lõi, dẫn đến việc phát triển các EIP khác trong bản nâng cấp Berlin bị cản trở. Yếu tố thứ yếu là quỹ Ethereum đã đề xuất EVM384 như một sự thay thế cho EIP-2537, EVM 384 cung cấp một giải pháp tính toán đường cong elliptic tổng quát hơn. Tuy nhiên, các nhà phát triển cốt lõi đã bày tỏ mối quan tâm về vấn đề an ninh trong cuộc thảo luận của cuộc họp.
Nội dung trên là quá trình đầu tiên của EIP-2537, chúng ta có thể thấy EIP-2537 là một trong những EIP quan trọng nhất trong nâng cấp Berlin, nhưng do vấn đề thực hiện mà cuối cùng nó đã bị loại bỏ. Cuối cùng, vào tháng 4 năm 2021, Ethereum đã hoàn thành nâng cấp Berlin, các EIP cốt lõi như EIP-2565 trong nâng cấp không phức tạp, có vẻ như nâng cấp Berlin hơi mỏng manh, điều này là do EIP-2537 phức tạp nhất đã bị loại khỏi nâng cấp Berlin.
phát triển tiếp theo
Như mọi người đã biết, mỗi lần nâng cấp Ethereum đều có một đề xuất cốt lõi, chẳng hạn như nâng cấp London sau nâng cấp Berlin đã giới thiệu đề xuất phí quan trọng nhất trong lịch sử Ethereum EIP-1559. Đối với EIP-2537, từng là một đề xuất cốt lõi, các lần nâng cấp tiếp theo rất khó để đưa đề xuất này vào.
Trong quá trình nâng cấp sau Berlin London, các nhà phát triển đã đồng bộ hóa sự phát triển hiện tại của EIP-2537 trong issues#369曾考虑在 London 升级中增加 EIP-2537。在Ethereum Core Devs Meeting #109 và tại thời điểm này đã giới thiệu một cuộc thảo luận về việc sử dụng khí cho EIP-2537 do sử dụng các thư viện khác để thực hiện EIP-2537. Đồng thời, một số nhà phát triển đã đề xuất thay thế EIP-2537 bằng EVM384. Tuy nhiên, #111内 Hội nghị các nhà phát triển cốt lõi Ethereum vào tháng 4 năm 2021, EIP-2537 đã được chuyển ra khỏi bản nâng cấp London do sự phức tạp. Sự phức tạp cốt lõi nằm ở việc thay thế các thư viện phụ thuộc của việc triển khai tiêu chuẩn EIP-2537, dẫn đến những thay đổi có thể xảy ra về giá khí đốt và một khoảng thời gian đáng kể để các triển khai máy khách khác nhau đánh giá lại mức tiêu thụ khí.
Vào tháng 6 năm 2021, đã chính thức đưa ra đề xuất EIP-2537 vào trong nâng cấp Shanghai trong issues#343. Tuy nhiên, cần lưu ý rằng sau nâng cấp London, thực tế nâng cấp Pairs hay còn gọi là The Merge đã chiếm rất nhiều thời gian của các nhà phát triển, các nhà phát triển tầng thực thi cần phải viết rất nhiều mã để thực hiện nâng cấp PoS. Vào tháng 9 năm 2022, nâng cấp Pairs đã hoàn thành, các nhà phát triển tầng thực thi cuối cùng có cơ hội tiếp tục thảo luận về một số mục tiêu của nâng cấp Shanghai.
Vào tháng 11 năm 2022, cuộc họp các nhà phát triển Ethereum Core Devs #150 đã thảo luận ngắn gọn về việc có nên đưa EIP-2537 vào bản nâng cấp Shanghai hay không, nhưng các nhà phát triển cho rằng EIP-2537 cần phải bị hoãn lại, vì bản nâng cấp Shanghai chủ yếu tập trung vào việc hỗ trợ rút tiền PoS. Cuối cùng, EIP-2537 đã không được đưa vào bản nâng cấp Shanghai với chức năng rút tiền là trọng tâm.
Thậm chí tồi tệ hơn là bản nâng cấp Cancun vẫn chưa thảo luận về EIP-2537, vì cốt lõi của bản nâng cấp Cancun là hỗ trợ EIP-4844 cho các nút lớp thực thi. EIP-4844 cung cấp Blob cho Ethereum Layer 2 để thuận tiện cho việc sử dụng Ethereum làm lớp dữ liệu khả dụng.
Cuối cùng, trong cuộc họp các nhà phát triển Ethereum Core #181 vào tháng 2 năm 2024, các nhà phát triển đã thảo luận về việc đưa EIP-2537 vào bản nâng cấp Pectra, và vào thời điểm đó, các nhà phát triển cho rằng việc triển khai EIP-2537 không còn là vấn đề, chỉ còn một số vấn đề liên quan đến giá gas tiêu thụ.
Tại cuộc họp Ethereum Core Devs vào ngày 19 tháng 12 năm 2024, các nhà phát triển đã thảo luận về việc điều chỉnh giá của BLS precompile, nhà phát triển Geth Jared Wasinger đã đề xuất tăng chi phí gas lên 20%, và nhận được sự hỗ trợ từ nhóm Besu trong việc kiểm tra hiệu suất.
#202内,Nethermind 开发者最终确定了 EIP-2537 的定价模型。是的,作为 EIP-2537 的最初提案者 Matter Labs 此时已经近乎退出了讨论。在随后的,2025 年 1 月的Ethereum Core Devs Meeting # Tóm tắt
| Ngày | Sự kiện | | --- | --- | | Tháng 2 năm 2020 | Đề xuất EIP-1962 chính thức tách rời EIP-2537 | | Tháng 4 năm 2020 - Tháng 10 năm 2020 | Cuộc họp của các nhà phát triển đã nhiều lần thảo luận về các vấn đề thực hiện EIP-2537, và cuối cùng đã bị từ bỏ trong nâng cấp Berlin do không thể thực hiện. | Tháng 3 năm 2021 - Tháng 4 năm 2021 | Cuộc họp các nhà phát triển thảo luận về vấn đề chi phí gas EIP-2537, cuối cùng đã bị bỏ qua trong nâng cấp London do tính phức tạp | | Tháng 11 năm 2022 | Cuộc họp của các nhà phát triển thảo luận về việc có nên đưa vào nâng cấp Shanghai hay không, không có kết quả | | Tháng 2 năm 2024 | Các nhà phát triển cho rằng EIP-2537 không có vấn đề gì về việc thực hiện, nhưng vẫn còn một số vấn đề về chi phí gas, cho rằng có thể đưa vào bản nâng cấp Pectra | | Tháng 12 năm 2024 - Tháng 1 năm 2025 | Cuộc họp các nhà phát triển thảo luận về mô hình tính toán chi phí cụ thể, chính thức giải quyết vấn đề chi phí EIP-2537 |
Có thể thấy, việc EIP có được đưa vào nâng cấp Ethereum hay không "tất nhiên phải dựa vào nỗ lực tự thân, nhưng cũng cần xem xét đến hành trình lịch sử". Mỗi lần nâng cấp Ethereum đều có chủ đề riêng của nó, giống như EIP-2537 từng là EIP quan trọng nhất trong nâng cấp Berlin, nhưng đã bị loại bỏ do độ khó và phức tạp trong việc thực hiện. Sau đó, Ethereum đã bước vào tiến trình lịch sử PoS, các EIP thực thi phức tạp thuần túy không được chú trọng, trong khi đó, nhiều EIP thực thi liên quan đến PoS được coi là mục tiêu nâng cấp cốt lõi, điều này dẫn đến việc EIP-2537 không được chấp nhận trong một thời gian dài.