Đăng lại từ: yuppie cũ
Ứng cử viên tổng thống Hoa Kỳ Mitt Romney nhắc nhở chúng ta rằng các tập đoàn được tạo nên từ các cá nhân. Cho dù bạn có đồng ý với anh ấy hay không, có rất nhiều sự thật trong câu nói đó. Rốt cuộc, tại sao nó được gọi là một công ty mà không phải là một nhóm người làm việc cùng nhau theo những quy tắc nhất định? Khi một công ty sở hữu tài sản, hợp đồng pháp lý quy định rằng tài sản chỉ có thể nằm dưới sự kiểm soát của ban giám đốc. Nếu một công ty làm điều gì đó, đó là bởi vì hội đồng quản trị của nó đã đồng ý rằng điều đó nên được thực hiện. Nếu một công ty thuê một nhân viên, điều đó có nghĩa là nhân viên đó đồng ý cung cấp dịch vụ cho khách hàng của công ty theo một bộ quy tắc cụ thể, đặc biệt là khi có liên quan đến các khoản thanh toán. Khi một công ty có trách nhiệm hữu hạn, điều đó có nghĩa là những người cụ thể được cấp thêm đặc quyền để hành động, giảm bớt nỗi sợ bị chính phủ truy tố trước pháp luật — một nhóm người có nhiều quyền hơn một người bình thường hành động một mình, nhưng cuối cùng vẫn là một cá nhân. Trong mọi trường hợp, nó không hơn gì con người và hợp đồng.
Tuy nhiên, một câu hỏi rất thú vị được đặt ra ở đây: chúng ta có thực sự cần người không? Một mặt, câu trả lời là có: trong khi ở một số máy móc trong tương lai hậu điểm kỳ dị sẽ có thể tự tồn tại, thì hành vi và tương tác của con người với thế giới vật chất trong tương lai gần sẽ được yêu cầu. Tuy nhiên, mặt khác, trong hơn 200 năm qua, câu trả lời cho câu hỏi này ngày càng trở nên không. Cuộc Cách mạng Công nghiệp cho phép chúng ta lần đầu tiên thay thế lao động con người bằng máy móc trên quy mô lớn, và giờ đây chúng ta có các nhà máy kỹ thuật số tiên tiến và cánh tay rô-bốt có thể tự sản xuất các hàng hóa phức tạp như ô tô. Nhưng đó chỉ là tự động hóa ở dưới cùng của cơ sở. Loại bỏ nhu cầu lao động thủ công thông thường và sử dụng một số ít chuyên gia để bảo trì rô-bốt trong khi ban quản lý của công ty vẫn giữ nguyên. Câu hỏi thực sự là, chúng ta có thể tiếp cận vấn đề này từ một hướng khác không? Ngay cả khi chúng ta vẫn cần con người để thực hiện một số nhiệm vụ chuyên biệt, liệu chúng ta có thể loại bỏ quản lý khỏi phương trình không?
Hầu hết các công ty đều có một số loại tuyên bố sứ mệnh; thường là để kiếm tiền cho các cổ đông; đôi khi bao gồm một số nghĩa vụ đạo đức liên quan đến sản phẩm và các mục tiêu khác như đôi khi giúp cộng đồng tham gia, ít nhất là trên lý thuyết. Hiện tại, tuyên bố sứ mệnh đó chỉ tồn tại nếu nó được giải thích bởi hội đồng quản trị và cuối cùng là các cổ đông. Nhưng nếu với sức mạnh của công nghệ thông tin hiện đại, chúng ta có thể mã hóa tuyên bố sứ mệnh của mình thành mật mã thì sao? Tức là tạo ra một hợp đồng bất khả xâm phạm để tạo ra doanh thu, trả tiền cho mọi người để thực hiện một số chức năng nhất định và tự tìm phần cứng để chạy, tất cả đều không có sự chỉ đạo của con người từ trên xuống?
Như Daniel Larmier của Let's Talk Bitcoin đã chỉ ra trong quá trình khám phá khái niệm của riêng mình, theo một nghĩa nào đó, bản thân Bitcoin có thể được coi là nguyên mẫu ban đầu của một thứ như vậy. Có 21 triệu cổ phiếu Bitcoin, thuộc sở hữu của các cổ đông Bitcoin. Nó có nhân viên và có thỏa thuận trả cho họ: 25 bitcoin cho một nhân viên ngẫu nhiên cứ sau mười phút. Nó thậm chí còn có bộ phận tiếp thị riêng, phần lớn do chính các cổ đông đảm nhận. Tuy nhiên, nó cũng rất hạn chế, nó gần như không biết gì về thế giới, nó không thể thay đổi bất kỳ khía cạnh nào trong chức năng của nó ngoài độ khó, và nó thực sự không có gì trong chính nó; nó chỉ tồn tại và được để lại cho thế giới công nhận nó. Câu hỏi là: chúng ta có thể làm tốt hơn không?
tính toán
Thách thức đầu tiên là rõ ràng: làm thế nào một công ty như vậy thực sự đưa ra bất kỳ quyết định nào? Thật dễ dàng để viết mã, với một môi trường có thể dự đoán được, lấy một đầu vào nhất định và tính toán hành động cần thực hiện. Nhưng ai sẽ chạy mã? Nếu mã chỉ tồn tại dưới dạng chương trình máy tính trên một máy cụ thể, thì điều gì ngăn chủ sở hữu của máy đó tắt toàn bộ thiết bị hoặc thậm chí sửa đổi mã để gửi tất cả tiền cho chính họ? Chỉ có một câu trả lời hợp lệ cho câu hỏi này: điện toán phân tán.
Tuy nhiên, điện toán phân tán mà chúng tôi đang tìm kiếm ở đây không giống như trong các dự án như SETI@home và Folding@home; trong những trường hợp này vẫn có một máy chủ trung tâm thu thập dữ liệu từ các nút phân tán và gửi yêu cầu. Thay vào đó, chúng ta cần loại tính toán phân tán mà chúng ta thấy trong Bitcoin: một bộ quy tắc cho tính toán phi tập trung, tự xác thực. Trong Bitcoin, điều này được thực hiện bằng biểu quyết đa số đơn giản: nếu bạn không đóng góp vào việc tính toán chuỗi khối với sức mạnh mạng đa số, khối của bạn sẽ bị loại bỏ và bạn sẽ không nhận được bất kỳ phần thưởng khối nào. Lý thuyết là không kẻ tấn công đơn lẻ nào có đủ sức mạnh tính toán để phá vỡ cơ chế này, vì vậy chiến lược khả thi duy nhất là "thuận theo dòng chảy" và hành động trung thực để giúp hỗ trợ mạng và kiếm phần thưởng khối của một người.
Vì vậy, chúng ta có thể áp dụng cơ chế này một cách đơn giản cho điện toán phi tập trung không? Nghĩa là, liệu chúng ta có thể yêu cầu mọi máy tính trong mạng đánh giá một chương trình và chỉ thưởng cho những người có câu trả lời phù hợp với đa số phiếu bầu không? Rất tiếc, câu trả lời là không. Bitcoin là một trường hợp đặc biệt vì Bitcoin rất đơn giản: nó chỉ là một loại tiền tệ không mang tài sản hoặc dữ liệu riêng tư của riêng nó. Mặt khác, các công ty ảo có thể cần lưu trữ khóa cá nhân vào ví bitcoin của họ — dữ liệu hoàn toàn không có sẵn cho bất kỳ ai , cũng như không có sẵn cho tất cả mọi người như các giao dịch bitcoin. Nhưng, tất nhiên, khóa riêng vẫn phải có sẵn. Do đó, chúng tôi cần một số hệ thống chữ ký giao dịch có thể được tính toán theo cách phi tập trung và thậm chí tạo địa chỉ bitcoin. May mắn thay, Bitcoin cho phép chúng tôi làm điều đó.
Giải pháp đầu tiên xuất hiện ngay trong đầu là địa chỉ đa chữ ký. Với một nghìn máy tính, những máy tính đó có thể tiếp tục hỗ trợ các công ty, yêu cầu mỗi công ty tạo một khóa riêng và tạo địa chỉ đa chữ ký 501 trên 1000 giữa chúng. Để chi tiêu những khoản tiền này, chỉ cần tạo một giao dịch có chữ ký từ bất kỳ nút 501 nào và phát nó lên chuỗi khối. Vấn đề ở đây là rõ ràng: khối lượng giao dịch quá lớn. Mỗi chữ ký chứa khoảng 70 byte, vì vậy 501 trong số đó sẽ là các giao dịch 35 KB - điều này rất khó được mạng chấp nhận, vì bitcoind mặc định từ chối mọi giao dịch có tập lệnh lớn hơn 10.000 byte. tiền tệ bit; nếu một công ty muốn lưu trữ dữ liệu riêng tư cho các mục đích phi tài chính, các tập lệnh đa chữ ký sẽ vô dụng.
Các địa chỉ đa chữ ký hoạt động vì có một mạng bitcoin đánh giá chúng và dựa trên việc đánh giá có thành công hay không, giao dịch sẽ được đưa vào chuỗi khối. Trong trường hợp dữ liệu riêng tư, một giải pháp tương tự về cơ bản sẽ yêu cầu một số cơ quan phi tập trung lưu trữ dữ liệu và chỉ gửi dữ liệu đó khi cần nếu yêu cầu có 501 chữ ký trên 1000 - quay lại vị trí ban đầu.
Tuy nhiên, một giải pháp khác vẫn hứa hẹn; tên chung được các nhà mật mã đặt cho nó là "tính toán đa bên an toàn". Trong Tính toán nhiều bên an toàn, đầu vào của chương trình (hay chính xác hơn là đầu vào của "mạch" mô phỏng, vì Tính toán nhiều bên an toàn không thể xử lý các câu lệnh "nếu" và các vòng lặp có điều kiện) được phân tách bằng thuật toán có tên là chia sẻ bí mật của Shamir, và một phần thông tin được cung cấp cho mỗi người tham gia. Chia sẻ bí mật của Shamir có thể được sử dụng để chia bất kỳ dữ liệu nào thành N phần sao cho bất kỳ K nào trong số chúng (nhưng không có K-1) là đủ để khôi phục dữ liệu gốc - bạn chọn K và N là gì khi chạy thuật toán. 2 trên 3, 5 trên 10 và 501 trên 1000 đều có thể. Sau đó, các mảnh dữ liệu có thể được đánh giá theo kiểu phi tập trung, sao cho khi kết thúc quá trình tính toán, mọi người đều có một mảnh kết quả của phép tính, nhưng trong quá trình tính toán, không ai có thể nhìn thấy dù chỉ một chút về những gì đang diễn ra.
Cuối cùng, các mảnh được ghép lại với nhau để hiển thị kết quả. Thời gian chạy của thuật toán là O(n3), có nghĩa là số bước tính toán cần thiết cho tính toán đánh giá tỷ lệ thuận với lập phương của số người tham gia; tại 10 nút, 1000 bước tính toán, tại 1000 nút, 1 tỷ bước. Trên máy tính xách tay của riêng tôi, một vòng lặp tỷ bước C++ đơn giản mất khoảng 20 giây, trong khi máy chủ có thể thực hiện điều đó trong một phần giây, do đó, 1000 nút gần như đạt đến giới hạn của tính thực tế tính toán ngay bây giờ.
Hóa ra tính toán đa bên an toàn có thể được sử dụng để tạo địa chỉ Bitcoin và ký giao dịch. Để tạo địa chỉ, giao thức rất đơn giản:
Mọi người tạo một số ngẫu nhiên làm khóa riêng.
Mọi người tính public key tương ứng với private key.
Mọi người tiết lộ khóa công khai của họ và sử dụng thuật toán chia sẻ bí mật của Shamir để tính toán khóa công khai có thể được tạo lại từ bất kỳ 501 trong số 1000 khóa công khai được tiết lộ.
Một địa chỉ được tạo từ khóa công khai này.
Vì các khóa công khai có thể được cộng, trừ, nhân và thậm chí chia cho các số nguyên, nên thật ngạc nhiên, thuật toán này hoạt động chính xác như bạn mong đợi. Nếu mọi người kết hợp một khóa riêng 501 trên 1000 theo cùng một cách, thì khóa riêng đó sẽ có thể gửi tiền đến các địa chỉ được tạo bằng cách áp dụng thuật toán 501 trên 1000 cho chi tiêu khóa công khai tương ứng. Điều này hiệu quả vì chia sẻ bí mật của Shamir thực sự chỉ là một công thức đại số — nghĩa là, nó chỉ sử dụng phép cộng, phép trừ, phép nhân và phép chia, và nó có thể được tính toán "bằng" một khóa công khai dễ dàng như một địa chỉ; Vì vậy, nó không vấn đề liệu việc chuyển đổi khóa riêng thành khóa chung được thực hiện trước hay sau đại số. Việc ký một giao dịch có thể được thực hiện theo cách tương tự, mặc dù quy trình này phức tạp hơn một chút.
Vẻ đẹp của tính toán đa bên an toàn là nó không giới hạn ở Bitcoin; nó có thể dễ dàng được sử dụng để chạy các thuật toán trí tuệ nhân tạo mà các công ty dựa vào để chạy. Cái gọi là "máy học" là tên chung của một bộ thuật toán phát hiện các mẫu trong dữ liệu trong thế giới thực và cho phép máy tính mô hình hóa chúng mà không cần sự can thiệp của con người và được sử dụng trong những thứ như bộ lọc thư rác và ô tô tự lái. trên đồng ruộng. "Chỉ đại số", cũng có thể được thực hiện trong tính toán đa bên an toàn. Trên thực tế, bất kỳ phép tính nào cũng có thể thực hiện được nếu phép tính được chia thành các mạch trên các bit riêng lẻ của đầu vào. Đương nhiên có một số giới hạn đối với sự phức tạp có thể. Việc chuyển đổi một thuật toán phức tạp thành một mạch thường tạo ra độ phức tạp bổ sung và như đã đề cập ở trên, bản thân Chia sẻ bí mật của Shamir đã trở nên đắt đỏ. Do đó, nó thực sự chỉ nên được sử dụng để triển khai "cốt lõi" của thuật toán; các nhiệm vụ tư duy cấp cao phức tạp hơn được giải quyết tốt nhất bởi các nhà thầu bên ngoài.
Bởi Vitalik Buterin ngày 19 tháng 9 năm 2013