Tìm hiểu về Ethereum Plasma
Ethereum
15
plasma
1
White

Kaopiz Software Co., Ltd. viết ngày 24/10/2018

Mở đầu

Bài viết trước mình đã trình bày về giới hạn cơ bản của một mạng public blockchain, đó là việc tất cả các tính toán thực hiện trên mạng blockchain (như Ethereum hay Bitcoin) đều phải được thực thi ở tất cả các nốt cùng một lúc. Đây chính là cách mà blockchain được thiết kể để đảm bảo tính đồng thuận. Mỗi nốt sẽ không phải phụ thuộc vào bất kỳ ai để biết được trạng thái hiện tại của mạng, mà tất cả các nốt sẽ tự mình tìm ra điều đó.

Điều này làm giới hạn số lượng giao dịch (transaction) có thể được thực hiện đồng thời trên Ethereum. Số lượng giao dịch sẽ không thể vượt quá khả năng tính toán mà ta cho phép một nốt thực hiện. Và việc mở rộng mạng blockchain (thêm nhiều nốt mới) không làm tăng tốc độ tính toán tổng thể mà ngược lại làm giảm nó đi.

Giới thiệu Plasma chain

Tháng 8 2017, Vitalik Buterin và Joseph Poon công bố một bài viết nhan đề Plasma: Autonomous Smart Contracts (Những hợp đồng thông mình độc lập). Bài viết giới thiệu một cách thức mới mà nếu được áp dụng có thể giúp ethereum tăng được số giao dịch thực hiện trong một giây so với hiện tại.

Giống như Bitcoin Lightning Network, Plasma cũng thực hiện các giao dịch off-chain, tức là không trực tiếp tạo các giao dịch đấy trên mạng chính (main-chain). Tuy nhiên ý tưởng của Plasma khác biệt ở chỗ, nó cho phép các mạng blockchain con được "liên kết" với mạng chính thông qua các Smart Contracts.

Về lý thuyết, trên mạng Plasma ta có thể thực hiện rất nhiều thuật toán phức tạp, thực thi các ứng dụng hoàn chỉnh với hàng nghìn người dùng, và chỉ tương tác tối thiểu với ethereum main-chain.

Để hiểu cách thức hoạt động của Plasma, chúng ta cùng xét ví dụ sau đây:

Giả sử có một game trao đổi bài trên Ethereum, tương tự như Cryptokitties, nhưng có thêm các thuộc tính cho phép người chơi thực hiện các hành động trong game như giao chiến. Những lá bài là tài sản trong game được tạo ra chính là các token theo chuẩn ERC721 chứa một đoạn mã là duy nhất đối với mỗi lá bài, và không thể bị chia tách được (hãy tưởng tượng giá của những tờ tiền giấy là ERC20 thì số serial trên mỗi tờ tiền là ERC721). Những hành động của người chơi trong game có thể diễn ra liên tục và lặp đi lặp lại, vì thế việc chuyển những action trong game thành transaction lên main-chain sẽ rất tốn kém và không đem lại nhiều lợi ích. Thay vào đó chúng ta sẽ sử dụng plasma để lưu các trạng thái của game.

Điều đầu tiên cần đó là một, hoặc một số, các smart contracts được tạo ra ở main-chain, đóng vai trò như là gốc (Root) cho các chuỗi Plasma con. Những smart contracts này sẽ lưu thông tin transaction cơ bản nhất tạo nên chuỗi Plasma con. Những thông tin như "địa chỉ sở hữu tài sản game", thông tin về trạng thái hiện tại của chuỗi Plasma con (mã băm của khối hiện tại trên chuỗi blockchain Plasma con). Ngoài ra những smart contracts này còn được coi là "cầu nối" để người chơi có thể chuyển tài sản của mình từ ethereum main-chain sang nhánh con và ngược lại.

Tiếp theo, chúng ta dựng nhánh con. Ở đây có thể có một cơ chế đồng thuận khác với nhánh chính. Có thể là Proof of Authority, một cơ chế đơn giản dựa trên sự đồng thuận của chỉ một số nốt duy nhất có khả năng tạo khối mới (block producers). Những nốt này nhận các transactions, tạo khối mới và phát tán đến tất cả các nốt khác. Công ty tạo ra game có thể trở thành một nốt như vậy.

Một khi được vận hành, các nốt producers sẽ gửi định kỳ thông tin trạng thái của nhánh con đến smart contracts gốc trên ethereum main-chain. Những thông tin này có thể là gốc của cây Merkel của tất cả các khối đã được tạo ra trên nhánh con. Như vậy bất kể lúc nào, trên main-chain cũng có thể kiểm chứng lại thông tin mà các nốt khác đã tạo ra trên nhánh con, mà không cần thiết phải lưu lại toàn bộ thông tin transactions trên main-chain.

Cuối cùng, những lá bài ERC721 sẽ được tạo ra trên main-chain, và khóa lại để không thể giao dịch, và chuyển sang nhánh con thông qua một smart contract. Sau đó, dựa vào những tính năng được định nghĩa trên smart contracts của nhánh con, các action được người chơi thực hiện, như giao chiến, nâng cấp, trao đổi bài. Bởi vì trên nhánh con, chỉ một số nốt là producers có thể thực thi giao dịch và tạo khối, nên chi phí sẽ nhỏ hơn nhiều so với trên main-chain, trong khi tốc độ thực hiện sẽ tăng lên rất cao.

Liệu Plasma có an toàn hay không

Bằng việc xây dựng các phương thức hoạt động trên nhánh con, được kiểm soát bới chỉ một số nốt là producers, hệ thống đã quay lại kiểu thiết kế tập trung ban đầu. Tuy nhiên, ngay cả trong trường hợp chỉ có duy nhất một producer kiểm soát 100% transactions trên nhánh con, thì điều tồi tệ nhất đối với người sử dụng cũng chỉ là bị buộc phải rời khỏi nhánh con, do thông tin tài sản của người chơi vẫn đang được lưu trong smart contracts trên main-chain.

Giả sử nốt producer muốn chiếm đoạt tài sản của người chơi bằng việc tạo ra một khối giả mạo và gửi thông tin trạng thái mới của chuỗi lên smart contract gốc trên main-chain. Hãy nhớ là tất cả các smart contract trên ethereum main-chain đếu được public và có thể được người dùng theo dõi trạng thái liên tục. Do đó khi một khối mới được tạo ra trên nhánh con không được xác thực bằng chữ ký bí mật của người dùng, và gửi lên smart contract gốc, người chơi có thể nhận ra và gửi một bằng chứng là chữ ký của mình đến smart contract gốc, để hủy trạng thái mới vừa được thêm vào cây Merkle. Và sau đó tạo transaction khác để rút tài sản khỏi nhánh con một cách hợp lệ.

Plasma tạo ra một cơ chế để ngăn chặn sự gian lận trong việc rút tài sản khỏi nhánh con. Đấy là tất cả người tham gia đều có thể gửi một bằng chứng gian lận đến smart contract gốc, để chứng minh một giao dịch trên nhánh con là không hợp lệ, trước khi giao dịch đấy về được main-chain và đi vào hệ thống. Nếu Alice muốn chuyển tài sản của mình từ nhánh con về main-chain, Alice sẽ phải đợi một khoảng thời gian để thông tin của mình được kiểm chứng. Trong khoảng thời gian đó, bất cứ nốt nào cũng có thể gửi thông tin về smart contract gốc chứng minh là Alice đã không còn sở hữu khối tài sản đó kể từ thời điểm Alice yêu cầu chuyển tài sản về main-chain.

Tuy nhiên việc rút tài sản khỏi nhánh con cũng có những rủi ro đáng kể. Trong điều kiện xấu nhất, khi mà tất cả người dùng trên nhánh con đồng loạt gửi yêu cầu chuyển tài sản về main-chain. Mạng Ethereum chưa t thể xử lý quá nhiều giao dịch cùng một lúc, nên với số lượng rất lớn yêu cầu, khoảng thời gian người dùng phải đợi để thông tin được kiểm chứng sẽ vượt quá khoảng thời gian mà smart contract gốc quy định, như vậy người dùng có thể bị mất hoàn toàn tài sản của mình trên nhánh con.

Kết luận

Plasma tạo ra một phân cấp thứ 2 cho mạng Ethereum giúp cho mạng này có thể được mở rộng khả năng tính toán mà vẫn đảm bảo được tính thống nhất của mạng public blockchain. Tuy nhiên hiện tại vẫn chưa có một ứng dụng thực tế nào có thể chứng minh tính khả thi của ý tưởng này. Giới hạn về khả năng mở rộng của mạng blockchain có thể được phá vớ bằng những thiết kế ở tầng thứ 2 như Plasma hay không, chúng ta cùng chờ xem.

Trích dẫn

Bài viết này được trích dẫn từ blog nội bộ công ty KAOPIZ - カオピーズ
Bài gốc: https://kipalog.kaopiz.com/posts/Tim-hieu-ve-Ethereum-Plasma

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Kaopiz Software Co., Ltd.

27 bài viết.
23 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
50 2
Bài viết này được trích dẫn từ blog nội bộ công ty (Link) (Link) Bài gốc: https://kipalog.kaopiz.com/posts/RegexHocroimanhuchuahoc (Ảnh) 1. Tự...
Kaopiz Software Co., Ltd. viết 8 tháng trước
50 2
White
5 0
Mở Đầu Chắc hẳn là dev ai cũng từng nghe qua về Docker và Virtual Machine (VBox hoặc Vmware). Docker giúp cho việc xây dựng và triển khai một môi ...
Kaopiz Software Co., Ltd. viết 8 tháng trước
5 0
White
5 0
Introduction Elasticsearch là một công cụ tìm kiếm dựa trên nền tảng Apache Lucene. Nó cung cấp một bộ máy tìm kiếm dạng phân tán, có đầy đủ công ...
Kaopiz Software Co., Ltd. viết 8 tháng trước
5 0
Bài viết liên quan
White
11 5
Tạm xóa
Giaosucan viết hơn 1 năm trước
11 5
White
1 0
Webpack Webpack là một module loader khá phổ biến trong phát triển web phía front end. Trong project xây dựng DApps trên Ethereum, ta hoàn toàn co...
Vani viết hơn 1 năm trước
1 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
27 bài viết.
23 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!