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

Những đổi mới và cơ hội trong ngôn ngữ Move

HTX
特邀专栏作者
2022-11-17 09:55
Bài viết này có khoảng 9918 từ, đọc toàn bộ bài viết mất khoảng 15 phút
Xuyên suốt lịch sử phát triển của chuỗi khối, sự gia tăng của từng đợt chuỗi công khai mới nổi thường đồng nghĩa với sự thay đổi trong mô hình phát triển ở một mức độ nhất định. cạnh tra

Bản tóm tắt

tiêu đề cấp đầu tiên

Sau các ngôn ngữ Solidity và Rust, Move, một thế hệ ngôn ngữ lập trình mới được hình thành từ dự án Libra bị sụp đổ, đã trở lại nổi bật nhờ các dự án chuỗi công khai Aptos và Sui. Trong suốt lịch sử phát triển của chuỗi khối, sự gia tăng của từng đợt chuỗi công khai mới nổi thường đồng nghĩa với sự thay đổi trong mô hình phát triển ở một mức độ nhất định. Sự xuất hiện trở lại của Move dường như ngụ ý rằng câu chuyện về ngôn ngữ mới đang trở thành một chiến trường mới cho sự cạnh tranh của chuỗi công khai.

Để thực hiện tốt hơn việc bảo mật tài sản, Move đã thực hiện những thay đổi sáng tạo trong thiết kế ngôn ngữ, máy ảo và công cụ xác minh: Move xác định loại Tài nguyên mới cho tài sản kỹ thuật số và tóm tắt hai thuộc tính cơ bản mà tài nguyên phải đáp ứng. hệ thống mô-đun trừu tượng hóa dữ liệu mạnh mẽ, quyền kiểm soát tài khoản được thực hiện; việc chuyển quyền sở hữu tài sản được thực hiện bằng cách kế thừa hệ thống Quyền sở hữu của Rust. Ngoài ra, việc giới thiệu các cơ chế như cuộc gọi tĩnh, xác minh chính thức và trình xác minh mã byte cũng cùng nhau cung cấp nhiều đảm bảo cho tính bảo mật của tài sản kỹ thuật số.

Từ góc độ chấp nhận ngôn ngữ, Move rất thân thiện với các nhà phát triển. Mục đích của nó là hạ thấp ngưỡng bảo mật cho các nhà phát triển để các nhà phát triển hợp đồng có thể tập trung vào logic nghiệp vụ, dễ dàng bắt đầu và tổng chi phí di chuyển của nhà phát triển không cao ; Nhìn về mặt sinh thái, các kịch bản ứng dụng thực tế của Move vẫn đang ở giai đoạn đầu và hệ sinh thái ứng dụng vẫn chưa được triển khai trên quy mô lớn. Hiện tại, chỉ có Aptos, Sui và Starcoin trong nước là các dự án chuỗi công khai duy nhất được Move ươm tạo. Trong tương lai, do các yếu tố như đặc điểm của Move for Finance và sự trưởng thành của đường đua, cơ sở hạ tầng tài chính như DEX, DeFi và ví sẽ được triển khai trước, tiếp theo là các ứng dụng liên quan đến tài chính như Socialfi và Gamefi.

Tổng quan

tiêu đề cấp đầu tiên

Gần đây, hoạt động theo dõi chuỗi công khai đã cực kỳ sôi động: hai chuỗi công khai mới, Aptos và Sui, đã làm chao đảo thị trường và huy động được gần 500 triệu USD tiền tài trợ, đã thu hút sự chú ý rộng rãi trong ngành. Để nói vì sao họ có năng lực tuyệt vời như vậy, ngoài việc phần lớn đội ngũ sáng lập đều xuất thân từ nền tảng sâu xa của dự án stablecoin Libra (sau đổi tên là Diễm) đã ngừng hoạt động, thì nhiều khả năng họ đã thừa hưởng di sản cốt lõi từ Diễm. .—Di chuyển ngôn ngữ.

Trong vài năm qua, mỗi làn sóng chuỗi công khai mới trong lĩnh vực blockchain đều bao gồm một mức độ chuyển đổi mô hình phát triển nhất định. Giờ đây, chuỗi công khai Diem do Move đứng đầu dường như đang ám chỉ rằng câu chuyện về ngôn ngữ lập trình mới đã trở thành một trong những chiến trường của cuộc cạnh tranh chuỗi công khai.

tiêu đề cấp đầu tiên

1. Lý do Move ra đời

Thế giới có bao nhiêu ngôn ngữ, vì sao Libra thiết kế Move “áp đảo”? Chúng tôi biết rằng tầm nhìn của Libra là trở thành cơ sở hạ tầng tài chính của một loại tiền tệ toàn cầu, trao quyền cho hàng tỷ người. Vì vậy, Move phải đặt vấn đề bảo mật tài sản lên hàng đầu trong các mục tiêu thiết kế của mình. Tuy nhiên, các ngôn ngữ lập trình trước đây không đáp ứng tốt yêu cầu này.

Theo thống kê chưa đầy đủ từ SlowMist Hacked, chỉ riêng trong năm 2021, sẽ có hơn 200 sự cố bảo mật được công bố trong hệ sinh thái blockchain, với thiệt hại vượt quá 9,8 tỷ USD. Trong số đó, phần lớn các vấn đề bảo mật xuất hiện trong các giao thức DApp hoặc DeFi sinh thái.

Các cuộc tấn công bảo mật hợp đồng điển hình bao gồm các khoản vay chớp nhoáng, tấn công vào lại, tấn công chi tiêu gấp đôi, tràn số, phát lại giao dịch, biên lai giao dịch, v.v. Tất cả đều phản ánh rằng các ngôn ngữ lập trình thế hệ cũ mà đại diện là Solidity ít nhiều có rủi ro bảo mật về tính năng ngôn ngữ, hoạt động hợp đồng và thiết kế máy ảo.

Do đó, Libra đã kiên quyết từ bỏ ngôn ngữ lập trình hợp đồng thông minh cũ và phát triển ngôn ngữ Move an toàn hơn.Bài viết này cũng sẽ chủ yếu giải thích các tính năng bảo mật khác nhau của Move.

2. Move đảm bảo an toàn tài sản như thế nào

Hiệu suất của Move trong bảo mật tài sản vượt trội so với các ngôn ngữ lập trình trước đó, phần lớn là do nó đã thực hiện những cải tiến mang tính sáng tạo trên vai của những người tiền nhiệm.Những cải tiến này chủ yếu được phản ánh ở ba khía cạnh, đó là thiết kế ngôn ngữ, Máy ảo và công cụ xác minh ngoài chuỗi.

tiêu đề phụ

2.1 Thiết kế ngôn ngữ: Sinh ra cho Tài chính kỹ thuật số

Move đang dần làm suy yếu thuộc tính "kỹ thuật số" và nhấn mạnh thuộc tính "tài sản". tại sao bạn nói như vậy? Trước tiên, chúng ta hãy xem ngôn ngữ hợp đồng thông minh hoàn chỉnh của Turing đã xác định tài sản kỹ thuật số trong quá khứ như thế nào.

Chúng tôi biết rằng Ethereum sử dụng một mô hình tài khoản, bản thân nó là một cỗ máy trạng thái giao dịch khổng lồ, mỗi giao dịch sẽ thay đổi trạng thái thế giới của Ethereum và các giao dịch được đóng gói trong các khối. Do đó, một mặt, Ethereum có thể được coi là một chuỗi sổ cái được hình thành bởi các giao dịch được đóng gói thành các khối, mặt khác, nó cũng có thể được coi là sự chuyển đổi liên tục từ trạng thái thế giới này sang trạng thái thế giới khác với việc tạo ra các khối trạng thái của bộ máy nhà nước.

Hơn nữa, tổng thông tin của mỗi tài khoản tạo thành trạng thái của thế giới tại mỗi thời điểm. Đồng thời, đối với mỗi tài khoản, đó là ánh xạ từ địa chỉ đến trạng thái tài khoản. Cách diễn đạt này có thể trừu tượng hơn, chúng ta có thể hiểu theo cách bình dân như vậy. Mở ví của bạn và mỗi thẻ ngân hàng của bạn tương ứng với một tài khoản ngân hàng. Số thẻ của thẻ ngân hàng tương đương với địa chỉ của tài khoản và số dư quỹ, chi tiết tiêu dùng, nắm giữ sản phẩm quản lý tài sản, v.v. trong số thẻ đều là trạng thái của tài khoản. Vì vậy, mỗi thẻ tương ứng với một trạng thái tại một thời điểm nhất định. Bộ sưu tập tất cả các thẻ ngân hàng của bạn tương ứng với trạng thái tiền của bạn trên thế giới. Khi bạn sử dụng thẻ ngân hàng của mình để giao dịch và tiêu dùng, trạng thái thẻ ngân hàng của bạn sẽ thay đổi và trạng thái thế giới của tiền của bạn cũng sẽ thay đổi.

Mối quan hệ ánh xạ này chủ yếu được phản ánh bởi số dư trong trường khóa của tài khoản Ethereum. Theo trực giác, đây là cặp khóa-giá trị KV điển hình (ánh xạ (địa chỉ => uint256) số dư công khai) và Giá trị được phản ánh trong một số loại số dư Mã thông báo của tài khoản. Do đó, Mã thông báo được biểu thị bằng một biến giá trị số nguyên (uint) trong Solidity và quá trình chuyển mã thông báo giữa các tài khoản khác nhau được vận hành bằng phép cộng và phép trừ kỹ thuật số.

Sau đây là logic chuyển ERC20 được triển khai bằng Solidity. "Từ người dùng" (nghĩa là người gửi chuyển giá trị của mã thông báo cho "người dùng" (người nhận). Quá trình chính là:

i. Ánh xạ số dư cân bằng ban đầu từ địa chỉ người gửi (từ) và gán nó cho biến oldFromVal;

ii. Yêu cầu oldFromVal lớn hơn giá trị, nghĩa là người gửi có đủ số dư;

iii. Ánh xạ số dư ban đầu từ địa chỉ người nhận (tới) và gán nó cho biến oldToVal

iv. Gán giá trị oldToVal + cho newToVal;

v. Gán oldFromVal — giá trị cho newFromVal;

vi. Đặt newFromVal thành số dư mới của địa chỉ người gửi (từ);

vii. Đặt newToVal làm số dư mới (đến) của người nhận;

Để đơn giản hóa nó bằng một ví dụ phổ biến, Alice chuyển 10 nhân dân tệ cho Bob, gọi hợp đồng thông minh để trừ 10 từ địa chỉ tài khoản của Alice và thêm 10 vào địa chỉ của Bob. Toàn bộ quá trình sửa đổi số dư là logic khấu trừ phổ biến trong các tình huống tài chính tập trung.

Tuy nhiên, thế giới on-chain lại khác. Ví dụ: sẽ xảy ra trường hợp số dư của Bob tăng thêm 10, nhưng số dư của Alice không thay đổi? Câu trả lời là có. Chúng tôi biết rằng hầu hết các hành vi trên chuỗi đều dựa trên hợp đồng thông minh và hợp đồng thông minh được thực thi tự động theo các quy tắc đặt trước. Quay lại ví dụ trên, nếu địa chỉ from và to giống nhau, nghĩa là khi gửi token cho chính bạn. Theo trình tự thực thi mã, mặc dù giá trị chuyển khoản trước tiên được trừ khỏi địa chỉ của người gửi, giá trị của newToVal được ghi đè bằng giá trị của newFromVal sau đó, dẫn đến số dư tài khoản ngày càng tăng nhưng không bị khấu trừ đã được thực hiện. Điều này đã dẫn đến một lỗ hổng trong việc phát hành mã thông báo không giới hạn.

Từ ví dụ này, có thể thấy rằng quy trình giao dịch giữa những người dùng được thực hiện dựa trên logic của mã hợp đồng, cuối cùng được phản ánh trong bản cập nhật số tương ứng dưới địa chỉ. Độ tin cậy của nó phụ thuộc vào nhà phát triển hợp đồng và rất khó để đảm bảo rằng một số lỗi của con người sẽ không xảy ra. Trong phân tích cuối cùng, Solidity là ngôn ngữ dành cho hợp đồng thông minh chuỗi khối, không phải ngôn ngữ định hướng tài sản. Tài sản kỹ thuật số trong Solidity chỉ đơn giản là những con số có thể được cộng và trừ mà không cần định nghĩa kiểu; và tính biểu cảm của các con số là không đủ và tài sản phải được phân biệt.

a) Tài nguyên hạng nhất — — hiện thực hóa tài sản kỹ thuật số

Để giải quyết các vấn đề trên, Move định nghĩa cụ thể một loại dữ liệu mới First-class Resource dành cho tài sản kỹ thuật số, dịch sát nghĩa là tài nguyên là công dân hạng nhất. Ý nghĩa của công dân hạng nhất rất dễ hiểu, tức là ngôn ngữ lập trình nên lấy công dân hạng nhất làm đối tượng hạng nhất để lập trình, còn về tài nguyên, tóm lại là tài nguyên có số lượng hạn chế và có thể tạo ra giá trị. Move tuân theo ý tưởng này và trừu tượng hóa hai ràng buộc mà tài nguyên phải tuân theo khi lập trình, đó là sự khan hiếm và quyền truy cập.

●Khan hiếm

Tính khan hiếm là một thuộc tính quan trọng của tài sản vật chất có giá trị, chẳng hạn như thỏi vàng trong thế giới vật chất, cho dù chúng có được luân chuyển qua lại bao nhiêu lần đi chăng nữa, thỏi vàng này sẽ không thay đổi từ 1 thành 2, cũng không biến mất đột ngột; mà là tài sản kỹ thuật số không Không có sự khan hiếm vật chất vốn có. Do đó, Move tin rằng các quy tắc tính toán tài sản kỹ thuật số phải thực thi theo chương trình sự khan hiếm này. Nó quy định rằng việc cung cấp tài sản trong hệ thống phải được giới hạn, tài sản không thể biến mất khỏi không khí, sao chép tài sản hiện có phải bị cấm và tạo tài sản mới phải là một hoạt động đặc quyền. Phương pháp lập trình được đề cập ở đây đề cập đến cấu trúc ngữ pháp Khả năng được xác định bởi Move. Nó chứa 4 thuộc tính Di chuyển tóm tắt cho các biến khác nhau, có thể được sao chép (copy), lập chỉ mục (key), loại bỏ (drop) và lưu trữ (store). Cần lưu ý rằng một khi biến đã được khai báo là kiểu Resource thì nó chỉ có thể sử dụng thuộc tính Key và Store, không thể thêm Copy và Drop. Bằng cách này, Move đảm bảo tính khan hiếm của các loại tài nguyên từ cấu trúc cú pháp lập trình;

● Quyền truy cập

Chủ sở hữu tài sản sẽ có thể bảo vệ tài sản của họ thông qua một số loại chính sách kiểm soát truy cập. Chúng tôi biết rằng Ethereum chủ yếu dựa vào cơ chế chữ ký khóa công khai và Move cung cấp một hệ thống Mô-đun mới trên cơ sở này. Chúng tôi sẽ giải thích chi tiết về Mô-đun sau, vì vậy chúng tôi sẽ không hiển thị nó ở đây.

Nhìn chung, Move sử dụng Resource để đóng gói khái niệm tài sản từ lớp dưới cùng, biến tài sản kỹ thuật số thực sự trở thành các biến hợp đồng, không chỉ được lưu trữ và gán mà còn được sử dụng làm tham số và giá trị trả về của hàm/thủ tục; The ở trên phản ánh các quy tắc bắt buộc mà Move đã thực hiện đối với các biến Tài nguyên, đảm bảo rằng tài sản không thể biến mất khỏi không khí, cũng như không thể sao chép tùy ý, điều này giúp tránh các rủi ro bảo mật như sao chép vô hạn nói trên và các lỗ hổng phát hành bổ sung.

b) Mô-đun — — thực hiện kiểm soát quyền và khả năng kết hợp

Module là một module, tương tự như Mod trong Rust và Contract trong Solitidy, nó có thể khai báo hàng loạt kiểu dữ liệu và chức năng bên trong bao gồm Resource, Struct, Function, cả Struct và Resource đều dùng để định nghĩa kiểu cấu trúc dữ liệu mới. Điểm khác biệt là Resource không thể copy và bỏ đi, còn về hàm Function thì giống hầu hết các ngôn ngữ khác và có thể dùng để tạo mới, hủy và cập nhật các kiểu đã khai báo trong Module. Nhìn chung, Mô-đun có các đặc điểm sau:

●Trừu tượng hóa dữ liệu mạnh mẽ

Lý do tại sao Mô-đun là một sự trừu tượng hóa dữ liệu mạnh là vì nó quy định rằng kiểu dữ liệu trong suốt bên trong Mô-đun được khai báo và mờ bên ngoài, và mỗi đối tượng Tài nguyên được gói gọn trong một Mô-đun cụ thể, được xác định bởi tất cả Kiểm soát và cập nhật tài khoản của Mô-đun. chủ sở hữu và cung cấp các chức năng bên ngoài để tạo, sửa đổi và hủy tài sản theo các chính sách chi tiết. Như đã đề cập trước đó, tính năng này cũng thường được sử dụng để kiểm soát truy cập Move. Bên ngoài Module không thể bỏ qua Module để thao tác trực tiếp trên Resource bên trong, và phải sử dụng Resource với một số hạn chế thông qua các chức năng được cung cấp. Được phản ánh trong mã, các nhà phát triển bên ngoài chỉ có thể gọi các hàm thuộc loại Công khai trong Mô-đun và hoạt động theo định nghĩa bên trong mô-đun, tránh các mối nguy hiểm tiềm ẩn về an toàn do các lệnh gọi ngẫu nhiên gây ra.

●Tính linh hoạt và không quốc tịch

Module vẫn giữ nguyên giao diện chung của các module cung cấp bên ngoài để kết hợp lẫn nhau và sử dụng tài nguyên giữa các hợp đồng trong quá trình thiết kế, không khác nhiều so với chuẩn Giao diện mà Solidity sử dụng về mặt chức năng, điểm khác biệt là các module của ngôn ngữ Move là không trạng thái Có, trạng thái được lưu trong bộ lưu trữ toàn cầu. Cụ thể, việc triển khai Token của hợp đồng ERC-20 trong Solidity giống sổ cái hơn, ghi lại dữ liệu đầy đủ về tương tác của từng người dùng với hợp đồng thông qua sự thay đổi trạng thái của sổ cái; và Move sử dụng Mô-đun để đóng gói tài sản và lưu trữ chúng trong tài khoản Theo địa chỉ, nó giống một chiếc két sắt khép kín có nhãn hơn.

c) Hệ thống sở hữu - hiện thực hóa quyền sở hữu tài sản

Khái niệm này được kế thừa từ Rust, định nghĩa quyền sở hữu như sau:

1. Mỗi giá trị có một biến tương ứng được gọi là chủ sở hữu;

2. Một giá trị có một và chỉ một chủ sở hữu tại mọi thời điểm;

3. Khi chủ sở hữu vượt quá phạm vi, giá trị sẽ bị loại bỏ.

Nói một cách đơn giản, giá trị chỉ có thể có một chủ sở hữu duy nhất, trong đó chủ sở hữu có thể là một hàm. Khi chuyển một giá trị cho một hàm mới, hàm đó sẽ trở thành chủ sở hữu mới, trong đó việc chuyển một giá trị cho một hàm tương tự về mặt ngữ nghĩa với việc gán một giá trị cho một biến.

Do đó, nhìn lại các thuộc tính tài nguyên của Resource, mặc dù giao dịch Resource giữa những người dùng vẫn được cộng, trừ và lập chỉ mục theo giá trị của tài sản, nhưng nó khác với việc bắt buộc sử dụng mã logic trong Solidity để giảm số dư của một địa chỉ và tăng số dư của địa chỉ khác. Có một sự khác biệt cơ bản giữa các phương pháp, quá trình chuyển Tài nguyên giống như chuyển gạch, chuyển tài nguyên từ tài khoản này sang tài khoản khác và sẽ không có mất mát hoặc trùng lặp trong quá trình chuyển, mà đảm bảo an toàn tài sản tốt hơn.

Nói chung, Move làm rõ quyền sở hữu dữ liệu thông qua khái niệm loại tuyến tính, nhấn mạnh sự khan hiếm tài nguyên, bảo vệ và kiểm soát truy cập, đồng thời sử dụng hệ thống mô-đun để xác định vòng đời, lưu trữ và chế độ truy cập của từng tài nguyên. Các tính năng này kết hợp với nhau đảm bảo rằng các tài sản kỹ thuật số sẽ không được tạo ra một cách ngẫu nhiên và bị loại bỏ hoàn toàn, giúp giảm sự xuất hiện của các vấn đề bảo mật như chi tiêu gấp đôi và phát hành không giới hạn.

tiêu đề phụ

2.2 Máy ảo: Trình xác minh mã byte thời gian chạy — — Tìm lỗ hổng trong quá trình thực thi

Các tính năng thiết kế ngôn ngữ của Move đã được giới thiệu ở trên và các nhà phát triển có thể sử dụng các tính năng này để viết các hợp đồng thông minh với các nhu cầu cụ thể. Tuy nhiên, cả Move và Solidity đều là ngôn ngữ lập trình cấp cao và máy tính không thể đọc và thực thi trực tiếp các mã nguồn này, vì vậy chúng cần dựa vào những người thực thi chuyên dụng để thực hiện các hợp đồng cụ thể.

Hiện tại, máy ảo là một trong những triển khai chính của hợp đồng thông minh và Move cũng không ngoại lệ. Nó có thể cung cấp cho các chương trình một môi trường thực thi hoàn toàn trong suốt ở lớp dưới cùng và mục đích của nó là hiện thực hóa tính năng "viết một lần, chạy mọi nơi", thay vì cho phép các nhà phát triển chương trình viết các phiên bản chương trình khác nhau để tương thích với từng máy chủ khác nhau. Lý do cho thiết kế này là hợp đồng thông minh chạy trong môi trường hệ thống phân tán, yêu cầu khả năng chịu lỗi Byzantine để đạt được sự đồng thuận, tất cả các nút phải tạo ra kết quả tính toán giống nhau theo các quy tắc được quy định trong hợp đồng thông minh, nếu không thì kết quả của hợp đồng mỗi nút không thể thực hiện được.

Máy ảo Move là một trình thông dịch bytecode dựa trên ngăn xếp điển hình. Đầu vào là mã byte, cộng với trạng thái thế giới hiện tại và đầu ra là một thay đổi đối với trạng thái thế giới; nó có một tập lệnh độc lập để thực thi và xử lý toàn bộ hệ thống. Khi trạng thái thay đổi, người dùng có thể tìm thấy ý nghĩa tương ứng của lệnh trong bảng so sánh bytecode do Move cung cấp.

●Quy trình làm việc

Quy trình làm việc cụ thể của máy ảo Move như sau: đầu tiên, mã nguồn được chuyển đổi thành mã bytecode cấp thấp Bytecode thông qua trình biên dịch và được chuyển đến máy ảo; sau khi nhận được mã byte, máy ảo trước tiên sẽ gọi trình xác minh mã byte để xác minh Trình xác minh có thể kiểm tra các loại lỗi khác nhau trong mã nguồn Move; cuối cùng, trình thông dịch máy ảo diễn giải và thực thi các tập lệnh một cách tuần tự, duyệt qua từng dữ liệu hoặc mã byte từ trái sang phải. Thời gian chạy dựa trên thực thi ngăn xếp. Khi gặp dữ liệu, nó sẽ được đẩy vào ngăn xếp. Khi gặp mã byte, dữ liệu của dữ liệu tương ứng sẽ được bật lên. Mã byte được sử dụng để tính toán. Sau khi tính toán, kết quả tính toán được đẩy trở lại ngăn xếp cho đến khi nó thoát ra.

Các lỗi loại có thể xảy ra khi kiểm tra mã nguồn thông qua quá trình này chủ yếu bao gồm:

I. Kiểm tra ngăn xếp ngoài giới hạn. Kiểm tra phạm vi của từng chức năng để truy cập ngăn xếp toán hạng và xem chiều cao ngăn xếp có hợp lệ hay không Ngăn xếp ở đây là khối lệnh (khối cơ bản) của mỗi mã byte được tạo bởi trình xác minh mã byte;

ii. Kiểm tra loại&loại. Kiểm tra xem loại cụ thể của biến trong ngăn xếp phái sinh có đúng không; ví dụ: lớp ngăn xếp không thể sử dụng mã byte CopyLoc cho biến loại Tài nguyên, đây cũng là biểu hiện trực tiếp của sự khan hiếm tài sản;

iii. Kiểm tra trích dẫn. Để ngăn các tham chiếu lơ lửng, mỗi tham chiếu phải trỏ đến một vị trí lưu trữ được phân bổ.

EVM là một môi trường hộp cát riêng biệt và có thể xác định được tạo bởi các nút chuỗi dành cho hợp đồng thông minh. Nhiều chương trình hợp đồng chạy trong các hộp cát máy ảo khác nhau trong cùng một quy trình. Điều này có nghĩa là các cuộc gọi giữa các hợp đồng Ethereum là các cuộc gọi giữa các máy ảo hợp đồng thông minh khác nhau trong cùng một quy trình và tính bảo mật phụ thuộc vào sự cô lập giữa các máy ảo hợp đồng thông minh.

Máy ảo Move hỗ trợ thực thi song song. Các lệnh gọi giữa các hợp đồng được đặt tập trung trong hộp cát.Theo kiến ​​trúc này, tính bảo mật của trạng thái hợp đồng chủ yếu được cách ly thông qua bảo mật nội bộ của ngôn ngữ lập trình, thay vì dựa vào máy ảo để cách ly.

tiêu đề phụ

2.3 Công cụ ngoài chuỗi: Xác minh chính thức — Tìm lỗ hổng trước khi thực thi

Lý tưởng nhất là Move có thể tìm thấy các lỗ hổng bảo mật trong thời gian chạy hợp đồng bằng cách chạy xác minh mã byte. Tuy nhiên, chi phí tính toán của loại xác minh trên chuỗi này rất cao và loại tính toán này thường chiếm nhiều tài nguyên mạng, ảnh hưởng đến TPS trên chuỗi. Do đó, chiến lược mà Move hy vọng sẽ áp dụng là chỉ thực hiện xác minh nhẹ trên chuỗi các thuộc tính bảo mật chính và dựa vào các công cụ xác minh tĩnh ngoài chuỗi cho các vấn đề bảo mật khác. Dựa trên chiến lược này, Move đã phát triển trình xác minh chính thức Move Prover duy nhất để ngăn ngừa lỗi của con người và cải thiện bảo mật mã.

Cái gọi là xác minh chính thức là để xác minh độ tin cậy của chương trình theo một số thông số kỹ thuật hoặc thuộc tính chính thức. Những thông số kỹ thuật này thường được thiết lập bằng cách thiết lập các mô hình toán học. Không có lỗi tồn tại trước khi triển khai. So với bảo mật mã kiểm tra thủ công truyền thống, xác minh chính thức có thể giải quyết các nhược điểm mà các phương tiện thủ công không thể liệt kê đầy đủ các đầu vào có thể.

● cuộc gọi tĩnh

Điều đáng nói là Move Prover là một công cụ xác minh tĩnh, bởi vì Move hoàn toàn không hỗ trợ các cuộc gọi động từ thiết kế cơ chế. Cuộc gọi động có nghĩa là nếu một chương trình gọi một chương trình khác, mục tiêu của cuộc gọi phải được xác định trong thời gian chạy, thì loại cuộc gọi hợp đồng này được gọi là động. Từ quan điểm cơ chế, nó hơi giống với cuộc gọi từ xa của máy chủ. Tuy nhiên, các cuộc gọi động có thể gây ra sự cố đồng thời khi gọi chúng trong một vòng lặp. Ví dụ: hợp đồng A gọi hợp đồng B và hợp đồng B gọi hợp đồng A. Lần thực hiện hợp đồng A trước đó chưa hoàn thành và lần thực hiện tiếp theo được thực hiện, dẫn đến việc các lần thực hiện tiếp theo không đọc được trạng thái trung gian trước đó, điều này cuối cùng dẫn đến lỗ hổng bảo mật. Tai nạn The DAO nổi tiếng là do vấn đề của cuộc gọi động hợp đồng. Do đó, trong thiết kế Move, mỗi lời gọi hàm là tĩnh và các nhà phát triển có thể biết nó gọi những hàm nào theo thứ tự nhất định trước khi chương trình chạy. Loại hệ thống kiểu tĩnh này phù hợp hơn để suy luận thông qua xác minh chính thức và phơi bày vấn đề trước giai đoạn biên dịch, để giảm khả năng xảy ra lỗi trong thời gian chạy và chia sẻ tốt áp lực kiểm tra bảo mật.

tiêu đề cấp đầu tiên

3. Tóm tắt và Triển vọng

Nếu quá trình chuyển đổi từ Bitcoin Script sang Ethereum Solidity là sự thay đổi trong khả năng thể hiện hợp đồng, thì quá trình chuyển đổi từ Solidity sang Move là sự phát triển của khả năng bảo mật hợp đồng. Do đó, Move cũng đã được giao phó với kỳ vọng thị trường cao hơn.

Từ góc độ cơ chế ngôn ngữ, việc khám phá bảo mật tài sản của Move rất thú vị. Nó đã tạo ra những thay đổi sáng tạo ở ba cấp độ thiết kế ngôn ngữ, máy ảo và công cụ xác minh.Những thiết kế này là một tổng thể hữu cơ: thiết kế lập trình hướng đến tài sản làm cho ngôn ngữ Move thích ứng một cách tự nhiên với việc triển khai các ứng dụng tài chính phi tập trung; logic, kiểm soát truy cập, cuộc gọi tĩnh và xác minh chính thức cũng cung cấp nhiều đảm bảo cho tính bảo mật của tài sản kỹ thuật số.

Trọng tâm lớn nhất của vòng tường thuật chuỗi công khai mới này chắc chắn là Move. Liệu nó có thể sử dụng phong cách cổ đông này để tạo ra sự khác biệt lớn trên thị trường hay không, tất cả chúng ta đều mong đợi điều đó.

Người giới thiệu

1. https://diem-developers-components.netlify.app/papers/diem-move-a-language-with-programmable-resources/2020-05-26.pdf

2. https://move-book.com/cn/index.html

3. https://move-dao.github.io/move-book-zh/modules-and-scripts.html

4. https://jolestar.com/why-move-1/

5.https://mirror.xyz/0xbuidlerdao.eth/MePeSGYe63OX8xXb8IwIrXzGk_S606NG7SR879XMXRE

6. https://mp.weixin.qq.com/s/bSS9GAcVp6tuWjedpTysQw

7. https://starcoin.org/zh/developers/others/starcoin_ecology/

8. https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/design/virtual_machine/evm.html

9. https://doc.rust-lang.org/book/

10. https://solidity-cn.readthedocs.io/zh/develop/

tiêu đề cấp đầu tiên

Trang web chính thức:

liên hệ chúng tôi:

Email tư vấn: research@huobi.com

Trang web chính thức:https://research.huobi.com/

Twitter: Huobi_Research

https://twitter.com/Huobi_Research

Medium: Huobi Research

https://medium.com/huobi-research

Telegram: Huobi Research

https://t.me/HuobiResearchOfficial

từ chối trách nhiệm

1. Viện nghiên cứu chuỗi khối Huobi không có bất kỳ mối quan hệ nào với các dự án hoặc bên thứ ba khác liên quan đến báo cáo này có thể ảnh hưởng đến tính khách quan, độc lập và công bằng của báo cáo.

2. Các tài liệu và dữ liệu được trích dẫn trong báo cáo này đều từ các kênh tuân thủ. Các nguồn tài liệu và dữ liệu được coi là đáng tin cậy bởi Viện nghiên cứu chuỗi khối Huobi và các xác minh cần thiết đã được thực hiện về tính xác thực, chính xác và đầy đủ của chúng, nhưng Huobi Blockchain Viện nghiên cứu không đưa ra bất kỳ đảm bảo nào về tính xác thực, chính xác hoặc đầy đủ của nó.

3. Nội dung của báo cáo chỉ mang tính tham khảo, các kết luận và ý kiến ​​trong báo cáo không cấu thành bất kỳ lời khuyên đầu tư nào đối với các tài sản kỹ thuật số có liên quan. Viện nghiên cứu chuỗi khối Huobi sẽ không chịu trách nhiệm pháp lý cho bất kỳ tổn thất nào phát sinh từ việc sử dụng nội dung của báo cáo này, trừ khi được quy định rõ ràng bởi luật pháp và các quy định. Người đọc không nên đưa ra quyết định đầu tư chỉ dựa trên báo cáo này, cũng như không nên đánh mất khả năng đưa ra những đánh giá độc lập dựa trên báo cáo này.

4. Các thông tin, ý kiến ​​và suy đoán trong báo cáo này chỉ phản ánh nhận định của các nhà nghiên cứu vào ngày hoàn thiện báo cáo này, trong tương lai, dựa trên những thay đổi của ngành và cập nhật thông tin dữ liệu, có thể cập nhật các ý kiến ​​và nhận định .

3. Nội dung của báo cáo chỉ mang tính tham khảo, các kết luận và ý kiến ​​trong báo cáo không cấu thành bất kỳ lời khuyên đầu tư nào đối với các tài sản kỹ thuật số có liên quan. Viện nghiên cứu chuỗi khối Huobi sẽ không chịu trách nhiệm pháp lý cho bất kỳ tổn thất nào phát sinh từ việc sử dụng nội dung của báo cáo này, trừ khi được quy định rõ ràng bởi luật pháp và các quy định. Người đọc không nên đưa ra quyết định đầu tư chỉ dựa trên báo cáo này, cũng như không nên đánh mất khả năng đưa ra những đánh giá độc lập dựa trên báo cáo này.

Aptos
Sui
nhà phát triển
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

Tóm tắt AI
Trở về đầu trang
Xuyên suốt lịch sử phát triển của chuỗi khối, sự gia tăng của từng đợt chuỗi công khai mới nổi thường đồng nghĩa với sự thay đổi trong mô hình phát triển ở một mức độ nhất định. cạnh tra
Thư viện tác giả
HTX
Tải ứng dụng Odaily Nhật Báo Hành Tinh
Hãy để một số người hiểu Web3.0 trước
IOS
Android