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
[Chuyên mục Máy ảo] Hiểu ứng dụng của hợp đồng thông minh Rust trong ba phút
趣链科技 QTech
特邀专栏作者
2021-09-02 09:44
Bài viết này có khoảng 2655 từ, đọc toàn bộ bài viết mất khoảng 4 phút
Mặc dù hiệu suất của HVM đã được cải thiện rất nhiều so với EVM, nhưng do số lượng mã byte lớn, hiệu suất thực thi trong kịch bản thực thi diễn giải rất hạn chế. Để giải quyết vấn đề c

【Hướng dẫn】

Trong các số trước của "Quá khứ và hiện tại của các công cụ thực thi hợp đồng thông minh" và "Một người bạn mới quen thuộc - JVM trên chuỗi", chúng tôi đã giới thiệu nguồn gốc của hợp đồng thông minh và công cụ thực thi HVM tự phát triển có thể thực thi các hợp đồng thông minh Java. Mặc dù hiệu suất của HVM đã được cải thiện rất nhiều so với EVM, nhưng do số lượng mã byte lớn, hiệu suất thực thi trong kịch bản thực thi diễn giải rất hạn chế. Mặt khác, các vấn đề bảo mật do sơ hở hợp đồng (bất kể sơ hở logic nghiệp vụ) xảy ra hàng năm, gây thiệt hại kinh tế nghiêm trọng.

Để giải quyết hai vấn đề cấp bách này, chúng tôi đã giới thiệu máy ảo wasm FVM và khung viết hợp đồng Rust. Bài viết dưới đây sẽ giới thiệu chi tiết về ứng dụng của hai phần này trong lĩnh vực hợp đồng thông minh.

【sự an toàn】

mọi người"mọi người", thường mang màu sắc của khoa học lượng tử, tốt hơn hết là nên có một bộ cơ chế khác để đảm bảo tính đúng đắn của hợp đồng.

Rust với tư cách là một ngôn ngữ có mục đích chung hiệu quả và đáng tin cậy, chắc chắn là giải pháp tốt nhất hiện có.

Độ tin cậy của ngôn ngữ Rust dựa vào mô hình sở hữu và hệ thống kiểu phong phú, cũng như trình biên dịch mạnh mẽ có thể phát hiện các lỗi cổ điển tại thời điểm biên dịch. Điều này buộc các nhà phát triển phải suy nghĩ về tính chính xác của từng dòng mã mà họ viết trong quá trình viết hợp đồng và xác nhận nó thông qua trình biên dịch để đảm bảo rằng mã hợp đồng được trình biên dịch kiểm tra phải an toàn, giúp cải thiện đáng kể tính bảo mật của hợp đồng. hợp đồng và độ tin cậy.

Ngoài ra, khung hợp đồng do chúng tôi tự phát triển cung cấp khung thử nghiệm thời gian chạy, cho phép các nhà phát triển mô phỏng hoạt động của hợp đồng và tìm ra các vấn đề trong hợp đồng ngoài chuỗi mà không cần triển khai. Điều này chắc chắn bổ sung thêm một lớp bảo hiểm cho hợp đồng trên chuỗi.

Ngoài ra, khung hợp đồng của chúng tôi sử dụng công nghệ mở rộng macro của Rust để đặt các hoạt động trong chú thích macro. Điều này cho phép các nhà phát triển chú ý nhiều hơn đến logic nghiệp vụ của hợp đồng của chính họ trong quá trình sử dụng, điều này đảm bảo tính bảo mật của logic hợp đồng ở một mức độ nhất định, sau cùng chỉ cần tập trung vào một phần mà không bị các yếu tố khác can thiệp, cho phép các nhà phát triển để cống hiến nhiều hơn Để đánh bóng các chi tiết của logic.

【hiệu quả】

EVM thực chất là một chương trình tập lệnh và một máy ảo dựa trên ngăn xếp, cần được trình biên dịch dịch thành các lệnh rồi mới được thực thi, tức là được giải thích và thực thi, dẫn đến hiệu quả thực thi của EVM rất thấp. Ngược lại, wasm sử dụng phương thức biên dịch và thực thi, áp dụng công nghệ mã byte/máy ảo và xác định định dạng nhị phân nhỏ gọn, có tốc độ thực thi hợp đồng thông minh cao hơn và nhanh hơn. Do đó, chúng tôi đã giới thiệu wasm để cải thiện đáng kể hiệu quả hoạt động của toàn bộ hợp đồng.

WASM (WebAssugging) nghĩa đen là hợp ngữ web, một ngôn ngữ hợp ngữ được tùy chỉnh cho trình duyệt web. Mặc dù nó được cho là tùy chỉnh ở đây, nhưng với sự phát triển của tâm linh, nó không chỉ áp dụng cho web và "đặc điểm kỹ thuật cốt lõi" của nó không liên quan gì đến nền tảng. Vì được gọi là hợp ngữ nên hiển nhiên nó có những đặc điểm của hợp ngữ:

1) Mức độ thấp, gần với ngôn ngữ máy, nâng cao hiệu quả hoạt động;

2) Thích hợp làm mã đối tượng, được tạo bởi trình biên dịch ngôn ngữ cấp cao khác (C/C++/Rust/Go, v.v.) để mở rộng khả năng ứng dụng;

Ngoài ra, mô-đun là đơn vị biên dịch, truyền và tải chương trình wasm. wasm định nghĩa hai định dạng mô-đun:

Định dạng nhị phân: Đây là định dạng mã hóa chính của mô-đun wasm và tệp có đuôi .wasm. Do thiết kế định dạng rất nhỏ gọn, kích thước nhị phân có thể được giảm xuống và nó có hiệu suất thực thi và truyền tải nhanh hơn.

Định dạng văn bản: tệp có đuôi .wat và sẽ không được mở rộng chi tiết ở đây.

Việc phân chia các mô-đun làm cho cấu trúc tổ chức của wasm rõ ràng hơn, việc phân tích thuận tiện hơn và hiệu quả của việc phân tích được cải thiện rất nhiều.

[Giải thích chi tiết FVM]

Vì vậy, ngoài việc sử dụng Rust để viết hợp đồng và biên dịch hợp đồng thành mã byte wasm, để thực sự chạy hợp đồng, vẫn cần cung cấp một môi trường hoạt động cho wasm, đó là những gì FVM làm.

Về mặt ngữ nghĩa, một mô-đun wasm có thể được chia thành ba giai đoạn từ định dạng nhị phân đến thực thi cuối cùng: giải mã, xác minh và thực thi. Giai đoạn giải mã giải mã mô-đun nhị phân thành định dạng bộ nhớ; giai đoạn xác minh phân tích mô-đun một cách tĩnh để đảm bảo rằng cấu trúc của mô-đun đáp ứng các yêu cầu đặc tả và mã byte của chức năng không có hành vi xấu; giai đoạn thực thi có thể được chia thành hai phần: khởi tạo và gọi hàm.

(1) Thành phần của FVM

Rõ ràng, chức năng hoàn chỉnh của FVM nên bao gồm giải mã, xác minh, khởi tạo và gọi hàm được đề cập ở trên. Chúng tôi đã triển khai FVM theo toàn bộ quy trình, tuy nhiên khi vận hành thực tế, chúng tôi nhận thấy quy trình thực thi tiêu tốn rất nhiều hiệu năng trong việc đọc, ghi và cấp phát bộ nhớ. Để cải thiện hơn nữa hiệu suất thực thi của FVM, chúng tôi đã thêm một lớp mô-đun biên dịch, chuyển đổi bộ nhớ ngăn xếp wasm thành bộ nhớ dựa trên thanh ghi, đánh dấu và sử dụng lại bộ nhớ, tránh phân bổ bộ nhớ thường xuyên và cải thiện đáng kể hiệu quả thực thi tổng thể .

chữ

chữ

(3) Quy trình tổng thể

Sau toàn bộ phần giới thiệu, tôi tin rằng mọi người đều có ấn tượng chung về việc sử dụng hợp đồng thông minh Rust. Sau đây là tóm tắt toàn bộ quá trình:

bước 1: Người dùng viết hợp đồng thông minh thông qua khung hợp đồng Rust (phải được kiểm tra)

bước 2: Biên dịch hợp đồng thành tệp wasm

bước 3: Triển khai tệp hợp đồng wasm cho FVM

Sau khi hoàn thành các bước trên là bạn đã chạy hợp đồng thành công❤.

chữ

Các hợp đồng hiện tại chỉ dành cho các doanh nghiệp tương đối đơn giản.Trong kế hoạch của chúng tôi, FVM có thể được áp dụng không chỉ cho các kịch bản hợp đồng hiện có mà còn cho các kịch bản có nghiệp vụ phức tạp và yêu cầu cao về tốc độ thực hiện hợp đồng. Đồng thời, các kỹ thuật viên không thuộc ngành công nghiệp blockchain được cung cấp phương pháp "chi phí học tập bằng không" để đi đến chuỗi - sử dụng ngôn ngữ lập trình quen thuộc của họ để viết hợp đồng. Các kịch bản ứng dụng và phạm vi ảnh hưởng của công nghệ chuỗi khối đã được mở rộng để khám phá thêm các giải pháp hạ cánh bằng công nghệ chuỗi khối.

Hiện tại, hiệu quả hoạt động của FVM đã đáp ứng tốt kỳ vọng, nhưng chúng tôi sẽ không hài lòng với tình trạng trì trệ như hiện nay. Trong kế hoạch tiếp theo, chúng tôi sẽ tiếp tục khám phá một số giải pháp tối ưu hóa, chẳng hạn như:

1) Tối ưu hóa bộ đệm máy ảo;

2) Giới thiệu AOT (Ahead-of-Time), tức là cách biên dịch trước, thay thế cách giải thích và thực thi mã byte hiện có, trực tiếp biên dịch mô-đun wasm thành mã go, sử dụng cơ chế bổ trợ của go để tải trực tiếp và chạy, đồng thời có được trải nghiệm hiệu suất cao nhất.

Công nghệ liên tục giới thiệu những công nghệ mới và công việc tối ưu hóa sẽ tiếp tục. "Tiếp tục nâng cao" là mục tiêu của chúng tôi.

【bản tóm tắt】

Giới thiệu về tác giả

Giới thiệu về tác giả

Lý Khải

người giới thiệu

người giới thiệu

[1] ngôn ngữ lập trình rỉ sét

[2] "Nguyên lý WebAssugging và công nghệ cốt lõi"


hợp đồng thông minh
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