Skip to main content

Điều gì làm cho sự phát triển trên Blockchain trở nên khác biệt?

Ngày 19 tháng 02 năm 2024 - Chia sẻ bài viết này trên Twitter | FacebookTelegram

Xây dựng trên Blockchain bao gồm sự thay đổi mô hình từ lập trình truyền thống và đòi hỏi sự hiểu biết thấu đáo về mô hình phi tập trung của Blockchain. Các nhà phát triển Hợp đồng thông minh có sẵn một bộ chức năng cụ thể để phát triển các ứng dụng phi tập trung (DApps). Họ phải xây dựng một dApps an toàn trong lần thử đầu tiên. Trong bài viết này, chúng tôi sẽ giải thích sự khác biệt giữa phát triển ứng dụng thông thường và ứng dụng Blockchain. Chúng ta sẽ xem xét một đoạn Script viết bằng Aiken và hợp đồng thông minh viết bằng Solidity.

Việc xây dựng trên Blockchain khác nhau như thế nào?

Sự khác biệt chính giữa ngôn ngữ lập trình phổ biến và ngôn ngữ Blockchain là trường hợp sử dụng và nguyên tắc thiết kế của chúng. Các ngôn ngữ lập trình phổ biến có mục đích chung và có thể được sử dụng để phát triển nhiều ứng dụng. Mặt khác, các ngôn ngữ Blockchain thường được thiết kế với các tính năng cụ thể để hỗ trợ phát triển các ứng dụng phi tập trung (DApps) và Hợp đồng thông minh (hợp đồng thông minh).

Các nhà phát triển sử dụng ngôn ngữ lập trình truyền thống có sẵn một số lượng lớn thư viện cho phép họ viết hầu hết mọi thứ. Các thư viện này được cộng đồng nhà phát triển toàn cầu phát triển trong nhiều năm, cung cấp mã viết sẵn cho nhiều chức năng từ xử lý tệp I/O đến các thuật toán học máy phức tạp. Hệ sinh thái thư viện rộng lớn này cho phép các nhà phát triển xây dựng ứng dụng một cách nhanh chóng và hiệu quả mà không cần phải phát minh lại bánh xe.

Tuy nhiên, khi nói đến phát triển Blockchain, bối cảnh lại hoàn toàn khác. Các ngôn ngữ lập trình blockchain như Solidity cho Ethereum hoặc Plutus cho Cardano, mặc dù mạnh mẽ nhưng lại không có sẵn các thư viện có chiều rộng và chiều sâu như nhau. Điều này một phần là do tính mới tương đối của công nghệ Blockchain và các yêu cầu cụ thể của việc viết hợp đồng thông minh.

Các ngôn ngữ lập trình blockchain được thiết kế với trọng tâm cụ thể là mật mã và quản lý tiền. Hơn nữa, nó có thể là việc tạo ra một loại token mới, xác định quyền kiểm soát đối với token, điều kiện chuyển tiền, v.v.

Các nhà phát triển viết hợp đồng thông minh có quyền kiểm soát logic và quy tắc được mã hóa trong các hợp đồng đó. Tuy nhiên, họ không có quyền kiểm soát các khía cạnh nhất định của mạng Blockchain.

Chẳng hạn, các nhà phát triển không thể kiểm soát thông lượng mạng, tức là tốc độ xử lý và thêm các giao dịch vào Blockchain. Điều này được xác định bởi nhiều yếu tố khác nhau như giao thức của mạng, số lượng node và thuật toán đồng thuận được sử dụng.

Tương tự, các nhà phát triển không thể kiểm soát hoặc ngăn chặn khả năng thao túng khối của các nhà sản xuất khối. Tính toàn vẹn của việc sản xuất khối được duy trì bởi thuật toán đồng thuận cơ bản của Blockchain và các quy tắc mạng.

Mặc dù các nhà phát triển có thể ra lệnh cho hoạt động của hợp đồng thông minh của họ, nhưng việc thực thi chúng phụ thuộc vào (và có thể bị giới hạn bởi) mạng Blockchain.

Sự tách biệt các mối quan tâm này là một khía cạnh cơ bản của bản chất phi tập trung của công nghệ Blockchain. Nó đảm bảo rằng không một bên nào có toàn quyền kiểm soát tất cả các khía cạnh của mạng Blockchain, từ đó nâng cao tính bảo mật và độ tin cậy của mạng. Mặc dù đây là tính năng mong muốn của Blockchain nhưng một số nhà phát triển có thể cảm thấy bị hạn chế hoặc phụ thuộc vào các yếu tố bên ngoài.

Trong quá trình phát triển Blockchain, mã được thực thi trên mạng phi tập trung và phải tuân thủ các ràng buộc của giao thức Blockchain. Ví dụ: mọi hoạt động trong hợp đồng thông minh đều tiêu tốn một lượng 'gas' nhất định và các nhà phát triển phải viết hợp đồng của họ để tiết kiệm gas nhất có thể. Điều này thường có nghĩa là các hợp đồng thông minh có phong cách mã hóa ở cấp độ thấp hơn và rõ ràng hơn.

Hơn nữa, một khi hợp đồng thông minh được triển khai trên Blockchain thì nó không thể thay đổi được. Tính bất biến này là một tính năng cơ bản của công nghệ Blockchain, nhưng nó cũng có nghĩa là các nhà phát triển phải lấy được mã của họ ngay lần đầu tiên.

Không có chỗ cho lỗi hoặc lỗ hổng bảo mật vì chúng không thể được vá sau này. Do đó, quá trình phát triển hợp đồng thông minh thường bao gồm việc kiểm tra và kiểm toán nghiêm ngặt. Điều này làm cho việc phát triển DApps lâu hơn và tốn kém hơn.

Mặc dù việc hiểu tất cả các cạm bẫy của việc lập trình trên Blockchain là một thách thức đối với các nhà phát triển mới, nhưng mô hình phi tập trung có thể gây ra một cạm bẫy khác.

Việc phát triển các ứng dụng thông thường thường liên quan đến việc tạo ra một hệ thống tập trung trong đó một thực thể duy nhất có quyền kiểm soát dữ liệu và chức năng. Điều này hoàn toàn trái ngược với các ứng dụng Blockchain hoạt động theo mô hình phi tập trung. Trong mô hình này, không một thực thể nào có quyền kiểm soát toàn bộ mạng. Thay vào đó, quyền kiểm soát được phân phối giữa một mạng lưới các node.

Hợp đồng thông minh là một phần cơ bản của các ứng dụng Blockchain. Chúng là những hợp đồng tự thực hiện với các điều khoản của thỏa thuận được viết trực tiếp thành mã. Chúng tự động thực hiện các giao dịch theo các quy tắc được xác định trước mà không cần người trung gian. Việc tự động hóa này làm giảm nguy cơ xảy ra lỗi và gian lận của con người.

Vì không có chỗ cho sai sót nên hợp đồng thông minh phải thực hiện chính xác những gì được mong đợi trong các điều kiện nhất định. Không bên thứ ba nào được phép gây ảnh hưởng đến việc thực hiện hợp đồng thông minh hoặc ngăn chặn nó. Mã là luật. Nếu quá trình thực thi hợp đồng thông minh không thành công và xảy ra lỗi không mong muốn, thường không có cách nào để cứu số tiền bị mất.

Một tính năng cụ thể khác của việc phát triển dApps là nếu một nhà phát triển biết rõ về một môi trường, chẳng hạn như Ethereum, thì anh ấy có thể chưa sẵn sàng phát triển trên Cardano. Các nền tảng hợp đồng thông minh có thể khác nhau về cơ bản.

Nhà phát triển khó chuyển sang nền tảng mới

Các nhà phát triển phải nhận thức được sự khác biệt đáng kể giữa các nền tảng hợp đồng thông minh, vì những khác biệt này có thể ảnh hưởng lớn đến thiết kế, chức năng và tính bảo mật của ứng dụng của họ. Ví dụ: hãy xem sự khác biệt giữa trạng thái và đồng thời.

Hai nền tảng hợp đồng thông minh nổi bật, Ethereum và Cardano, cung cấp những ví dụ tuyệt vời về cách những khác biệt này có thể biểu hiện, đặc biệt là về mặt thao túng trạng thái và tính đồng thời.

Ethereum hoạt động trên mô hình dựa trên tài khoản (Accounting). Trong mô hình này, toàn bộ mạng chia sẻ trạng thái tổng thể, trạng thái này được cập nhật với mọi khối được tạo ra. Trạng thái tổng thể này bao gồm số dư tài khoản và trạng thái hợp đồng thông minh.

Mô hình của Ethereum cho phép nhiều người dùng tương tác với một hợp đồng thông minh trong một khối duy nhất. Tuy nhiên, trạng thái có thể thay đổi được chia sẻ này có thể dẫn đến sự phức tạp và các lỗ hổng tiềm ẩn, đặc biệt là khi giao dịch xảy ra đồng thời. Đồng thời trong bối cảnh này đề cập đến khả năng thực hiện đồng thời nhiều giao dịch. Nếu không được xử lý đúng cách, điều này có thể dẫn đến tình trạng tranh đua và các lỗ hổng bảo mật khác.

Mặt khác, Cardano sử dụng mô hình Đầu ra giao dịch chưa chi tiêu mở rộng (EUTxO). Trong mô hình này, việc gửi và nhận tiền không được lưu trữ dưới dạng số dư mà dưới dạng số tiền giao dịch chưa chi tiêu (UTxO) được liên kết với địa chỉ của ví. Mỗi UTxO này chỉ có thể được sử dụng một lần.

Mô hình này vốn đã xử lý đồng thời, vì mỗi đầu ra giao dịch chỉ có thể được chi tiêu một lần và sau khi được chi tiêu, nó không thể được sử dụng bởi một giao dịch khác. Tuy nhiên, điều này cũng có nghĩa là các nhà phát triển cần suy nghĩ khác về cách họ thiết kế hợp đồng thông minh và xử lý trạng thái.

Hiểu được những khác biệt này là điều quan trọng để các nhà phát triển tránh được lỗi và lỗ hổng trong hợp đồng thông minh của họ. Ví dụ: reentrancy là một lỗ hổng phổ biến trong Ethereum hợp đồng thông minh, nơi kẻ tấn công có thể gọi liên tục một hàm trước khi lệnh gọi hàm đầu tiên kết thúc. Điều này ít được quan tâm hơn ở Cardano do mô hình EUTxO của nó.

Mặc dù Ethereum và Cardano đều cung cấp các nền tảng mạnh mẽ để phát triển các ứng dụng phi tập trung, nhưng mỗi nền tảng lại có những cách tiếp cận riêng để xử lý trạng thái và tính đồng thời. Các nhà phát triển phải hiểu những khác biệt này và ý nghĩa của chúng đối với việc phát triển hợp đồng thông minh để xây dựng hiệu quả các ứng dụng an toàn và hiệu quả trên các nền tảng này.

Các nhà phát triển hiểu rõ về Solidity không thể dễ dàng chuyển sang Cardano. Ngoài việc phải học một ngôn ngữ lập trình mới (Plutus, Aiken, v.v.), họ còn phải giải quyết các đặc điểm cụ thể của Blockchain nhất định. Điều tương tự cũng áp dụng khi di chuyển sang Solana chẳng hạn.

Việc chuyển đổi từ nền tảng Blockchain này sang nền tảng Blockchain khác không chỉ liên quan đến việc học một ngôn ngữ lập trình mới. Mỗi nền tảng có kiến ​​trúc, cơ chế đồng thuận, mô hình giao dịch, mô hình tài khoản và chức năng hợp đồng thông minh riêng.

Ví dụ: việc chuyển đổi từ Java sang C# có thể dễ dàng hơn đối với các nhà phát triển nếu họ đã có kinh nghiệm với các khái niệm như làm việc với Internet, cơ sở dữ liệu, dịch vụ cloud, hệ thống tệp, v.v.

Aiken

Aiken là ngôn ngữ lập trình chức năng được sử dụng để viết tập lệnh (hợp đồng thông minh) cho Cardano.

Trong hình, bạn có thể thấy một tập lệnh xác thực rất đơn giản. Kịch bản kiểm tra xem các điều kiện chi tiêu có được đáp ứng hay không.

Người chi tiêu phải cung cấp chữ ký và chuỗi 'Xin chào, Thế giới!'. Nếu vậy, giá trị trả về của tập lệnh là True. Điều này sẽ cho phép chi tiêu tiền.

Kiểm tra các chức năng có sẵn cho các nhà phát triển. Trong số những thứ khác, nhà phát triển có thể sử dụng mảng byte và so sánh chúng với nhau, sử dụng một số hàm băm (blake2b_256, sha2_256 và sha3_256), làm việc với khoảng thời gian, thực hiện các hàm số học cơ bản, làm việc với chuỗi, v.v.

Đối với các chức năng liên quan nhiều hơn đến Blockchain, nhà phát triển có thể làm việc với địa chỉ, chứng chỉ và giao dịch. Hơn nữa, chúng có thể hoạt động với các giá trị của token và token ADA, v.v.

dApps cho Cardano yêu cầu xây dựng phần on-chain và off-chain. Aiken chỉ dành cho phần on-chain. Các nhà phát triển có thể sử dụng bất kỳ ngôn ngữ lập trình phù hợp nào để xây dựng phần off-chain.

Trong Cardano, hợp đồng thông minh được viết bằng Aiken hoặc Plutus thường nhỏ hơn vì về cơ bản chúng là các tập lệnh xác thực xác định xem giao dịch có hợp lệ hay không. Chúng hoạt động trên mô hình UTXO, trong đó mỗi đầu ra giao dịch mang một đoạn logic nhỏ (hợp đồng) để xác thực bất kỳ giao dịch nào cố gắng chi tiêu nó.

Mặt khác, các hợp đồng thông minh của Ethereum, được viết bằng Solidity, là các ứng dụng trạng thái hoạt động trên Blockchain và thường có mức độ phức tạp cao hơn. Chúng hoạt động trên mô hình dựa trên tài khoản, trong đó các hợp đồng có trạng thái liên tục được lưu trữ trong blockchain và các chức năng có thể thay đổi trạng thái này.

Trong hình bên dưới, bạn có thể xem ví dụ về hợp đồng quản lý quyền sở hữu token kỹ thuật số và cho phép chuyển các token đó giữa các chủ sở hữu token.

4 dòng đầu tiên của hợp đồng thể hiện trạng thái được lưu trữ trong Blockchain.

Một ứng dụng doanh nghiệp nhỏ được viết bằng ngôn ngữ lập trình hướng đối tượng truyền thống có thể có hàng nghìn dòng mã, trong khi một ứng dụng doanh nghiệp có thể dễ dàng có hàng chục đến hàng trăm nghìn dòng mã nguồn. Ví dụ: một chiếc Boeing 787 có 6,5 triệu dòng mã đằng sau hệ thống điện tử hàng không và hỗ trợ trực tuyến.

Xét về dòng mã, dApps có kích thước nhỏ so với các ứng dụng thông thường. Một dApps đơn giản có thể bao gồm một vài hợp đồng thông minh, mỗi hợp đồng bao gồm vài chục đến vài trăm dòng mã. Các dApps phức tạp hơn, chẳng hạn như sàn giao dịch phi tập trung hoặc nền tảng cho vay, có thể bao gồm nhiều hợp đồng thông minh với hàng nghìn dòng mã.

Lời kết

Xây dựng DApps là một lĩnh vực sinh lợi mới thu hút ngày càng nhiều nhà phát triển mỗi năm. Họ có thể cung cấp các dApps ngày càng hiệu quả và thân thiện với người dùng mặc dù phải vượt qua tất cả các cạm bẫy của việc Phi tập trung và các chi tiết cụ thể của quá trình phát triển trên Blockchain. Ví dụ, việc phát triển trò chơi và ứng dụng cho điện thoại di động có tính cạnh tranh cao và bão hòa. Trong ngành công nghiệp Blockchain, một nhóm có thể dễ dàng tự thành lập và trở thành người chơi thống trị trong lĩnh vực này. Nó thật hấp dẫn.

Nguồn bài viết tại đây


Picture

Đọc thêm các bài viết liên quan tại thẻ Tags bên dưới