Cảnh báo rủi ro: Đề phòng huy động vốn bất hợp pháp dưới danh nghĩa 'tiền điện tử' và 'blockchain'. — Năm cơ quan bao gồm Ủy ban Giám sát Ngân hàng và Bảo hiểm
Tìm kiếm
Đăng nhập
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
Xem thị trường
Mẫu thiết kế DApp thú vị: Tài sản hạng nhất
Nervos
特邀专栏作者
2018-12-20 09:46
Bài viết này có khoảng 5548 từ, đọc toàn bộ bài viết mất khoảng 8 phút
Tài sản hạng nhất, làm cho tài sản mã hóa trở thành "công dân hạng nhất" trong chuỗi khối.

Tác giả của bài viết này là Jan. Bài viết giải thích một mẫu thiết kế DApp rất thú vị được hỗ trợ trong mô hình Di động: Tài sản hạng nhất, làm cho tài sản mã hóa trở thành "công dân hạng nhất" trong chuỗi khối.

Các kỹ sư thích lập trình hàm hẳn đã quen thuộc với một thuật ngữ: First-class Function, dịch sang tiếng Trung Quốc nên được gọi là "hàm hạng nhất" hay "hàm hạng nhất". Hàm hạng nhất đề cập đến một lớp ngôn ngữ lập trình trong đó hàm là một khái niệm hoàn toàn độc lập: hàm có thể được gán cho một biến dưới dạng giá trị, được truyền dưới dạng tham số cho các hàm khác hoặc được sử dụng làm giá trị trả về được truyền từ hàm khác chức năng. Trong một ngôn ngữ như vậy, chúng ta có thể thao tác với các chức năng giống như thao tác với dữ liệu, vì vậy các chức năng và dữ liệu là "công dân hạng nhất" trong các ngôn ngữ này. Chức năng hạng nhất là một tính năng chính của các ngôn ngữ chức năng và rất nhiều sức mạnh của lập trình chức năng đến từ nó.

tiêu đề phụ

Sơ lược nhanh về mô hình trạng thái

Trước mô hình Cell, về cơ bản có hai mô hình trạng thái được sử dụng bởi các chuỗi khối khác nhau: mô hình UTXO và mô hình Tài khoản.

Đại diện của mô hình UTXO là Bitcoin. UTXO là tên viết tắt của Unspent Transaction Output, UTXO có thể hiểu đơn giản là Bitcoin, tuy nhiên, khác với các loại coin thông thường, mệnh giá của mỗi UTXO là khác nhau. Mỗi UTXO ghi lại ai là chủ sở hữu của coin thông qua một tập lệnh khóa (Lock Script), đồng thời đảm bảo rằng chỉ chủ sở hữu mới có thể tiêu coin. Mỗi nút đầy đủ của Bitcoin duy trì một tập hợp tất cả các UTXO hiện tại, mà chúng tôi gọi là trạng thái hiện tại của sổ cái Bitcoin (nghĩa là sổ cái hiện tại). Mỗi lần chuyển Bitcoin là một quá trình loại bỏ một số đồng tiền (thuộc về người gửi) khỏi bộ UTXO và thêm một số đồng tiền mới (thuộc về người nhận thanh toán và/hoặc người gửi). Vì toàn bộ trạng thái sổ cái được xây dựng dựa trên đơn vị nhỏ nhất của UTXO, nên chúng tôi gọi đó là mô hình UTXO.



chữ

First-class Coin

Mô hình UTXO và mô hình Tài khoản đại diện cho hai ý tưởng để xây dựng trạng thái sổ cái. Sổ cái là tập hợp các mối quan hệ giữa chủ sở hữu và tài sản. Mô hình UTXO được mô hình hóa trên cơ sở tài sản, đầu tiên xây dựng khái niệm "đồng xu", sau đó gán các thuộc tính của chủ sở hữu cho đồng tiền; mô hình Tài khoản được mô hình hóa trên cơ sở chủ sở hữu, đầu tiên xây dựng khái niệm " tài khoản", và sau đó cung cấp cho tài khoản Thuộc tính của số dư. Cách nào được sử dụng làm mô hình cơ bản xác định xem đối tượng cơ bản của hoạt động trong hệ thống là tài sản hay tài khoản (chủ sở hữu).

Vì vậy, chúng tôi nói rằng đồng xu (Coin) là Công dân hạng nhất trong mô hình UTXO, mỗi UTXO là một đối tượng có mã định danh độc lập (ID giao dịch + Chỉ số đầu ra) và Coin là đối tượng được vận hành trực tiếp bởi người dùng (người dùng xây dựng Giao dịch chứa UTXO) và tài khoản dựa trên khái niệm cấp trên do Coin thiết lập (chỉ tồn tại trong ví). Vì vậy, UTXO là một đồng tiền hạng nhất.


Trong mô hình Tài khoản, tài khoản là Công dân hạng nhất và tiền được tổng hợp trong số dư tài khoản không có số nhận dạng độc lập. Tài khoản là đối tượng của hoạt động trực tiếp của người dùng và việc chuyển tài sản được thực hiện bởi tài khoản với tư cách là đại lý của người dùng. Điều này rõ ràng nhất khi người nhận là một tài khoản hợp đồng. Theo mô hình như vậy, các tài sản mã hóa do người dùng định nghĩa (chẳng hạn như ERC 20) giống như một phương thức hạch toán của bên thứ ba hơn là chuyển điểm-điểm.Sự khác biệt này sẽ khiến bên thứ ba (bên thứ ba ở đây đề cập đến hợp đồng thông minh tài sản mã hóa được quản lý) giới thiệu quy trình chuyển giao tài sản, làm tăng độ phức tạp trong thiết kế của hợp đồng thông minh (chúng ta có thể coi hợp đồng thông minh là logic sẽ được thực thi tự động khi tài sản được chuyển giao). Để giảm bớt sự phức tạp này, các giao dịch trong mô hình Tài khoản cần thêm logic đặc biệt (trường Giá trị), nhưng logic đặc biệt đó chỉ hỗ trợ nội dung gốc và gây ra các đường dẫn mã khác nhau cho nội dung gốc và nội dung do người dùng xác định.

Về những vấn đề này, Kelvin Fitcher đã viết mộtLooking at ownership in the EVMPhân tích được thực hiện tốt và tôi sẽ không nhắc lại ở đây.



Với những nền tảng này, chúng ta sẽ dễ hiểu hơn về khái niệm thiết kế của CKB:

Với mô hình Cell, chúng ta có thể đơn giản hóa việc thiết kế và triển khai Tài sản do người dùng xác định (User Defined Assets) là “công dân hạng nhất” trên Nervos CKB, gọi tắt là First-class Assets.

tiêu đề phụ

First-class State

Làm thế nào để nhận ra Tài sản hạng nhất?

Dù bằng cách nào, chúng ta cần ghi lại mối quan hệ giữa chủ sở hữu và nội dung. Các bản ghi mối quan hệ này về cơ bản là một trạng thái đồng thuận. Muốn có Tài sản hạng nhất thì phải có Nhà nước hạng nhất, và đây là xuất phát điểm của mô hình Tế bào.

Cái tên Nervos CKB bắt nguồn từ chữ viết tắt của Common Knowledge Base (cơ sở kiến ​​thức chung). Lý do tại sao chúng tôi gọi chuỗi khối trong mạng Nervos là "Cơ sở tri thức chung" là vì trách nhiệm của nó là liên tục hình thành sự đồng thuận toàn cầu về trạng thái chung của mạng. Nói cách khác, CKB là trạng thái được duy trì bởi một thư viện đồng thuận toàn cầu. Mô hình cơ bản của một thư viện tiểu bang đương nhiên chia toàn bộ tiểu bang thành các đơn vị tiểu bang nhỏ hơn để tổ chức. Các đơn vị trạng thái nhỏ hơn này là các ô.

Vì Cell là một đơn vị trạng thái có mã định danh độc lập (ID giao dịch + Chỉ số đầu ra ô), nên nó có thể được tham chiếu trực tiếp và chuyển dưới dạng tham số cho tập lệnh. Nó là "công dân hạng nhất" trong CKB, có nghĩa là trạng thái là CKB “công dân hạng nhất”. Cell không chỉ là First-class State mà còn là First-class State đơn giản nhất: một Cell chỉ có Dung lượng, Dữ liệu, Khóa và Hợp đồng (tùy chọn, Hợp đồng có thể là một đoạn mã hoặc Tham chiếu trỏ đến Ô Mã) bốn lĩnh vực.

Như hình bên dưới chủ sở hữu Cell có thể cập nhật trực tiếp trạng thái lưu trong Cell mà không cần qua trung gian Ở mô hình Account người dùng chỉ có thể thao tác trạng thái trong tài khoản thông qua mã hợp đồng (Code trong tài khoản) .Trên thực tế, nó được lưu trữ trong tay của hợp đồng.

Cần chỉ ra rằng với Cells, CKB thực sự có được một mô hình lập trình có trạng thái. Một quan điểm chung cho rằng sức mạnh biểu đạt của mô hình lập trình Ethereum đến từ máy ảo hoàn chỉnh của Turing. Trên thực tế, việc cho phép các hợp đồng thông minh lưu trạng thái máy tính thông qua tài khoản là một lợi thế so với EVM (ngôn ngữ chưa hoàn thiện của Turing cũng rất mạnh mẽ. Sức mạnh biểu đạt: https //en.wikipedia.org/wiki/Total_function_programming).

CKB triển khai mô hình lập trình hợp đồng thông minh có trạng thái mới thông qua sự kết hợp giữa Cell và CKB-VM (Đơn giản nhưng mạnh mẽ! Đây là một bài viết khác). Mô hình lập trình này phù hợp với Layer 2 hơn, vì qua phân tích mẫu chung của các giao thức Layer 2, chúng ta có thể thấy rằng các đối tượng tương tác giữa các lớp giao thức nên là các đối tượng trạng thái (State Transaction) thay vì các đối tượng sự kiện (Event Transaction) và Layer 1 phải là Lớp trạng thái thay vì lớp tính toán.

Một đặc điểm khác của mô hình lập trình CKB là không có sự phân biệt giữa dữ liệu (trạng thái) và mã. Câu này có nghĩa là, không giống như mô hình Tài khoản, trạng thái và mã của hợp đồng có thể được lưu trữ trong trường Dữ liệu của Ô và Ô lưu mã có thể được tham chiếu bởi các Ô khác (vì chúng là Trạng thái hạng nhất! ), trạng thái của hợp đồng Và mã không cần phải được liên kết với nhau và được lưu trữ ở một nơi. Các nhà phát triển có thể tải nội dung của ô mã hoặc ô dữ liệu vào bộ nhớ thời gian chạy thông qua một lệnh đơn giản, sau đó hiểu nó là thực thi mã hoặc đọc và ghi dữ liệu khi cần.

Với những hỗ trợ cơ bản này, chúng tôi có thể lưu trữ mã và trạng thái của hợp đồng một cách riêng biệt ở những nơi khác nhau: trường Mã (Dữ liệu) của Ô mã lưu trữ mã và trường Trạng thái (Dữ liệu) của Ô trạng thái lưu trữ trạng thái; Trong Ô, tham chiếu hợp đồng đề cập đến Ô mã để thiết lập các ràng buộc logic nghiệp vụ đối với Trạng thái được lưu bởi chính nó và tham chiếu Khóa đề cập đến Ô mã khác để thể hiện quyền sở hữu Ô trạng thái. Mỗi Ô trạng thái có thể thuộc về những người dùng khác nhau, do đó, các trạng thái người dùng độc lập trong mô hình Ô rất dễ thực hiện (trong mô hình Tài khoản, trạng thái hợp đồng thường bao gồm nhiều trạng thái người dùng, ví dụ: trong hợp đồng ERC 20, Cả Alice và số dư Mã thông báo của Bob được ghi lại ở trạng thái nội bộ của cùng một hợp đồng).

Nếu bạn muốn biết thêm về cách viết hợp đồng trên CKB-VM, vui lòng đọc hai bài viết sau:

tiêu đề phụ

First-class Asset

Tài sản do người dùng xác định trong CKB có thể được cấu trúc như sau:

  • Thiết kế hợp đồng định nghĩa tài sản (Asset Definition), nêu rõ các ràng buộc chính của tài sản (như tổng số lượng, tổ chức phát hành, số lượng không thay đổi trước và sau giao dịch, v.v.);

  • Lưu mã hợp đồng vào Ô định nghĩa tài sản;

  • Khi cơ quan phát hành được thỏa mãn, người phát hành sẽ phát hành tài sản và lưu trạng thái tài sản trong một Ô trạng thái khác. Trường Hợp đồng của Ô trạng thái đề cập đến Ô mã lưu định nghĩa tài sản, đảm bảo rằng sự thay đổi của Ô trạng thái phải tuân theo các ràng buộc của định nghĩa tài sản;

  • Chủ sở hữu của Ô tài sản có thể thay đổi chủ sở hữu của Ô tài sản bằng cách cập nhật Khóa.

Có thể thấy rằng trong thiết kế như vậy, các tài sản do người dùng định nghĩa tồn tại trong hệ thống dưới dạng các đối tượng độc lập, mỗi tài sản là một Ô và mỗi tài sản có một mã định danh riêng. Chúng ta hoàn toàn có thể nghĩ rằng Asset Cell là một phiên bản tổng quát của UTXO. Tài sản hạng nhất như vậy có những ưu điểm sau:

  • Ô tài sản có thể được tham chiếu và chuyển trực tiếp vào dưới dạng tham số của các hợp đồng khác. Miễn là Đầu vào tham chiếu Ô tài sản có quyền người dùng chính xác, hợp đồng có thể sử dụng Ô tài sản của người dùng một cách bình thường;

  • Định nghĩa tài sản được tách ra khỏi trạng thái tài sản. Chủ sở hữu của Ô Định nghĩa Nội dung là người phát hành nội dung, trong khi Ô Nội dung thuộc về mỗi người dùng. Logic ủy quyền và logic nghiệp vụ của Ô tài sản được tách biệt và quyền sở hữu hoàn toàn được xác định bởi Khóa riêng của nó, điều này không liên quan gì đến logic của Định nghĩa tài sản. Điều này có nghĩa là Tài sản hạng nhất không được lưu trữ trong tay tài sản tổ chức phát hành, nhà phát triển hoặc hợp đồng định nghĩa tài sản, nhưng thực sự và hoàn toàn thuộc sở hữu của người dùng;

  • Tài sản của người dùng được tách biệt với nhau và trạng thái tài sản của người dùng là độc lập. Mô hình kinh tế của CKB tập trung vào các khuyến khích lưu trữ trạng thái: người dùng không chỉ phải trả phí viết để lưu trạng thái trên chuỗi khối mà còn phải chịu chi phí lưu trữ tỷ lệ thuận với thời gian lưu trữ. Nếu trạng thái tài sản của người dùng được trộn lẫn và lưu trữ ở một nơi (chẳng hạn như ERC 20), ai sẽ trả chi phí lưu trữ cho các trạng thái này sẽ là một vấn đề. (Bài báo Kinh tế CKB đang làm việc chăm chỉ...);

  • Các định nghĩa nội dung có thể được cập nhật một cách độc lập miễn là logic Khóa của Ô định nghĩa nội dung cho phép.

tiêu đề phụ

Summary

Mô hình Cell là một mô hình có tính trừu tượng cao, trên thực tế bạn không chỉ thực hiện First-class Asset trên Cell mà còn có thể mô phỏng Account trên Cell. Qua phần giới thiệu của bài viết này, chúng ta có thể thấy rằng mô hình Cell là một thiết kế mới khác với mô hình UTXO và mô hình Tài khoản. Ngoài sự khác biệt trong mô hình trạng thái, CKB còn chuyển phép tính (nghĩa là tạo trạng thái) ra bên ngoài chuỗi và chỉ cần xác minh logic của trạng thái trên chuỗi. Sự tách biệt duy nhất của mô hình trạng thái và xác minh tính toán xác định rằng các mô hình DApp và mẫu thiết kế mới chắc chắn sẽ xuất hiện trên mô hình lập trình CKB.

Trong gần một năm kể từ khi hoàn thành sách trắng CKB, chúng tôi thấy ngày càng có nhiều người bắt đầu chú ý và thảo luận về hai ý tưởng mới là Nhà nước hạng nhất và Tài sản hạng nhất (mặc dù thuật ngữ mà mọi người sử dụng là khác nhau). .giống nhau), chúng tôi rất vui mừng về những phát triển này. Nếu bạn muốn thảo luận thêm về Nhà nước hạng nhất và Tài sản hạng nhất, hoặc có bất kỳ ý tưởng thú vị nào về mô hình lập trình của CKB, vui lòng liên hệ với chúng tôi để thảo luận ~

Mã của CKB được mã nguồn mở hoàn toàn và nội dung giới thiệu trong bài viết này đã được triển khai trong mã. Nhận xét về mã của chúng tôi được chào đón:

  • https://github.com/nervosnetwork/ckb-demo-ruby-sdk (một ví dụ về lập trình với tập lệnh Ruby trên CKB, mục tốt nhất để hiểu mô hình lập trình trên CKB)

  • https://github.com/nervosnetwork/ckb

  • https://github.com/nervosnetwork/ckb-vm

Cảm ơn Ian Yang, Xuejie Xiao, Kevin Wang vì sự giúp đỡ của họ trong việc thiết kế mô hình CKB và Cell ~

Chào mừng tham gia cộng đồng chính thức của Odaily
Nhóm đăng ký
https://t.me/Odaily_News
Tài khoản chính thức
https://twitter.com/OdailyChina