Vấn đề cốt lõi: Phía dưới của Nhị phân, xác minh sự tin cậy

Khi hầu hết mọi người tải xuống Bitcoin Core, sự tương tác của họ với hệ thống xây dựng kết thúc chỉ sau vài cú nhấp chuột. Họ lấy tệp nhị phân thực thi của phần mềm, xác minh chữ ký (hy vọng là như vậy!), và bắt đầu chạy một nút Bitcoin. Những gì họ ngay lập tức thấy là phần mềm đang chạy. Nhưng những gì họ không thấy là hệ thống xây dựng và các quy trình rộng lớn đã sản xuất ra phần mềm đó. Một hệ thống xây dựng đại diện cho các nguyên tắc của Bitcoin về phân quyền, minh bạch, và khả năng xác minh.

Đằng sau việc tải xuống đó là nhiều năm công việc kỹ thuật được thiết kế để trả lời một câu hỏi đơn giản: “Tại sao ai đó nên tin tưởng phần mềm này?” Câu trả lời là: bạn không nên phải. Bạn nên có khả năng xác minh.

Trong thời đại mà các cuộc tấn công chuỗi cung ứng phần mềm làm dậy sóng toàn cầu, từ các gói npm bị xâm phạm, thư viện có cửa hậu, đến các máy chủ CI nổi loạn, quy trình xây dựng của Bitcoin Core đứng vững như một dự án yên tĩnh của kỷ luật. Các phương pháp của nó có thể có vẻ chậm và phức tạp so với sự tiện lợi không ma sát của “đẩy để triển khai,” nhưng đó chính là điều cần thiết. An ninh không phải là tiện lợi.

Để hiểu hệ thống xây dựng của Bitcoin Core, chúng ta nên hiểu:

  • Triết lý Hệ thống Xây dựng của Bitcoin Core
  • Các Bản xây dựng Có thể Tái tạo
  • Giảm thiểu Các Phụ thuộc
  • Không Cập nhật Tự động
  • Tích hợp Liên tục
  • Thích ứng Liên tục

Triết lý Hệ thống Xây dựng của Bitcoin Core

Khi nói đến sự phân quyền của Bitcoin, hầu hết mọi người tập trung vào các thợ mỏ, nút, và các nhà phát triển. Nhưng sự phân quyền không dừng lại ở các thành viên của giao thức. Nó mở rộng đến cách phần mềm tự nó được xây dựng và phân phối.

Một nguyên tắc trong hệ sinh thái Bitcoin là “đừng tin tưởng, hãy xác minh.” Chạy nút của riêng bạn là một hành động xác minh, kiểm tra từng khối và giao dịch theo các quy tắc đồng thuận. Nhưng chính hệ thống xây dựng cung cấp cho bạn một cơ hội khác để xác minh, ở cấp độ phần mềm. Bitcoin là tiền mà không cần trung gian đáng tin cậy và Bitcoin Core làm việc để trở thành phần mềm mà không cần những người xây dựng đáng tin cậy. Hệ thống xây dựng đã thực hiện nhiều biện pháp để đảm bảo rằng bất kỳ ai, ở đâu, cũng có thể tái tạo độc lập các tệp nhị phân chính xác giống như những gì xuất hiện trên trang web bitcoincore.org.

Triết lý này có nguồn gốc từ bài tiểu luận năm 1984 của Ken Thompson Reflections on Trusting Trust, trong đó cảnh báo rằng ngay cả một mã nguồn trông sạch cũng không thể được tin tưởng nếu trình biên dịch đã xây dựng phần mềm đó cũng bị xâm phạm. Các nhà phát triển Bitcoin đã ghi nhớ bài học đó. Trong lời của nhà đóng góp Bitcoin Core Michael Ford (fanquake):

“Các bản xây dựng có thể tái tạo là rất quan trọng, vì không người dùng nào của phần mềm của chúng tôi nên phải tin tưởng rằng những gì chứa bên trong là những gì chúng tôi nói. Điều này phải luôn có thể xác minh độc lập.”

Một tuyên bố vừa là mục tiêu kỹ thuật vừa là một phần của tinh thần Bitcoin.

Trong thế giới an ninh, mọi người nói về “bề mặt tấn công.” Hệ thống xây dựng của Bitcoin Core coi quy trình xây dựng là một bề mặt tấn công cần được giảm thiểu và bảo vệ.

Các Bản xây dựng Có thể Tái tạo: Xác minh từ đầu đến chân

Quá trình sản xuất một phiên bản Bitcoin Core bắt đầu với mã nguồn mở trên GitHub. Mỗi thay đổi là công khai. Mỗi yêu cầu kéo đều được xem xét. Nhưng hành trình từ có thể đọc được của con người đến phần mềm nhị phân có thể chạy liên quan đến các trình biên dịch, thư viện bên thứ ba, và hệ điều hành, mà chính chúng cũng có thể là các vectơ tiềm năng cho việc chỉnh sửa, cửa hậu, hoặc lỗi.

Các bên thứ ba đáng tin cậy là những lỗ hổng an ninh” – Nick Szabo (2001)

Để giải quyết những lo ngại này, Bitcoin Core đã kiến trúc một quy trình xây dựng sử dụng Guix, một trình quản lý gói được thiết kế để tạo ra các môi trường phần mềm có thể tái tạo và định lượng.

Khi một phiên bản Bitcoin Core mới được gán nhãn, nhiều nhà đóng góp độc lập xây dựng các tệp nhị phân từ đầu bằng cách sử dụng Guix. Mỗi nhà xây dựng làm việc trong một môi trường tách biệt đảm bảo các công cụ, phiên bản trình biên dịch và thư viện hệ thống giống hệt nhau. Nếu tất cả các nhà xây dựng sản xuất đầu ra giống hệt nhau, họ biết rằng quy trình xây dựng là định lượng.

Các nhà đóng góp sau đó ký xác thực các tệp nhị phân kết quả và công bố các chữ ký đó trên một kho GitHub riêng biệt ‘guix.sigs’ liệt kê các xác thực này cho mỗi phiên bản của Bitcoin Core. Một số nhà xây dựng là các nhà phát triển Bitcoin Core, nhưng điều này không phải là yêu cầu vì quy trình xác thực mở cho bất kỳ ai từ công chúng. Trên thực tế, nhiều người không đóng góp mã thường xuyên đóng góp chữ ký.

Quy trình này được gọi là các bản xây dựng có thể tái tạo, và nó là thuốc giải cho “tin tưởng vào sự tin tưởng” của Thompson. Điều này có nghĩa là bất kỳ ai cũng có thể lấy mã nguồn mở, cùng môi trường Guix, và xác minh độc lập rằng tệp nhị phân chính thức khớp với những gì họ tự xây dựng. Trong khi các bản xây dựng có thể tái tạo có thể xác minh phần mềm là một đại diện chính thức của mã nguồn của phần mềm, độ chính xác của phần mềm được để lại cho các quy trình xung quanh việc thử nghiệm kỹ lưỡng và xem xét mã.

Hầu hết mọi người sẽ không bao giờ thực hiện một biên dịch đầy đủ hoặc kiểm tra các bản khai Guix hoặc so sánh các mã băm xây dựng. Họ không cần phải. Sự tồn tại của cơ sở hạ tầng đó, và những người duy trì nó, cung cấp cho mọi người dùng một nền tảng của sự tự tin đã được kiếm được.

Các tệp nhị phân chính thức trên bitcoincore.org không chỉ được “sản xuất bởi các nhà duy trì Bitcoin Core”. Chúng là giao điểm của đầu ra của hàng chục nhà xây dựng độc lập. Những gì bạn cuối cùng tải xuống chính là những gì mọi người khác đã xây dựng và xác minh là xác thực.

Đó là xác minh từ đầu đến chân.

Giảm thiểu Các Phụ thuộc: Ít thứ để tin tưởng

Khả năng tái tạo là một mặt của phương trình. Mặt khác là giảm thiểu những gì cần phải được tái tạo. Mã của Bitcoin Core không phải là mã duy nhất được thực thi khi chạy Bitcoin Core. Bitcoin Core cũng phụ thuộc vào mã và thư viện bên ngoài, bên thứ ba để tăng tốc độ phát triển và năng suất.

Trong suốt thập kỷ qua, các nhà phát triển Bitcoin Core đã dần dần loại bỏ những phụ thuộc bên thứ ba không cần thiết và đôi khi có vấn đề, như OpenSSL và MiniUPnP. Dù là một thư viện hay bộ công cụ bên ngoài, những phụ thuộc này thêm vào sự phức tạp hoặc đưa ra những giả định ẩn. Các dự án như Boost và Libevent, từng là những thành phần chính của mã Core, đang dần được thay thế hoặc thay thế bằng những lựa chọn đơn giản hơn, tự chứa.

Tại sao? Bởi vì mỗi phụ thuộc mà bạn nhận được là một rủi ro chuỗi cung ứng tiềm năng. Đó là mã nhiều hơn mà bạn không viết, không kiểm toán, và không thể kiểm soát hoàn toàn. Giảm thiểu các phụ thuộc làm cho hệ thống xây dựng trở nên gọn gàng hơn, an toàn hơn và dễ xác minh hơn.

Brink gần đây đã làm nổi bật nỗ lực này trong bài viết blog “Giảm thiểu Các Phụ thuộc”[1], lưu ý rằng đây không chỉ là vấn đề đơn giản hóa, mà còn là về việc bảo vệ an ninh và quyền tự chủ của dự án. Mỗi phụ thuộc được loại bỏ là một bên bên ngoài ít hơn mà dự án phải tin tưởng và ít cơ hội hơn cho một cửa hậu.

Mục tiêu cuối cùng là sản xuất các tệp nhị phân tĩnh hoàn toàn: các tệp thực thi chứa tất cả những gì chúng cần để chạy, không có phụ thuộc động hay thời gian chạy. Sự tự chứa này có nghĩa là không dựa vào các thư viện bên ngoài có thể khác nhau giữa các hệ điều hành khác nhau.

Trong một thế giới mà hầu hết phần mềm trở nên nặng nề hơn và phụ thuộc nhiều hơn vào các hệ sinh thái gói tập trung, Bitcoin Core đang đi theo hướng ngược lại: hướng tới chủ nghĩa tối giản và độc lập.

Không Cập nhật Tự động

Trong hầu hết phần mềm hiện đại, người dùng được bảo vệ khỏi các quyết định về phiên bản phần mềm nào để cập nhật, hoặc quyết định cập nhật phần mềm hoàn toàn. Bạn cài đặt một ứng dụng, và nó lặng lẽ và tự động cập nhật lên phiên bản mới nhất ở nền. Trong khi điều này rất tiện lợi, nó đi ngược lại triết lý của Bitcoin Core.

Bitcoin Core chưa bao giờ bao gồm các bản cập nhật tự động, và các nhà phát triển đã nói rằng nó sẽ không bao giờ có. Các bản cập nhật tự động tập trung quyền lực. Chúng tạo ra một nhóm duy nhất có thể đẩy (có thể độc hại) mã đến mọi nút trên mạng. Đây chính là loại kiểm soát tập trung mà Bitcoin được xây dựng để tránh. Bằng cách yêu cầu người dùng tự tải xuống, xác minh và cài đặt các phiên bản mới, Bitcoin Core củng cố trách nhiệm cá nhân và sự đồng ý có thể xác minh.

Hệ thống xây dựng và việc thiếu cập nhật tự động là hai mặt của cùng một nguyên tắc. Chỉ có người chạy nút quyết định những gì sẽ chạy và có thể xác minh rằng phần mềm đang chạy là xác thực.

Tích hợp Liên tục: Di chuyển chậm và sửa chữa mọi thứ

Tại Silicon Valley, tích hợp liên tục và triển khai liên tục (CI/CD) là những dấu ấn của phát triển phần mềm linh hoạt. Giao hàng nhanh. Lặp lại nhanh hơn. Để tự động hóa làm phần còn lại.

Bitcoin Core có cách tiếp cận khác. Các hệ thống CI của nó không tồn tại để tăng tốc độ triển khai mà để bảo vệ tính toàn vẹn. Các bản xây dựng tự động kiểm tra tính nhất quán giữa các nền tảng. Hệ thống xây dựng của Bitcoin Core được thiết kế để không phụ thuộc vào phần cứng và hệ điều hành càng nhiều càng tốt. Dự án có thể xây dựng các tệp nhị phân cho Linux, macOS và Windows cũng như cho nhiều kiến trúc, bao gồm x86_64, aarch64 (ARM), và thậm chí riscv64. Hệ thống tích hợp liên tục đảm bảo tính tương thích này cũng như tính toàn vẹn của phần mềm bằng cách thực hiện hàng trăm bài kiểm tra cho mỗi thay đổi đề xuất.

Kết quả là một nền văn hóa mà “tích hợp liên tục” có nghĩa là kiểm tra liên tục, xác minh và an ninh, không phải là đổi mới liên tục.

Di chuyển chậm và sửa chữa mọi thứ.

Thích ứng Liên tục: Chúng ta đã xong chưa?

Hệ thống xây dựng không tĩnh. Các nhà phát triển liên tục cải tiến nó bằng cách giảm thiểu các phụ thuộc, cải thiện xây dựng đa kiến trúc, và khám phá một tương lai xây dựng hoàn toàn tĩnh với không có phụ thuộc thời gian chạy.

Trong khi hệ thống xây dựng của Bitcoin Core cố gắng đạt được tính định lượng, chính hệ thống xây dựng không thể tĩnh. Thế giới mà nó hoạt động trong đó không ngừng thay đổi. Hệ điều hành, trình biên dịch, thư viện, và kiến trúc phần cứng đều thay đổi. Mỗi phiên bản mới của macOS hoặc glibc, mỗi việc hủy bỏ một cờ trình biên dịch, hoặc kiến trúc CPU mới nổi lên đều giới thiệu những sự không tương thích tinh tế cần được giải quyết. Một hệ thống xây dựng đứng yên sẽ, theo thời gian, ngừng xây dựng hoàn toàn.

Nghịch lý của các bản xây dựng có thể tái tạo là chúng yêu cầu sự tiến hóa liên tục để duy trì khả năng tái tạo. Các nhà phát triển phải liên tục cố định, sửa chữa, và đôi khi thay thế các công cụ để bảo tồn tính định lượng trước bối cảnh thay đổi. Duy trì sự cân bằng giữa ổn định và khả năng thích ứng là một phần của sự kiên cường đang diễn ra của Bitcoin.

Hãy lấy bản sao của The Core Issue hôm nay!

Đừng bỏ lỡ cơ hội sở hữu The Core Issue — với các bài viết được viết bởi nhiều Nhà phát triển Core giải thích các dự án mà họ làm việc trên chính mình!

Đoạn này là Thư từ Biên tập viên được đăng trong ấn phẩm Print mới nhất của Bitcoin Magazine, The Core Issue. Chúng tôi chia sẻ nó ở đây như một cái nhìn sớm về những ý tưởng được khám phá trong toàn bộ vấn đề.

[1]

Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • Bình luận
  • Đăng lại
  • Retweed
Bình luận
Thêm một bình luận
Thêm một bình luận
Không có bình luận
  • Gate Fun hot

    Xem thêm
  • Vốn hóa:$2.25KNgười nắm giữ:1
    0.00%
  • Vốn hóa:$2.25KNgười nắm giữ:1
    0.00%
  • Vốn hóa:$2.26KNgười nắm giữ:1
    0.14%
  • Vốn hóa:$2.25KNgười nắm giữ:1
    0.00%
  • Vốn hóa:$2.27KNgười nắm giữ:2
    0.00%
  • Ghim