BTC
$96,000
5.73%
ETH
$3,521.91
3.97%
HTX
$0.{5}2273
5.23%
SOL
$198.17
3.05%
BNB
$710
3.05%
lang
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
Trang chủ
AI AI
Tin nhanh
Bài viết
Sự kiện
BlockBeats Pro
Thêm
Thông tin tài chính
Chuyên đề
Hệ sinh thái chuỗi khối
Mục nhập
Podcast
Data
OPRR
Partnered With:

Tại sao Hợp chất chọn Chất nền để phát triển chuỗi độc lập

Đọc bài viết này mất 64 phút
Chất nền cũng rất có khả năng trở thành khung phát triển được lựa chọn cho chuỗi ứng dụng.
Tác giả gốc: Mike Tang
Nguồn gốc: Web3.0 Explorer


Hợp chất (https://compund.finanice) chính thức ra mắt Cổng mạng chuỗi độc lập (trước đây gọi là chuỗi hợp chất). Gateway là một chuỗi độc lập và mục tiêu của nó là trở thành một trung tâm Defi thống nhất để đạt được Defi chuỗi chéo - bạn có thể đặt cược chuỗi A Tài sản trên chuỗi được vay trên chuỗi B - từ đó kết nối tất cả tài sản của chuỗi và cải thiện việc sử dụng tài sản cũng như tính thanh khoản của toàn bộ mạng.

 

Cổng Sự xuất hiện của nó dựa trên nhận định sau: thế giới tương lai phải là một thế giới đa chuỗi, nghĩa là không một blockchain đơn lẻ nào có thể giải quyết được mọi vấn đề. Sẽ có nhiều chuỗi và nhiều khả năng trong tương lai. Kết quả là tài sản của mọi người sẽ được phân tán sang nhiều nền tảng độc lập khác nhau. Làm thế nào để cải thiện việc sử dụng các tài sản phân tán này là Vấn đề mà Gateway muốn nghiên cứu và giải quyết.

 

Cổng Kiến Trúc Hệ Thống

 

Sơ đồ kiến trúc cổng

 

Như được hiển thị trong sơ đồ kiến trúc, Gateway kết nối tất cả các chuỗi bằng cách phát triển Starport cụ thể (một bộ hợp đồng hoặc thành phần trên Chuỗi ngang hàng) cho các chuỗi khác nhau (Chuỗi ngang hàng).

 

Bài viết này sẽ không đi sâu vào chi tiết về các vấn đề liên quan đến Defi của Gateway. Bài viết này chủ yếu nói về lý do tại sao Gateway chọn Chất nền để phát triển.Thực hiện một phân tích ngắn gọn.

 

Tại sao chọn Substate

 

Hợp chất Tuyên bố chính thức:

 

Chúng tôi chọn Chất nền để có thể tập trung vào xây dựng mã ứng dụng, thay vì phát minh ra các thuật toán đồng thuận; đó là một khung hiện đại được xây dựng trên ngôn ngữ hiện đại, Rust. 

(https://medium.com/ complex-finance/gateway-623f6f48d2b6)

 

Chúng tôi chọn Chất nền để có thể tập trung vào việc xây dựng mã ứng dụng , thay vì phát minh ra thuật toán đồng thuận; và đó là một khuôn khổ hiện đại được xây dựng trên ngôn ngữ hiện đại Rust.

 

Ngôn ngữ Rust là ngôn ngữ lập trình hướng đến bảo mật hiện đại. Về danh tiếng tốt của ngôn ngữ Rust, bài viết này sẽ không đi sâu vào chi tiết. Các bạn quan tâm có thể đọc "Báo cáo khảo sát nhà phát triển năm 2020: Rust lại trở thành ngôn ngữ phổ biến nhất". Rust gần như đã trở thành ngôn ngữ được ưa chuộng để phát triển blockchain ngày nay, ví dụ như Polkadot, Near, Solana, Dfinity, lớp dưới cùng của FileCoin, v.v. đều được triển khai trong Rust. Ngôn ngữ Rust có các tính năng đáng chú ý sau:

 

●      An toàn bộ nhớ: nó duy nhất Về mặt lý thuyết, quyền sở hữu và thiết kế trọn đời đảm bảo rằng sẽ không xảy ra lỗi bộ nhớ. Đã giải quyết 70% lỗi hệ thống cơ bản

●      An toàn đồng thời: Trong lập trình đồng thời (đa luồng, đa coroutine), Có thể đảm bảo đồng thời bảo mật

●      Hiệu suất cao: cùng mức hiệu suất như C/C++, hiện đứng đầu trong số các ngôn ngữ chính thống

●      Trừu tượng hóa không chi phí: Tính năng này cho phép Rust kết nối liền mạch với hệ sinh thái hiện có của ngôn ngữ C mà không làm giảm hiệu suất

●   ;    Khả năng biểu đạt trừu tượng mạnh mẽ: Rust dựa trên sức mạnh biểu đạt của nhiều ngôn ngữ chức năng để làm cho biểu thức của nó có khả năng cao hơn

●     ;   Cơ sở vật chất kỹ thuật hiện đại: Các hệ thống phụ trợ hiện đại như Cargo và Crates.io giúp dễ dàng xây dựng các dự án phức tạp trong Rust

●      ; Đang hoạt động cộng đồng: Rust đã được phát triển và lặp lại trong một mô hình cộng đồng ngay từ đầu, điều này thực sự rất thú vị và khác biệt đáng kể so với sự phát triển tập trung của go

 

Sau khi hiểu những tính năng này của Rust, có vẻ tự nhiên chúng ta hiểu câu "Ngôn ngữ Rust gần như đã trở thành ngôn ngữ được ưa chuộng để phát triển blockchain ngày nay." Bản thân blockchain được biết đến với tính bảo mật của nó. mức độ ưu tiên, điều này hoàn toàn phù hợp với triết lý thiết kế của Rust. Một lượng lớn tính toán cần được thực hiện trong blockchain và cũng cần có hiệu suất cao, điều này Rust cũng thực hiện phần việc của mình. Các hệ thống blockchain nhìn chung tương đối phức tạp và yêu cầu cơ sở hạ tầng liên quan đến kỹ thuật . Yêu cầu rất cao và thiết kế kỹ thuật mạnh mẽ của Rust khiến nó đặc biệt phù hợp để cộng tác trong các dự án lớn trong nhóm và phát triển cộng đồng nguồn mở.

 

Paritytech, một công ty nổi tiếng với sự chú trọng đến bảo mật, đã phát triển ứng dụng khách chẵn lẻ của Ethereum bằng ngôn ngữ Rust. Sau đó, công ty tiếp tục phát triển các dự án mới bằng Rust. Polkadot, trong quá trình phát triển Polkadot, dần dần đưa ra một quyết định quan trọng: tách tất cả các chức năng của blockchain thành các thiết kế trừu tượng, triển khai chúng thành một khung blockchain phổ quát, mã nguồn mở và sử dụng khung này làm Công cụ để xây dựng các sản phẩm Polkadot. Thành tựu chính của khung blockchain này là nhân vật chính của bài viết này - Substrate.

 

Substrate là một khung phát triển blockchain được phát triển bằng ngôn ngữ Rust với mục tiêu linh hoạt. Hầu hết các yếu tố thiết kế của nó, chẳng hạn như thuật toán mã hóa, cấu trúc lưu trữ cây MPT, hệ thống tài khoản, v.v., đều được mượn từ cơ sở hạ tầng của Ethereum thành công nhất trong lịch sử. Nó bắt đầu với tư cách là một khách hàng của Ethereum và Gavin Wood cũng là một trong những người đồng sáng lập Ethereum). Để một framework có tính phổ quát, nó cần phải có tính trừu tượng cao. Giá của tính trừu tượng cao thường có cấu trúc phức tạp và khó sử dụng. Vì vậy, Substrate còn cung cấp rất nhiều DSL (ngôn ngữ dành riêng cho miền) để người mới học và sử dụng dễ dàng hơn. Tóm tắt ngắn gọn, Chất nền có các đặc điểm sau:

 

Định hướng toàn cầu. Thiết kế của nó hướng đến các lĩnh vực chung, thay vì được phát triển riêng cho một chuỗi nhất định. SDK. Mỗi nhóm có thể sử dụng Substrate để phát triển một chuỗi hoàn toàn độc lập, không phụ thuộc vào bất kỳ mạng hiện có nào (ví dụ: một blockchain được phát triển bằng Substrate có thể độc lập với Polkadot, đây cũng là một trong những mục tiêu thiết kế của Paritytech) Đầy đủ tính năng. Nó có thể bao gồm hầu hết tất cả các kịch bản của blockchain và có thể nói là framework blockchain toàn diện nhất hiện có trên thị trường. Mã thời gian chạy được biên dịch thành wasm thực hiện. Wasm là sự lựa chọn mã bytecode VM phổ biến trong ngành công nghiệp blockchain ngày nay Siêu tùy biến. Bản thân chất nền là một tập hợp các thành phần nằm rải rác, có thể được thay thế và kết hợp một cách tự do theo một tập hợp các ràng buộc về đặc điểm kỹ thuật.

 

Thiết kế kỹ thuật là việc thực hiện sự đánh đổi. Khi nó nhấn mạnh đến một khía cạnh, sẽ có những sự đánh đổi nhất định trên khác. thỏa hiệp. Chất nền cũng có những nhược điểm riêng:

 

●      Một số thuật ngữ khái niệm mới (như as : bên ngoài), cần phải học lại và hiểu và có một ngưỡng nhất định để bắt đầu

●      Nhấn mạnh vào tính phổ quát, dẫn đến ở một số khía cạnh quá trừu tượng, so sánh trực quan mã phức tạp (ví dụ: có quá nhiều tham số chung). Những phần tóm tắt này thể hiện đầy đủ các tính năng cú pháp nâng cao của Rust và mã rất ồn

●      Toàn bộ dự án có một lượng lớn mã và dựa trên nhiều gói (hiện tại là hơn 1.000), dẫn đến thời gian biên dịch tương đối dài (hàng chục phút cho một máy tính xách tay thông thường) Ở trên), yêu cầu hiệu suất cao hơn cho các máy phát triển

 

Như bạn có thể thấy ở trên, những thiếu sót này là chủ yếu là các mục tiêu thiết kế của Chất nền— - Phổ quát - gây ra bởi sự phức tạp của các phụ thuộc khách quan do chính nó mang lại.

 

Không thể che giấu các lỗ hổng. Là một trong những khung phát triển blockchain mạnh nhất cho đến nay, Substrate ngày càng nhận được nhiều đổi mới. Được hoan nghênh bởi nhóm, việc nhóm Hợp chất chọn Chất nền để phát triển Cổng là điều đương nhiên.

 

Chất nền thành phần chức năng

 


Sơ đồ khung tổng thể của chất nền

 

Như bạn có thể thấy từ sơ đồ kiến trúc, Chất nền có những phần sau các thành phần chính :

 

●      Mạng P2p Mạng P2p

●      Thời gian chạy thời gian chạy

●      Bộ nhớ lưu trữ

●      Sự đồng thuận đồng thuận

●      Lệnh gọi thủ tục từ xa RPC

●      Công cụ giám sát khách hàng từ xa

 

P2p mạng là một hệ thống con thiết yếu của hệ thống blockchain. Nhiều nút được kết nối thông qua p2p để tạo thành cùng một mạng. Tin nhắn được gửi giữa các nút để truyền dữ liệu. Tin nhắn được truyền trong mạng có thể đến sau khi truyền qua nhiều nút chuyển tiếp. Trong Chất nền, Rust-libp2p được sử dụng (https://github.com/libp2p /rust -libp2p), dự án này cũng chủ yếu bao gồm Paritytech đang đảm nhiệm việc bảo trì.

 

Thời gian chạy, thời gian chạy, là phần triển khai của logic kinh doanh chuỗi khối. Nói cách khác, nếu bạn muốn sử dụng blockchain để làm những việc thiết thực, bạn cần phải viết nó ra. Chất nền hỗ trợ biên dịch mã thời gian chạy thành mã byte wasm hoặc mã gốc chạy ở hai chế độ (với mã wasm Với việc cải thiện tốc độ chạy VM, chế độ mã gốc có thể bị bỏ trong tương lai, điều này cũng có thể làm giảm một số độ phức tạp bên trong). Bộ lưu trữ có thể được vận hành trong Thời gian chạy để thay đổi trạng thái, do đó toàn bộ Thời gian chạy còn được gọi là Hàm chuyển đổi trạng thái. STF).

 

Storage, hệ thống con lưu trữ, là thành phần không thể thiếu của hệ thống blockchain. Trong Chất nền, Bộ lưu trữ được sử dụng để duy trì Logic của thời gian chạy thay đổi trạng thái và cũng hỗ trợ giao diện đọc trạng thái RPC bên ngoài. Trước khi sự kiện trong thời gian chạy được gửi, nó cũng sẽ được gửi Lưu trữ để lưu trữ ngắn hạn. Mục tiêu của hệ thống đồng thuận cũng là đạt được thỏa thuận về trạng thái trong Kho lưu trữ. Hệ thống con lưu trữ sử dụng cơ sở dữ liệu kv ở lớp dưới cùng rockdb hoặc paritydb.

 

Sự đồng thuận, hệ thống con đồng thuận, được sử dụng để đạt được thỏa thuận về trạng thái của chuỗi khối giữa những người tham gia mạng, nghĩa là " đoàn kết" ". Bởi vì nó là một hệ thống phân tán nên cái gọi là trạng thái blockchain không có trạng thái vĩ mô thống nhất theo quan điểm vĩ mô của Chúa. Trạng thái này thực tế là trạng thái của mỗi nút. Mỗi nút có chế độ xem trạng thái cục bộ riêng và chế độ xem toàn cầu "cục bộ". Mỗi nút đưa ra quyết định bằng cách so sánh chế độ xem cục bộ với chế độ xem toàn cầu. Hệ thống đồng thuận phải ở trạng thái nhất quán là đạt được trên mỗi nút để đẩy hệ thống về phía trước.

 

RPC, lệnh gọi thủ tục từ xa, được sử dụng Một giao diện cung cấp quyền truy cập vào bên ngoài nút. Bản thân nút Nền tảng có thể tồn tại dưới dạng dịch vụ và thế giới bên ngoài có thể truy cập thông tin trạng thái cục bộ của nút hoặc gửi yêu cầu thay đổi tới nút thông qua các giao diện rpc này. Cả hai kênh rpc HTTP và Websocket đều được cung cấp.

 

Đo từ xa, công cụ giám sát khách hàng, được sử dụng để thu thập Thông tin đang chạy của nút được gửi đến máy chủ Prometheus từ xa.

 

Chất nền mô hình phát triển

 

Chất nền Đó là một khuôn khổ phát triển chung. Nó cung cấp ba phong cách phát triển cho các nhà phát triển ở các cấp độ khác nhau.

 

Một: Sử dụng trực tiếp nút đi kèm với Chất nền để bắt đầu chuỗi. Đối với các nhà phát triển muốn bắt đầu chuỗi một cách nhanh chóng và trải nghiệm các hiệu ứng, họ có thể trực tiếp sử dụng cài đặt triển khai nút do Substrate cài đặt sẵn. Bạn chỉ cần sửa đổi tệp cấu hình JSON để chạy. Nội dung sau có thể được tùy chỉnh:

 

●        Thông tin trạng thái của khối Genesis

●      Tài khoản

●      Số dư

●      Tỷ lệ đặt cược, v.v.

 

Hai: Phát triển các pallet FRAME thời gian chạy. Mô hình phát triển này triển khai logic nghiệp vụ vào pallet bằng cách viết mã pallet trong thời gian chạy. Sau đó thêm các pallet tùy chỉnh và những pallet đi kèm với Chất nền mà chúng phụ thuộc vào các pallet được biên dịch cùng nhau thành mã byte wasm để chạy, hầu hết Sự lựa chọn của nhà phát triển chất nền.

 

Ba: Tùy chỉnh chuyên sâu dựa trên Substrate Core. Chất nền đã được triển khai thành các thành phần phân tán, được trừu tượng hóa và tách rời hoàn toàn. Đối với một số nhà phát triển nâng cao, trong một số trường hợp cụ thể nhất định, các thành phần này có thể được lắp ráp lại hoàn toàn từ dưới lên để đạt được khả năng tùy chỉnh nút chuyên sâu. Ví dụ: bạn có thể làm:

 

●      Sử dụng các đường cong mật khẩu khác nhau và haha Thuật toán băm

●      Sử dụng các phương pháp tuần tự hóa khác nhau

●        Thay thế các thuật toán đồng thuận khác nhau

●      Loại bỏ hoàn toàn mã lớp FRAME và sử dụng ngôn ngữ khác để viết doanh nghiệp, miễn là quá trình biên dịch có thể được đảm bảo Chỉ cần truy cập wasm và làm theo thông số kỹ thuật của Chất nền

●     , v.v.

 

Hình bên dưới cho thấy mối quan hệ giữa ba mức độ khó phát triển và tính linh hoạt về mặt kỹ thuật.



  ;

Sử dụng trực tiếp Nút Chất nền là cách đơn giản nhất nhưng kém linh hoạt nhất. Phát triển dựa trên Substrate Core là linh hoạt nhất nhưng khó khăn nhất. Việc phát triển FRAME pallet nằm ở đâu đó ở giữa. Đây cũng là cách tiếp cận mà hầu hết các nhà phát triển Substrate nên áp dụng.

 

Chất nền Sự xuất sắc của

 

Chất nền Có rất nhiều tính năng tuyệt vời trong thiết kế của nó, chúng ta hãy xem chúng.

 

Thời gian chạy không cần phân nhánh có thể nâng cấp

 

Vì mã Thời gian chạy của Chất nền được biên dịch thành wasm được chạy và sau đó chính mã byte wasm được gửi trực tiếp đến chuỗi dưới dạng dữ liệu giao dịch, sau đó lan truyền khắp toàn bộ mạng thông qua mạng p2p của chính chuỗi để nhận ra bản cập nhật logic kinh doanh. Sau khi mỗi nút nhận được phiên bản cập nhật của mã byte wasm, nó sẽ cập nhật nó vào đoạn mã và sử dụng phiên bản mới của wasm để thực thi logic sau một khối nhất định.

 

Với cơ chế mã cập nhật nóng này, việc nâng cấp mã doanh nghiệp sẽ không còn gây ra phân nhánh (phân nhánh mềm hoặc phân nhánh cứng). ), nghĩa là mạng sẽ không bị phân nhánh vì lý do kỹ thuật và khách quan (vẫn có thể phân nhánh hoạt động do con người tạo ra).

 

Cần lưu ý rằng bản nâng cấp này được giới hạn ở phần mà mã byte wasm có thể bao gồm - tức là trong Runtime The mã - nâng cấp. Nếu bạn thay đổi chính mã nút (tức là bên ngoài Thời gian chạy), tất cả các nút vẫn cần được thông báo để thay thế thủ công hoặc thay thế dành cho nhà phát triển.

 

Thư viện mật mã có thể thay thế

 

Chất nền Hỗ trợ nhiều đường cong mật mã cùng lúc:

 

●      ECDSA

●      Ed25519

●      SR25519

 

Hỗ trợ nhiều Hash cùng lúc:

 

●      Blake2

●      xxHash

 

Các nhà phát triển có thể chọn sử dụng nó theo nhu cầu riêng của mình. Nếu không có thứ bạn muốn, không khó để thêm các đường cong và hàm băm mới vào nó theo kiến trúc của nó.

 

Hệ thống tài khoản nhiều lớp

 

Chất nền của Khóa tài khoản có ba cấp độ:

 

●      Khóa Stash

●      Khóa điều khiển

●      Khóa phiên

 

Dữ liệu Key là tài khoản dùng để lưu trữ tiền và phần khóa riêng của nó phải được lưu trữ trong ví lạnh một cách an toàn nhất có thể. Controller Key dùng để kiểm soát các tham số của Validator và cũng là tài khoản proxy trung gian của Stash Key, rất hữu ích khi cập nhật bộ validator. Khóa phiên được sử dụng để ký các thông báo liên quan đến sự đồng thuận. Có thể có nhiều Khóa phiên, mỗi Khóa có mục đích đặc biệt riêng và thường có thể được sử dụng cùng nhau, chẳng hạn như:

 

impl_opaque_keys! {

    pub cấu trúc SessionKeys {

        ông nội quán rượu: Ông ơi,

        pub babe: Em ơi,

        pub im_online: ImOnline,

        pub Authority_discovery: AuthorityDiscovery,

   

  ;

Đoạn mã trên kết hợp 4 Khóa phiên độc lập: Khóa phiên ông nội, Babe khóa phiên, khóa phiên ImOnline và khóa phiên AuthorityDiscovery được kết hợp thành một SessionKey lớn.

 

Session Keys có thể được hiểu là mã định danh (Identification) duy nhất trong quá trình chạy Trình xác thực. Tốt nhất nên thay đổi Session Key sau mỗi phiên để đảm bảo tính bảo mật tối đa.

 

Chất nền Thiết kế Khóa tài khoản nhiều lớp này không chỉ đảm bảo tính bảo mật mà còn cung cấp đủ tính linh hoạt, về cơ bản có thể đáp ứng nhu cầu của tất cả các tình huống ứng dụng.

 

Công cụ đồng thuận có thể chuyển đổi trừu tượng

 

Chất nền Một khuôn khổ đồng thuận đã được thiết kế, rất ấn tượng. Nó tách biệt quá trình sản xuất (đề xuất) và hoàn thiện (hoàn thiện) của khối và phù hợp với sự đồng thuận loại Nakamoto (chỉ hoàn thiện xác suất, không hoàn thiện xác định) và đồng thuận loại BFT (hoàn thiện xác định).

 

Chất nền Các thuật toán sau được cung cấp để tạo khối:

 

●      Aura: Chế độ slot , trong một tập hợp quyền lực đã biết, hãy sử dụng chế độ quay vòng để xoay vòng khỏi các khối

●      Babe: chế độ vị trí, trong một tập hợp quyền lực đã biết được đặt, sử dụng hàm ngẫu nhiên có thể xác minh VRF để chọn ngẫu nhiên nhà sản xuất khối (mỗi vị trí có thể có nhiều nhà sản xuất khối)

●      Pow: Bằng chứng về việc tạo khối công việc

 

Các thuật toán tạo khối này chỉ có thể đạt được nếu không có sự hợp tác của Hoàn thiện xác suất tiện ích cuối cùng (hoàn thiện) , nhưng không thể đạt được quyết định cuối cùng. Chất nền cung cấp cho ông nội cái này Hoàn thiện Tiện ích để hoàn thiện mang tính quyết định.

 

Thuật toán tạo khối và thuật toán hoàn thiện có thể được sử dụng tự do cùng nhau. Vì vậy, có những sự kết hợp như Aura/Ông, Babe/Ông, và thậm chí cả Pow/Ông. Tất nhiên, trong những tình huống không yêu cầu quyết toán xác định, không cần sử dụng Grandpa. Chất nền mang lại cho các nhà phát triển sự tự do hoàn toàn.

 

Chất nền Khung đồng thuận cũng cung cấp một số cơ sở hạ tầng khác:

 

●      Quy tắc lựa chọn ngã ba : Quy tắc chuỗi dài nhất hoặc Quy tắc GHOST, một thuật toán được sử dụng để quyết định cách chọn chuỗi tốt nhất khi chuỗi phân nhánh

●      ; Hàng đợi nhập: Hàng đợi nhập

●      Chặn đặc điểm nhập: Chặn giao diện nhập

●  ;    ;  Chặn đường ống nhập: Chặn đường ống nhập

 

Chất nền Nó cũng cung cấp chức năng điều phối và kiểm soát quá trình đồng thuận trong Runtime. Ví dụ: điều chỉnh độ khó trong quá trình chạy Pow, quyết định xem có nên xoay tiếp theo trong PoA hay không và tự động sửa đổi nó trong PoS. Trọng lượng của cổ phần và như vậy.

 

Dựa trên cơ sở hạ tầng hoàn chỉnh của Substrate, nếu công cụ đồng thuận của chính nó không thể đáp ứng nhu cầu của nhà phát triển, Theo yêu cầu , các nhà phát triển cũng có thể phát triển công cụ đồng thuận của riêng mình theo thông số kỹ thuật của mình, đưa nó vào khuôn khổ để sử dụng và kiểm soát nó một cách thích hợp trong thời gian chạy.

 

Ngoài chuỗi đặc trưng

 

Ngoài chuỗi Các tính năng là một tập hợp cơ sở hạ tầng khá mạnh mẽ được cung cấp trong Substrate. Xét cho cùng, đối với blockchain, không gian hoạt động logic trên chuỗi rất hạn chế và một số thứ phải được hoàn thành ngoài chuỗi. Trước khi có Off-Chain Worker (OCW), loại công việc này thường được thực hiện bởi máy oracle Oracle. Oracle là một dịch vụ bên ngoài gửi các giao dịch tới blockchain thông qua giao diện RPC của nút blockchain để truyền thông tin bên ngoài đến chuỗi. Mặc dù cách tiếp cận này khả thi nhưng vẫn chưa đủ tốt về mặt bảo mật, tích hợp, khả năng mở rộng và hiệu quả cơ sở hạ tầng.

 

Để giúp việc tích hợp dữ liệu ngoài chuỗi trở nên an toàn và hiệu quả hơn, Substrate cung cấp các tính năng liên quan đến ngoài chuỗi. Sơ đồ kiến trúc như sau:



Sơ đồ kiến trúc công nhân ngoài chuỗi

 

 

Ngoài chuỗi Tính năng này bao gồm ba thành phần chính:

 

●      Off-Chain Worker

●      Bộ nhớ ngoài chuỗi

●      Tắt -Lập chỉ mục chuỗi

 

Ngoài chuỗi Worker được sử dụng để triển khai logic ngoài chuỗi. Mã của nó được viết cùng với mã thời gian chạy, được biên dịch thành cùng một chuỗi mã byte wasm và được truyền tới toàn bộ mạng trong cùng một giao dịch. Tuy nhiên, trong quá trình thực thi, mã của Off-Chain Worker được thực thi trong một VM độc lập, hoàn toàn tách biệt với việc thực thi logic thời gian chạy. Cụ thể, Off-Chain Worker có thể đạt được các chức năng sau:

 

●      Gửi kết quả tính toán tới chuỗi dưới hình thức giao dịch

●      Chứa ứng dụng khách HTTP đầy đủ tính năng có khả năng truy cập dữ liệu từ các dịch vụ bên ngoài

●    ;   Có thể truy cập kho khóa của nút cục bộ để các giao dịch có thể được xác minh và ký kết

●      Có thể truy cập cơ sở dữ liệu KV cục bộ, và Chia sẻ cơ sở dữ liệu này giữa tất cả nhân viên ngoài chuỗi

●      Một nguồn entropy cục bộ và an toàn để tạo số ngẫu nhiên

●      Có thể truy cập giờ địa phương của nút này

●      Có thể ngủ và tiếp tục công việc

 

Off-Chain Bộ lưu trữ là không gian lưu trữ độc lập về mặt logic ngoài chuỗi và hoàn toàn tách biệt với Bộ lưu trữ trên chuỗi. Nó có các đặc điểm sau:

 

●      Có thể là Off-Chain Công nhân đọc và ghi

●      Nó được lưu trữ cục bộ trong nút và sẽ không được chuyển đến các nút khác trong mạng và sẽ không tham gia vào sự đồng thuận của mạng

●      bởi tất cả đều chạy cùng một lúc Công nhân ngoài chuỗi chia sẻ quyền truy cập (do đó cần phải khóa). Do đó, nó có thể được sử dụng để liên lạc giữa các Worker khác nhau

●      Có thể được ghi bằng mã thời gian chạy nhưng không thể đọc được. Do đó, một số chức năng tương tác trên chuỗi và ngoài chuỗi có thể được triển khai dựa trên nó

●      Nó có thể được đọc bằng mã trong nút bên ngoài môi trường wasm. Do đó, nó có thể được đọc bởi RPC

 

Off-Chain Lập chỉ mục cung cấp khả năng ghi dữ liệu vào Bộ lưu trữ ngoài chuỗi trong môi trường thời gian chạy. Tuy nhiên, không thể đọc được dữ liệu trong Bộ lưu trữ ngoài chuỗi. Điều này mở ra khả năng của một số mô hình lập trình mới.

 

Có những thứ khác, chẳng hạn như khung thử nghiệm tích hợp OCW hoàn chỉnh, v.v.

 

Chất nền của Tính năng Off-chain rất mạnh mẽ và ấn tượng.

 

Cơ chế tính phí Gas hoàn chỉnh và linh hoạt

 

Những người bạn có kinh nghiệm phát triển Ethereum đều biết rằng cơ chế phí Gas là một thiết kế rất thành công và rất quan trọng đối với tính bảo mật của dây chuyền và hoạt động trơn tru là rất quan trọng. Hầu như tất cả các blockchain tiếp theo đều trực tiếp mượn thiết kế này. Trong Substrate, cơ chế và thông số cấu hình rất đầy đủ và chi tiết được cung cấp để giúp các nhà phát triển thiết kế thuật toán phí Gas của riêng họ. Các tham số cấu hình và tính toán Khí sau đây được tích hợp vào Chất nền:

 

●      Bao gồm Phí : Chứa length_fee vàweight_fee

●      Hệ số phí

●      Các khoản phí bổ sung, bao gồm

○      Trái phiếu

○      Tiền gửi

○      Đốt cháy

○      Giới hạn

●      Chú thích trọng lượng mặc định

●      Trọng số động

●      Chỉnh sửa trọng lượng sau khi gửi đi

●      Phí tùy chỉnh

●      Phí bao gồm tùy chỉnh

p>

 

Chúng tôi sẽ không giải thích chi tiết từng mục tại đây. Để biết ý nghĩa cụ thể, vui lòng tham khảo: https://substrate .dev.

 

Như bạn có thể thấy, thiết kế của Substrate để tính phí gas rất toàn diện và thậm chí hơi phức tạp. Mục đích vẫn là để đạt được mục tiêu về một khuôn khổ blockchain phổ quát - mọi thứ đều phải có ở đó và nó có thể sử dụng được ngay lập tức.

 

Chất nền Rất thích hợp để khởi chạy các chuỗi độc lập hoặc Appchains cho ứng dụng Web3.0.Nói chung, các chuỗi này sẽ chú trọng nhiều đến trải nghiệm người dùng. Ví dụ: đối với người dùng thông thường của ứng dụng, họ có thể không biết đến sự tồn tại của phí gas khi sử dụng dịch vụ. Trong trường hợp này, cơ chế phí gas phong phú do Substrate cung cấp có thể đặt phí gas về 0 hoặc được đặt Để thanh toán. Các tính năng như vậy có cơ hội biến Substrate trở thành một trong những khung phát triển phù hợp nhất cho Ứng dụng Web3.0.

 

Thời gian chạy Tích hợp API và RPC

 

Chất nền Một bộ khung mở rộng RPC được cung cấp, cho phép các nhà phát triển mở rộng và phát triển giao diện RPC của riêng họ (ngoài các giao diện do Substrate cung cấp theo mặc định). Vì mã triển khai RPC nằm trong nút và bên ngoài thời gian chạy, nên về mặt lý thuyết, dịch vụ RPC đầy đủ tính năng (làm được mọi thứ) có thể được phát triển trong Substrate. Điều này làm cho Substrate trở thành một khung phát triển RPC mạnh mẽ.

 

Thường thì chúng ta cần tương tác với trạng thái trong Runtime, sau đó chúng ta cần sử dụng API Runtime. Runtime API là cầu nối giữa bên trong và bên ngoài Runtime, hay có thể nói là cầu nối giữa chain và off-chain.

 

Sự kết hợp giữa RPC và API thời gian chạy có thể kết nối toàn bộ quá trình từ việc bắt đầu các yêu cầu bên ngoài đến việc đạt được trạng thái trên chuỗi. Cùng với chức năng API thời gian chạy tùy chỉnh và chức năng giao diện mở rộng RPC, nó mang đến cho các nhà phát triển tính linh hoạt và khả năng tuyệt vời. Nó cũng đặt nền tảng để Substrate trở thành một khung phát triển Web3.0 tích hợp.

 

Cổng Cách sử dụng chất nền

 

Để hiểu cách Gateway sử dụng Substrate, chúng tôi trực tiếp lấy mã nguồn của nó và phân tích ngắn gọn.

 

git clone https: //github.com/comound-finance/gateway

Cổng cd && ls

 

Như bạn có thể thấy, có các thư mục chính sau (chúng tôi đã thêm các nhận xét ngắn gọn).

 

ethereum/    Mã hợp đồng Starport trên Ethereum

ethereum-client/    Định nghĩa loại liên quan đến Ethereum và các chức năng công cụ cơ bản

gateway-crypto/    Mật khẩu liên quan đến các chức năng công cụ Gateway Basic

tích hợp/    Mã kiểm tra tích hợp

node/    Xác định mã nút

our-std/    Mã std của Gateway là Đóng gói sp_std đơn giản và thêm một số nội dung bổ sung

pallets/    Mã logic nghiệp vụ chính của chuỗi độc lập Gateway

runtime/    Mã xây dựng thời gian chạy của chất nền

types-derive/    Các macro quy trình liên quan đến loại được Gateway sử dụng

 

Như bạn có thể thấy, hiện tại Gateway chỉ triển khai ethereum kết nối startport, việc kết nối các chuỗi khác vẫn đang được phát triển và sẽ được bổ sung dần dần.

 

Mã doanh nghiệp chính nằm trong thư mục pallet/ và có ba thư mục con trong thư mục này.

 

cash/    Logic kinh doanh chính

oracle/    Mã để lấy giá từ bộ nạp giá

oracle/    p>

runtime-interfaces/    Một số giao diện thời gian chạy

 

Chúng ta Bắt đầu từ pallet/cash/src/lib.rs. Đây là file pallet tiêu chuẩn có cấu trúc

 

●      Định nghĩa cấu hình đặc điểm

●      decl_storage! Xác định phần lưu trữ trên chuỗi

●      decl_event! Xác định phần đầu ra sự kiện

●      decl_module! Xác định phần triển khai mô-đun

 

Trong phần triển khai mô-đun có hàm fn offchain_worker(block_number: T::BlockNumber) {}. Việc triển khai nó chủ yếu dựa trên hai lệnh gọi hàm sau:

 

internal::events::track_chain_events::<T> ( )

internal::notices::process_notices::<T>(block_number)

 

Chúng tôi biết rằng mục nhập offchain_worker của Substrate được gọi khi mỗi khối được nhập vào cơ sở dữ liệu trạng thái cục bộ. Nghĩa là, hàm fn offchain_worker(block_number: T::BlockNumber) sẽ được thực thi bởi mỗi trình điều khiển khối và chức năng này sẽ được thực thi một lần cho mỗi khối. Do đó, mỗi khi một khối được thêm vào, đoạn mã trên sẽ xử lý các sự kiện và thông báo tương ứng, đồng thời mã cho hai phần nội dung này được xác định trong mô-đun nội bộ.

 

Tiếp tục theo dõi pallet/cash/src/internal/events.rs và pallet/cash/src/internal/notices.rs, bạn có thể sắp xếp các điểm logic chung:

 

●  ;     Offchain_worker được gọi một lần trên mỗi khối

●      trong Trong mã offchain_worker, các loại cơ bản của Ethereum và các công cụ phụ trợ do ethereum-client/ cung cấp sẽ được gọi và các yêu cầu HTTP sẽ được gửi đến máy chủ sự kiện Ethereum để thu thập các sự kiện Ethereum theo đợt và phân loại chúng để xử lý

●      Các kết quả được xử lý sẽ được gửi từ offchain_worker đến chuỗi dưới dạng giao dịch

●        Nhập logic nghiệp vụ trong thời gian chạy để xử lý

 

pallets/oracle/ Luồng logic bên trong cũng tương tự: trong offchain_worker, sử dụng yêu cầu http để lấy dữ liệu từ địa chỉ nguồn cung cấp giá, sau đó gửi dữ liệu đó đến chuỗi để sử dụng.

 

Sau khi hiểu quy trình trên, bạn sẽ dễ hiểu hơn về những gì mà Hợp chất hoạt động trên Ethereum. Đề xuất quản trị tổng hợp ảnh hưởng như thế nào đến việc cập nhật tập hợp nút xác thực trên chuỗi Cổng. Nó vẫn gửi thông tin ra ngoài thông qua các sự kiện Ethereum. Sau khi máy chủ sự kiện thu thập sự kiện, nó sẽ lưu trữ thông tin đó vào bộ nhớ đệm. Nhân viên Offchain ở phía Cổng đi đến máy chủ sự kiện để tìm nạp các sự kiện mới nhất theo đợt mỗi khi một khối mới được thêm vào. Sau khi có được sự kiện mới nhất, chỉ cần xử lý nó lặp đi lặp lại theo logic tương ứng. Để cập nhật bộ trình xác thực trong Vật liệu nền, bạn cần sử dụng tài khoản Bộ điều khiển, SetKeys và các chức năng liên quan khác do Vật liệu nền cung cấp.

 

và sau đó phân tích Offchain Worker Phần trọng tâm đã được đưa ra.

 

Như bạn có thể thấy, Gateway tận dụng tối đa cơ sở hạ tầng do Substrate cung cấp để dễ dàng triển khai logic kinh doanh và trên chuỗi mã. Tích hợp với mã ngoài chuỗi và tương tác với các chuỗi khác. Toàn bộ mã được triển khai rất rõ ràng và đáng để học hỏi.

 

Tóm tắt

 

Trong bài viết này, chúng tôi giới thiệu kiến trúc tổng thể của Gateway, các mô-đun chức năng của Substrate, các đặc điểm của khung Substrate và Cách Gateway tận dụng tối đa cơ sở hạ tầng do Substrate cung cấp để phát triển các chuỗi độc lập.

 

Bị giới hạn về không gian, nhiều chỗ chỉ có thể chạm vào. Một số liên kết được đính kèm ở cuối bài viết để mở rộng đọc.

 

Trình độ của tác giả còn hạn chế. Độc giả có thể liên hệ với tôi bằng địa chỉ email sau: mike@oct.network.

 

Tài liệu tham khảo 
 Giới thiệu Cổng: https://medium.com/comound-finance/gateway-623f6f48d2b6  
 Cổng Tài liệu: https://docs.google.com/document/d/ 1bp4uLYHt0_lUNO3dveFGelXYAC-M7RojqY-5jPDyUlM/edit#heading=h.ymt4jrq294bj 
 Hợp chất Cổng: đi sâu vào việc thiết lập nút xác thực.  https://medium.com/ethereum-on-steroids/comounds-gateway-a-deep-dive-into-setting-up-a-validator-node-399a2817702d https://github.com/comound-finance/gateway
Chất nền.dev: https://substrate.dev/docs/en/

Rust lại là ngôn ngữ phổ biến nhất: https://mp.weixin.qq.com/ s/xGZqrXfzfthVSIUWIQWENA


Liên kết gốc


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

举报 Báo lỗi/Báo cáo
Chọn thư viện
Thêm mới thư viện
Hủy
Hoàn thành
Thêm mới thư viện
Chỉ mình tôi có thể nhìn thấy
Công khai
Lưu
Báo lỗi/Báo cáo
Gửi