Dockerize Development với Javascript MERN Stack

Sự ngụy biện của Private Blockchain

Tui viết

Bài viết được dịch từ bài đăng gốc của tác giả Bèr Kessels đăng trên blog cá nhân. Các bài tranh luận trên:

Để tìm hiểu vì sao Private Blockchain lại vớ vẩn, đầu tiên chúng ta phải định nghĩa thế nào là blockchain và thế nào không là blockchain. Cha đẻ của Bitcoin (Nakamoto) có đặt ra một số thuật ngữ trong white paper của Bitcoin:

a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions

Trong đó làm nổi bật một số đặc điểm quan trọng của blockchain:

  • peer-to-peer: nghĩa phân tán, phi tập trung, loại bỏ đi central authority
  • computational proof: có thể kiểm chứng được
  • timestamp-server/chronological ordering: ngụ ý là sự vĩnh viễn, không thay đổi, bất biến

Marco Iansiti và Karim R Lakhani có một lời giải thích dễ hiểu hơn:

an open, distributed ledger that can record transactions between two parties efficiently and in a verifiable and permanent way.

  • open (permissionless)
  • decentralized
  • verifiable
  • permanent (immutable)

Nói cách khác: bất cứ điều gì không phù hợp với các tiêu chí đó, theo định nghĩa của Nakamoto, không phải là một blockchain. Nó có thể là một cái gì đó tương tự, hoặc thậm chí một cái gì đó sử dụng các kỹ thuật tương tự, nhưng không thể được gọi là blockchain hay subset của blockchain. Điều này rất quan trọng.

Chúng ta cũng có thể xem xét nó từ một khía cạnh khác: nếu blockchain cung cấp những đặc điểm này, khi nào chúng ta cần blockchain?

Nếu requirements của bạn không phù hợp với những điều chính xác mà blockchain mang lại: bạn không cần blockchain. Trong trường hợp của private blockchain: vì nó không public, không thể gọi nó là blockchain. Chúng ta có thể dừng lại ở đây!

Lí do cần private blockchain

Vậy, tại sao mọi người lại bắt đầu với private blockchain? Chúng ta có thể nhóm các lí lẽ thành ba ý chính, tôi sẽ thêm vào ý thứ tư:

  • Nếu như vậy, chúng tôi có thể lưu trữ dữ liệu riêng tư hoặc các loại dữ liệu khác không nên công khai. (Loại bỏ openverifiable để đạt được bảo mật)
  • Nếu như vậy, chúng tôi có thể kiểm soát ai có được quyền đọc/ghi dữ liệu (Loại bỏ open để đạt được kiểm soát)
  • Nếu như vậy, chúng tôi có thể scale tốt hơn (loại bỏ distributed để đạt được tốc độ)
  • Chúng tôi chưa đủ tự tin về bảo mật và các yếu tố khác để tung ra một mạng public blockchain (loại bỏ permanent để đạt được sự linh hoạt)

Lí lẽ thứ tư là cái duy nhất hợp lí để dùng private blockchain như một giai đoạn tạm thời vì bạn vẫn đang phát triển và tìm hiểu các ứng dụng bên trong và ngoài một của ứng dụng blockchain: Rất giống với cách mà bạn tung ra một ứng dụng cho năm người bạn trước thay vì upload thẳng lên app store từ đầu.

Tất cả các lý do khác là vớ vẩn, bởi vì họ không cần blockchain để có được kết quả chính xác như vậy. Hoặc bởi vì theo định nghĩa, triển khai theo cách đó, làm cho nó không phải là một blockchain. Có thể nói rằng, nếu triển khai mạng blockchain trong môi trường riêng tư, nó không còn là blockchain.

Còn nhiều lí do khác nữa, hay xem tiếp.

Phải public

Blockchain cần phải công khai để đảm bảo sự vĩnh viễn và bất biến.

Lấy ví dụ dễ hiểu, nếu chúng ta có một quyển sổ nhật kí gia đình (để ghi lại những chi tiêu cá nhân của mỗi người trong gia đình). Nếu chỉ mình tôi giữ quyển sổ đó, tôi là người duy nhất có thể đọc và sửa nó.

Vì vậy, nếu tôi đã mua một đôi giày đắt tiền, và một tuần sau tôi muốn che dấu sự thật đó, đơn giản tôi chỉ cần xóa dòng đó ra khỏi quyển sổ, hoặc sửa đôi giày đắt tiền bằng bất cứ thứ gì khác. Và xong, tôi chưa bao giờ mua đôi giày đó (theo quyển nhật kí).

Nhưng nếu tất cả mọi người trong nhà đều có quyển sổ đó, để mọi người xem lại hoặc sao chép, nó sẽ trở nên immutable hơn một chút. Tôi vẫn có thể loại dòng đã mua giày đắt tiền, nhưng mọi người trong nhà có thể biết, và họ có thể gọi tôi ra để hỏi. Với càng nhiều người có thể truy cập vào cuốn sổ (chẳng hạn như gửi một bản sao hàng tuần cho tất cả gia đình và bạn bè) thì càng khó thay đổi nội dung sau đó.

Tuy nhiên, blockchain có một đặc điểm được bổ sung: thông qua áp dụng cryptography, nó cho phép người ta dễ dàng phát hiện khi một dòng được thay đổi. Vì vậy, tất cả những người có một bản sao có thể phát hiện ra một cách chắc chắn và dễ dàng rằng một cái gì đó không nên thay đổi đã bị thay đổi. Nhưng đặc điểm này chỉ tồn tạinếu các bên liên quan có thể nhận được bản sao. Trong private blockchain, thực sự dễ dàng thay đổi một cái gì đó, ngay cả khi thay đổi đó có tác động lớn. Bởi vì mọi thứ không được công khai hoàn toàn.

Những phần được công khai, là những gì đảm bảo sự vĩnh viễn và bất biến. Không phải vì nó không thể chỉnh sửa thứ gì đó (hoàn toàn có thể chỉnh sửa được) mà bởi vì những thay đổi đó (với tác động của cryptography) bị phát hiện bởi tất cả người tham gia khác.

Theo lí thuyết Bitcoin không hoàn toàn là vĩnh viễn hoặc bất biến. Nếu đủ người tham gia quyết định rằng 0,01 BTC mà bạn đã trả cho John một năm trước, được gửi đến Mallory, thì điều xảy ra là: lịch sử sẽ được viết lại. Bitcoin bất biến bắt nguồn từ thực tế là bất kỳ ai cũng có thể phát hiện ra sự thay đổi như vậy và rằng phần lớn sau đó cần phải thừa nhận sự thay đổi đó.

Trong một blockchain, public hoặc private, tính bất biến là một thỏa thuận giữa tất cả những người tham gia rằng sẽ không thay đổi lịch sử. Nó không phải là một thứ “kỳ diệu đến từ cryptography”. Trong một private blockchain nơi mà lời hứa đó rất dễ dàng thực hiện. Và thậm chí dễ thực thi hơn: nếu Mallory thay đổi gì đó trong lịch sử của quyển sổ cái, chỉ cần khai trừ anh ta ra khỏi mạng.

Tính bất biến là một thỏa thuận, vì vậy bạn chỉ cần chọn bất kỳ một loại cơ sở dữ liệu nào, thậm chí là một bảng excel được chia sẻ, và sau đó hứa với nhau không bao giờ thay đổi bất cứ điều gì. Tất cả những gì bạn cần là phát hiện ra rằng nếu một cái gì đó đã được thay đổi, mà hầu hết các hệ thống cơ sở dữ liệu (hoặc ghi nhật ký) sẽ cung cấp. Bạn thậm chí có thể thêm một số cryptography vào đó để làm cho việc giả mạo trở nên rõ ràng, dễ bị phát hiện hơn.

Phải permissionless

Blockchain cần tính permissionless (ngang hàng, quyển hạng như nhau giữa các cá thể) để đảm bảo sự vĩnh viễn và bất biến.

Nếu bạn có thể kiểm soát ai có quyền truy cập, bạn sẽ kiểm soát ai có quyền quyết định sự thật là gì. Do đó, bạn giữ yếu tố để thay đổi lịch sử theo bất kỳ cách nào bạn muốn.

Theo ví dụ về quyển nhật kí gia đình ban đầu, nếu ai có quyền kiểm soát quyền đọc/ghi vào quyển sổ đó, thì chính người đó sẽ có quyền thay đổi lịch sử nhật kí.

Người này sẽ có quyền kiểm soát hoàn toàn quyền viết lại lịch sử. Vì nếu ai phản đổi những thay đổi (trong lịch sử) của người này, người đó có thể hủy bỏ quyền đọc/ghi nhật kí (đồng nghĩa loại bỏ cá nhân phản đối đó ra khỏi mạng).

Tính bất biến trong blockchain không phải là thứ gì đó kỳ diệu đến từ một công nghệ cao siêu. Nó xuất phát từ các điều kiện mà một mạng blockchain yêu cầu: môi trường hoặc “thế giới” mà nó vận hành làm cho nó trở nên bất biến: đó là môi trường permissionless, ai cũng có quyền như nhau.

Như chúng ta biết hiện nay, thực sự có một công nghệ “ma thuật” đảm bảo tính bất biến và vĩnh viễn. Công nghệ đó được gọi là blockchain. Và nó phải là một public - permissionless blockchain.

Phải phi tập trung

Blockchain phải được phi tập trung và phân tán để đảm bảo sự thật có thể kiểm chứng được.

Ngược lại của sự phi tập trung là tập trung. Như theo ví dụ về quyển nhật kí gia đình, phi tập trung và phân tán có nghĩa là nhiều lần trong ngày (thậm chí ngay sau mỗi thay đổi) các bản sao sổ nhật kí được tạo và trao đổi giữa mọi người. Điều quan trọng hơn là không có bản sao nào trong số này được coi là “sự thật”.

Nếu chỉ có một bản sao của quyển nhật kí gia đình, việc thay đổi nội dung trong đó (như bỏ một trang) là chuyện nhỏ và nếu được thực hiện tốt thì không thể phát hiện được.

Giải pháp rõ ràng cho việc này là sao chép mọi trang (giả sử hàng ngày) và giữ những bản sao đó ở nhiều nơi. Đây là phân tán và phi tập trung. Điều này sẽ rất chậm và rất tốn kém, trái ngược với việc có một bản sao và chỉ đơn giản là tin tưởng vào bản sao đó (sự thật). Nhưng đó mới là bản chất những gì blockchain làm. Vì lý do thật sự của niềm tin: không cần phải tin vào một cá thể nào giữ quyển sổ. Đây là tính chất trustless của blockchain.

Khi tất cả các bản sao tại mọi thời điểm được coi là sự thật, bất kỳ sự khác biệt nào giữa các bản sao sẽ được phát hiện và sẽ kích hoạt báo động. Sau đó chúng ta cần một giải quyết xung đột: cái nào là sự thật?

Trong Bitcoin, chỉ đơn giản tuyên bố: những gì mà phần lớn những người nắm giữ bản sao có là sự thật. Vì vậy, nếu cuốn sổ của bạn được sao chép giữa năm người và hai người có trong đó “berkes mua giày đắt tiền” nhưng ba thì không, vậy kết luận sự thật là berkes đã không mua giày đắt tiền.

Để làm rõ hơn: khi bạn không cần sự trustless đó, nghĩa là khi bạn có thể tin tưởng một central authority, bạn không cần một blockchain. Nhấn mạnh thêm một lần nữa: nếu nó đòi hỏi sự tin tưởng vào một cá thể, về bản chất, nó không phải là một blockchain.

Vậy những coin dựa trên private blockchain thì sao?

Nếu nó là private blockchain hoặc permissioned blockchain, thì nó không phải là blockchain. Nó vẫn có thể được coi là là một cơ sở dữ liệu được hỗ trợ bởi cryptography, hoặc một loại tiền điện tử vững chắc của cơ sở dữ liệu rất hiện đại, nhưng đơn giản là nó không sử dụng blockchain. Và bởi vì nó không sử dụng blockchain, nó thiếu một hoặc nhiều đặc điểm quan trọng.

Điều đó có nghĩa là một công ty có thể chạy trốn với tiền của bạn bất cứ lúc nào. Hoặc có nghĩa là nó không an toàn về cơ bản. Hoặc nó có thể cung cấp các giải pháp rất thú vị nào đó…

Tôi có thể có thể xây dựng một hệ thống trao đổi tiền tệ rất hữu ích và thú vị dựa trên niềm tin và một Google spreadsheet (bảng tính). Nhưng nó không phải là một blockchain. Đó là “chỉ” một bảng tính trên máy chủ Google (với một ý tưởng thực sự mới lạ xung quanh nó).

“Bạn nói nó là Blockchain, ừ thì nó là Blockchain”

Chắc chắn rồi. Nếu bạn muốn gọi bất kỳ cơ sở dữ liệu nào là blockchain, hãy tiếp tục. Nếu bạn khăng khăng gọi bảng tính Google là blockchain: tốt thôi. Blockchain không phải là một số thuật ngữ được bảo vệ hoặc nhãn hiệu. Bạn thậm chí được phép gọi xe đạp của tôi là một blockchain (nó có có chain mà)

Nhưng điều này giúp không ai cả. Bởi vì giống như bạn đang phát minh lại cái bánh xe, hoặc bạn đang sử dụng một công nghệ cực kỳ kém hiệu quả mà các công nghệ hiện tại sẽ hiệu quả hơn, giúp ích nhiều hơn.

Một số private blockchain không phải là blockchain vì chúng đơn giản là các công nghệ khác.

Nhưng thật không may, hầu hết các private blockchain hiện nay đều thực sự không hiệu quả, không hoàn toàn an toàn hoặc đơn giản chỉ là những bản implementation ngu ngốc: không mang lại bất kỳ lợi ích nào của phiên bản public blockchain, nhưng lại có tất cả các nhược điểm của nó (blockchain tradeoff).

Ví dụ như git: git không phải là một blockchain; git là một DAG (Directed acyclic graph); vì vậy đừng gọi nó là blockchain. Một DAG rất tao nhã, có một cấu trúc dữ liệu tốt. Git thậm chí có thể được sử dụng để lưu trữ dữ liệu phân tán trong một nhóm nhỏ những người tham gia cùng với hashing hoặc cryptography để giúp họ dễ dàng phát hiện thay đổi đáng ngờ. Tôi đang đề cập đến git, bởi vì có một số loại tiền điện tử thực hiện chính xác điều này: sử dụng DAG để chia sẻ sự thật giữa một nhóm người tham gia riêng tư.

Hoặc như BitTorrent: BitTorrent không phải là một blockchain; vì vậy đừng gọi nó như vậy. BitTorrent là một bản implementation rất khéo léo của Merkle trees và thực sự đã làm rất tốt khi phân phối lượng lớn dữ liệu trên một lượng lớn người tham gia. Nó không phải là một blockchain, tôi đang đề cập đến nó bởi vì công nghệ này thường là đủ nếu bạn cần đảm bảo rằng tất cả những người tham gia có một bản sao của dữ liệu (quyển nhật kí, quyển sổ cái).

Có hàng ngàn loại cơ sở dữ liệu ngoài kia, một số cho phép sync dữ liệu nhanh chóng, một số cho phép tốc độ ghi cực cao hoặc một số khác cho phép kiểm tra consistency cực kì mạnh mẽ. Một bản ghi (log) được dựa trên cryptographic (chữ kí số) không được gọi là blockchain, có thể được gọi là distribute ledger. Chúng ta không gọi tất cả những thứ đó là “blockchain” và private blockchain không bao giờ được coi là một subset của blockchain cả.

Tranh luận

Tác giả bài viết: “The reason that I am “harsh” on it is because on one side all the innapropriate uses of “blockchain” hurt the larger cryptocurrency community, while on the other side it leads to loads of developers, agencies and enterprises implementing stuff that cannot be implemented.

So, on one side, we get “See! Blockchain is a hype, just let it die” from all the stupid and silly projects. And on the other side we see, over and over, people retrying those stupid and silly projects, because too few people have stepped up to explain that it is stupid.

There is very few actual use-cases for a blockchain. We are still figuring out what they are, and that goes with trial and error. But one thing has been very clear from very early on: a blockchain has to be public in order to work in the first place. So if five years afterwards IBM releases some toolkit that “allows a private blockchain”, I get annoyed.

No. You did not release that IBM. You released a failed-by-design and dead-before-release thing. Stop it already.”

Tác giả Moodles: “Exercise for the private blockchain advocates: explain as simply as possible why a “private blockchain” is better than Git (with signed commits).”