So sánh Cosmos với Bitcoin và Ethereum
以太坊爱好者
2019-06-22 12:39
本文约11287字,阅读全文需要约45分钟
Một số thời đại của blockchain.

Lưu ý của biên tập viên: Bài viết này đến từngười đam mê EthereumLưu ý của biên tập viên: Bài viết này đến từPreethi Kasireddyngười đam mê Ethereum

(ID WeChat: ethfans), tác giả gốc: Preethi Kasireddy, nguồn:

Lưu ý của biên tập viên: Bài viết này cung cấp một so sánh chi tiết về các chuỗi khối trong mạng Cosmos với Bitcoin và Ethereum. Tác giả bắt đầu từ lớp ngăn xếp của hệ thống chuỗi khối, phân tích các điểm kỹ thuật của Bitcoin và Ethereum trên các lớp ngăn xếp khác nhau, cuối cùng quay trở lại chuỗi khối trong mạng Cosmos.

Mục lục


  • Vì bài viết quá dài nên chúng tôi đã đính kèm mục lục ở đầu bài viết.

  • Mục lục

  • Vũ trụ là gì?

  • Giới thiệu về cấu trúc chuỗi khối

  • Cấu trúc lớp ngăn xếp bitcoin

  • Cấu trúc lớp ngăn xếp Ethereum

  • Xây dựng ứng dụng trên Bitcoin và Ethereum

  • Cấu trúc chuỗi khối Cosmos

  • Lớp mạng vũ trụ

  • Tóm lại là


Lớp ứng dụng vũ trụ

Tóm lại là

Ngành công nghiệp tiền điện tử không bao giờ dừng lại.

Tất cả bắt đầu với sự ra đời của Bitcoin vào năm 2010. Khi Bitcoin lần đầu tiên xuất hiện, mọi người đều nghĩ nó là chén thánh của các loại tiền kỹ thuật số. Điều từng được coi là không thể giờ đây đã trở thành hiện thực: mạng thanh toán ngang hàng (P2P) đầu tiên đã xuất hiện.

Ngay cả ngày nay, niềm tin vào mọi thứ vẫn là tài sản quý giá nhất và khó nắm bắt nhất. Bitcoin đã khắc phục vấn đề này bằng cách tạo ra hệ thống "không tin cậy" đầu tiên. Nhưng điều này chỉ là khởi đầu.

Kể từ đó, Bitcoin đã trở thành chất xúc tác cho những đổi mới rộng lớn hơn trong lĩnh vực tiền mã hóa, dẫn đến một loạt hệ thống phi tập trung và cơ sở hạ tầng tài chính mới: Ethereum, Lightning Network, EOS, Tezos, Maker... Danh sách này vẫn đang tiếp tục phát triển.

Nhưng có một dự án nổi bật: Cosmos.

Trong lĩnh vực blockchain, Cosmos là một "em bé mới". Mặc dù khái niệm của nó đã xuất hiện được một thời gian, nhưng nhóm phát triển của nó đang dần phát triển ở hậu trường để đảm bảo tính chính xác của thiết kế và triển khai Cosmos. Điều này cũng khiến Cosmos chỉ mới được ra mắt công chúng trong thời gian gần đây.

Vì vậy, không có gì ngạc nhiên khi nhiều người nhìn vào dự án Cosmos và không hiểu nó. Chỉ duyệt qua các tài liệu liên quan đến Cosmos sẽ không cho phép họ hiểu Cosmos một cách trực quan, mà sẽ khiến họ có nhiều câu hỏi hơn:

Vũ trụ là gì?

Cosmos hoạt động như thế nào?

Cosmos khác với Bitcoin và Ethereum như thế nào?

Các đặc điểm của Cosmos là gì?

Tôi đã biết đội Cosmos được gần hai năm. Thành thật mà nói, khi tôi lần đầu tiên nghe những gì họ đang làm, tôi cũng như bất kỳ ai khác không biết gì về khái niệm này.

Nhưng khi tôi biết nhiều hơn về Cosmos, tôi bắt đầu đánh giá cao nó rất nhiều. Và tôi không chỉ nói điều này để thu hút sự chú ý, tôi thực sự muốn nói điều đó từ trái tim.

Tôi rất thích Cosmos, vì vậy chúng tôi đã quyết định xây dựng ứng dụng TruStory dưới dạng ứng dụng chuỗi khối Cosmos. (Kết thúc: Tôi sẽ giải thích lý do tại sao chúng tôi đưa ra quyết định này chi tiết hơn trong một bài báo trong tương lai)

Tuy nhiên, vẫn còn rất nhiều nhầm lẫn về vũ trụ. Vì vậy, tôi quyết định viết một bài báo chỉ vì điều đó. Tôi muốn độc giả hiểu sâu hơn về Cosmos là gì và vị trí của nó trong thế giới blockchain.

bạn đã sẵn sàng để bắt đầu chưa? Hãy giải tỏa tâm trí, đội chiếc mũ suy nghĩ của bạn lên và thắt dây an toàn. chúng tôi sẽ lái xe

Vũ trụ là gì?

Cosmos tự định nghĩa như thế này:

"Mạng phi tập trung bao gồm nhiều chuỗi khối song song độc lập, mỗi chuỗi sử dụng thuật toán đồng thuận BFT (ví dụ: đồng thuận Tendermint)."

Wow, thật là một mồm! Hãy chia nhỏ định nghĩa này thành các phần dễ hiểu.

"Mạng phi tập trung của các chuỗi khối song song độc lập"

Ở đây tôi giả định rằng người đọc đã biết rất nhiều về blockchain! Tuy nhiên, một bản tóm tắt nhanh chóng:

Nói một cách đơn giản, chuỗi khối là một cơ sở dữ liệu được phân phối trên nhiều máy tính, với cơ sở dữ liệu trên mỗi máy tính duy trì trạng thái giống nhau. Nói cách khác, cơ sở dữ liệu trên mỗi máy tính chứa cùng một dữ liệu. Cùng với nhau, những máy tính này tạo thành cái được gọi là "mạng chuỗi khối".

Cả Bitcoin và Ethereum đều là chuỗi khối và Cosmos là mạng chuỗi khối được tạo thành từ nhiều chuỗi khối như vậy chạy song song.

Nếu bạn không thể hiểu đầy đủ những gì tôi vừa nói, tốt hơn hết bạn nên đọc thêm một số điều cơ bản về blockchain trước khi tìm hiểu thêm về cách thức hoạt động của Cosmos. (Ghi chú của biên tập viên: Đối với bản dịch tiếng Trung, hãy xem siêu liên kết ở cuối bài viết "Blockchain là cái quái gì")

"Mỗi blockchain thông qua thuật toán đồng thuận BFT"

BFT là từ viết tắt của "Byzantine Fault-Tolerant". Chuỗi khối chịu lỗi Byzantine có thể đảm bảo rằng mạng vẫn có các thuộc tính "bảo mật" và "hoạt động" khi một số nút trong mạng gặp sự cố và/hoặc hoạt động sai (cái gọi là "các nút Byzantine"). Bảo mật và hoạt động có thể đảm bảo rằng mỗi nút trong mạng chuỗi khối duy trì trạng thái giống nhau.

Kết thúc: Nếu bạn muốn hiểu sâu hơn về An toàn và Sống động là gì, hãy đọc bài viết của tôi về sự đồng thuận phân tán. (Ghi chú của biên tập viên: Đối với bản dịch tiếng Trung, hãy xem siêu liên kết ở cuối bài viết "Cách thức hoạt động của sự đồng thuận phân tán, Phần 2")

Do đó, "thuật toán đồng thuận BFT" là thuật toán xác định giao tiếp và phối hợp giữa các máy tính, làm cho chuỗi khối Byzantine có khả năng chịu lỗi. Tất cả các chuỗi khối trong mạng Cosmos đều sử dụng một số loại thuật toán đồng thuận BFT.

Thuật toán đồng thuận của Bitcoin và Ethereum không phải là thuật toán BFT điển hình. Vì vậy, chúng không phù hợp với định nghĩa về chuỗi khối trong mạng Cosmos. (Điều đáng chú ý là mặc dù chúng không phải là Byzantine Fault Tolerant, nhưng các chuỗi khối như Bitcoin và Ethereum vẫn có thể tham gia mạng Cosmos chỉ với một vài bước bổ sung. Đừng lo lắng nếu bạn thấy điều này khó hiểu — chúng ta sẽ tìm hiểu cái đó để sau. Hãy nghiên cứu sâu hơn về điều này.)

Tạm kết: Nếu bạn vẫn chưa biết BFT là gì thì mình đã viết khá rõ ràng trong bài viết này. (Ghi chú của biên tập viên: Đối với bản dịch tiếng Trung, hãy xem siêu liên kết ở cuối bài viết "Cách hoạt động của sự đồng thuận phân tán, Phần 3")

"Thuật toán đồng thuận Tendermint"

Tendermint là một thuật toán đồng thuận BFT được đề xuất và xây dựng bởi các nhà phát triển Cosmos. Các chuỗi khối trong mạng Cosmos có thể sử dụng thuật toán đồng thuận Tendermint hoặc bất kỳ thuật toán đồng thuận BFT nào khác. Chúng ta sẽ tìm hiểu thêm về Tendermint sau trong bài viết này.

Nói một cách đơn giản, mạng Cosmos là một hệ sinh thái bao gồm nhiều chuỗi khối chịu lỗi Byzantine độc ​​lập chạy song song. Các chuỗi khối này hoạt động độc lập và có thể tương tác với các chuỗi khối khác.

Bây giờ bạn có thể đang nghĩ, “Tại sao các chuỗi khối lại tương tác với nhau?”

câu hỏi hay! Chúng tôi sẽ nhận được điều đó trong thời gian ngắn. Nhưng trước tiên chúng ta cần xem lại cấu trúc của blockchain.

Giới thiệu về cấu trúc chuỗi khối

Trước khi đi sâu vào cách các chuỗi khối hoạt động và tương tác trong hệ sinh thái Cosmos, hãy xem lại những điều cơ bản về cấu trúc chuỗi khối.

Như chúng ta đã thảo luận trước đó, chuỗi khối là một cơ sở dữ liệu được sao chép trên nhiều máy và duy trì cùng một dữ liệu trên mỗi máy tính. Loại hệ thống phân tán này còn được gọi là "máy trạng thái nhân rộng".

Máy trạng thái sao chép là máy trạng thái xác định được sao chép nhiều máy, nhưng vì mỗi máy tính trong mạng duy trì trạng thái giống nhau nên nó hoạt động như một máy duy nhất.

Nghe có vẻ quen thuộc phải không? Nhìn lại định nghĩa về blockchain ở trên, định nghĩa ở đây chỉ là thay thế "cơ sở dữ liệu" bằng "máy trạng thái" và "dữ liệu" bằng "trạng thái", tôi tin rằng bạn có thể hiểu ý của tôi.

"Tất định" có thể hiểu đơn giản là, với một đầu vào nhất định, máy trạng thái sẽ luôn tạo ra cùng một đầu ra. Trong các hệ thống chuỗi khối, "thuyết tất định" có nghĩa là nếu bạn bắt đầu từ một trạng thái nhất định và thực hiện cùng một chuỗi giao dịch, thì bạn sẽ luôn kết thúc với cùng một trạng thái cuối cùng.

Một máy trạng thái được sao chép bắt đầu từ một trạng thái nhất định. Mỗi giao dịch hợp lệ sẽ dẫn đến việc chuyển trạng thái hệ thống sang trạng thái tiếp theo (điều này giống như cập nhật một mục nhập trong cơ sở dữ liệu: nếu bạn cập nhật một mục nhập, cơ sở dữ liệu sẽ chuyển sang trạng thái mới chứa mục nhập dữ liệu được cập nhật).

Một máy trạng thái được sao chép về mặt khái niệm có ba lớp ngăn xếp:

1) Lớp ứng dụng

Lớp ứng dụng chịu trách nhiệm xác định các chuyển đổi trạng thái và cập nhật trạng thái của máy trạng thái sau khi giao dịch xảy ra.

2) Tầng mạng

Lớp mạng chịu trách nhiệm truyền các giao dịch được thực hiện trên một máy trạng thái tới tất cả các máy trạng thái khác trong mạng.

3) Lớp đồng thuận

Lớp đồng thuận bao gồm các thuật toán chịu trách nhiệm đảm bảo rằng mỗi máy trạng thái lưu trữ cùng một trạng thái sau khi giao dịch được thực hiện (nghĩa là máy trạng thái không thể giả mạo một giao dịch không tồn tại).

3a) Lớp chống Sybil

Máy trạng thái được sao chép cố gắng chạy trên mạng công cộng phi tập trung cũng yêu cầu lớp thứ tư (“lớp kháng Sybil”) để đảm bảo rằng không máy trạng thái đơn lẻ nào có thể làm hỏng mạng. Nếu không có lớp này, một bộ máy trạng thái có thể giả mạo trạng thái bằng cách tạo ra nhiều danh tính giả để đạt được ảnh hưởng hoặc lợi ích không tương xứng với khoản đầu tư của nó (tức là khởi động một cuộc tấn công Sybil).

Tóm lại, lớp ứng dụng chịu trách nhiệm xác định trạng thái và quản lý các chuyển đổi trạng thái. Lớp mạng và lớp đồng thuận chịu trách nhiệm giữ trạng thái nhất quán trên mỗi máy (nghĩa là đảm bảo rằng dữ liệu trong mỗi cơ sở dữ liệu trong mạng là nhất quán). Lớp Anti-Sybil (rõ ràng) chịu trách nhiệm tránh các cuộc tấn công Sybil.

Bây giờ, hãy xem cách các lớp ngăn xếp này được xác định và triển khai trong chuỗi khối Bitcoin và Ethereum.

Cấu trúc lớp ngăn xếp bitcoin

1) Lớp ứng dụng

Ứng dụng chính của Bitcoin là giao dịch P2P. Bitcoin sử dụng Script (một ngôn ngữ xếp chồng lên nhau, không phải Turing hoàn chỉnh) để xác định và thực hiện các giao dịch. Khi người gửi gửi bitcoin thông qua một giao dịch, người gửi sẽ sử dụng tập lệnh để mã hóa ai là người kiểm soát số tiền. Một tập lệnh chứa một bộ opcode hoặc lệnh mà người gửi có thể sử dụng để chỉ định các điều kiện cần đáp ứng để chi tiêu một bitcoin.

2) Tầng mạng

Khi một người gửi gửi bitcoin đến một người nhận, việc chuyển tiền phải được phát lên mạng để những người khai thác đưa nó vào một khối. Bitcoin sử dụng "Giao thức tin đồn" để đảm bảo rằng mỗi nút sẽ gửi tất cả các khối hoặc giao dịch mới mà nó nhận được cho các nút lân cận (đồng nghiệp). Giao thức Gossip là một giao thức P2P đảm bảo phổ biến thông báo giữa tất cả các nút. Tất cả các nút trong mạng Bitcoin sẽ ngay lập tức gửi các giao dịch hợp lệ mới nhận được của chúng đến các nút lân cận, để giao dịch được đóng gói có thể được truyền tới hầu hết các nút thông qua mạng ngang hàng trong vòng vài giây.

3) Lớp đồng thuận

Sau khi giao dịch được chuyển tiếp vào mạng, nó cần được thêm vào chuỗi khối để hoàn tất quá trình chuyển (nghĩa là để các máy tính trong mạng thực hiện giao dịch). Quá trình xác thực các giao dịch và đóng gói chúng thành các khối được gọi là "Đồng thuận Nakamoto". Nguyên tắc làm việc của Nakamoto Consensus có thể được tìm thấy trong các diễn đàn hoặc bài viết khác. Bài viết này là một mồi tốt nếu bạn muốn tìm hiểu sâu hơn.

3a) Lớp chống Sybil

Sự đồng thuận của Nakamoto dựa vào "Proof-of-Work" để ngăn chặn các cuộc tấn công Sybil. Về cơ bản, sức mạnh tính toán cần thiết để tạo ra một khối mới giúp bản thân giao thức đồng thuận Bitcoin có khả năng chống lại các cuộc tấn công của Sybil. Vì những người khai thác cần rất nhiều sức mạnh tính toán để tạo ra khối tiếp theo, nên họ không thể "làm giả" nhiều danh tính mà không đầu tư nhiều sức mạnh tính toán (và tiền bạc).

Cấu trúc lớp ngăn xếp Ethereum

1) Lớp ứng dụng

Không giống như Bitcoin, Ethereum ban đầu được thiết kế để trở thành một nền tảng có khả năng chạy các ứng dụng phi tập trung. Ethereum bao gồm một ngôn ngữ cấp cao (tức là Solidity) cho phép các nhà phát triển xác định chức năng cụ thể của các ứng dụng phi tập trung bằng cách viết các hợp đồng thông minh. EVM (Ethereum Virtual Machine, Máy ảo Ethereum) là cốt lõi của lớp ứng dụng Ethereum. EVM sử dụng trình biên dịch EVM để biên dịch mã hợp đồng thông minh thành mã byte, người dùng có thể tải mã byte lên chuỗi khối dưới dạng giao dịch và EVM có thể thực thi các mã byte này, từ đó thay đổi ứng dụng phi tập trung. hợp đồng thông minh này được lưu trữ bởi nút Ethereum). Vì tất cả các nút trong mạng Ethereum đều chạy EVM nên điều này cũng đảm bảo rằng trạng thái của tất cả các nút là nhất quán.

2) Tầng mạng

Tương tự như Bitcoin, Ethereum cũng sử dụng giao thức Gossip, cho phép các nút giao tiếp với các nút lân cận của chúng.

3) Lớp đồng thuận

Để đạt được sự đồng thuận, Ethereum sử dụng "Ethash", tương tự như sự đồng thuận của Nakamoto, nhưng Ethash có một số điểm khác biệt chính so với sự đồng thuận của Nakamoto. Nếu bạn cần hiểu cách hoạt động của thuật toán đồng thuận Ethereum, hãy đọc một trong những bài viết trước của tôi. (Ghi chú của biên tập viên: Đối với bản dịch tiếng Trung, hãy xem siêu liên kết "Cách thức hoạt động của Ethereum" ở cuối bài viết)

3a) Lớp chống Sybil

Giống như Bitcoin, Ethash dựa vào Proof of Work (cho đến nay, Ghi chú của người dịch: Ethereum 2.0 sẽ chuyển sang cơ chế đồng thuận PoS trong tương lai) để chống lại các cuộc tấn công Sybil.

Xây dựng ứng dụng trên Bitcoin và Ethereum

Tôi hy vọng những điều trên đã cung cấp cho bạn một số hiểu biết nhất định về cấu trúc chuỗi khối. Khi chúng ta nói về "Bitcoin" hoặc "Ethereum", những tên này đề cập đến tất cả các lớp ngăn xếp có liên quan. Bởi vì Bitcoin và Ethereum là một tổng thể được tạo thành từ các lớp ngăn xếp này.

Bạn không thể tách các hợp đồng thông minh Ethereum khỏi lớp đồng thuận Ethhash cơ bản của chúng, vì vậy sẽ không có ý nghĩa gì khi thảo luận riêng về hai chủ đề này. Điều này cũng đúng với Bitcoin, bạn không thể thực hiện các giao dịch Bitcoin mà không sử dụng Đồng thuận Nakamoto và Bằng chứng công việc.

Mặt khác, Cosmos tuân theo một mô hình hơi khác: nó tách lớp ứng dụng khỏi lớp đồng thuận và lớp mạng.

Vì mục tiêu của Cosmos là xây dựng một mạng lưới chuỗi khối, nên việc thiết kế nó theo cách này là điều hợp lý. Trong mạng chuỗi khối này, mỗi chuỗi khối độc lập và có các nhu cầu và yêu cầu riêng (nghĩa là ứng dụng riêng của nó). Trong trường hợp này, việc đề xuất một lớp ứng dụng phù hợp cho tất cả các chuỗi khối là không khả thi. Hãy xem xét lý do tại sao với một vài ví dụ.

Một ví dụ về những hạn chế của Bitcoin

Giả sử chúng ta sẽ xây dựng một ứng dụng tiền tệ. Trong trường hợp này, một ngôn ngữ kịch bản dựa trên ngăn xếp đơn giản như Bitcoin Scrypt là lựa chọn tốt nhất. Ngôn ngữ kịch bản Bitcoin không chỉ hoạt động tốt để chuyển giá trị từ địa chỉ này sang địa chỉ khác, mà nó còn rất đơn giản và không hoàn chỉnh.

Do đó, nó ít bị ảnh hưởng bởi các loại lỗi bảo mật khác nhau có thể ảnh hưởng nghiêm trọng đến ngôn ngữ lập trình hoàn chỉnh Turing. Đây chính xác là những gì chúng tôi muốn khi giao dịch với tiền và lưu trữ giá trị. Nhưng sự đơn giản này có giới hạn của nó.

Làm bất cứ điều gì phức tạp hơn (ví dụ: thị trường dự đoán phi tập trung) với Scrypt là rất khó. Ngôn ngữ kịch bản bitcoin không chỉ bị giới hạn bởi độ phức tạp của mã thực thi mà còn rất không thân thiện với các nhà phát triển. Tệ hơn nữa, các giao dịch trên chuỗi khối Bitcoin được xử lý chậm (khoảng 7 giao dịch mỗi giây). Do đó, việc xây dựng các ứng dụng yêu cầu thông lượng giao dịch cao trực tiếp trên chuỗi khối Bitcoin là không thực tế.

Một ví dụ về những hạn chế của Ethereum

Trái ngược với Bitcoin, EVM của Ethereum và ngôn ngữ hợp đồng thông minh (Solidity) được thiết kế để hỗ trợ các ứng dụng linh hoạt hơn. Solidity là một ngôn ngữ lập trình hoàn chỉnh Turing, vì vậy về mặt lý thuyết, nó có thể thực thi mã có độ phức tạp thuật toán tùy ý.

Trong các ứng dụng thực tế, rất khó để phát triển các chương trình có độ phức tạp tùy ý bằng Solidity vì Solidity dễ bị lỗi và dễ bị tấn công bảo mật. Tính năng này chạy ngược lại với các ứng dụng xử lý chuyển giá trị, trong đó bảo mật là tối quan trọng.

Ngoài ra, các hợp đồng thông minh cũng rất khó nâng cấp, khiến cho việc phát triển lặp đi lặp lại rất khó khăn. Sau khi hợp đồng được triển khai trên chuỗi, tất cả những gì bạn có thể làm là cầu nguyện rằng nó có thể chạy trơn tru! Giống như Bitcoin, tốc độ xử lý giao dịch của Ethereum rất thấp (khoảng 15 giao dịch mỗi giây), do đó, việc xây dựng các ứng dụng yêu cầu thông lượng giao dịch cao trên chuỗi khối Ethereum là không thực tế.

Cosmos được đề xuất để đáp ứng nhu cầu kinh doanh thiết thực này, mặc dù nó đã phải hy sinh một số điều lớn cho mục đích này. Chúng ta sẽ đi sâu vào các chi tiết cụ thể tiếp theo. Nhưng trước đó, chúng ta cũng phải hiểu ba lớp ngăn xếp của chuỗi khối trong Cosmos trông như thế nào.

Cấu trúc chuỗi khối Cosmos

Đầu tiên, chúng ta sẽ xem xét Cosmos, bắt đầu với lớp đồng thuận, để hiểu rõ hơn cách phát triển ứng dụng trên Cosmos khác với việc sử dụng Bitcoin hoặc Ethereum.

Lớp đồng thuận vũ trụ

Chuỗi khối trong mạng Cosmos sử dụng thuật toán đồng thuận Tendermint. Tendermint là một dự án nguồn mở ra đời vào năm 2014, "được thiết kế để giải quyết các vấn đề về tốc độ, khả năng mở rộng và môi trường của thuật toán đồng thuận Bitcoin Proof-of-Work (PoW)."

Thuật toán đồng thuận Tendermint là một "công cụ đồng thuận bất khả tri của ứng dụng". Về cơ bản, điều này có nghĩa là bất kỳ blockchain nào cũng có thể sử dụng thuật toán đồng thuận Tendermint, thuật toán chịu lỗi Byzantine và sử dụng thuật toán PoS để chống lại các cuộc tấn công Sybil.

Nhiều thuật ngữ khác! Chúng tôi đã nói chuyện về nó.

Để xem lại, thuật toán đồng thuận tồn tại để đảm bảo rằng sau khi giao dịch được thực hiện, trạng thái được lưu trong máy trạng thái là nhất quán; và thuật toán đồng thuận Tendermint xác định quy tắc "cho phép tất cả các nút đạt được sự đồng thuận về khối tiếp theo".

Người xác minh

Hãy cùng xem các yếu tố và quy luật tương quan hoạt động như thế nào nhé!

Người xác minh

Các nút chịu trách nhiệm đạt được sự đồng thuận của trạng thái được gọi là "trình xác thực". Bất kỳ nút tham gia nào sẵn sàng hỗ trợ toàn bộ mạng để đạt được sự đồng thuận đều có thể trở thành người xác thực; đổi lại, người xác thực sẽ nhận được phí giao dịch và phần thưởng khối. Tendermint tổng hợp phiếu bầu của những người xác thực này để xác định trạng thái chính xác cho khối tiếp theo.

Chống lại các cuộc tấn công của Sybil bằng Staking

Mỗi phiếu bầu của người xác thực có trọng số biểu quyết riêng. Trọng số biểu quyết thường được xác định khi khối genesis được tạo hoặc sau khi khối này bắt đầu chạy, khối này được xác định theo một số logic do nhà phát triển lớp ứng dụng thiết kế. Nói chung, trọng lượng của phiếu bầu được xác định bởi số lượng mã thông báo bị khóa trong hệ thống bởi trình xác thực (làm tài sản thế chấp), còn được gọi là "trái phiếu".


  • đoàn kết

  • Theo các quy tắc, người xác minh phải đạt được sự đồng thuận về từng khối trong các vòng. Mỗi vòng bao gồm ba bước cơ bản: Đề xuất, Bình chọn trước, Cam kết trước và hai bước tiếp theo: Cam kết, NewHeight. Từ một quan điểm trừu tượng, các trình xác thực cùng nhau quyết định khối nào sẽ sử dụng ở độ cao tiếp theo theo các quy tắc giao thức sau:

  • Đầu tiên là giai đoạn đề xuất, trong đó người xác nhận được chỉ định đề xuất một khối—những người đề xuất trong mỗi vòng được chọn một cách xác định từ danh sách được sắp xếp theo tỷ lệ với trọng số biểu quyết của họ.

  • Sau đó là giai đoạn tiền bỏ phiếu - mỗi trình xác nhận sẽ phát phiếu bầu trước tương ứng của họ.

  • Khi một khối trong vòng nhận được hơn 2/3 số phiếu bầu trước, chúng tôi gọi đó là "polka". Ngay khi "polka" xuất hiện, hãy chuyển sang giai đoạn tiếp theo.

  • Bước vào giai đoạn trước khi cam kết, mỗi trình xác thực sẽ phát các phiếu bầu trước khi cam kết của họ.


Nếu một khối cụ thể nhận được hơn 2/3 số phiếu bầu trước, nó sẽ bước vào giai đoạn cam kết, giai đoạn này sẽ thêm khối vào chuỗi khối và tăng chiều cao khối. Bất cứ khi nào một khối mới được thêm vào chuỗi khối, chiều cao khối của chuỗi khối là +1.


  • Nếu không thành công, nó sẽ quay trở lại giai đoạn bỏ phiếu trước hoặc giai đoạn cam kết trước.

  • Lưu ý rằng ở bất kỳ độ cao nào, có thể cần nhiều hơn một vòng bỏ phiếu để cam kết một khối. Vì có thể xảy ra các trường hợp sau:

  • "Người đề xuất" được chỉ định ngoại tuyến khi khối được cho là được đề xuất


Khối do người đề xuất đề xuất vi phạm một số quy tắc được xác định trước

Tendermint dựa vào cơ chế hết thời gian chờ để đảm bảo rằng chuỗi khối không gặp phải sự chậm trễ trong việc tạo khối. Nếu khối được đề xuất không nhận được hơn 2/3 số phiếu bầu trước khi hết thời gian, thì người đề xuất mới sẽ tiến hành lại quy trình khối được đề xuất.

Chi tiết của thỏa thuận có thể được tìm thấy ở đây.

Nhìn chung, Tendermint đã chọn một con đường khác với Đồng thuận Nakamoto của Bitcoin và Ethash của Ethereum. Hãy để chúng tôi thực hiện một số so sánh chính:

Xác định so với có thể xảy ra

Không giống như sự đồng thuận xác suất như Đồng thuận Nakamoto và Ethash, Tendermint là sự đồng thuận xác định - nghĩa là mỗi khối của Tendermint được hoàn thiện, không giống như các khối của Bitcoin chỉ ở trạng thái "có thể" được hoàn thiện.

Hãy xem lại sự đồng thuận của Nakamoto, khối luôn ở trạng thái "không xác định" - chỉ bằng cách xác nhận rằng một khối nằm trên "chuỗi dài nhất" thì chúng ta mới có thể chắc chắn rằng khối đó đang được hoàn thiện, đó là lý do tại sao giao dịch Bitcoin cần phải chờ cho "xác nhận 6 khối".

Trong Tendermint, khối được xác nhận ngay sau khi người xác minh bỏ phiếu và cam kết thành công.

Trình xác thực cố định so với trình xác nhận biến

Nakamoto Consensus và Ethash cho phép những người khai thác chọn tham gia hoặc bỏ cuộc bất cứ lúc nào mà không yêu cầu những người khai thác khác phải biết trước. Ngược lại, sự đồng thuận của Tendermint yêu cầu duy trì một bộ trình xác thực cố định đã biết trước, được xác định bằng khóa công khai của chúng.

Nhà lãnh đạo so với Không có nhà lãnh đạo

Đồng thuận Nakamoto và Ethash không có người lãnh đạo được chỉ định để đề xuất khối tiếp theo (tức là bất kỳ người khai thác nào cũng có thể khai thác khối tiếp theo). Mặt khác, Tendermint bầu ra các nhà lãnh đạo hoặc những người đề xuất, những người chịu trách nhiệm đề xuất khối tiếp theo.

Cơ chế hết thời gian rõ ràng và mơ hồ

Nakamoto Consensus và Ethash không sử dụng cơ chế hết thời gian chờ để đảm bảo rằng các công cụ khai thác sẽ có thể tạo khối, trong khi Tendermint có cơ chế hết thời gian rõ ràng để đảm bảo rằng quy trình sản xuất khối blockchain sẽ không gặp phải sự chậm trễ.

100 trình xác nhận so với 1000 trình xác nhận

Tendermint tuân theo thuật toán đồng thuận liên kết truyền thống, và mỗi trình xác nhận phải giao tiếp với nhau. Xem xét chi phí liên lạc, Tendermint không thể tăng vô hạn các trình xác nhận như Bitcoin hoặc Ethereum. Sự đồng thuận của Tendermint lên lịch cho 100 trình xác thực.

Vì vậy, một trong những nhược điểm của Tendermint là nó yêu cầu kiến ​​thức trước về tất cả những người xác nhận và không cho phép những người xác thực tham gia hoặc rời đi bất cứ lúc nào; không giống như Bitcoin hoặc Ethereum.

Ngoài ra, Tendermint cũng yêu cầu toàn bộ hệ thống duy trì một đồng hồ thống nhất; mặc dù trong thực tế, Tendermint đã chứng minh rằng nó có thể duy trì một đồng hồ thống nhất bằng cách tích hợp các dấu thời gian của mỗi nút, nhưng mọi người đều biết rằng đồng bộ hóa thời gian là một vấn đề lý thuyết rất phức tạp.

Tendermint có ít trình xác minh hơn Bitcoin và yêu cầu kiến ​​thức trước về bộ trình xác minh, vì vậy một số người có thể đặt câu hỏi rằng giao thức đồng thuận Tendermint "không đủ phi tập trung".

Tuy nhiên, phân cấp là một vấn đề quan điểm. Được rồi, không ngại ngùng, điều tôi muốn nói là phân quyền là một phương tiện để đạt được một mục tiêu nhất định, không phải bản thân mục tiêu; tôi không thích đưa ra phán xét mà không hiểu mục tiêu của phân quyền.

Tôi nghĩ rằng cách tiếp cận thận trọng của Tendermint trong việc yêu cầu kiến ​​thức cố định và trước đó về bộ trình xác thực là khả thi trong nhiều trường hợp (hoặc thậm chí hầu hết các trường hợp), miễn là chi phí phá vỡ hệ thống đủ cao và có biện pháp phòng vệ và hình phạt cho những kẻ tấn công .

Nếu chúng ta quay lại ví dụ về thị trường dự đoán, tôi sẽ nói rằng một ứng dụng thị trường dự đoán phi tập trung đơn giản là không cần phải có cùng mức độ phân cấp như một loại tiền tệ tốt hoặc một ứng dụng lưu trữ giá trị, 10, 20 hoặc 100 trình xác nhận là đủ. tiếp tục.

Lấy TruStory làm ví dụ, chúng tôi sử dụng SDK Cosmos để xây dựng logic ứng dụng mặt sau và lưu trữ trạng thái cũng như logic của ứng dụng trên chuỗi khối, trong khi giao diện người dùng là riêng tư ở một mức độ nào đó—SDK Cosmos cho phép chúng tôi xây dựng một hệ thống thiện ác trừng phạt Khuyến khích hệ thống, hiển thị rõ ràng lớp dữ liệu, cho phép người dùng chia sẻ quyền sở hữu và quản trị mạng, đồng thời cùng nhau quyết định các vấn đề trong tương lai, loại bỏ người dùng ác ý và thiết kế mạng cho người dùng lớp hoặc lớp cơ sở theo sở thích cá nhân. Đối với các nhà phát triển, họ cũng có thể xây dựng các công cụ và dịch vụ phát triển của riêng mình dựa trên logic chuỗi khối phía sau. Vì vậy, việc có 10 hoặc 100 người xác minh thực hiện và xác minh các giao dịch có thể đảm bảo nhu cầu về tính minh bạch, quyền sở hữu và trách nhiệm giải trình của người dùng và nhà phát triển.

Nếu bạn có thể hiểu được lợi ích của việc Tendermint hy sinh "chọn một bộ trình xác thực cố định và đã biết trước", bạn sẽ vô cùng ngưỡng mộ những tính năng kỳ diệu này mà nếu không thì không thể đạt được:

an toàn và hoạt động

Giao thức của Tendermint đảm bảo tính bảo mật và tính sống động. Giả sử rằng hơn 2/3 trọng số biểu quyết của người xác minh không nằm trong tay người xác minh Byzantine (nghĩa là hơn 2/3 số người xác minh tuân theo thỏa thuận), nói cách khác, ít hơn 1/3 phiếu bầu là độc hại, thì giao thức có thể Đảm bảo tính bảo mật và hoạt động của mạng (nghĩa là người xác minh sẽ không bao giờ đề xuất các khối xung đột ở cùng độ cao khối và chuỗi khối sẽ luôn tạo ra các khối bình thường).

hiệu suất cao

Thời gian tạo khối của sự đồng thuận Tendermint có thể thấp tới 1 giây, đạt tốc độ xử lý hàng nghìn giao dịch mỗi giây, giúp Tendermint phù hợp hơn cho các ứng dụng yêu cầu giao dịch thường xuyên.

Chứng nhận tức thì

Trong thế giới chuỗi khối, tính hữu hạn có nghĩa là sau khi một khối được gửi đến chuỗi, chúng ta có thể xác định trạng thái của toàn bộ chuỗi khối cho đến khối đó.

Như chúng tôi đã đề cập trước đó, sự đồng thuận của Nakamoto có bản chất xác suất của nó, vì vậy không có cách nào để đảm bảo tính hữu hạn. Bạn chỉ có thể đảm bảo rằng chuỗi phân nhánh mà giao dịch của bạn đang bật là chuỗi đồng thuận dựa trên xác suất rằng hầu hết các công cụ khai thác vẫn đang khai thác trong phân nhánh đó.

Tuy nhiên, Tendermint yêu cầu người xác thực bỏ phiếu và hoàn thiện từng khối. Vì vậy, chúng tôi có thể nói rằng với ít hơn 1/3 trình xác nhận độc hại, giao dịch có thể được "xác nhận ngay lập tức" - khi khối được tạo, người dùng biết rằng giao dịch của họ đã được xác nhận.

hệ thống trách nhiệm

Tendermint sử dụng PoS như một cơ chế chống Sybil - yêu cầu người xác thực đặt cược mã thông báo (tức là "trái phiếu" của họ) để đảm bảo các nút không thể gian lận hệ thống bằng cách tạo nhiều tài khoản giả.

PoS tiết kiệm năng lượng hơn PoW (bằng chứng về PoW đến từ sức mạnh tính toán mà những người khai thác tiêu thụ để giải quyết hàm băm của khối tiếp theo), nhưng lỗ hổng "no stake" cố hữu của nó khiến người xác minh dễ dàng gian lận.

Tendermint phạt những người xác nhận vi phạm quy tắc giao thức (ví dụ: bỏ phiếu cho các khối xung đột và phát phiếu bầu chưa được xác minh) bằng cách cắt giảm khoản tiền gửi để tránh các vấn đề không quan tâm. Cụ thể hơn, giao thức có "quy tắc khóa" điều chỉnh những gì mỗi trình xác thực có thể làm khi bỏ phiếu cho một khối cụ thể. Ví dụ: một khi trình xác thực cam kết trước một phiếu bầu, nó sẽ bị "khóa" trong khối đó; trình xác thực chỉ có thể mở khóa và cam kết trước một khối khác nếu nó muốn tạo một khối khác polka trong phần tiếp theo của vòng. Nếu các quy tắc khóa bị vi phạm, người xác nhận sẽ bị phạt và mất tiền đặt cọc.

Ứng dụng khách nhẹ đơn giản hơn

Các ứng dụng khách nhẹ "nhẹ" hơn các nút đầy đủ vì chúng không lưu trữ tất cả trạng thái của chuỗi khối, chỉ lưu trữ các tiêu đề khối. Trừ khi đó là nút khai thác chịu trách nhiệm xác minh và tạo khối hoặc nút xác thực, hầu hết các nút không thực sự cần lưu trữ trạng thái đầy đủ của chuỗi khối.

Thay vì tải xuống và lưu trữ toàn bộ chuỗi, ứng dụng khách nhẹ tải xuống các tiêu đề khối từ khối gốc sang khối hiện tại. So với nút đầy đủ, ứng dụng khách nhẹ chỉ cần lưu trữ một lượng nhỏ dữ liệu, vì tiêu đề khối là đủ để xác minh tính hợp lệ của một số giao dịch cụ thể.

Điều thú vị nhất là một ứng dụng khách nhẹ của chuỗi khối dựa trên Tendermint thậm chí không cần phải đồng bộ hóa tất cả các tiêu đề khối, chỉ cần tải xuống các tiêu đề khối theo định kỳ.

Như chúng ta đã thảo luận trước đó, Tendermint khác với Bitcoin và Ethereum, tất cả các khối của nó phải được bỏ phiếu và xác nhận cuối cùng; bởi vì mỗi khối được xác nhận cuối cùng, nên ứng dụng khách nhẹ chỉ cần chú ý đến những thay đổi trong bộ trình xác thực— - Miễn là vì đã biết bộ trình xác thực mới nhất, ứng dụng khách nhẹ có thể tải xuống các tiêu đề khối mới nhất và xác minh rằng các khối này có hơn 2/3 phiếu bầu của trình xác thực.

Lớp mạng vũ trụ

Như chúng tôi đã nói ở trên, sự đồng thuận của Tendermint dựa vào những người xác thực bỏ phiếu trong mỗi vòng. Do đó, các nút phải có khả năng giao tiếp và truyền thông điệp để đảm bảo rằng tất cả những người tham gia trong mạng có thể xem cùng một dữ liệu.

Giống như Bitcoin và Ethereum, Tendermint sử dụng giao thức tin đồn để nhanh chóng truyền bá trạng thái chuỗi khối mới nhất.

Các nút trong mạng không cần phải là trình xác thực để đóng vai trò trong quy trình đồng thuận của mạng. Ví dụ: một nút có thể là nút nhẹ hoặc nút đầy đủ thay vì nút xác thực; các nút như vậy còn được gọi là "nút không xác thực".

Các nút xác thực và không xác thực chịu trách nhiệm phân phối dữ liệu (chẳng hạn như dữ liệu đề xuất, dữ liệu khối và dữ liệu bỏ phiếu) để đảm bảo rằng tất cả các nút có thể nhận được thông tin và giao dịch do hệ thống tạo ra.

Lớp ứng dụng vũ trụ

Hiện tại, chúng tôi đã hiểu các thành phần cốt lõi của lớp mạng Tendermint và lớp đồng thuận; lớp mạng chịu trách nhiệm truyền các giao dịch giữa tất cả các máy tính trong mạng và thuật toán đồng thuận Tendermint đảm bảo tính nhất quán của máy trạng thái (nghĩa là , chuỗi khối trong tất cả các nút nhất quán với).


  • Nhưng những giao dịch nào chúng ta đang thông qua và xác thực? Ở đây có lớp ứng dụng.

  • Xác định và gửi các giao dịch cần được ghi lại trong chuỗi khối


Liên tục cập nhật trạng thái chuỗi khối sau khi các giao dịch được thực hiện thông qua lớp đồng thuận

chữ

Cosmos SDK cung cấp một khung để xây dựng các lớp ứng dụng, giống như Ruby-on-Rails trong thế giới chuỗi khối (Ruby-on-Rails là một khung cho phép các nhà phát triển dễ dàng xây dựng các ứng dụng phía web với cài đặt mặc định), Cosmos SDK Nó cũng cung cấp các nhà phát triển với một khuôn khổ để xây dựng các ứng dụng chuỗi khối an toàn dựa trên nhân Tendermint.

Hãy nhớ rằng chuỗi khối là một máy trạng thái có cùng một bản sao lưu trạng thái trên tất cả các nút và SDK Cosmos cho phép bạn xây dựng các máy trạng thái thực tế được sao chép trên nhiều nút. SDK cho phép bạn tùy chỉnh trạng thái của ứng dụng, loại giao dịch cũng như các chức năng và công cụ cần thiết cho các chức năng chuyển đổi trạng thái.

chữ

Ứng dụng Cosmos hoạt động như thế nào (Phối cảnh trừu tượng)


  • SDK Cosmos cung cấp cơ chế "đa cửa hàng" để xác định và duy trì trạng thái của máy trạng thái lớp ứng dụng. Multistore chia trạng thái của lớp ứng dụng thành các thành phần khác nhau và quản lý chúng thông qua các "mô-đun" tương ứng.

  • Điểm mạnh của SDK Cosmos là thiết kế mô-đun độc đáo của nó. Mỗi mô-đun xác định và duy trì một tập hợp con các trạng thái tạo thành một chuỗi khối hoàn chỉnh. Ví dụ:

  • Mô-đun ngân hàng: Cho phép bạn giữ mã thông báo trong ứng dụng và chuyển mã thông báo


Mô-đun quyền: Cho phép bạn tạo và quản lý tài khoản và chữ ký

Mô-đun đặt cược và cắt giảm: Cho phép bạn xây dựng cơ chế đồng thuận PoS thông qua mã hóa

Mỗi mô-đun là một máy trạng thái nhỏ có thể được tổng hợp để tạo ra một máy trạng thái tổng thể.

Các nhà phát triển ứng dụng xác định các tập hợp con theo logic thành ngữ của từng mô-đun và trạng thái sửa đổi. Ngoài các mô-đun do SDK Cosmos cung cấp, các nhà phát triển cũng có thể gọi các mô-đun của bên thứ ba.

Mô-đun trình cắm thêm này để xây dựng các ứng dụng chuỗi khối rất mạnh mẽ vì nó cho phép các nhà phát triển linh hoạt sử dụng SDK hoặc các mô-đun bên ngoài.

Các giao dịch ở lớp ứng dụng giao tiếp với sự đồng thuận của Tendermint và lớp mạng thông qua giao diện chuỗi khối ứng dụng (ABCI, Giao diện chuỗi khối ứng dụng).

ABCI là một giao thức truyền thông Socket kết nối lõi Tendermint (sự đồng thuận + mạng) và các ứng dụng. Nó tương thích với bất kỳ ngôn ngữ lập trình nào, có nghĩa là các ứng dụng blockchain được xây dựng bằng SDK Cosmos về mặt lý thuyết có thể được viết bằng bất kỳ ngôn ngữ nào, không chỉ ngôn ngữ lập trình được sử dụng bởi các lớp mạng và đồng thuận cơ bản của Tendermint.

chữ

Lưu ý: Phiên bản hiện tại của Cosmos chủ yếu hỗ trợ Golang và nhiều ngôn ngữ khác sẽ được thêm vào trong tương lai.

Nói chung, SDK Cosmos cho phép các nhà phát triển xây dựng các ứng dụng phi tập trung dựa trên lõi Tendermint. Về mặt lý thuyết, ứng dụng này có thể được phát triển bằng bất kỳ ngôn ngữ nào và kết nối với công cụ đồng thuận Tendermint thông qua ABCI.

Việc tách lớp ứng dụng (Cosnos SDK, ABCI) khỏi lớp mạng và lớp đồng thuận (lõi Tendermint) cho phép các nhà phát triển linh hoạt hơn trong việc phát triển nhiều loại ứng dụng khác nhau và SDK Cosmos cho phép các ứng dụng này được phát triển bằng bất kỳ ngôn ngữ nào (ví dụ: Golang) làm cho quá trình phát triển ứng dụng chuỗi khối giống như phát triển ứng dụng thông thường.

Điều này hoàn toàn trái ngược với việc phát triển các ứng dụng trên Ethereum, vì sau này yêu cầu các nhà phát triển phải học ngôn ngữ mới Solidity và khắc phục nhiều hạn chế và khiếm khuyết của Solidity, đồng thời Golang có nhiều công cụ phát triển hơn Solidity và trải nghiệm phát triển tốt hơn gấp 10 lần.

Ngoài ra, tất cả các Ứng dụng Ethereum đều hoạt động trên một mạng duy nhất. Ưu điểm của điều này là các Ứng dụng này có thể chia sẻ tiêu chuẩn Ethereum và hiệu ứng quy mô tương ứng, nhược điểm là tất cả các Ứng dụng này chia sẻ lớp đồng thuận Ethereum, sẽ bị ảnh hưởng bởi kích thước của ứng dụng mới được thêm vào. Ngoài ra, toàn bộ mạng phải được quản lý như một đơn vị khổng lồ, bị ràng buộc bởi các triết lý quản trị và sự khác biệt về ý thức hệ, khiến việc mở rộng quy mô trở nên khó khăn.

Tất nhiên, những lợi ích như vậy đi kèm với những hy sinh nhất định: mỗi ứng dụng chuỗi khối trong mạng Cosmos phải nhập trình xác minh, cộng đồng và hệ thống kinh tế của riêng mình; không thể sử dụng trực tiếp tất cả các trình xác minh và cộng đồng mạnh mẽ cũng như các hệ thống kinh tế hiện có.


Tóm lại là

tiêu đề cấp đầu tiên

Tóm lại là

以太坊爱好者
作者文库