Gửi bài viết tới BigCoin

[Review Code] Dự án QuarkChain – Hứa hẹn 1 triệu giao dịch/giây

Đăng bởi: Miorly  - 26/04/2018 - 710 lượt xem
Chia sẻ
 

QuarkChain là 1 blockchain 2 tầng, tầng 1 là sharding linh hoạt và chain gốc ở tầng 2. Hãy tưởng tượng như Ethereum là 1 root chain và nó có rất nhiều side chain, chúng ta có POA, chúng ta có chain của các dApp (từ Mạng lưới Loom- nền tảng blockchain thế hệ mới cho các game trực tuyến quy mô lớn và ứng dụng xã hội), mỗi 1 side chain sẽ được gắn vào root chain của Ethereum. Đây là giải thích đơn giản nhất của phương pháp 2 tầng lớp.

Ngày hôm nay chúng ta sẽ đi nghiên cứu sâu về code của dự án QuarkChain. Dự án tập trung phát triển hệ thống giao dịch ngang hàng công suất cao, hứa hẹn 1 triệu giao dịch. Không biết các độc giả suy nghĩ như thế nào nhưng với mình khi nghe con số 1 triệu giao dịch/ giây, mình sẽ hoài nghi và đi tìm hiểu xem họ làm như thế và bao lâu thực hiện được con số này.

Xem video phân tích dự án tại đây:

Như tôi và các bạn có thể thấy, hiện tại blockchain trong hệ sinh thái của chúng ta tốt nhất hiện nay mới chỉ đạt được 2k TPS và chúng ta kì vọng con số này có thể tăng lên 10k, và 50k. Còn rất nhiều mục tiêu mà chúng ta phải hướng tới trước khi đạt được 1 triệu TPS, bạn hiểu ý tôi rồi đấy. Nếu họ nói rằng “chúng tôi có thể đạt được 13,431k TPS” thì có thể tôi sẽ tin đấy. Còn nếu bạn nói bạn có thể đạt được 1 triệu TPS, ngay lập tức tôi sẽ nghĩ bạn là Scam!

Đó là lí do chúng ta nghiên cứu công nghệ của dự án.

QuarkChain là 1 blockchain 2 tầng, tầng 1 là sharding linh hoạt và chain gốc ở tầng 2. Hãy tưởng tượng như Ethereum là 1 root chain và nó có rất nhiều side chain, chúng ta có POA, chúng ta có chain của các dApp (từ Mạng lưới Loom- nền tảng blockchain thế hệ mới cho các game trực tuyến quy mô lớn và ứng dụng xã hội), mỗi 1 side chain sẽ được gắn vào root chain của Ethereum. Đây là giải thích đơn giản nhất của phương pháp 2 tầng lớp.

Hiện nay Ethereum sử dụng token ERC20 (như token của EOS, TRX…) và khi các side chain khác xây dựng nên nó sẽ có token ER20 riêng. Thay vì việc này, QuarkChain sẽ đưa ra cho bạn 1 ý tưởng về việc sử dụng blockchain sharding linh hoạt, 1 token mới sẽ được thêm vào khi có một blockchain mới, và mỗi token đó sẽ vẫn được xác nhận trong chain chính của Ethereum.

Vì vậy hãy nhớ kĩ nhiều side chain đã được cắm nguyên vào chain chính của Ethereum khi chúng ta nói về phương pháp hai tầng.

Các yếu tố còn lại đều là các chức năng của Blockchain 2 tầng, chúng tôi sẽ đi sâu vào từng khái niệm trong phần review code. Ở bên trên tôi đã nói qua về ví dụ POA và Mạng lưới Loom Chain cho các ứng dụng phi tập trung, nhưng vấn đề ở đây là chúng không thể giao tiếp với nhau. Trừ khi bạn áp dụng một số các phương thức cross chain. Trong QuarkChain chúng được thiết kế ở lớp đầu tiên.

Về cơ bản chúng ta đang ở một phần hệ thống, điểm khác biệt ở chỗ gửi các giao dịch on-chain và chéo chain là sự dễ dàng thuận tiện trong việc thay đổi địa chỉ đến.

Vì vậy có hai khái niệm phức tạp ở mức độ khác nhau mà mọi người cần phân biệt rõ, hãy xem ảnh chụp code dưới đây.

Nhìn hình trên ngay lập tức chúng tôi nghĩ đến pyethereum, họ bắt chước y hệt để trở thành pyquarkchain. Tôi không biết tôi có nên bi quan hay không nhưng đối với những dự án mà tôi đã xem qua thì việc copy là khá bình thường và được xem như một quy chuẩn.

Một điều đáng ngạc nhiên hơn là khi tôi đi sâu tìm hiểu những các file tôi chắc chắn là chúng được copy, tất cả các phần. Họ có nhập một số EVM và P2P nhưng chỉ là những cập nhật thô.

Một số số liệu cho thấy hiện tại mới có 268 commits, 4 nhánh, 4 người đóng góp. Tôi thích số tỷ lệ người đóng góp, quản lý các branches được sử dụng, số lượng commits nhỏ những hàm chứa khá nhiều giá trị. Một khởi đầu tốt đẹp đây.

Các yêu cầu vận hành và quản lý vấn đề đã thực sự được sử dụng. Rất đáng để xem.

So sánh nhanh hai mã code sau (pyquarkchain & pyethereum).

Comment tốt. Hãy tiến đến các chức năng thực tế.

Testnet đang chạy hiện tại có 8 shard (con số ước lượng). Chains đã được đào bằng thuật toán Proof of Work. Mỗi shard có thể chạy được 100-200 giao dịch/giây vì thế hiện tại tổng giao dịch/giây là 1.1k.

Đáng ra những chàng trai này cần tuyển một nhà design để trình bày, tôi muốn chương trình được sắp xếp như năm 2011 khi nó mới bắt đầu, nhưng những chàng trai này tập trung về mặt hiệu quả hơn. Ví đang được lập trình, tôi thường hạn chế bình luận về nó, đây chưa phải là HTTPS, và cần 10 phút để xác nhận, thôi nào.

Ví đang sử dụng ethereumjs-util.

Chúng tôi nhìn thấy các chức năng có Nodes và chọn Nodes, hãy quan sát.

Họ đang được bảo vệ, vì thế sẽ không dễ dàng bị hack ở thời điểm hiện tại.

Hãy bàn luận về một số chức năng của nó. Hãy nhớ lại phần tôi vừa review bên trên về sidechain, dự án tạo nên sharding độc lập, chia tất cả thành từng phần khác nhau. Tôi không thực sự muốn gọi cái QuarkChain đang làm là sharding, điều thú vị ở đây là một trong những yếu tố họ đề cập trước đó là Quản lý tài khoản một cách dễ dàng. Hãy để tôi nhắc lại.

“Chỉ cần có một tài khoản cho tất cả các shard. Tất cả các đồng tiền mã hoá từ các shard khác được lưu trữ trong một ví thông minh.”, điều mà tất những dự án bắt chước Ethereum (WanChain, POA, dAppChains…) đó là họ sử dụng kiến trúc một khoá cá nhân/khoá công khai. Điều này có nghĩa là nếu bạn sở hữu cặp khoá đôi này trên Ethereum, bạn cũng sẽ sở hữu cặp khoá đôi này trên Wanchain, POA và các bản sao chép khác.

Vì vậy trong ví dụ Hai tầng chúng tôi đã đề cập bên trên, bạn cũng sẽ sở hữu khoá này trong từng side chain. Nhưng điều này có dẫn tới sự xung đột nào không? Kể từ bây giờ, làm thế nào tôi gửi 10 WAN sang địa chỉ POA của tôi? Thực ra là bạn không thể. Trong QuarkChain bạn có thể không? Thế thì họ tiến hành như thế nào?

Đầu tiên, chúng ta cần xem lại tại sao giả dụ ban đầu của tôi về cấu trúc hai tầng side chain là sao. Chúng ta có thể gọi đó là phương pháp đặt tên sharding (mỗi sidechain/token sẽ có tên riêng).

QuarkChain đã tạo nên một loại sharding song song. Như vậy không giống ví dụ sidechain khác, nó khá giống Ethereum song song chạy tất cả các node với nhau. Nếu Ethereum A bắt đầu trở nên bận rộn, bạn sẽ chuyển khoản tiền của bạn sang Ethereum B. Vì lí do này mà tôi đã đấu tranh rất nhiều và gọi nó là sharding thật sự, bởi vì mỗi shard thực sự không phải là một mảnh miếng của tất cả nhưng là bản sao chép của tập thể, nếu tất cả chạy cùng lúc tuy nhiên hoạt động độc lập.

Vì thế khi tôi sở hữu khoá riêng, đồng nghĩa tôi sở hữu khoá đó ở Ethereum A, Ethereum B, C … và vì thế tôi có thể di chuyển quỹ của tôi giữa một trong những shard đó, nhưng liệu có không gây mâu thuẫn một lần nữa không? Vì thế khoá riêng tư của bạn sẽ có thể chức năng nữa như bạn có thể thấy dưới đây + shard ID, vì thế thay vì bạn sẽ có địa chỉ nền tảng như 0x1, bạn có thể có địa chỉ là 0x1a, 0x1b, 0x1c … Vì thế khi bạn có thể chuyển quỹ của mình từ 0x1a tới 0x1b bạn sẽ đơn giản sử dụng địa chỉ bạn muốn gửi sang. Đó là cách chúng tôi cho phép sở hữu một khoá cá nhân trong khi tương tác shard chéo.

Tuy nhiên, hai chain song song không thể chạm được sự đồng thuận, vì vậy họ cần phải dựa vào root chain để tạo được sự đồng thuận, vì thế chức năng chủ yếu của root chain là các giao dịch chéo chain. Ở giao dịch Ethereum thông thường bạn có địa chỉ A gửi địa chỉ B, hiện tại bạn có blockchain A gửi sang blockchain B, cùng chung khái niệm, nhưng các bên được đề cập có quy mô khác.

Do các chain song song, điều gì sẽ diễn ra nếu bất kì ai đơn giản giao dịch trên Ethereum A mà không ai sử dụng Ethereum B hay C? Thực ra, nếu Ethereum A nghẽn vì quá nhiều giao dịch thì nó sẽ bắt đầu phải chịu đựng thông lượng. Điều này sẽ làm tăng chi phí vì vậy bây giờ, nếu bạn muốn có giao dịch giá rẻ bạn có thể xử lý giao dịch của bạn trên Ethereum B và nếu cả A và B có tỷ lệ giao dịch bằng nhau thì bạn có thể chuyển sang C.

Khái niệm này là khai thác hợp tác theo định hướng thị trường, nhờ vào cấu trúc phần thưởng, tải trọng được chia sẻ trên các phân đoạn. Vấn đề là bạn có đủ tiền trong Ethereum A và bạn muốn tham gia vào ICO trên Ethereum C, nhưng A bị tắc nghẽn và bạn phải trả phí cao để chuyển tiền từ A sang C, và không chỉ bạn phải trả lệ phí cao, nhưng bạn phải chờ root chain để hoàn tất giao dịch của mình, bổ sung thêm chi phí.

Tôi không chắc chắn làm thế nào họ có thể xử lý vấn đề này, nhưng tôi thấy đây là một trở ngại. Tương tự, cách quản lý nhỏ lẻ mà người dùng cần phải làm giữa các shard của họ sẽ tạo ra những trải nghiệm không hay. Tôi nghĩ có hai vấn đề chính cần phải giải quyết.

Vì thế nếu chúng ta nhìn thấy thực tế số giao dịch trên giây ít đi, hãy xem xét sự tắc nghẽn có thể xảy ra trên một chain song song và bạn phải xem xét tổng phí của rootchain.

Như vậy, hãy quan sát phía lý thuyết về TPS trước.

Hiện tại các shard đang chạy ở 150 TPS vì thế 1 triệu/150 có nghĩa là cần 6.667 shard, và các shard hỗ trợ phải lên tới 2 tỷ shard. Nếu lý thuyết là đúng, bạn sẽ phải tiến đến quản lý nhỏ lẻ 6.667 shard bằng các di chuyển khoản tiền của mình liên tục ư? Vậy thì hãy chỉ làm 10 shard với 1.5k TPS thôi.

Tiếp theo là CPU, tôi đã quản lý khoảng 5k TPS trên một lõi đơn (chỉ dành riêng cho TPS), vì vậy, hãy nói thực tế là 1k. Nếu chúng ta xem xét một số máy khủng trong AWS, m5.24xlarge, có 72 lõi, thì sẽ được 72k TPS (giả sử có đủ giao dịch được thực hiện song song và bạn không phải thực hiện chúng đồng bộ, hãy nhớ, lý do chúng ta thực hiện giao dịch đồng bộ là bởi vì giao dịch 0x2 có thể bị ảnh hưởng bởi giao dịch 0x1. Nếu tôi có 10 QKC (Quarkcoin) và tôi gửi 10 đến A và 10 đến B và chúng được xử lý song song, cả hai đều có thể thành công, vì vậy chúng tôi phải xử lý chúng một cách đồng bộ. Nhưng giả sử chúng ta có 72 shard để chúng ta có thể chạy từng shard trên một CPU, vì vậy hãy nói 72k TPS là có thể.

Chúng ta nói thực tế chúng ta sẽ xem xét khoảng 10 shard, vì vậy khi nói 10k TPS là rất có thể đạt được.

Ngay cả ở 20 shard, vẫn còn hợp lý, chúng ta sẽ nhanh chóng đạt được kiếm 20k TPS. Vẫn còn rất nhiều ý kiến trái chiều về 1 triệu TPS, nhưng trước hết khả năng đạt đưuọc 10-50k của đội team là có thể đạt được.

Đó là tôi còn chưa nói về clustering mà tôi nghĩ mới chỉ đến đây thôi bạn đã oải rồi.

Kết luận đánh giá code QuarkChain

Thực sự có những vấn đề tôi chưa thấy oke lắm, nhưng tôi thực sự ấn tượng. Tôi nghĩ rằng họ nên 1 triệu TPS là hơi trìu tượng những thay vào đó chỉ nói là 50k TPS thôi thì sẽ thực tế hơn (và họ cần phải có một chuyên gia UI / UX nữa)

Tôi nghĩ việc thực hiện novel là khá tốt và tôi chắc chắn sẽ tìm hiểu testnet của họ nhiều hơn chút. Tuy nhiên khó chịu là họ chưa được công bố.

Các bạn đang đọc bài viết [Review code] Quarkchain - Dự án hứa hẹn 1 triệu giao dịch/giây tại chuyên mục Phân tích.

Biên soạn: https://bigcoinvietnam.com/

Tags
Chia sẻ  
  
  
  
84% Rating
Điểm: 4.2 / 5
5 Bình chọn

Miorly

Là member "cứng" của nhóm Core Team - Team chuyên phân tích các dự án Coins, ICO chuyên nghiệp của Bigcoinvietnam.

Bài viết liên quan

Bigcoin Việt Nam - Phân tích đầu tư Bitcoin, Ethereum, đầu tư ICO theo 39 tiêu chí phân tích công nghệ