Tác giả: Kalle Rosenbaum & Linnéa Rosenbaum

Bitcoin được xây dựng bằng phần mềm mã nguồn mở. Trong chương này, chúng ta sẽ phân tích những tác động của thực tế này, cách duy trì phần mềm mã nguồn mở và cách phần mềm mã nguồn mở trong hệ sinh thái Bitcoin cho phép phát triển không cần giấy phép. Trong phần "Lựa chọn mật mã", chúng ta sẽ thảo luận ngắn gọn về cách chọn và sử dụng các cơ sở mã nguồn gốc trong một hệ thống mật mã. Chương này cũng bao gồm một tiểu mục tập trung vào quy trình xem xét mã trong quá trình phát triển Bitcoin, tiếp theo là cách các nhà phát triển Bitcoin nhận được tài trợ. Phần cuối cùng thảo luận về văn hóa mã nguồn mở của Bitcoin , điều này có vẻ lạ lẫm với người ngoài, nhưng hiện tượng có vẻ kỳ lạ này chính xác là một dấu hiệu của sự lành mạnh.
Phần lớn phần mềm Bitcoin, đặc biệt là Bitcoin Core , là mã nguồn mở. Điều này có nghĩa là mã nguồn của phần mềm được công khai cho bất kỳ ai cũng có thể xem xét, vá lỗi, sửa đổi và phân phối lại. Định nghĩa về "mã nguồn mở" trên https://opensource.org/osd bao gồm, nhưng không giới hạn ở các điểm chính sau:
Phân phối miễn phí
Giấy phép này không hạn chế bất kỳ bên nào bán hoặc tặng phần mềm như một phần của gói phân phối phần mềm hoàn chỉnh bao gồm các chương trình từ nhiều nguồn khác nhau. Giấy phép này không yêu cầu thu phí bản quyền hoặc các khoản phí khác đối với các giao dịch bán hàng đó.
mã nguồn
Chương trình phải bao gồm mã nguồn và phải cho phép phân phối cả mã nguồn và dạng đã biên dịch của nó. Khi một số dạng sản phẩm không được phân phối kèm mã nguồn, phải có một dạng công khai cho phép người dùng có được mã nguồn với chi phí sao chép hợp lý, lý tưởng nhất là thông qua tải xuống miễn phí trên internet. Mã nguồn phải là dạng được ưu tiên cho các lập trình viên khi sửa đổi chương trình. Việc cố tình che giấu mã nguồn là không được phép. Việc sử dụng các dạng trung gian, chẳng hạn như đầu ra của bộ tiền xử lý hoặc trình dịch, cũng không được phép.
Các tác phẩm phái sinh
Giấy phép phải cho phép sửa đổi và tạo ra các tác phẩm phái sinh, và phải cho phép phân phối chúng theo các điều khoản tương tự như giấy phép phần mềm gốc.
— Định nghĩa về "mã nguồn mở", trang web của phong trào mã mã nguồn mở
Bitcoin Core tuân theo định nghĩa này và được phân phối theo giấy phép MIT :
The MIT License (MIT)Copyright (c) 2009-2022 The Bitcoin Core developersCopyright (c) 2009-2022 Bitcoin DevelopersPermission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to dealin the Software without restriction, including without limitation the rightsto use, copy, modify, merge, publish, distribute, sublicense, and/or sellcopies of the Software, and to permit persons to whom the Software isfurnished to do so, subject to the following conditions:The above copyright notice and this permission notice shall be included inall copies or substantial portions of the Software. MIT 许可(MIT)版权(c)2009-2022 Bitcoin Core 开发者版权(c)2009-2022 Bitcoin 开发者在此将许可免费地授予任何获得了本软件和相关说明书文件(即“本软件”)的人,可以不受限制地处理本软件,包括不受限制地使用、复制、修改、合并、出版、分发、转许可、以及/或者销售本软件之拷贝的权利;并且得到本软件服务的人也得到同样的许可;上述许可仅受制于下列条件:上述版权声明和本许可声明必须包含在本软件的所有拷贝和主要部分中。(Ghi chú của người dịch: Trong thông báo bản quyền, "Bitcoin Core" và "Bitcoin" đều đề cập đến phần mềm.)
Như đã nêu trong Chương 2.1 của cuốn sách này ( bản dịch tiếng Trung ), điều quan trọng là người dùng phải có khả năng xác minh rằng phần mềm Bitcoin "hoạt động đúng như tuyên bố". Để làm được điều này, người dùng phải có quyền truy cập không hạn chế vào mã nguồn của phần mềm mà họ muốn xác minh.
Trong các chương sau, chúng ta sẽ đi sâu vào một số khía cạnh thú vị của phần mềm mã nguồn mở trong Bitcoin .
7.1 Bảo trì phần mềm
Mã nguồn của Bitcoin Core được lưu trữ trong kho Git trên GitHub . Bất kỳ ai cũng có thể sao chép kho này mà không cần xin phép ai; sau đó, họ có thể kiểm tra, biên dịch và sửa đổi nó trên thiết bị của mình. Điều này có nghĩa là có thể có hàng nghìn bản sao của kho này rải rác khắp thế giới. Tất cả đều là bản sao của cùng một kho, vậy điều gì làm cho kho mã nguồn Bitcoin Core này trở nên đặc biệt? Về mặt kỹ thuật, nó không có gì đặc biệt; nhưng về mặt xã hội, nó đã trở thành tâm điểm cho sự phát triển Bitcoin.
(Ghi chú của người dịch: "Kho lưu trữ Git" có nghĩa là một cơ sở mã được quản lý bằng phần mềm cộng tác phân tán có tên là Git. Cộng tác phân tán có nghĩa là mỗi người sao chép cơ sở mã và chỉnh sửa nó một cách độc lập, sau đó tìm cách hợp nhất mã; trong quá trình này, Git có thể giúp mọi người phân tích các thay đổi mã và giảm thiểu xung đột.)
Chuyên gia Bitcoin và chuyên gia bảo mật Jameson Lopp đã giải thích rất rõ điều này trong bài đăng trên blog của mình, " Ai kiểm soát Bitcoin Core? ":
Bitcoin Core là điểm trọng tâm cho sự phát triển giao thức Bitcoin, chứ không phải là điểm chỉ huy hay kiểm soát. Nếu vì bất kỳ lý do gì mà nó không còn tồn tại, một điểm trọng tâm mới sẽ xuất hiện—nền tảng cộng đồng kỹ thuật lưu trữ mã nguồn (hiện tại là GitHub) sẽ chỉ ảnh hưởng đến sự tiện lợi, chứ không ảnh hưởng đến tính hoàn chỉnh của định nghĩa/dự án. Trên thực tế, điểm trọng tâm của sự phát triển Bitcoin đã thay đổi nền tảng và thậm chí cả tên gọi!
— Jameson Lopp, "Ai kiểm soát Bitcoin Core?" (2018)
Sau đó, ông giải thích cách phần mềm Bitcoin Core được bảo trì và cách nó chống lại các thay đổi mã độc hại. Các điểm chính của toàn bộ bài viết có thể được tóm tắt ở cuối bài:
Không ai kiểm soát được Bitcoin.
Không một cá nhân nào có thể kiểm soát trọng tâm phát triển của Bitcoin.
— Jameson Lopp, "Ai kiểm soát Bitcoin Core?" (2018)
Trong bài viết trên Medium có tiêu đề "Quá trình hợp nhất Bitcoin Core", nhà phát triển Bitcoin Core Eric Lombrozo, đã giải thích chi tiết hơn về quá trình phát triển này:
Bất kỳ ai cũng có thể sao chép mã nguồn cơ bản này và sau đó thực hiện bất kỳ sửa đổi nào đối với nó trong mã nguồn của riêng họ. Họ có thể biên dịch một máy trạm bằng mã nguồn của riêng họ thay vì chạy phần mềm được biên dịch từ mã nguồn cơ bản, nếu muốn. Họ cũng có thể phát hành các tệp nhị phân đã được biên dịch sẵn để người khác sử dụng.
Nếu ai đó muốn hợp nhất các thay đổi của họ vào mã nguồn cục bộ của Bitcoin Core, họ có thể gửi "yêu cầu kéo (pull request - PR)". Sau khi gửi, bất kỳ ai khác cũng có thể xem xét các thay đổi và bình luận về chúng, bất kể họ có quyền hợp nhất với mã nguồn Bitcoin Core hay không.
— Eric Lombrozo, *Quá trình hợp nhất Bitcoin Core* (2017)
Cần lưu ý rằng một yêu cầu kéo (PR) có thể mất rất nhiều thời gian để được xem xét trước khi được người "bảo trì" hợp nhất vào mã nguồn. Điều này thường là do PR thiếu sự xem xét (xem Chương 7.5 để biết chi tiết); và việc thiếu xem xét thường là do thiếu người xem xét .
Lombrozo cũng thảo luận về quy trình liên quan đến những thay đổi trong các quy tắc đồng thuận, nhưng điều đó nằm ngoài phạm vi của chương này. Thông tin chi tiết hơn về chủ đề này ( nâng cấp giao thức Bitcoin ) có thể được tìm thấy trong Chương 5 của cuốn sách này ( bản dịch tiếng Trung ).
7.2 Phát triển không cần giấy phép
Chúng ta đã biết rằng bất kỳ ai cũng có thể viết mã cho Bitcoin Core mà không cần xin phép, nhưng điều đó không nhất thiết có nghĩa là họ có thể hợp nhất nó vào mã nguồn Git gốc. Điều này áp dụng cho mọi sửa đổi, từ lược đồ màu sắc của giao diện người dùng đồ họa đến định dạng của các tin nhắn ngang hàng, và thậm chí cả các quy tắc đồng thuận — tập hợp các quy tắc xác định một blockchain hợp lệ.
Có lẽ điều quan trọng không kém là người dùng được tự do phát triển các hệ thống dựa trên giao thức Bitcoin mà không cần bất kỳ sự cho phép nào. Chúng ta đã chứng kiến vô số dự án phần mềm thành công được xây dựng trên Bitcoin , chẳng hạn như:
Mạng Lightning
Đây là một mạng lưới thanh toán cho phép thực hiện các khoản thanh toán nhỏ và nhanh chóng. Nó chỉ yêu cầu một số lượng nhỏ giao dịch được xác nhận trong blockchain Bitcoin . Hiện nay đã có một số phần mềm tương thích, bao gồm Core Lightning , LND , Eclair và Lightning Dev Kit .
CoinJoin
Nhiều người tham gia gộp các khoản thanh toán của họ vào một giao dịch duy nhất, khiến việc "phân nhóm địa chỉ" trở nên khó khăn hơn ( được giải thích trong Chương 3.4 của cuốn sách này). Một số phần mềm triển khai đã tồn tại.
sidechain
Hệ thống như vậy cho phép một đồng tiền được khóa trong blockchain Bitcoin và sau đó được mở khóa trên blockchain khác. Nói cách khác, Bitcoin có thể chuyển sang blockchain khác, hay còn gọi là "sidechain", để tận dụng các tính năng của chúng. Ví dụ bao gồm Elements của Sidechain .
Dấu thời gian mở
Nó cho phép bạn đóng dấu thời gian riêng tư cho một tài liệu trong blockchain Bitcoin . Bạn có thể sử dụng dấu thời gian này để chứng minh rằng tài liệu đó phải tồn tại trước thời điểm cụ thể đó.
Nếu không có sự phát triển không cần xin phép, nhiều dự án như vậy sẽ không thể thực hiện được. Như đã nêu trong Chương 1.3 của cuốn sách này ( bản dịch tiếng Trung ), nếu các nhà phát triển phải xin phép để phát triển các giao thức trên Bitcoin, thì chỉ những dự án được Hội đồng Phát triển Trung ương cho phép mới có thể được phát triển.
Các dự án được liệt kê ở trên thường tự nhận mình là phần mềm mã nguồn mở, điều này cho phép mọi người đóng góp mã, tái sử dụng và kiểm tra các dự án này mà không cần xin phép. Phát triển mã nguồn mở đã trở thành tiêu chuẩn vàng cho việc cấp phép phần mềm Bitcoin.
7.3 Phát triển nặc danh
Việc phát triển Bitcoin không yêu cầu sự cho phép, điều này mang lại một lựa chọn thú vị và quan trọng: bạn có thể viết và phát hành mã nguồn cho Bitcoin Core và bất kỳ dự án mã nguồn mở khác mà không cần tiết lộ danh tính của mình.
Nhiều nhà phát triển làm điều này: sử dụng bút danh và cố gắng tách biệt bút danh khỏi danh tính thật của họ. Lý do cho việc này rất đa dạng. Một nhà phát triển nặc danh, "ZmnSCPxj," đóng góp mã nguồn cho Bitcoin Core và Core Lightning (một triển khai của các máy khách Mạng Lightning) cùng nhiều dự án khác. Anh ấy tuyên bố trên trang web cá nhân của mình:
Tôi là ZmnSCPxj, một nhân vật ảo được tạo ngẫu nhiên trên internet. Đại từ nhân xưng của tôi là "anh ấy".
Tôi biết mọi người theo bản năng muốn biết danh tính thật của tôi. Tuy nhiên, tôi cho rằng danh tính của tôi về cơ bản là không quan trọng, và tôi muốn mọi người tập trung vào công việc của tôi để vượt qua giai đoạn này.
Nếu bạn còn do dự hoặc nghi ngờ về chi phí sinh hoạt hay thu nhập của tôi, xin hãy hiểu rằng: nói một cách chính xác, bạn nên quyên góp dựa trên giá trị mà tôi tạo ra cho bạn thông qua các bài viết hoặc công việc của tôi về Bitcoin và Lightning Network.
— ZmnSCPxj, trang chủ GitHub của anh ấy
ZmnSCPxj sử dụng bút danh này vì anh ấy muốn mọi người tập trung vào công việc của mình hơn là đời tư cá nhân. Điều thú vị là, một bài đăng trên CoinDesk tiết lộ rằng chính bút danh này được tạo ra vì một lý do khác.
Lý do ban đầu tôi sử dụng biệt danh này là vì tôi lo ngại mình có thể gây ra một thảm họa lớn; do đó, "ZmnSCPxj" ban đầu được dự định là một crypto dùng một lần có thể bị loại bỏ trong trường hợp đó. Tuy nhiên, dường như nó đã nhận được phần lớn phản hồi tích cực, vì vậy tôi đã giữ lại nó.
— "Nhiều nhà phát triển Bitcoin đang chọn sử dụng bút danh, và điều đó hoàn toàn hợp lý" (2021)
Việc sử dụng nặc danh thực sự cho phép bạn nói chuyện thoải mái hơn mà không cần lo lắng về việc nói điều gì đó ngớ ngẩn hoặc mắc sai lầm lớn có thể gây nguy hại đến danh tiếng cá nhân. Tên giả của anh ấy đã trở nên khá nổi tiếng, và anh ấy thậm chí còn nhận được một khoản tài trợ phát triển vào năm 2019 , điều này tự nó đã chứng minh bản chất không cần sự cho phép của Bitcoin.
Tuy nhiên, có thể nói rằng crypto nổi tiếng nhất trong thế giới Bitcoin là " Satoshi Nakamoto". Chúng ta không biết tại sao ông ấy lại dùng bút danh, nhưng nhìn lại thì đó có lẽ là một ý kiến hay:
- Khi ngày càng nhiều người đồn đoán Satoshi Nakamoto sở hữu một lượng lớn Bitcoin, việc giữ bí mật danh tính là cần thiết để đảm bảo an toàn tài chính và cá nhân cho ông.
- Vì danh tính của người này chưa được biết, nên không thể khởi kiện bất cứ ai, điều này khiến nhiều cơ quan chính phủ không có nơi nào để thực thi quyền lực của mình.
- Khi không còn bất kỳ nhân vật quyền lực nào để tôn thờ, Bitcoin sẽ trở nên công bằng hơn và có khả năng chống lại mã độc tống tiền tốt hơn.
Xin lưu ý rằng những nguyên tắc này không chỉ áp dụng cho Satoshi Nakamoto mà còn ở các mức độ khác nhau cho bất kỳ ai phát triển Bitcoin hoặc nắm giữ lượng lớn Bitcoin.
7.4 Phương pháp mã hóa được ưa chuộng
Các nhà phát triển phần mềm mã nguồn mở thường sử dụng các thư viện mã mã nguồn mở do người khác phát triển. Đây là một phần tự nhiên và đáng ngạc nhiên của bất kỳ hệ sinh thái lành mạnh nào. Tuy nhiên, phần mềm Bitcoin liên quan đến tiền thật, do đó, các nhà phát triển cần phải hết sức cẩn thận khi lựa chọn thư viện bên thứ ba nào để sử dụng.
Trong một cuộc thảo luận triết học về mật mã học , Gregory Maxwell đã tìm cách định nghĩa lại thuật ngữ "mật mã học"— cho rằng rằng ý nghĩa ban đầu của nó quá hẹp. Ông giải thích rằng về cơ bản, thông tin nên được lưu chuyển tự do , và sau đó, dựa trên điều này, ông đưa ra định nghĩa của riêng mình:
Mật mã học là nghệ thuật và khoa học mà chúng ta sử dụng để đánh bại bản chất vốn có của thông tin; chúng ta muốn thông tin phải phục tùng những mong muốn chính trị và đạo đức của mình, chống lại mọi cơ hội và nỗ lực đi ngược lại mục đích nhân đạo, và được hướng dẫn đến những mục đích nhân đạo.
— Gregory Maxwell, Mật mã học được ưa chuộng Bitcoin(2015)
Sau đó, ông sử dụng thuật ngữ mới "mật mã lựa chọn ", đề cập đến nghệ thuật lựa chọn các công cụ mật mã, và giải thích tại sao nó là một phần quan trọng của mật mã học. Nghệ thuật này xoay quanh việc lựa chọn các thư viện, công cụ và phương pháp mật mã; theo cách nói của ông, đó là "sự lựa chọn các hệ thống mật mã".
Bằng những ví dụ cụ thể, ông đã chứng minh mật mã chọn lọc dễ dàng dẫn đến những hậu quả thảm khốc như thế nào, và đưa ra một danh sách các câu hỏi để người tham dự suy ngẫm. Dưới đây là một phiên bản được chọn lọc từ danh sách này:
- Phần mềm này ban đầu được phát triển cho mục đích sử dụng của bạn phải không?
- Liệu mật mã học có đang được xem trọng?
- Quy trình đánh giá... Liệu có thực sự tồn tại một quy trình đánh giá nào không?
- Tác giả phần mềm có trải nghiệm như thế nào?
- Phần mềm này có kèm theo sách hướng dẫn không?
- Phần mềm này có thể được chuyển đổi sang nền tảng khác không?
- Phần mềm này đã được kiểm thử chưa?
- Phần mềm này có áp dụng các phương pháp tốt nhất không?
Mặc dù đây không phải là cẩm nang tuyệt đối dẫn đến thành công, nhưng việc tham khảo những câu hỏi này có thể rất hữu ích khi triển khai thuật toán mã hóa tối ưu.
Do những vấn đề mà Maxwell đã đề cập, Bitcoin Core trả giá nỗ lực đáng kể để giảm thiểu sự phụ thuộc vào mã nguồn của bên thứ ba . Tất nhiên, bạn không thể loại bỏ hoàn toàn mọi phụ thuộc bên ngoài, nếu không bạn sẽ phải viết lại mọi thứ từ đầu, từ việc hiển thị phông chữ đến việc triển khai các lệnh gọi hệ điều hành.
7.5 Kiểm toán
Phần này được đặt tiêu đề là "Xem xét" thay vì "Xem xét mã nguồn" vì tính bảo mật của Bitcoin phụ thuộc rất nhiều vào nhiều cấp độ xem xét, chứ không chỉ là xem xét mã nguồn. Hơn nữa, các ý tưởng khác nhau đòi hỏi các cấp độ xem xét khác nhau: so với việc thay đổi bảng màu và sửa lỗi chính tả, việc thay đổi quy tắc đồng thuận đòi hỏi nhiều lớp và cấp độ xem xét sâu hơn.
Trên con đường dẫn đến việc thông qua cuối cùng, một ý tưởng thường trải qua nhiều giai đoạn thảo luận và xem xét. Một số giai đoạn đó được liệt kê dưới đây:
- Ý tưởng này đã được đăng tải trên danh sách gửi thư Bitcoin-dev.
- Ý tưởng này đã dẫn đến việc phát triển Đề xuất Tối ưu hóa Bitcoin(BIP).
- BIP này được triển khai như một yêu cầu kéo (PR) cho
Bitcoin Core - Các cơ chế triển khai đã được thảo luận.
- Một số cơ chế triển khai hấp dẫn đã được thực hiện dưới dạng các yêu cầu kéo (PR)
Bitcoin Core. - Yêu cầu kéo (PR) đã được hợp nhất vào nhánh chính (master) của mã nguồn.
- Người dùng có thể lựa chọn chạy phần mềm này hoặc không.
Ở mỗi giai đoạn, thông tin có sẵn—cho dù đó là mã nguồn, BIP, hay chỉ là một ý tưởng được mô tả sơ lược—đều được xem xét bởi những người có quan điểm và bối cảnh khác nhau. Các giai đoạn này thường không tuân theo trình tự nghiêm ngặt; nhiều giai đoạn có thể diễn ra đồng thời, hoặc đôi khi chúng có thể được lặp đi lặp lại. Những người khác nhau ở các giai đoạn khác nhau có thể cung cấp phản hồi từ các góc nhìn khác nhau.
Jon Atack là một trong những người đánh giá mã nguồn tích cực nhất của Bitcoin Core. Ông đã viết một bài đăng trên blog giải thích cách đánh giá các yêu cầu kéo (PR) Bitcoin Core . Ông nhấn mạnh rằng một người đánh giá mã nguồn giỏi tập trung vào việc mang lại giá trị gia tăng lớn nhất.
Là người mới, mục tiêu của bạn là cố gắng đóng góp giá trị, thân thiện và khiêm tốn, đồng thời học hỏi nhanh nhất có thể.
Một cách tiếp cận tốt là tránh tư duy vị kỷ và thay vào đó hãy tự hỏi: "Tôi có thể phục vụ mọi người tốt hơn bằng cách nào?"
— Jon Atack, "Cách đánh giá báo cáo PR
Bitcoin Core" (2020)
Ông chỉ ra rằng việc xem xét, đánh giá là yếu tố hạn chế thực sự đối với Bitcoin Core . Lượng lớn ý tưởng hay đang bị mắc kẹt: nếu không được xem xét, chúng sẽ mãi trì trệ. Cần lưu ý rằng việc xem xét không chỉ có lợi cho Bitcoin mà còn là một phương pháp tuyệt vời để tăng giá trị cho phần mềm đồng thời học hỏi về nó. Quy tắc vàng của Atack là: xem xét từ 5 đến 15 yêu cầu kéo (PR) trước khi gửi bất kỳ yêu cầu kéo nào của riêng bạn. Một lần nữa, trọng tâm của bạn nên là làm thế nào để phục vụ cộng đồng tốt nhất, chứ không phải là làm sao để mã của riêng bạn được hợp nhất. Dựa trên điều này, ông nhấn mạnh tầm quan trọng của việc thực hiện đánh giá ở mức độ phù hợp: Đã đến lúc kiểm tra lỗi chính tả hay nhà phát triển này cần được xem xét kỹ hơn về mặt khái niệm?
Khi bắt đầu quá trình đánh giá, một câu hỏi hữu ích cần đặt ra là: "Hiện tại nó cần gì nhất?" Trả lời câu hỏi này đòi hỏi kinh nghiệm và sự hiểu biết ngày càng sâu sắc về bối cảnh, nhưng đây là một câu hỏi hữu ích giúp xác định cách bạn có thể tạo ra giá trị lớn nhất trong thời gian ngắn nhất.
— Jon Atack, "Cách đánh giá báo cáo PR
Bitcoin Core" (2020)
Nửa sau của bài viết này chứa nhiều hướng dẫn kỹ thuật hữu ích mang tính chất giới thiệu về cách thức thực hiện kiểm toán; bài viết cũng cung cấp các liên kết đến các tài liệu quan trọng để tham khảo thêm.
Gloria Zhao, nhà phát triển và người đánh giá mã nguồn Bitcoin Core , từng viết một bài báo chứa những câu hỏi mà bà thường tự đặt ra khi thực hiện đánh giá mã nguồn. Bà cũng đề cập đến những gì bà cho rằng là tiêu chuẩn cho một bài đánh giá tốt.
Theo cho rằng, một quy trình đánh giá tốt bao gồm việc tự đặt ra nhiều câu hỏi cụ thể về thông cáo báo chí, và tất cả những câu hỏi đó đều được trả lời.
...
Đương nhiên, tôi sẽ bắt đầu với các câu hỏi về mặt khái niệm, sau đó chuyển sang các câu hỏi phương pháp, và cuối cùng là các câu hỏi về cách triển khai. Nói chung, cá nhân tôi cho rằng rằng việc để lại các bình luận liên quan đến cú pháp C++ trong bản nháp yêu cầu kéo (PR) là vô ích; hơn nữa, việc để lại cho tác giả hơn 20 gợi ý về cách tổ chức mã nguồn rồi hỏi họ "Mục đích của yêu cầu kéo này là gì?" sau khi họ đã đọc hết tất cả các gợi ý đó là điều không lịch sự.
— Gloria Zhao, “Các vấn đề thường gặp khi xem xét yêu cầu kéo”, GitHub (2022)
Ý tưởng của cô ấy là một bài đánh giá tốt nên tập trung vào những gì yêu cầu kéo (PR) cần nhất vào thời điểm đó, điều này phù hợp với lời khuyên của Jon Atack. Cô ấy cũng cung cấp một danh sách các câu hỏi bạn có thể tự hỏi mình ở các giai đoạn khác nhau của quá trình đánh giá, nhưng xin lưu ý: danh sách này không phải là toàn diện, cũng không phải là một lối tắt. Danh sách này được minh họa bằng các ví dụ thực tế từ GitHub.
7.6 Hỗ trợ tài chính
Rất nhiều người đóng góp vào quá trình phát triển mã nguồn mở của Bitcoin , dù là cho Bitcoin Core hay các dự án khác. Nhiều người làm việc này trong thời gian rảnh rỗi mà không nhận thù lao, nhưng cũng có một số nhà phát triển được trả lương.
Các công ty, cá nhân và tổ chức quan tâm đến sự thành công liên tục của Bitcoin có thể quyên góp tiền cho các nhà phát triển, trực tiếp hoặc thông qua các kênh của tổ chức. Một số công ty tập trung vào Bitcoin cũng có thể thuê các nhà phát triển giàu kinh nghiệm làm việc toàn thời gian cho Bitcoin.
7.7 Sốc văn hóa
Mọi người thường có ấn tượng rằng có rất nhiều mâu thuẫn nội bộ và tranh cãi không hồi kết giữa các nhà phát triển Bitcoin , và dường như họ hoàn toàn không có khả năng đưa ra quyết định.
Ví dụ, cơ chế triển khai "Taproot" được mô tả trong Chương 5.2.3 ( bản dịch tiếng Trung ) đã được thảo luận trong một thời gian dài, trong đó xuất hiện hai phe đối lập. Một phe hy vọng sẽ "làm thất bại" nâng cấp nếu sau một thời điểm nhất định, thợ đào không bỏ phiếu ủng hộ mạnh mẽ các quy tắc mới, trong khi phe kia hy vọng sẽ thực thi các quy tắc mới tại một thời điểm nhất định bất kể điều gì xảy ra. Michael Folkson đã tóm tắt cuộc tranh luận giữa hai phe và đăng tải nó trên danh sách gửi thư Bitcoin-dev.
Cuộc tranh luận dường như sẽ kéo dài vô thời hạn, không có hồi kết. Điều này thật đáng thất vọng, và kết quả là, nó chỉ làm cho cuộc tranh cãi thêm gay gắt. Gregory Maxwell (với tên người dùng "nullc") đã bày tỏ lo ngại trên Reddit rằng một cuộc thảo luận kéo dài như vậy có thể khiến nâng cấp nên kém an toàn hơn.
Ở giai đoạn này, việc chờ đợi thêm sẽ không còn giúp tăng cường đánh giá hay sự chắc chắn nữa. Ngược lại, sự chậm trễ thêm sẽ làm chậm đà phát triển, có khả năng làm tăng rủi ro(vì mọi người bắt đầu quên các chi tiết), trì hoãn công việc trên các ứng dụng tiếp theo (như hỗ trợ ví điện tử), và nếu mọi người cảm thấy thoải mái với khoảng thời gian kích hoạt, họ sẽ không đầu tư nhiều công sức đánh giá thêm như lẽ ra phải có.
— Gregory Maxwell, “Phương pháp triển khai Taproot quá nhanh hay quá chậm?”, Reddit
Cuối cùng, nhờ đề xuất mới "Thử nghiệm nhanh" do David Harding và Russell O'Connor đưa ra, tranh chấp đã được giải quyết. Đề xuất này được đặt tên như vậy vì nó cung cấp một khoảng thời gian báo hiệu tương đối ngắn để thợ đào có thể nhanh chóng xác nhận nâng cấp hoặc nhanh chóng báo hiệu lỗi. Nếu thợ đào kích hoạt nó trong khoảng thời gian báo hiệu này, Taproot sẽ được triển khai khoảng sáu tháng sau đó. Nâng cấp lần được giải thích chi tiết hơn trong Chương 5 ( bản dịch tiếng Trung ).
Những người không quen thuộc với quá trình phát triển của Bitcoin có thể cho rằng những cuộc tranh luận gay gắt này thật tồi tệ, thậm chí là độc hại. Có ít nhất hai yếu tố khiến một số người cảm thấy điều đó là xấu:
- So với các công ty mã nguồn đóng, tất cả các cuộc tranh luận trong phát triển mã nguồn mở đều diễn ra trong hoàn cảnh công khai và không bị chỉnh sửa. Các công ty phần mềm như Google không cho phép nhân viên của họ tranh luận về Đề án trước hoàn cảnh ; thay vào đó, họ thường đưa ra một tuyên bố thể hiện lập trường của công ty về vấn đề đó. Điều này khiến công ty trông hài hòa hơn so với Bitcoin.
- Vì Bitcoin là hệ thống không cần cấp phép, bất cứ ai cũng có thể bày tỏ quan điểm của mình. Điều này hoàn toàn trái ngược với các công ty phát triển phần mềm mã nguồn đóng, nơi chỉ một số ít người có thể bày tỏ quan điểm, thường là những người có cùng quan điểm . Số lượng quan điểm trong nhóm phát triển Bitcoin (so với các công ty như PayPal chẳng hạn) là vô cùng lớn.
Hầu hết các nhà phát triển Bitcoin đều cho rằng sự cởi mở này tạo ra một hoàn cảnh tốt, lành mạnh, và thậm chí là một hoàn cảnh cần thiết để tạo ra những kết quả tốt nhất.
Như đã nêu trong Chương 6.2 ( bản dịch tiếng Trung ), điểm thứ hai nêu trên có thể rất có lợi, nhưng cũng có một nhược điểm. Kẻ tấn công có thể sử dụng chiến thuật trì hoãn, như minh họa trong cuốn sách * Cẩm nang phá hoại đơn giản *, để làm sai lệch quá trình phát triển và các quyết định cuối cùng.
Một điểm đáng chú ý khác là, như đã thảo luận trong Chương 7.4, vì Bitcoin đại diện cho tiền tệ và Bitcoin Core bảo vệ vô số vốn, nên bảo mật là tối quan trọng. Đó là lý do tại sao các nhà phát triển Bitcoin Core giàu kinh nghiệm có vẻ cứng đầu, nhưng thái độ này là hợp lý. Trên thực tế, một tính năng thiếu các nguyên tắc thiết kế đúng đắn khó có thể được chấp nhận. Điều tương tự cũng áp dụng cho các tính năng làm hỏng "các bản dựng có thể tái tạo" (xem Chương 2.1 ), việc thêm các phụ thuộc mới và các thay đổi mã không tuân theo các thực tiễn tốt nhất của Bitcoin.
Các nhà phát triển mới (và cả cũ) có thể thấy điều này khó chịu. Tuy nhiên, như thường lệ trong phần mềm mã nguồn mở, bạn luôn có thể sao chép mã nguồn, hợp nhất mã vào bản sao của riêng mình, sau đó biên dịch và chạy các tệp nhị phân của riêng bạn.
7.8 Kết luận
Bitcoin Core, và hầu hết các phần mềm Bitcoin khác, đều là mã nguồn mở, nghĩa là bất kỳ ai cũng có thể tự do phân phối, sửa đổi và sử dụng chúng. Mã nguồn Bitcoin Core trên GitHub hiện đang là trọng tâm của quá trình phát triển Bitcoin, nhưng điều này có thể thay đổi nếu mọi người bắt đầu không tin tưởng những người duy trì mã nguồn, hoặc thậm chí cả trang web đó.
Phát triển mã nguồn mở cho phép phát triển không cần tin tưởng lẫn nhau, bao gồm cả việc phát triển Bitcoin và các hệ thống được xây dựng trên Bitcoin. Cho dù bạn đang viết mã hay xem xét mã (đề xuất), mã nguồn mở đều cho bạn tự do trong đó, dù bạn có nặc danh hay không.
Quá trình phát triển của Bitcoin vô cùng cởi mở, điều này khiến Bitcoin có vẻ như là một môi trường độc hại và kém hiệu quả, nhưng chính văn hóa này lại giúp Bitcoin chống lại các tác nhân xấu.


