Bản cập nhật gần đây của Arbitrum có tính năng nâng cấp Stylus VM, có một số cải tiến:
Những cải tiến này bắt nguồn từ việc tích hợp WASM, vốn nổi tiếng với nhiều lợi ích trong môi trường dựa trên nền tảng đám mây. Thông tin chi tiết hơn về vai trò của WASM sẽ được đề cập trong các phần tiếp theo.
Arbitrum đã giới thiệu WASM cho chuỗi của mình, nhưng đây không phải là nền tảng đầu tiên để làm điều đó. Polkadot trước đây đã cho phép tạo hợp đồng thông minh WASM. Nó cung cấp hai ngôn ngữ cho việc này: một tập lệnh hợp ngữ tương tự như DSL nhúng và một ngôn ngữ lấy cảm hứng từ Rust có tên là ink!
Tương tự, Cosmos sử dụng CosmWasm để thực hiện hợp đồng thông minh của mình. Các nhà phát triển có thể tạo hợp đồng thông minh bằng Rust tại đây.
Trước khi khám phá blockchain ái lực dành cho WASM, chúng ta hãy xem lại lý do cơ bản của Cosmos và Polkadot khi chọn WASM.
Cosmos chào mời WASM vì những ưu điểm sau:
Thời gian chạy WASM của Polkadot có các tính năng như:
Polkadot, Cosmos và Arbitrum chia sẻ một số lợi ích do WASM mang lại. Tuy nhiên, Arbitrum có những dịch vụ đặc biệt mà chúng ta sẽ thảo luận sau, cùng với các chi tiết cụ thể của Cosmos.
Hãy cùng tìm hiểu WASM là gì và động lực đằng sau nó.
WebAssembly (WASM) là định dạng lệnh nhị phân. Nó cho phép mã thực thi ở tốc độ tương đương với các ứng dụng gốc, đặc biệt là trong các trình duyệt web. Là mục tiêu biên dịch cho các ngôn ngữ như C và Rust, nó được tối ưu hóa về tốc độ, hiệu quả và bảo mật. WASM cải thiện đáng kể hiệu suất web và mở rộng các chức năng web.
WASM gắn chặt với web vì nó hoạt động trong môi trường JavaScript giống như trình duyệt. Trong các môi trường này, các nhà phát triển có toàn quyền truy cập vào API WASM cũng như hỗ trợ API Web hoàn chỉnh. Kiểm soát này cho phép các nhà phát triển tinh chỉnh các tương tác trên web.
Khái niệm WASM xoay quanh ý tưởng viết mã một lần để chạy ở mọi nơi.
Trong năm 2016, các chương trình thường xuyên giới thiệu các tính năng mới thông qua Ngôn ngữ dành riêng cho miền (DSL). Việc tạo DSL liên quan đến việc cân bằng giữa bảo trì, hiệu quả và an toàn. Ngành đã tìm kiếm một phương pháp để triển khai các chức năng trên nhiều máy chủ mà không ảnh hưởng đến các khía cạnh này.
Nhiều giải pháp khác nhau đã được xem xét kỹ lưỡng, mỗi giải pháp đều có những thách thức riêng:
WASM nổi lên như một giải pháp. Việc phát triển trình biên dịch WASM bắt đầu và đến năm 2018, khái niệm về khả năng tương thích mã phổ quát trên nhiều kiến trúc và thiết bị khác nhau đã được mở rộng. Không giống như Java, mục tiêu không phải là thỏa hiệp về mặt an toàn.
Năm 2019, mô hình thành phần đã được giới thiệu, nâng cao các mô-đun WASM cho khả năng tương tác đa ngôn ngữ. Ví dụ: sự đổi mới này đã cho phép tạo ra một thư viện HTTP phổ quát có thể áp dụng trên các ngôn ngữ khác nhau, giải quyết các vấn đề phức tạp một cách sáng tạo.
WASM tự hào có một loạt các tính năng ấn tượng:
Cộng đồng WASM đang tích cực tăng cường tích hợp và hiệu suất trên các ngôn ngữ lập trình khác nhau.
Việc khám phá tiềm năng của WASM và việc sử dụng nó trong các chuỗi khối đưa chúng ta quay trở lại những hạn chế của Arbitrum Stylus.
Đây là bảng phân tích đơn giản về cách hoạt động của Stylus:
compileProgram
trước của ArbWasm
, mã byte trải qua quá trình đo đạc để bảo mật, đo khí và được biên dịch thành mã gốc được điều chỉnh cho phần cứng của trình xác thực. Bước này rất quan trọng để nâng cao hiệu suất và bảo mật.
Trên thực tế, bước thứ ba dường như bổ sung này rất quan trọng. Việc chuyển đổi mã WASM sang mã máy gốc sẽ tăng tốc độ thực thi. Hơn nữa, giai đoạn biên dịch bổ sung này giúp ngăn chặn "bom biên dịch".
"Bom biên dịch" là mã độc được thiết kế nhằm làm cạn kiệt tài nguyên hệ thống trong quá trình biên dịch, có khả năng làm hỏng hoặc làm đình trệ trình biên dịch. Điều này hoạt động như một cuộc tấn công từ chối dịch vụ nhằm cản trở quá trình phát triển phần mềm.
Stylus đã mở rộng cộng đồng nhà phát triển của Arbitrum bao gồm C++ và Rust. Tuy nhiên, nó vẫn chưa bao trùm được cộng đồng nhà phát triển phổ biến nhất hiện nay. Nó tạo điều kiện thực hiện hợp đồng thông minh trong trình duyệt nhưng chưa hỗ trợ JavaScript và Python.
Có những dự án ở giai đoạn đầu đang cố gắng kết nối Python và JavaScript với WASM. Tuy nhiên, những thứ này chưa sẵn sàng để áp dụng rộng rãi do sự phức tạp trong việc thu gom rác và lo ngại về hiệu suất.
Stylus hiện hỗ trợ C/C++ và Rust thông qua SDK của nó. Các SDK này tương thích với các công cụ của ngôn ngữ tương ứng. Chúng cũng cho phép tích hợp các thư viện của bên thứ ba, chẳng hạn như mật mã gốc. Hạn chế chính là chi phí gas liên quan đến các thư viện này.
Rust SDK đang ở giai đoạn sơ khai, thiếu một số chức năng. SDK C không hỗ trợ các chức năng xuất bằng ABI. Ngoài ra, cả SDK đều không hỗ trợ việc sử dụng công cụ sửa đổi.
Hiện tại, Stylus không có môi trường thử nghiệm cục bộ. Các nhà phát triển được khuyến khích tiến hành thử nghiệm trong SDK. Testnet là lựa chọn duy nhất để chạy hợp đồng thông minh trên Stylus. Tuy nhiên, testnet vẫn chưa triển khai xác minh hợp đồng thông minh.
Hiện đang có công việc chuyển các token và nền tảng ERC khác nhau như Uniswap V2 sang Stylus.
Việc lựa chọn giữa Ngôn ngữ dành riêng cho miền (DSL), DSL nhúng (eDSL) hoặc ngôn ngữ lập trình chung là một thách thức. Các nhà phát triển phải cân nhắc lợi ích của việc làm việc "gần với kim loại" để kiểm soát tính dễ sử dụng do tính trừu tượng ở cấp độ cao hơn mang lại, điều này có thể hạn chế tính linh hoạt.
Việc tạo DSL mới cần có thời gian để phát triển chuỗi công cụ và hệ sinh thái của nó. eDSL, là một tập hợp con của ngôn ngữ lập trình chung, duy trì cùng ngữ nghĩa và cú pháp. Nó cho phép các nhà phát triển sử dụng các ngôn ngữ và công cụ hiện có, có thể đơn giản hóa quá trình học tập. eDSL cũng cung cấp khả năng tương tác tốt hơn với mã có mục đích chung. Ví dụ: eDSL dành cho JavaScript hoặc Python sẽ là chiến lược để thu hút cộng đồng nhà phát triển lớn nhất.
Các ngôn ngữ lập trình chung yêu cầu sử dụng SDK để phát triển. Điều này bổ sung thêm các lớp công cụ, tăng tính chi tiết và giảm tính biểu cảm. Nó cũng có thể dẫn đến các lệnh gọi API dài và các hoạt động đối tượng phức tạp.
Chọn ngôn ngữ phù hợp và tạo eDSL có thể là một sự thỏa hiệp lý tưởng. Nó có thể thu hút các nhà phát triển từ các cộng đồng phổ biến và cung cấp các công cụ thân thiện với người dùng. Dữ liệu hiện tại cho thấy cộng đồng Ethereum vẫn là cộng đồng lớn nhất trong số các nhà phát triển tiền điện tử. Tuy nhiên, các hệ sinh thái như Polkadot, Cosmos và Solana sử dụng Rust cho hợp đồng thông minh cũng đang thu hút một số lượng đáng kể các nhà phát triển và đang có tốc độ tăng trưởng nhanh chóng.
WASM có khả năng tăng cường đáng kể tốc độ thực thi và giảm kích thước gói. Mặc dù Stylus chưa được triển khai trên mạng chính nhưng điểm chuẩn từ các mạng khác đóng vai trò là tài liệu tham khảo hữu ích.
Các điểm chuẩn này cho thấy thời gian thực hiện có thể giảm từ 4 đến 8 lần và kích thước được biên dịch có thể giảm một nửa.
Stylus áp đặt giới hạn về kích thước hợp đồng, đó là khoảng 128KB không nén. Hạn chế này khiến việc di chuyển các hợp đồng thông minh rất lớn từ các ngôn ngữ như Solidity sang Stylus trở nên khó khăn. Hạn chế này thể hiện rõ trong cơ sở mã Stylus:
// arbos/programs/programs.go const MaxWasmSize = 128 * 1024 // Maximum WASM size allowed const initialFreePages = 2 // Number of initial free pages const initialPageGas = 1000 // Gas cost for an initial page const initialPageRamp = 620674314 // Adjusts for a target size cost const initialPageLimit = 128 // Maximum number of pages allowed const initialInkPrice = 10000 // Ink price per EVM gas const initialCallScalar = 8 // Scalar for call cost
Điều quan trọng cần lưu ý là WASM phải chịu một số phí tổn khi khởi động và tắt. Đối với các hoạt động rất nhẹ, EVM có thể tiết kiệm chi phí hơn WASM.
EVM và WASM sử dụng cùng một khe lưu trữ và cây trạng thái. Stylus đạt được khả năng tương tác với EVM bằng cách triển khai API EVM trong WASM. Sự tích hợp này sử dụng chế độ I/O máy chủ được áp dụng rộng rãi trong WASM. Dưới đây là danh sách đầy đủ các API EVM được hỗ trợ trong WASM, cho biết khả năng hỗ trợ tương tác toàn diện.
read_args write_result storage_load_bytes32 storage_store_bytes32 call_contract delegate_call_contract static_call_contract do_call create1 create2 do_create read_return_data return_data_size emit_log account_balance account_codehash evm_gas_left evm_ink_left block_basefee block_coinbase block_gas_limit block_number block_timestamp chainid contract_address msg_reentrant msg_sender msg_value native_keccak256 tx_gas_price tx_ink_price tx_prigin memoery_grow console_log_text console_log console_tee
Biên dịch trước tùy chỉnh là một khái niệm sáng tạo. Họ có tiềm năng tích hợp các tiền điện tử nguyên thủy tiên tiến trên chuỗi với chi phí thực hiện giảm. Ví dụ: các phép tính tensor có thể được biên dịch trước để giảm chi phí cho việc học máy trên chuỗi. Tuy nhiên, không có bằng chứng nào về chức năng biên dịch trước tùy chỉnh trong cơ sở mã hiện tại. Mặc dù các phần biên dịch trước tồn tại cho EVM nhưng chúng không được thiết kế để có thể hoán đổi được.
Có vẻ như những tính năng này vẫn đang được phát triển nhằm tận dụng khả năng của WASM. Điều này sẽ cho phép EVM gọi các hàm do WASM viết, sau đó được biên dịch thành mã máy.
Ngược lại với mô hình diễn viên của CosmWasm, không hỗ trợ tính năng đăng ký lại, Rust SDK của Stylus bao gồm tính năng đăng ký lại như một tính năng tùy chọn. Theo mặc định, tính năng này bị tắt. Các nhà phát triển có quyền lựa chọn cho phép đăng ký lại trong hợp đồng của họ.
Việc kích hoạt tính năng truy cập lại sẽ ảnh hưởng đến API vì nhà phát triển phải đảm bảo rằng họ xóa bộ nhớ đệm lưu trữ trong khi gọi và xem xét các biện pháp an toàn khác. Biện pháp phòng ngừa này là cần thiết để ngăn chặn các lỗ hổng tiềm ẩn liên quan đến các cuộc gọi lại.
WASM đang trở nên phổ biến trong miền gốc đám mây, với nhiều blockchain áp dụng nó để thực hiện hợp đồng thông minh. Mặc dù Arbitrum không phải là công ty tiên phong trong việc tích hợp này nhưng việc triển khai nó có thể có tác động lớn. WASM không được định vị để đại tu hoàn toàn bối cảnh blockchain hoặc thay thế EVM. Tuy nhiên, nó có thể nâng cao lợi thế của Arbitrum trước các đợt zk-rollup mới nổi. Thuật ngữ "EVM+" của Arbitrum mô tả chính xác tình huống này. EVM đặt nền tảng cho nền tảng hợp đồng thông minh và WASM có thể tăng cường hiệu suất bổ sung cho Arbitrum.