(Xin chia sẻ với cả nhà giải pháp mình đã từng tham gia với vai trò co-founder, đồng sở hữu sáng chế và đã thất bại vì không ra được test net)
Nan đề Blockchain hay Tam giác DCS
Tác giả Trent McConaghy [1] từ BigchainDB đã xuất bản một bài báo xuất sắc có tên “Tam giác DCS – Phi tập trung, Nhất quán, hoặc Khả năng mở rộng. Hãy chọn lấy hai! [2] ”vào tháng 6 năm 2016. Ngay sau đó, Vitalik Buterin từ Ethereum và Greg Slepak cũng đưa ra tuyên bố tương tự. Vitalik gọi đó là “Nan đề về khả năng mở rộng” [3] hoặc “Nan đề blockchain”. Đến tháng 10 năm 1977, Greg Slepak xuất bản bài báo “Định lý DCS”, sử dụng ngôn ngữ toán học, chứng minh định lý này, và sau đó nó được đăng trên trang tin của Đại học Cornell vào tháng 1 năm 2018 [4].
Tóm lại, tam giác DCS nói rằng chúng ta có thể có bất kỳ hai trong ba thuộc tính chính của blockchain: Phi tập trung; Đồng thuận; hoặc Khả năng mở rộng, nhưng không phải cả ba cùng một lúc. Hay nói cách khác, nếu chúng ta cố định một thuộc tính thì hai thuộc tính còn lại sẽ bù trừ cho nhau. Ví dụ: nếu chúng ta sửa thuộc tính Phi tập trung và tăng Sự đồng thuận, chúng ta chắc chắn sẽ hy sinh tốc độ và khả năng mở rộng của hệ thống. Và ngược lại.
Vào thời điểm hiện tại, mùa thu năm 2018, tất cả chúng ta đều biết rằng tốc độ xử lý giao dịch của các nền tảng blockchain công khai vẫn còn khá thất vọng. Bitcoin có thể xử lý khoảng 7 giao dịch mỗi giây. Ethereum chỉ có thể xử lý khoảng 15 giao dịch mỗi giây. Quá chậm! Và hệ quả hiển nhiên là khả năng mở rộng nền tảng là điều không thể. Vì vậy, câu hỏi đặt ra là làm thế nào chúng ta có thể tăng tốc xử lý giao dịch, tăng khả năng mở rộng nền tảng mà không phải hy sinh nhiều sự phi tập trung và đồng thuận?
Tháng 2 năm 2018, Trent McConaghy đã cập nhật bài viết của mình và liệt kê một số cách tiếp cận để vượt qua giới hạn của tam giác DCS bao gồm:
– Cải tiến giao thức đồng thuận. Ví dụ: Ouroboros [Kiayias2017] [5], Dfinity [Hanke2018] [6], Red Belly [Crain2017], OmniLedger [Kokoris2018] [7]
– Phân chia ra để mỗi nút chỉ có một phần nhỏ khối lượng công việc tính toán hoặc dữ liệu. Ví dụ: [EthSharding2018] [8]
– Các mạng / chuỗi độc lập dính với các đầu nối. Ví dụ: Interledger [Thomas2015] [9], Cosmos [Kwon2017] [10], PolkaDot [Wood2016] [11], Plasma [Poon2017] [12], TrueBit [Teusch2017] [13]
– Các kênh thanh toán “Lớp 2”. Ví dụ: Lightning [Poon2016] [14], Raiden [Raiden2018] [15]
Trong bài báo “Định lý DCS” của mình, Greg Slepak cũng đề xuất hai cách tiếp cận để giải quyết vấn đề:
– Kết hợp hệ thống DC và DS: Đây thực sự là giải pháp kênh trạng thái được sử dụng trong Mạng Lightning và Mạng Raiden như đã mô tả ở trên
– Kết hợp nhiều hệ thống DC: Còn được gọi là sharding, cách tiếp cận này đã được đề cập ở trên trong Ethereum Sharding và OmniLedger.
Trong bài viết này, tôi sẽ mô tả một cách tiếp cận mới để giải quyết vấn đề nan giải về blockchain: Một giao thức lai mới để tăng tốc khả năng xử lý giao dịch cho các nền tảng blockchain hỗ trợ hợp đồng thông minh. Giao thức kết hợp này, được gọi là Duochain, được sử dụng trong nền tảng blockchain công khai của Amate mà chúng ta đang phát triển.
Blockchain và DAG
Tốc độ xử lý chậm của các nền tảng blockchain hiện tại chủ yếu là do các thuật toán và giao thức xử lý dữ liệu. Hầu hết các hệ thống blockchain hiện tại đều có thời gian tạo khối cố định và các khối dữ liệu chứa các giao dịch bên trong nó thường được ấn định kích thước tối đa. Do đó, mỗi khối thường lưu trữ tối đa một số lượng giao dịch nhất định. Và nó có nghĩa là có một giới hạn trên của thông lượng xử lý giao dịch. Các giao thức được mô tả ở trên được coi là các giao thức đồng bộ.
Từ năm 2014, có một số sáng kiến sử dụng kiến trúc dữ liệu khác nhau và giao thức xác nhận giao dịch dựa trên cấu trúc liên kết Đồ thị Acyclic Trực tiếp (DAG). Một số nền tảng nổi tiếng có thể được liệt kê bao gồm IOTA, ByteBall và NANO (trước đây là Raiblocks). Kiến trúc DAG cho phép các giao dịch mới được tạo, xác minh và lưu trữ trong cơ sở dữ liệu ngay lập tức mà không cần đợi đồng bộ hóa với các giao dịch khác. Tính chất không đồng bộ này về mặt lý thuyết có thể cho phép thực hiện các giao dịch vô hạn tại bất kỳ thời điểm nào. Tuy nhiên, do nhiều ràng buộc khác của mạng máy tính, thông lượng xử lý giao dịch với kiến trúc DAG vẫn có giới hạn của nó. Tuy nhiên, giới hạn này thường cao hơn nhiều so với các nền tảng dựa trên giao thức đồng bộ.
Do tính chất không đồng bộ, việc thêm các hợp đồng thông minh vào các nền tảng dựa trên DAG là rất khó. Hợp đồng thông minh đòi hỏi trạng thái toàn thể ban đầu và dữ liệu đầu phải được đồng bộ hóa để đảm bảo đầu ra giống nhau khi chạy trên các nút khác nhau tại các thời điểm khác nhau. Bản chất không đồng bộ của các nền tảng dựa trên DAG chỉ đơn giản là không hỗ trợ tính năng này.
Giao thức Duochain
Duochain là một kiến trúc đa chuỗi, kết hợp sử dụng cơ chế xử lý giao dịch kết hợp để tích hợp cả kiến trúc blockchain và DAG vào một nền tảng, tận dụng lợi thế của cả hai.
Duochain chia giao dịch thành hai loại chính: Chuyển tiền trực tiếp từ tài khoản này sang tài khoản khác và chuyển tiền có điều kiện bằng cách sử dụng hợp đồng thông minh.
Để chuyển trực tiếp từ tài khoản sang tài khoản, Duochain sử dụng kiến trúc block-lattice, một kiến trúc đa chuỗi dựa trên DAG do Nano Currency (trước đây là Raiblocks) đề xuất và triển khai.
Trong kiến trúc block-lattice, mỗi tài khoản sở hữu và quản lý một chuỗi khối của riêng mình, được gọi là chuỗi tài khoản. Blockchain này chỉ chứa các giao dịch liên quan đến tài khoản chủ sở hữu. Chỉ chủ sở hữu tài khoản mới có quyền tạo và ký các khối và giao dịch trong blockchain của nó.
Cấu trúc liên kết block-lattice
Với block-lattice, mỗi lần chuyển tiền giữa hai tài khoản sẽ được tách thành hai giao dịch: Gửi giao dịch từ tài khoản người gửi và nhận giao dịch từ tài khoản người nhận.
Khi một tài khoản bắt đầu một giao dịch chuyển tiền, nó sẽ được truyền đến hệ thống, được xác minh và sẽ được đăng vào chuỗi khối của tài khoản người gửi. Trong kiến trúc block-lattice, mỗi khối chứa chính xác một giao dịch.
Khi nút của người nhận hoạt động, nó sẽ nhận được giao dịch gửi tiền được gửi đến tài khoản của anh ta và nút sẽ tạo một giao dịch nhận sau đó đăng nó vào chuỗi tài khoản của người nhận. Hai giao dịch này diễn ra không đồng bộ, không chờ đợi nhau.
Như đã lưu ý ở trên, giao thức không đồng bộ trong DAG là một trở ngại lớn đối với các hợp đồng thông minh (sau đây gọi là SC). SC phải có trạng thái đồng bộ toàn cầu của hệ thống để được thực thi một cách chính xác theo cách phi tập trung.
Duochain đề xuất một giải pháp để thêm một chuỗi khối sử dụng một giao thức đồng bộ vào hệ thống, chỉ được sử dụng cho các hợp đồng thông minh và các giao dịch liên kết của chúng, được gọi là SC-chain (Chuỗi hợp đồng thông minh). Chuỗi SC sẽ chạy song song với chuỗi tài khoản của kiến trúc block-lattice.
Chuỗi SC dựa trên nền tảng Ethereum được tùy chỉnh và cải tiến, sử dụng thuật toán đồng thuận DPOS có trọng số, thay vì Ethereum POW hiện tại. Đây là một blockchain được chia sẻ, vì vậy bất kỳ tài khoản nào cũng có thể xuất bản các hợp đồng thông minh lên SC-chain và các cơ chế gọi và thực thi SC phải tuân theo giao thức blockchain đồng bộ truyền thống, tương tự như Ethereum và Bitcoin. Cách tiếp cận này đảm bảo rằng SC-Chain luôn có trạng thái chuỗi đồng bộ, tương tự như trạng thái toàn thể của Ethereum, là cơ sở để thực thi SC.
Từ góc độ chung, Duochain chia mạng lưới blockchain thành hai mạng con. Một mạng con được sử dụng để chuyển tiền giữa các tài khoản và mạng con còn lại được sử dụng cho các hợp đồng thông minh. Vì vậy, có một câu hỏi về giao tiếp giữa các mạng. Làm thế nào một tài khoản có thể gọi một hợp đồng thông minh và làm thế nào để các hợp đồng thông minh có thể chuyển tiền / tài sản sang một tài khoản cá nhân nằm trong một mạng con khác?
Hợp đồng thông minh và block-lattice
Nhờ cơ chế block-lattice chia nhỏ các giao dịch gửi và nhận, giao tiếp giữa các mạng khá dễ dàng. Khi một tài khoản muốn gọi một SC để thực hiện, tài khoản này chỉ cần tạo một giao dịch tới địa chỉ của SC và truyền nó lên mạng. Khi các nút trong mạng con chuỗi SC nhận được giao dịch này, chúng sẽ tạo ra một giao dịch nhận, lưu trữ nó vào chuỗi SC và khởi chạy SC. Sau khi thực hiện SC, thông thường các giao dịch mới sẽ được tạo. Các giao dịch này sẽ được xác minh và lưu trữ trong chuỗi SC, tuân theo giao thức đồng thuận của hệ thống. Nếu một giao dịch đang giải quyết một tài khoản trong một mạng con khác, giao dịch này sẽ được truyền tới mạng như các giao dịch gửi từ tài khoản này sang tài khoản khác và sẽ được xử lý theo giao thức không đồng bộ của kiến trúc block-lattice được đề cập ở trên.
Duochain giải quyết là gì?
Với việc chia mạng như đã nói ở trên, Duochain có thể giúp tăng tốc độ xử lý của hệ thống lên gấp nhiều lần. Hãy hình dung như sau:
Các nền tảng hợp đồng thông minh ngày nay có thể được so sánh với một làn đường đơn lẻ. Xe buýt (hợp đồng thông minh) và ô tô (chuyển tiền trực tiếp), tất cả đều chạy trên một làn đường, với tốc độ cố định, không ai có thể vượt qua những người khác.
Với Duochain, chúng ta có một hệ thống đường cao tốc, với vô số làn đường. Một đường truyền thống dành cho xe buýt (hợp đồng thông minh), vẫn chạy với tốc độ cố định như cũ. Và những chiếc ô tô (giao dịch chuyển khoản trực tiếp), sẽ được di chuyển đến vô số làn đường riêng của nó. Mỗi ô tô có làn đường riêng. Sau đó, không ai phải đợi những người khác, và tốc độ có thể được tối đa hóa tùy thuộc vào khả năng của xe. Và ngay cả trên làn đường truyền thống, số lượng xe buýt – hợp đồng thông minh cũng sẽ tăng lên, khi các xe chuyển hướng sang đường cao tốc của chính nó.
Quay lại tam giác DCS, Duochain thực sự cung cấp giải pháp giao thức lai và kiến trúc đa chuỗi giúp mở rộng băng thông xử lý giao dịch cho nền tảng hợp đồng thông minh. Với cùng mức độ phân quyền, với nền tảng SC truyền thống, Duochain có thể thêm mạng truyền trực tiếp P2P vào mạng hiện có, giảm tải cho blockchain hợp đồng thông minh, tăng băng thông xử lý lên rất nhiều. Và, giảm tải trên mạng SC blockchain sẽ làm tăng tốc độ tính toán của chính blockchain SC.
Giao thức Duochain bổ sung một phương pháp mới để giải quyết các hạn chế của tam giác DCS của các nền tảng hợp đồng thông minh hiện tại. Cách tiếp cận này không mâu thuẫn với những cách được Trent McConaghy liệt kê trong bài báo của mình. Nó có thể được kết hợp với các phương pháp đã đề cập để có được những kết quả tốt hơn để giải quyết những hạn chế của tam giác DCS.
Bài có tham khảo các nguồn:
DCS triangle.
[1] https://blog.bigchaindb.com/@trentmc0
[2] https://blog.bigchaindb.com/the-dcs-triangle-5ce0e9e0f1dc
[3] https://github.com/ethereum/wiki/wiki/Sharding-FAQs
[4] https://arxiv.org/pdf/1801.04335.pdf
[5] https://eprint.iacr.org/2016/889.pdf
[6] https://dfinity.org/pdf-viewer/pdfs/viewer…
[7] https://eprint.iacr.org/2017/406.pdf
[8] https://github.com/ethereum/wiki/wiki/Sharding-FAQ
[9] https://interledger.org/interledger.pdf
[10] https://github.com/cosmos/cosmos/blob/master/WHITEPAPER.md
[11] https://github.com/…/polka…/raw/master/PolkaDotPaper.pdf
[12] https://plasma.io/plasma.pdf
[13] https://people.cs.uchicago.edu/~teutsch/papers/truebit.pdf
[14] https://lightning.network/lightning-network-paper.pdf
[15] https://raiden.network/101.html
Theo Fb Hoa Phan