Tổng quan

Khi dòng tiền lớn đang đổ dần vào các ứng dụng phi tập trung trong bối cảnh Blockchain đang đến kỷ nguyên mass-adoption, các công cụ kỹ thuật xử lý các tài sản kỹ thuật số hiện vẫn chưa có đủ độ chín. Mặc dù đã có những dịch vụ kiểm toán rất tốn kém, bản thân các hợp đồng thông minh thường không cung cấp một mô hình bảo mật phù hợp với giá trị được lưu trữ trong đó và đôi khi các nhà phát triển phải thao tác lại các chức năng cơ bản để tối ưu hóa.

Cho đến nay, blockchain vẫn còn thiếu những ngôn ngữ lập trình xử lý các tài sản kỹ thuật số với tầm quan trọng mà chúng đáng có. Nhận thấy những vấn đề hạn chế, Flow đã lựa chọn ngôn ngữ Cadnence để lập trình hợp đồng thông minh, một ngôn ngữ lập trình dễ dàng và an toàn hơn cho tài sản và ứng dụng tiền mã hoá.

Hãy cùng GFI tìm hiểu về ngôn ngữ Cadence cũng như lập trình hợp đồng thông minh trên Flow nhé!

Hợp đồng thông minh

Smart Contract
Smart Contract

Hợp đồng thông minh là các chương trình hoặc các “quy tắc” mà các nhà phát triển tạo ra. Các nhà phát triển tạo ra hợp đồng cho phép chỉ định một số chức năng mà người dùng có thể tương tác. Ví dụ: nếu muốn tạo ứng dụng cho phép người dùng lưu trữ trái cây trên Blockchain, thì Hợp đồng thông minh sẽ có các quy tắc sau:

  1. Mọi người đều có thể gọi hàm đó
  2. Đưa tham số (Ở đây sẽ là trái cây mà họ yêu thích)
  3. Lưu tham số trong dữ liệu
  4. Gửi và cập nhật dữ liệu trên Blockchain (sẽ hoàn toàn tự động)

Với một hợp đồng được “deployed” trên Blockchain (nghĩa là đưa hợp đồng đó lên Blockchain mọi người đều có thể tương tác với nó), thì bất kỳ ai cũng có thể điền được trái cây yêu thích của họ và sẽ tồn tại mãi mãi trên Blockchain. Trừ khi trong hợp đồng có chức năng xóa dữ liệu (trước khi deployed).

Tại sao chúng ta sử dụng Hợp đồng thông minh?

  • Tốc độ, hiệu quả và chính xác: Hợp đồng thông minh xử lý giao dịch nhanh chóng và không phải thông qua trung gian, giấy tờ vật lý. Nếu bạn muốn cập nhật dữ liệu trên Blockchain bằng cách sử dụng Hợp đồng thông minh được phép gọi hàm đó, thì bạn có thể cập nhật bất cứ lúc nào mà không cần phải đợi sự chấp thuận của bên thứ 3, kể cả chủ hợp đồng.
  • Tin cậy và minh bạch: Blockchain và Hợp đồng thông minh, cực kỳ an toàn. Gần như không thể hack hoặc thay đổi trạng thái của Blockchain, phần còn lại chủ yếu là do Hợp đồng thông minh, nếu Hợp đồng thông minh không cho phép bạn làm điều gì đó, thì bạn sẽ không có cách nào có thể thay đổi được.

Nhược điểm của hợp đồng thông minh là gì?

  • Khó lập trình: Mặc dù hợp đồng thông minh có rất nhiều điểm tốt, nhưng sẽ cần yêu cầu trình độ chuyên môn cao từ nhà phát triển để đảm bảo chúng không gặp vấn đề về bảo mật.
  • Làm việc xấu: Nếu các nhà phát triển xấu lợi dụng, viết ra những hợp đồng thông minh độc hại để lấy cắp tiền, scam, lừa người dùng khác. Trong thế thế giới Blockchain, bạn phải đảm bảo rằng bạn tương tác với các Hợp đồng thông minh bạn biết là an toàn.
  • Không thể hoàn tác: Bạn không thể hoàn tác điều gì, trừ khi bạn có chức năng cho phép, nhưng các giao dịch sẽ lưu vào sổ cái của Blockchain.

Một trong những ví dụ trong vụ tấn công dự án DeFi Zeed vào ngày 22/4, hacker đã hack được 1 triệu đô và chuyển số tiền vào “Hợp đồng thông minh” do hacker tự viết, với khả năng xóa dấu vết, gây khó khăn trong việc tuy tìm. Nhưng hacker đã chạy chức năng “tự hủy” hợp đồng thông minh trước khi chuyển tiền ra ngoài, và số tiền đó đã kẹt trong hợp đồng thông minh vĩnh viễn, không ai có thể lấy được số tiền đó ra!

Flow Blockchain

Flow Blockchain là Blockchain thế hệ mới, không được biết đến nhiều cho đến Mùa hè năm 2020 khi nhóm Flow bắt đầu giới thiệu rộng rãi. Dapper Labs, công ty sở hữu Flow, ban đầu đã tạo ra CryptoKitties DApp đã trở nên phổ biến đến mức điên cuồng trong những năm trước. Trên thực tế, tôi cho rằng CryptoKitties là một trong những thứ “mang chất blockchain” đầu tiên mà thế giới thực sự áp dụng, đó là một dấu ấn rất lớn đối với ngành Blockchain.

Sau khi Dapper Labs thành công vang dội với CryptoKitties trên Ethereum, họ bắt đầu nhận thấy một số vấn đề với cả Ethereum và Solidity, là ngôn ngữ lập trình Hợp đồng thông minh cho nhiều Blockchains trên Máy ảo Ethereum (EVM). Vì vậy, Cadence đã ra đời.

Tìm hiểu về Flow Blockchain

Cadance

Cadence ngôn ngữ Flow Blockchain
Flow Blockchain ngôn ngữ Cadence

Giống như phần lớn các giao thức Layer 1 thế hệ mới, Flow có ngôn ngữ lập trình riêng là Cadence, để phát triển hợp đồng thông minh. Giống như phần lớn các giao thức Layer 1 thế hệ mới, Flow có ngôn ngữ lập trình riêng là Cadence, để phát triển hợp đồng thông minh. Cú pháp của Cadence được lấy cảm hứng từ các ngôn ngữ lập trình đa năng hiện đại phổ biến như Swift, Kotlin và Rust. Việc sử dụng các loại tài nguyên của nó phù hợp với Move, ngôn ngữ lập trình được phát triển bởi nhóm Diem, và các blockchain thế hệ mới như Aptos, SUI,…

Các nguyên tắc cơ bản của ngôn ngữ lập trình Cadence:

  1. An toàn và Bảo mật: Mọi Hợp đồng thông minh đều phải được bảo mật. Cadence tối đa hóa hiệu năng trong khi vẫn duy trì mức độ an toàn và bảo mật cao nhất. Nhờ kết cấu hệ thống cực kỳ mạnh mẽ, tách biệt giữa hợp đồnggiao dịchLập trình hướng tài nguyên.
  2. Rõ ràng: Code phải dễ đọc, đặc biệt là mã Hợp đồng thông minh, để với tư cách là người dùng có thể xác minh mã đó là an toàn. Bằng cách khai báo mã và cho phép nhà phát triển thể hiện ý định của họ một cách trực tiếp. Cadence làm cho điều đó trở nên rất rõ ràng bằng ngôn ngữ thiết kế, cùng với khả năng dễ đọc, giúp cho việc kiểm tra và xem xét dễ dàng hơn.
  3. Dễ tiếp cận: Cách Cadence được viết rất quen thuộc với các ngôn ngữ lập trình khác, giúp bạn dễ dàng chuyển đổi sang nếu bạn đã có kinh nghiệm.
  4. Trải nghiệm nhà phát triển: Nhà phát triển phải có thể gỡ lỗi một cách dễ dàng, hiểu những gì xảy ra ở đâu và không cảm thấy bối rối. Cadence thực hiện điều này bằng cách làm cho các thông báo lỗi rất rõ ràng.
  5. Lập trình hướng tài nguyên: Cadence cốt lõi của nó sử dụng những thứ được gọi là Resources và chúng xác định khá nhiều thứ chúng ta làm trên Flow. Sẽ được nói rõ hơn ở phần sau!

So sánh Cadence với Solidity

Cấu trúc

Trước hết, Solidity là ngôn ngữ lập trình hướng đối tượng, kỹ thuật lập trình lập trình dựa trên khái niệm về lớp và đối tượng (Object), tập trung vào thao tác hơn là chú trọng vào logic và chức năng. Một số các ngôn ngữ lập trình hướng đối tượng khác tượng tự: JavaScript, Python, C++, … Còn Cadence là ngôn ngữ hướng Tài nguyên để tận dụng duy nhất một mô hình dữ liệu cho tài sản kỹ thuật số. Tài nguyên giúp việc tạo, chuyển và lưu trữ tài sản kỹ thuật số dễ và an toàn hơn.

Solidity vs Cadence
Solidity vs Cadence

Cadence cung cấp mức độ phân cấp cao hơn khi lưu trữ dữ liệu (ví dụ: tài sản kỹ thuật số). Không giống như Solidity lưu trữ thông tin trên sổ cái trung tâm, Cadence lưu trữ dữ liệu trực tiếp trong tài khoản của người dùng. Không có chức năng lưu trữ dữ liệu tập trung, Cadence có thể mang lại tính bảo mật cao hơn cho kiến trúc mạng Flow. Tính năng này cũng cung cấp cho các nhà phát triển và người dùng cuối một phương pháp đơn giản hơn để tạo và chuyển tài sản kỹ thuật số trên Flow Blockchain.

Một đặc điểm giữa Solidity và Cadance là quyền truy cập, nó cho phép một số phần của ứng dụng có thể truy cập được và những phần khác thì không thể. Cadence cung cấp hai lớp kiểm soát truy cập khác nhau dựa trên “từ khóa” và “khả năng”. “Khả năng” bảo mật nghĩa là những tài nguyên gì bạn đang sở hữu, bạn có thể xác định chức năng người dùng được phép truy cập. Người khác sẽ không thể truy xuất dữ liệu (đọc, viết), nếu chủ sở hữu không cấp quyền cho họ.

Với Solidity của Ethereum, bạn sẽ không bao giờ có thể ngăn cản được con người hay máy tính có thể đọc được tất cả các nội dung của giao dịch. Chính vì vậy, Cadence là ngôn ngữ lập trình hướng Tài nguyên đầu tiên được thiết kế đặc biệt để quản lý quyền sở hữu các tài sản kỹ thuật số có giá trị, như nghệ thuật, đồ sưu tầm hoặc tiền mã hóa trên blockchain.

Tính thân thiện

Kết hợp với quyền kiểm soát truy cập dựa trên khả năng, cấu pháp công thái học rõ ràng, dễ đọc, giúp các developers có thể học nhanh hơn, dễ kiểm tra (audit) và hiệu quả hơn bất kỳ ngôn ngữ thay thế nào hiện tại. Khi một thứ gì đó được gắn nhãn là “Tài nguyên”, mỗi trường lập trình được thông báo rằng cấu trúc dữ liêu này là một thứ hữu hình. Tất cả mã tương tác với cấu trúc dữ liệu này phải tuân theo một loạt các quy tắc sẽ duy trì giá trị của cấu trúc dữ liệu nào đó.

Solidity vs Cadence
Solidity vs Cadence

Cadence được viết nhằm phục vụ dưới góc độ của người tiêu dùng, được xây dựng với khả năng mở rộng trên nền tảng nghiên cứu khoa học vững chắc. Ngôn ngữ đã được ứng dụng thực tế ở quy mô khổng lồ với tư cách là trụ cột của NBA Top Shot, một trong những ứng dụng blockchain phát triển nhanh nhất với hơn triệu khách hàng.

Cộng đồng

Mặc dù Ethereum hiện có số lượng nhà phát triển lớn nhất, nhưng những ứng dụng thực tế được viết bởi Cadence hiện có hàng nghìn người dùng tương tác mỗi ngày với số lượng ngày càng tăng như NFT Marketplace, Game hoặc sàn giao dịch. Những lợi ích này thu hút các nhà phát triển mới hàng ngày, cho phép họ trải nghiệm về khả năng bảo mật, năng suất và dễ hiểu của ngôn ngữ Cadence.

Việc các ông lớn khác trong ngành như Diem (Move) bắt đầu tận dụng sức mạnh của tài nguyên cho thấy những ngôn ngữ lập trình hợp đồng thông minh thế hệ mới có thể mở đầu kỷ nguyên của các ngôn ngữ hướng tài nguyên. Do đó, Cadence là ngôn ngữ hướng tài nguyên đầu tiên sẵn sàng cho sử dụng trên blockchain ngày nay.

So sánh chi tiết Cadence với Solidity sẽ có trong những phần sau!

Chi tiết về ngôn ngữ Cadence