Tiêu đề gốc: "Tóm tắt theo chủ nghĩa tối giản cơ bản"
Văn bản gốc Nguồn: DmitriyKashitsyn PolkaWorld
Hôm nay chúng ta sẽ thảo luận về Substrate, một thư viện có thể giúp bạn xây dựng chuỗi khối tùy chỉnh của riêng mình. Chất nền được phát triển bởi ParityTech và cũng cung cấp nền tảng cho Polkadot.
Chất nền là gì?
Giải thích từ Từ điển Oxford: Một chất hoặc lớp làm nền tảng cho một thứ gì đó hoặc trên đó một số quá trình xảy ra. bên dưới, hoặc một chất hoặc lớp trên đó có thể tạo ra thứ gì đó)
Như tên cho thấy, Chất nền có thể được sử dụng để phát triển hoặc xây dựng thứ gì đó trên đó. Trong trường hợp của chúng tôi, chúng tôi có thể xây dựng một chuỗi khối hoặc trong trường hợp của Polkadot, toàn bộ dòng chuỗi khối.
Tại sao tôi cần Chất nền?
Phần mềm xét cho cùng là sự trừu tượng.
Lịch sử khoa học máy tính cho thấy chúng ta ngày càng có nhiều khái niệm trừu tượng hơn: từ logic rời rạc đến mạch tích hợp và CPU; từ mã máy đến hợp ngữ, từ hợp ngữ đến ngôn ngữ C, đến C++, Rust, Haskell, v.v.
Điều tương tự cũng xảy ra với API lập trình. Ví dụ, ngày nay hầu như không có ai viết cho web bằng HTML thuần túy.
"Mọi vấn đề đều có thể được giải quyết bằng cách giới thiệu một lớp trừu tượng khác. Ngoại trừ nhiều vấn đề với các lớp trừu tượng... vì vậy chúng tôi đã phát minh ra các khuôn khổ" - Chuyển thể từ "Financial Times" của Andrew Koenig.
Mỗi lớp trừu tượng cố gắng giải quyết một vấn đề cụ thể. Vậy Substrate được tạo ra để giải quyết vấn đề gì? Hóa ra có rất nhiều điều bạn cần cân nhắc trước khi bắt đầu triển khai một giải pháp blockchain hoàn toàn mới:
Tại sao lại làm như vậy chúng ta cần một blockchain A khác? !
Các dạng mã hóa nguyên thủy khác nhau: mã hóa, chữ ký, RNG¹, v.v. span>
span>
Thuật toán đồng thuận và bỏ phiếu có khả năng chấp nhận lỗi
Bằng chứng lãng phí, Bằng chứng cổ phần, Bằng chứng ủy quyền? Hoặc điều gì đó hoàn toàn khác?
Cấu trúc khối và lưu trữ hiệu quả, tuần tự hóa tin nhắn p>
Mạng P2P, khám phá ngang hàng, khả năng tương tác khối và giao dịch
Máy trạng thái, logic thực thi, hợp đồng thông minh
Hỗ trợ khách hàng nhẹ
Mặc dù Substrate không giải quyết được vấn đề đầu tiên, Substrate có thể giúp bạn giải quyết các vấn đề còn lại, Bởi vì nó cung cấp các công cụ triển khai hiện có. Chúng được thiết kế, viết và thử nghiệm cẩn thận dựa trên nhiều năm kinh nghiệm phát triển chuỗi khối của chúng tôi.
Tất nhiên, bạn cũng có thể tự mình thực hiện tất cả các nhiệm vụ này, nhưng tôi có thể nói rằng bạn có thể gặp phải một giải pháp chưa được kiểm chứng và chưa được ghi chép đầy đủ. Chưa kể, nhìn chung việc tự mình thiết kế hoặc triển khai một thuật toán mã hóa được coi là một ý tưởng rất tồi trừ khi bạn là một chuyên gia về mật mã và bạn thực sự biết mình đang làm gì.
Vì vậy, bằng cách cung cấp triển khai Universal , Substrate cho phép bạn tập trung vào chính dự án: logic nghiệp vụ của chuỗi, tức là máy trạng thái của nó.
Hãy cùng xem xét các phần quan trọng nhất của blockchain và xem Substrate có thể cung cấp những gì.
Blockchain là bộ lưu trữ vĩnh viễn
p>
Mục đích duy nhất của bất kỳ chuỗi khối nào là cung cấp một phương pháp lưu trữ và chuyển đổi dữ liệu có thể kiểm chứng, toàn cầu và lâu dài. Điều này có nghĩa là tất cả các bên cần phải kiểm tra và đồng ý về giá trị nào có thể được công nhận tại bất kỳ thời điểm nào, theo cách không tin cậy. Hơn nữa, một khi dữ liệu được niêm phong thì nó phải tồn tại vĩnh viễn và dựa trên sự đồng thuận, không thể giả mạo nó.
Thuộc tính này được sử dụng rộng rãi trong tiền điện tử, nơi bộ lưu trữ vĩnh viễn chứa khóa tài khoản và số dư thực tế của chúng. Tuy nhiên, điều quan trọng cần lưu ý là tiền điện tử không phải là ứng dụng blockchain duy nhất có thể. Về cơ bản, hầu hết mọi hệ thống yêu cầu lưu trữ lâu dài, nhất quán trên toàn cầu và lịch sử giao dịch có thể kiểm chứng đều có thể được triển khai bằng cách sử dụng blockchain theo một cách nào đó.
Substrate cung cấp khả năng lưu trữ hiệu quả, rất dễ sử dụng và được tích hợp chặt chẽ với thời gian chạy WebAssugging (Wasm).
như Chuỗi khối chức năng
Để cập nhật trạng thái của chuỗi và thay đổi bộ nhớ của nó dựa trên các hoạt động đang chờ xử lý, chúng ta cần có một điểm quyết định.
Những điểm quyết định này có thể được biểu diễn dưới dạng một hàm lấy trạng thái hiện tại và một tập hợp các hành động đang chờ xử lý rồi tạo ra một trạng thái khác cần được coi là trạng thái mới. Trong thế giới blockchain, chức năng như vậy được gọi là chức năng chuyển trạng thái hoặc viết tắt là STF.
Chất nền cho phép bạn xác định chức năng đó theo cách dễ quản lý và di động. Giống như JavaScript được thực thi trên một trang web, bạn có thể viết một tập hợp các hàm gọi chung là thời gian chạy sẽ hoạt động như một STF. Hơn nữa, việc triển khai như vậy sẽ có tính di động và không phụ thuộc vào kiến trúc bộ xử lý, hệ điều hành, trình duyệt hoặc bất kỳ cách thức phụ thuộc vào nền tảng nào khác.

Trên thực tế, ngay cả công nghệ cơ bản của Chất nền cũng có liên quan chặt chẽ với nhau. Substrate sử dụng WebAssugging làm ngôn ngữ chung cho thời gian chạy của nó, đây chính xác là công nghệ mà các công ty lớn như Mozilla, Google và Apple hiện đang tích hợp như một giải pháp thay thế nhanh hơn nhưng vẫn tương thích với JavaScript khi viết cho web.
An toàn và tốc độ
Sử dụng Wasm để viết logic và hợp đồng thông minh của chuỗi có nghĩa là bạn sẽ có những công cụ tốt nhất để xử lý một cách nhanh chóng và đáng tin cậy cách thực hiện logic. Tuy nhiên, Substrate có cách để thực thi mã nhanh hơn mà không cần bất kỳ chi phí nào của máy ảo.
Phần mang tính cách mạng nhất của Chất nền là hình ảnh thời gian chạy chứa STF được lưu trữ trên chuỗi cùng với các tải trọng khác. Điều này có nghĩa là thời gian chạy và logic kinh doanh của toàn bộ chuỗi có thể được cập nhật một cách an toàn và có thể kiểm chứng được. Hơn nữa, vì Substrate và Thư viện mô-đun thời gian chạy³ của nó được viết bằng ngôn ngữ lập trình Rust nên chúng có thể được dịch sang mã gốc và Wasm.
Tại bất kỳ thời điểm nào, phần mềm máy khách đều có hai bản sao của thời gian chạy được biên dịch: một bản được biên dịch nguyên bản trong phần mềm và bản còn lại là hình ảnh Wasm sẽ được thực thi trong VM. Khi một chức năng thời gian chạy được thực thi, phần mềm máy khách sẽ kiểm tra xem phiên bản Wasm trên chuỗi của thời gian chạy có khớp với phiên bản tích hợp sẵn mà nó được biên dịch dựa trên đó hay không. Bằng cách đó, phần mềm máy khách ủy quyền thực thi chức năng thời gian chạy cho phiên bản mã gốc.
Nâng cấp không cần fork p>
Khi hình ảnh thời gian chạy được cập nhật trên chuỗi, một số khách hàng chưa cập nhật phần mềm của họ. Trong trường hợp này, các nút của họ sẽ thực thi phiên bản chính xác bằng cách diễn giải thời gian chạy trên máy ảo Wasm tích hợp của Substrate. Do đó, trong mọi trường hợp, tất cả các nút trên mạng luôn có thể đồng bộ hóa chuỗi một cách chính xác (mặc dù với hiệu quả khác nhau), do đó ngăn chặn việc phân nhánh chuỗi.
Mạng
Blockchain dựa vào việc có nhiều người tham gia giao tiếp qua mạng. Giải pháp điển hình là sử dụng công nghệ ngang hàng cho giao tiếp này và Substrate cũng không ngoại lệ. P2P là tên gọi chung của một tập hợp các công nghệ được sử dụng để tạo ra các ứng dụng mạng phân tán.
Ý tưởng chính là thiết lập một môi trường mạng tự duy trì trong đó mỗi người tham gia (thường được gọi là nút) có thể hoạt động trong mạng mà không cần cấu hình hoặc ủy quyền trước.
Để đảm bảo rằng các nút có thể tham gia hoặc rời khỏi mạng bất kỳ lúc nào mà không ảnh hưởng đến kết nối của toàn bộ mạng, Substrate sử dụng triển khai libp2p của Rust (https://github.com/libp2p/rust-libp2p), đây là một triển vọng A ngăn xếp mạng có mọi thứ bạn cần để xây dựng môi trường mạng phân tán.
Thông điệp tùy chỉnh
Trong trường hợp đơn giản nhất, Bạn không thậm chí không cần phải nghĩ đến việc kết nối mạng vì Substrate sẽ làm mọi thứ cho bạn. Bạn chỉ cần cung cấp chức năng chuyển đổi trạng thái của blockchain và để tất cả các tương tác mạng cho Substrate. Tuy nhiên, nếu blockchain yêu cầu gửi tin nhắn tùy chỉnh, hệ thống con mạng có thể được tùy chỉnh và mở rộng bằng cách cung cấp các giao thức mạng cụ thể tùy chỉnh rõ ràng các tin nhắn và logic xử lý của chúng.
Đồng thuận
Có một trạng thái cho phép bạn chuyển đổi từ trạng thái này sang trạng thái khác. Chức năng chuyển đổi trạng thái sang trạng thái khác là tốt nhưng chưa đủ. Bạn cũng cần một cách để tất cả các nút đồng ý về trạng thái tiếp theo.
Là chủ tài khoản ngân hàng, điều cuối cùng bạn muốn xảy ra là bạn và ngân hàng không đồng ý về số tiền trong tài khoản của bạn. Blockchain cho phép tất cả các bên đạt được sự đồng thuận mà không cần tin tưởng lẫn nhau (Do đó không có sự tin cậy), ngay cả trong trường hợp các tác nhân độc hại cố gắng xâm phạm hệ thống và đánh cắp tiền của bạn.
p>
Việc này được thực hiện bằng cách sử dụng thuật toán đồng thuận với các thuộc tính Dung sai lỗi Byzantine (BFT). Nếu một hệ thống là BFT, điều này có nghĩa là Tất cả các nút có thể đạt được sự đồng thuận ngay cả khi một số nút trong số chúng hoạt động không tốt, bao gồm thông đồng, tin nhắn bị chặn và chuyển sang chế độ ngoại tuyến. Các hệ thống đồng thuận BFT có khả năng chống lại các sự cố mạng ở các mức độ khác nhau trong đó các tin nhắn có thể được sắp xếp lại hoặc bị trì hoãn. Một số thiết kế hệ thống đồng thuận BFT Điều này cho phép khi các nút hoạt động sai (ví dụ: bỏ phiếu cho hai khối cùng một lúc), họ có thể bị trừng phạt và bị cắt mã thông báo đã đặt cược khỏi chuỗi.
Đối với mỗi công cụ đồng thuận được hỗ trợ trong Substrate, sẽ có một mô-đun thời gian chạy xử lý các bằng chứng về hành vi không chính xác. Việc đánh giá tác động của hành vi sai sót có thể được xác định theo thời gian chạy.
Về mặt toán học đã chứng minh rằng giao thức này khả thi miễn là 2/3 số nút trong mạng không độc hại và hoạt động theo giao thức. Đây là một trong những lý do tại sao việc có nhiều nút trong mạng lại quan trọng.
Sự đồng thuận là một phần quan trọng của bất kỳ ứng dụng blockchain nào. May mắn thay, Substrate cung cấp sự đồng thuận BFT đã có sẵn và hoạt động gần như ngay lập tức.
Tùy thuộc vào tình huống sử dụng, bạn có thể sử dụng logic tạo khối hiện có hoặc cung cấp logic tạo khối của riêng bạn. Trong trường hợp sau, bạn có thể sử dụng phiên bản BFT chung và điều chỉnh nó cho phù hợp với nhu cầu của mình.
Chất nền sẽ tiếp tục phát triển và nhiều thuật toán đồng thuận hơn sẽ được thêm vào nó (https://medium.com/polkadot-network/grandpa-block-finality-in-polkadot-an-introduction-part-1-d08a24a021b5), Bao gồm tiện ích đã hoàn thiện cho GRANDPA (Thỏa thuận tiền tố bắt nguồn tổ tiên đệ quy dựa trên GHOST) được phát triển bởi Web3 Foundation.
Ngoài ra, vì Chất nền là một khung có thể mở rộng và tùy chỉnh hoàn toàn nên bạn có thể xác định thuật toán đồng thuận tùy chỉnh của riêng mình. Trên thực tế, Substrate linh hoạt đến mức nó có thể hỗ trợ các giải pháp không dựa trên kiến trúc blockchain cổ điển. Ví dụ: chúng tôi đang xem xét cách giải quyết các vấn đề về thông lượng blockchain bằng cách thiết kế một sự đồng thuận không dựa trên khái niệm truyền thống về các khối.
Hỗ trợ khách hàng nhẹ
Việc triển khai chuỗi khối ban đầu được thiết kế như thế này: trong mạng Mỗi nút duy trì một cơ sở dữ liệu blockchain hoàn chỉnh tại địa phương. Hiện tại, đây được gọi là máy khách đầy đủ, có nghĩa là máy khách có mọi thứ cần thiết để hoạt động như một nút mạng.
Máy khách đầy đủ (còn được gọi là nút đầy đủ) rất quan trọng đối với bảo mật chuỗi. Nhưng khi blockchain phát triển, cơ sở dữ liệu của khách hàng ngày càng lớn hơn. Hiện tại, các loại tiền điện tử lớn có cơ sở dữ liệu lên tới hàng trăm gigabyte.
Khi toàn bộ nút khởi chạy, điều đầu tiên nó cần làm là đồng bộ hóa với phần còn lại của mạng. Vì lý do bảo mật, một nút như vậy không thể tải xuống cơ sở dữ liệu từ một nút một cách ngẫu nhiên mà sẽ cần phải xây dựng cơ sở dữ liệu của riêng nó từ đầu, đồng bộ hóa lại tất cả các giao dịch kể từ khi hình thành (khối đầu tiên của chuỗi). Ngoài việc tốn kém về mặt tính toán, nhiệm vụ này còn yêu cầu truyền một lượng lớn dữ liệu qua mạng.
Tôi nghĩ mọi người sẽ đồng ý rằng việc tải nửa megabyte dữ liệu về điện thoại của bạn chỉ để mua một chiếc bánh sandwich... là không thực tế hoặc đơn giản là nực cười. Đó là lý do tại sao, gần như ngay từ đầu, các nhà phát triển blockchain đã bắt đầu nghĩ cách giảm chi phí bảo trì nút, bao gồm không gian lưu trữ và thông lượng mạng.
Cuối cùng, khái niệm khách hàng nhẹ nhàng đã ra đời. Nói một cách đơn giản, light client là một chế độ hoạt động cho các nút blockchain trong đó chỉ những dữ liệu quan trọng nhất được lưu trữ cục bộ và các tương tác mạng được giảm đến mức tối thiểu trong khi vẫn duy trì mức độ bảo mật có thể chấp nhận được cho hầu hết các tương tác có thể xảy ra.
Yêu cầu tài nguyên vừa phải cuối cùng sẽ cho phép ánh sáng chiếu vào Các nút máy khách khởi động dễ dàng để chúng có thể được thực thi trên thiết bị di động.
Thật không may, việc tích hợp hỗ trợ khách hàng hạng nhẹ vào các chuỗi khối hiện có là một công việc nghiêm túc. Việc tích hợp các ứng dụng khách nhẹ vào thiết kế ban đầu của blockchain sẽ dễ dàng hơn nhiều. Chất nền được thiết kế đặc biệt nhằm hỗ trợ khách hàng nhẹ. Các chuỗi khối được xây dựng trên Substrate có hỗ trợ ứng dụng khách đơn giản ngay lập tức.
Tóm tắt
Trong bài viết này, chúng tôi đã lướt qua các mục tiêu và tính năng chính của khung Chất nền. Sẽ cần một bài viết dài hơn để đề cập đến tất cả các khía cạnh của Chất nền, nhưng hy vọng bây giờ bạn đã hiểu khái quát về các khái niệm. Mặc dù điều này là chưa đủ để bắt đầu viết mã nhưng ít nhất bây giờ bạn nên biết điều gì sẽ xảy ra.
Để tìm hiểu thêm, hãy xem bài viết trước của Jack Fransham "Chất nền là gì": https://www.parity.io/what-is-substrate/.
Nếu bạn muốn tìm hiểu sâu hơn và bắt đầu triển khai chuỗi khối của mình, nơi tốt nhất để bắt đầu là Wiki Chất nền chẵn lẻ (https://wiki.parity.io/).
Ngoài ra, đừng ngần ngại hãy kiểm tra mã nguồn, cụ thể là tệp ReadMe: https://github.com/paritytech/substrate.
Ghi chú
RNG là viết tắt của Trình tạo số ngẫu nhiên. Không phải mọi RNG đều phù hợp với các ứng dụng blockchain.
Bản thân chất nền hiện đang trong giai đoạn phát triển rất tích cực. Cơ sở mã rất không ổn định và công việc tài liệu đang được tiến hành. Chúng tôi đang tích cực phổ biến wiki, một nơi tốt để tìm thêm thông tin chi tiết: https://wiki.parity.io/
The Thư viện mô-đun thời gian chạy là một tập hợp các hộp lớn Rust tùy chọn xử lý các tác vụ phổ biến như tuần tự hóa tham số và gửi cuộc gọi, đồng thời giúp bạn xây dựng thời gian chạy với chi phí tối thiểu. Thư viện này hoàn toàn không bắt buộc, vì vậy sẽ rất tuyệt nếu bạn thiết kế thời gian chạy của riêng mình từ đầu hoặc sử dụng bất kỳ ngôn ngữ nào biên dịch sang Wasm. Ngoài Rust, hiện chỉ có C và C++ hỗ trợ Wasm làm kiến trúc đích.
Địa chỉ gốc: https://dwz.cn/KuDo0SkY
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia