Distributed Ledger (Sổ cái phân tán) là công nghệ dựa trên sự đồng thuận giữa các thiết bị vi tính như máy tính, điện thoại, ipad… để cùng xây dựng nên một Sổ Cái (Ledger) chung.
1. Thuật toán bình chọn (voting algorithm).
Là thuật toán đã có tuổi đời trên 30 năm nhưng ít được sử dụng vì tốc độ xử lý, truyền tin chậm. Tạm gọi là Voting Algorithm – thuật toán Bình Chọn. Có thể hiểu như bầu cử, kết quả chung là kết quả cộng đồng chấp nhận, dựa trên số đông. Trên thực tế các dòng lập trình lại phức tạp, và nhiều tiến trình.
Để thực hiện thuật toán này, diễn giải một cách dễ hiểu về quy trình như sau: Chúng ta sẽ gửi tất cả phiếu bầu cho tất cả các máy tính. Ví dụ câu trả lời cho các câu hỏi trong phiếu bầu chỉ đơn giản là Đúng hay Sai. Đó là bước cơ bản nhất.
Sau đó phải thu thập lá phiếu lại, tiếp đến là phải thông báo cho từng thành viên kết quả chung, và cả kết quả của từng người đã bầu cho cái gì, và như thế nào, và hơn nữa là a cũng biết người khác đã bầu như thế nào… rồi mới đi đến thực thi.
Rất nhiều thứ “lằng nhằng” và nhiều vòng lặp, chỉ để đơn giản là thu thập câu trả lời Đúng hay Sai, chứ chưa nói đến các câu hỏi phức tạp khác. Nhưng kết quả là “ai cũng biết ai đã và đang làm cái gì”, cái gì xấu hay tốt, cái nào đúng hay sai, và có tiến hành nó hay không.
Và khó có thể cài đặt biến thời gian vào trong từng lá phiếu. Hãy lưu ý đến điều này.
- Nó có Bảo Mật không, có an toàn cho cộng đồng không? Có dễ bị tấn công vào “cuộc bầu cử” không? Câu trả lời là RẤT BẢO MẬT, rất an toàn, và đã được chứng minh thực nghiệm toán học.
Nhắc lại, nó đã có 30 năm trước, và đã được chứng minh an toàn.
- Nó có BÌNH ĐẲNG không? Nó RẤT BÌNH ĐẲNG (Fair), có thể là phương thức bình đẳng nhất trong các thuật toán hiện nay. Tại sao bình đẳng lại quan trọng? Vì nếu không đạt được sự bình đẳng, giao dịch của chúng ta có thể đến trước mà lại xếp sau, được chọn thực thi hoặc không được chọn. Cũng như trong xã hội, càng bình đẳng khi tiếng nói của mỗi thành viên đều ngang hàng nhau và được tôn trọng, ghi nhận như nhau
Nhưng nó RẤT CHẬM, chiếm lượng băng thông lớn! Chính vì vậy 30 năm rồi chẳng ai dùng đến! Và Hashgraph tận dụng được những ưu thế của thuật toán này.
2. Thuật toán Proof-of-Work (PoW).
Thuật toán Proof-of-Work là gì? Là thuật toán dịch nôm na là chứng minh công việc, chứng minh sức mạnh hoạt động của ai hơn ai để chọn ai. Đó là cách hiểu trần trụi.
Để đi sâu hơn, thuật toán Proof-of-Work là thuật toán thực chất được sử dụng đầu tiên trên hệ thống Bitcoin. Bộ thuật toán này bao gồm các thành phần: những Khối Block, và Mắt xích Chain, chain như một sợ kết nối mọi thứ theo một dây, có trật tự, và không thể xáo trộn trật tự chung này.
Vậy nên chúng ta gọi là Blockchain.
Mỗi khối sẽ gom các giao dịch lẻ tẻ lại và đặt các khối theo thứ tự trên dây xích, và quy trình này hiển thị trên Sổ Cái phân tán, ai cũng biết, ai cũng hiển thị giống nhau. Công việc gom, xếp.. là của thợ đào (miner).
Chính vì vậy điều đơn giản nhất (tất cả các phát minh đều áp dụng đơn giản đến phức tạp) là Tôi gửi cho Bạn một số tiền, và Blockchain làm việc theo quy trình: Đưa thông tin này lên khối block, và neo chúng lên dây chain theo thứ tự, máy tính của bạn và tôi và mọi người đều thấy điều này, thế là xong nhé!. Và mỗi block chỉ được 1MB nhé! Luật chơi ghi như vậy rồi. Tại sao không lớn hơn 1MB, thì có lý do của nó, và bạn nên tìm hiểu thêm về Blockchain sơ khai để hiểu điều này.
Nghe có vẻ thoạt đầu rất đơn giản, nhưng đó là vấn đề dễ nhất rồi. Nếu sau này mở rộng ra các lĩnh vực trao đổi dữ liệu data lớn như tài chính, game, âm thanh hình ảnh… Thì sẽ như thế nào? Chưa áp dụng được! Vì phải trải qua thực nghiệm thực tế trên số lượng cực lớn giao dịch phát sinh. Vì Bitcoin muốn phục vụ cả thế giới mà.
Vấn đề xuất hiện vài năm trở lại đây, khi mà lượng lớn giao dịch Bitcoin xảy ra cùng một lúc. Nếu hai giao dịch cùng xuất hiện trên cùng một thời điểm, thì sẽ có 2 khối block cùng muốn đặt vào một sợi chain. Như vậy cộng đồng sẽ phải quyết định xem khối nào đặt trước, và khối nào đặt sau.
Tương tự như khi có quá nhiều giao dịch thực hiện, một cây sẽ bị tẻ nhiều nhánh chồng chất, và mất thời gian chặt bớt, để chỉ còn một nhánh. Tương tự như quái vật Hydra mọc nhiều đầu, và phải chặt nhanh các đầu, nếu chặt không nhanh thì mình tự bị tiêu diệt. Khi Bitcoin có lượng quá lớn giao dịch cuối 2017, mỗi giao dịch mất thời gian có khi cả ngày mới xong, và phí giao dịch lên tới 55 usd (1,2 triệu vnd mỗi giao dịch). Tiền này được trả cho chi phí máy móc thợ đào…
Khi cần chặt bớt nhánh, chúng được giải quyết bằng PoW, hai khối sẽ được 2 máy đào “đấu vật” bằng cách giải một bài toán hóc búa, bên nào giải được trước thì khối kia lên đầu chain, và thợ đào được hưởng tiền. Khối kia không thắng thì bị đập ra xếp lại giao dịch vào khối khác và tiếp tục đấu vật với khối khác nữa,… cho đến khi mỗi giao dịch được thực hiện xong.
Nghe có vẻ tra tấn và kinh khủng, bạn cứ tưởng tượng, giống trong phim World War Z, khi 1 đống zoombie cùng lao vào 1 cửa ngõ duy nhất, chúng chất đống chất chồng, để từng con qua một.
Vấn đề là việc này tốn năng lượng lắm! và không để làm gì cả! chỉ để xếp giao dịch thành 1 hàng ngay ngắn mà thôi.
Mục đích của Proof-of-work là để làm chậm hệ thống, bỏ tiền, thời gian, năng lượng, máy móc, giải toán hóc búa (kết quả bài toán không áp dụng thực tiễn được, chỉ đơn giản là đấu nhau) cuối cùng chỉ để làm chậm các giao dịch đến sau! Đổi lại chúng ta được tính bảo mật. Nhưng phải chịu càng đông càng chậm.
Tóm lại, toàn bộ mục đích của “đào bitcoin” là làm chậm hệ thống, để giữ ổn định. Nó đi ngược lại mục đích ban đầu là để giao dịch nhanh. Và thực tế hiện nay là nó chậm và đắt tiền.
Vậy hệ thống Bitcoin lớn lên tiêu tốn 1% năng lượng thế giới, tốn vô cùng nhiều chi phí mua máy móc, nguyên liệu… chỉ để giữ cho Blockchain ổn định thôi sao? Nghe thật không có lý và không “xanh sạch” và “bảo vệ môi trường” rồi!
Người ta chứng minh được rằng nếu blockchain PoW có thể phục vụ được tất cả các giao dịch tài chính trên toàn cầu (như nó đã hứa hẹn khi mới xuất hiện) thì con người không thể đủ điện năng cung cấp cho nó! Chưa kể đến máy móc tài nguyên hoang phí…
3. Thuật toán Proof-of-Stake (PoS).
Ra đời khoảng 2011, nguyên lý dựa trên số tiền bạn đang có trong tài khoản. Một người được tin tưởng sẽ ngẫu nhiên được chọn để ủy thác block mỗi giây hoặc phút. Người này sẽ là người có nhiều tiền chưa được gửi đi nhất trong cộng đồng.
Vì có nhiều tiền trong tài khoản nên người này sẽ bị mất nếu có hành động sai trái hoặc gây tổn hại đến lòng tin. Chắc chắn không ai muốn bị mất tiền. Họ là những người đã đầu tư nhiều tiền vào hệ thống này lâu dài. Chính vì vậy họ sẽ có giá trị tin tưởng cao hơn, và khả năng họ tấn công mạng để bị mất hoàn toàn số tiền là gần như không có.
Lý thuyết bạn muốn phá sập hệ thống phải có 51% số tiền toàn cộng đồng.
Nhưng lại có vấn đề lớn ở PoS là những tài khoản mà không có tiền lại được mua lại để sử dụng khai thác những đồng tiền nguyên thủy, dẫn đến nguy cơ có thể xảy ra tấn công. Gọi là Rewrite Attack. Nói dễ hiểu vẫn còn nhiều vấn đề tấn công xảy ra trên PoS, từ nhiều khía cạnh khác.
Vậy những cỗ máy lại mất thời gian lục lọi lại lịch sử giao dịch thay vì hướng đến sự đồng thuận! Và người sáng lập có thể viết lại lịch sử bất cứ thời điểm nào họ muốn. Và nếu chọn đại biểu tin tưởng teo cách này có vẻ không công bằng.
Thuật ngữ có vẻ hơi lạ kỳ, nhưng nó tránh được hao phí nhiên liệu, tài nguyên. Cơ chế hoạt động là ai bỏ tiền vào nhiều hơn thì khối block đó chiến thắng, và được để lên đầu. Cơ chế có vẻ mang tính thị trường, được áp dụng cho một số Coin như DASH, NEO…
Hình dung là nếu bị chẻ nhánh trên chuỗi blockchain, bạn sẽ phải bỏ ra một ít tiền để bầu cho nhánh nào chính và bỏ nhánh nào, như vậy số tiền sẽ bị trừ đi. Lưu ý là số tiền này là thật, bạn phải bỏ tiền THẬT.
Như vậy số tiền cuối cùng sẽ vào những ai vote đúng nhiều hơn. Bạn sẽ được tiền nếu vote cho nhánh lớn, mất tiền nếu vote sai nhánh. Mà bạn không thể biết trước mình thuộc nhánh lớn hay nhỏ, cho đến khi mọi thứ có kết quả tổng hợp.
Nghe cứ như đánh bài ba cây. Nhưng thực tế quá trình này vẫn bị hao tổn một lượng chi phí vận hành, khiến cho đồng tiền thực tế bị mất dần, và giá đồng tiền tăng dần vì khan hiếm dần.
Bạn càng sở hữu nhiều tiền ảo, thì bạn càng mạnh hơn.
Hình thức Proof-of-Stake (PoS) thực tế có tốc độ nhanh, không mất năng lượng như PoW, không máy đào, linh hoạt, là lý do đồng Etherium chuyển từ PoW sang PoS.
Cả hai hình thức PoW và PoS đều có mục đích chung là đi đến sự đồng thuận (concensus)
Có một vấn đề nhỏ là tính An Toàn như thế nào, thì chưa ai khẳng định được. Vì mỗi cá thể máy tính có hoạt động tự phát, nên có thể diễn ra trường hợp tất cả đều bán, và giá giảm, như chứng khoán. Và khoa học máy tính đã chứng kiến nhiều cuộc tấn công trên hệ thống tự vận hành mua bán (economy based system). Nhưng không phủ nhận nó có tính năng chống lại các account giả mạo, kiểu tấn công Sybil Attack.
4. Thuật toán Leader Base
Thuật toán này sinh ra để tăng tốc độ giao dịch, vì có một Leader (thủ lĩnh) đứng ra để sắp xếp nhanh các giao dịch, không cần phải đấu nhau để giành vị trí trên cùng. Nhưng tính CÔNG BẰNG sẽ không có, vì tôi có thể đến trước nhưng bị xếp sau, vì tôi và anh bạn tôi cùng gửi giao dịch cùng thời điểm, nhưng Leader chọn anh ta lên đầu chain trước cả tôi. Điều này có vẻ dễ thông cảm, nhưng nếu trong tài chính, sai số này có thể rất nghiêm trọng
Có thể kể đến thuật toán Raft, Paxos, PBFT
Và nếu có 100 người cùng lúc gửi giao dịch một lúc với tôi, và tôi xếp thứ 70-90-100 nào đó thì thật không thể chấp nhận nổi.
Tiếp đến là hệ thống có thể bị tấn công DDoS, một kiểu tấn công tràn ngập thông tin lên các thiết bị, xâm chiếm tài nguyên, khiến thiết bị không “nói” được. Sau đó tìm đến Leader, và nếu leader cũng bị tấn công thì cộng đồng phải chọn Leader khác, và tiếp tục bị tấn công, vì ai cũng biết Leader là ai tiếp theo.
Tuy NHANH, nhưng không CÔNG BẰNG, không AN TOÀN.
5. Thuật toán Virtual Voting (Bình chọn ảo)
Thuật toán Bình chọn ảo Virtual Voting là một ý tưởng đơn giản đến mức, khi giải thích ra thì nhiều người sẽ ngạc nhiên vì 30 năm qua trong ngành khoa học máy tính chưa ai nghĩ ra.
Virtual Voting hoạt động cũng bắt đầu từ nguyên lý Voting cũ nhưng cải tiến thêm ở mức độ tinh vi hơn, nhiều năng lực hơn.
Nó chính là Voting System nhưng lại không cần bất kỳ phiếu bầu (Votes) nào! Chính vì vậy lượng data để thực hiện quy trình Vote bằng 0. Tức là vote mà ko vote chút nào. Không cần phải gửi dữ liệu đi các máy tính thành viên, rồi thu thập kết quả, rồi lại gửi kết quả để mỗi máy tính dều biết ai vote cái gì…. tất cả quy trình này đều không diễn ra ở Virtual Voting. Vì vậy lượng băng thông truyền đi = 0, với thời gian cũng =0, đạt được giới hạn tối thiểu nhất của băng thông với thời gian nhất nhất có thể.
Trong hệ thống Virtual Voting, mỗi máy tính đều biết trước (lưu ý là biết trước) máy nào đã làm gì, và máy tính này biết những máy khác làm gì, tại thời điểm nào. Máy A biết được máy B đã làm gì, lúc nào, đồng thời A cũng biết là B biết những gì, tương tự… A biết B biết C làm gì với D E F…
Để làm được điều này, họ dùng giao thức Gossip (truyền tin) và Gossip about Gossip (Truyền tin lẫn nhau).
Đó chính là Hashgraph.
Như vậy với Hashgraph, chúng ta có độ an toàn bảo mật cao nhất của Voting Based System, không phải lãng phí điện năng, tài nguyên như PoW, không cần có Leader điều khiển nên không bị tấn công nhằm vào Leader, và có tốc độ trao đổi nhanh nhất của Gossip Protocol. Giả sử có một nhóm máy tính bị tấn công cũng không hề gì, với Hashgraph, mỗi máy đều sẽ tìm được những liên kết với nhiều máy khác nữa để tìm ra sự đồng thuận. Hashgraph đạt được cả tính công bằng (Fairness) vì thứ tự ai trước ai sau đều được ghi lại trên dòng thời gian, và thứ tự đó được thống nhất toàn hệ thống.
Thuật toán Voting System có ý tưởng rất tốt về việc các máy tính trao gửi thông tin ngẫu nhiên lẫn nhau và đi đến thống nhất chung, nhưng chưa khắc phục được lỗi Asynchronous Byzantine – lỗi không đồng bộ Byzantine hay Byzantine Fault Tolerant (BFT)
Tiến sỹ Leemon Baird đã nghiên cứu về khoa học máy tính suốt 30 năm qua về các dạng thuật toán, nhưng thực sự ông chưa đạt được chuẩn BFT, mặc dù thuật toán bình chọn Voting System luôn làm ông thích thú. Vì thuật toán này luôn đi đến thống nhất mà chưa thấy điểm thất bại nào. Ông luôn nghĩ rằng nếu có một ai khắc phục và vận hành thuật toán Voting trên quy mô lớn, và khắc phục được lỗi BFT thì tính ứng dụng là chuyện không phải bàn cãi.
Với Virtual Voting và Gossip about Gossip, Hashgraph khắc phục được lỗi không đồng bộ BFT rất nan giải mà ít có hệ thống thuật toán nào đạt được.
Kết luận:
Ta đã điểm qua 5 thuật toán phục vụ cho nền tảng của một hệ thống Internet Phân quyền (Distributed System). Chúng đều được sinh ra và có ưu nhược điểm khác nhau. Hashgraph là platform đạt được sự kết hợp tốt nhất ưu điểm của mỗi loại. Đạt được chuẩn BFT, tiêu chuẩn vàng của tính bảo mật, tiêu chuẩn cao nhất của một hệ thống án toàn giao dịch.
Hi, this is a comment.
To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.
Commenter avatars come from Gravatar.