Cha đẻ của ngôn ngữ Move phân tích những lợi thế của Sui Move: Công cụ xây dựng sản phẩm Web3

Phỏng vấn cha đẻ của ngôn ngữ Move: Tại sao ngôn ngữ hợp đồng thông minh Sui Move lại phù hợp để xây dựng sản phẩm Web3?

Gần đây, chúng tôi đã có cuộc trò chuyện với Giám đốc Công nghệ của Mysten Labs, Sam Blackshear, người sáng tạo ra ngôn ngữ lập trình Move, để thảo luận về lý do tại sao ông phát triển ngôn ngữ lập trình hợp đồng thông minh Sui Move, khả năng mở rộng của Sui và lợi ích của công nghệ phi tập trung đối với các nhà xây dựng.

Dưới đây là nội dung của buổi phỏng vấn này:

Q1, Trước tiên, bạn có thể tóm tắt ngắn gọn về ngôn ngữ lập trình là gì, những phẩm chất mà các nhà phát triển quan tâm nhất khi chọn ngôn ngữ lập trình là gì, và điều gì đã thúc đẩy bạn phát triển ngôn ngữ lập trình của riêng mình không?

Ngôn ngữ lập trình chỉ là một công cụ để tương tác thân thiện, an toàn, hiệu quả và rõ ràng với máy tính, điều này đặc biệt quan trọng đối với máy tính. Chúng ta không thể giao tiếp với máy tính bằng ngôn ngữ tự nhiên, vì toàn bộ ý nghĩa của ngôn ngữ tự nhiên là sự phong phú và khả năng biểu đạt. Khi bạn dùng một giọng điệu hơi khác hoặc chọn cách diễn đạt từ ngữ hơi khác, câu hoặc đoạn văn của bạn sẽ có ý nghĩa hoàn toàn khác.

Và trong ngôn ngữ lập trình, điều quan trọng nhất là phải có ý nghĩa được định nghĩa chính xác. Khi bạn viết một chương trình, bạn rõ ràng biết nó sẽ làm gì. Nếu bạn thực hiện một điều chỉnh nhỏ, bạn biết sự thay đổi đó sẽ tạo ra kết quả gì. Điều này cần phải được duy trì ở nhiều cấp độ, ví dụ như bạn có thể viết mã bằng một ngôn ngữ nguồn, nó có một ý nghĩa, sau đó được chuyển đổi thành các dạng biểu diễn khác, thì nó cũng nên có cùng một ý nghĩa, cho đến khi đến mô-đun xử lý của máy.

Tôi nghĩ rằng, khác với ngôn ngữ tự nhiên, bản chất của ngôn ngữ lập trình là nhắm đến một lĩnh vực cụ thể hoặc một nhiệm vụ cụ thể. Nếu không, chỉ cần một ngôn ngữ lập trình là có thể hoàn thành tất cả các nhiệm vụ. Nhưng lý do tồn tại nhiều ngôn ngữ lập trình là vì bạn không thể xuất sắc trong tất cả các lĩnh vực. Chúng đang nỗ lực để nhắm đến các lĩnh vực vấn đề cụ thể và tập trung vào việc giải quyết những vấn đề đó. Ví dụ, nếu bạn nhìn vào ngôn ngữ lập trình Rust mà chúng tôi sử dụng để viết blockchain Sui và hầu hết các hệ thống khác tại Mysten, nó tập trung vào việc viết mã nhanh và hiệu suất cao, đồng thời đảm bảo tính bảo mật. Nó cho phép bạn tiếp cận các chi tiết cấp thấp như bộ nhớ, cấu trúc luồng hoặc đồng thời, nhưng không khiến bạn mắc lỗi như những ngôn ngữ trước đó (như C hoặc C++).

Do đó, câu chuyện của Move rất giống như vậy. Khi tôi tạo ra nó, không phải để tạo ra một ngôn ngữ mới. Bạn đã đề cập trước đó rằng các nhà phát triển tìm kiếm điều gì trong một ngôn ngữ. Họ sẽ hỏi, "Ngôn ngữ này có phù hợp với nhiệm vụ mà tôi muốn hoàn thành không?" Nhưng tôi nghĩ điều quan trọng hơn có thể là, "Ngôn ngữ này có một cộng đồng lớn không? Có nhiều cơ sở dữ liệu có sẵn không? Có nhiều lập trình viên đang sử dụng không? Có nhiều tài nguyên giáo dục tốt không?" Tất cả những điều này đều rất quan trọng, vì vậy rào cản để tạo ra một ngôn ngữ mới phải rất cao, ngay cả khi ngôn ngữ đó tốt hơn, nhưng nếu nó không có những yếu tố này, thì lợi thế của nó trở nên vô nghĩa. Việc xây dựng một cộng đồng lớn và năng động từ con số không là rất khó khăn.

Q2, bạn có thể chia sẻ thêm về tình hình phát triển của Move không?

Move bắt nguồn từ dự án Libra của Facebook. Nhiệm vụ của tôi lúc đó không phải là tạo ra một ngôn ngữ mới, mà là "Libra cần có hợp đồng thông minh, vì vậy hãy tìm ra chúng tôi nên làm gì." Tôi đã xem xét nhiều thứ khác nhau. Chúng tôi có thể sử dụng Solidity trong EVM không? Chúng tôi có nên sử dụng ngôn ngữ chung thông thường, chẳng hạn như WASM hoặc JVM, và áp dụng nó cho Libra? Hay chúng tôi nên tạo ra cái gì đó riêng của mình?

Quyết định tạo ra điều của riêng mình dựa trên nghiên cứu về các hợp đồng thông minh hiện có, hiểu những gì các lập trình viên đang cố gắng làm, cũng như những ngôn ngữ nào đã hỗ trợ họ và những điểm khiến họ thất vọng. Kết luận của tôi là, trong nhiều trường hợp, các ngôn ngữ hợp đồng thông minh hiện có thực sự đã khiến họ thất vọng.

Điều này có thể rõ ràng từ hồ sơ an toàn kém của Solidity, nhưng cơ bản hơn là những hợp đồng thông minh này không phải là loại chương trình truyền thống. Solidity không phải là ngôn ngữ được xây dựng cho những gì mọi người đang làm bây giờ. Tôi không muốn chỉ trích nó, vì nó là ngôn ngữ hợp đồng thông minh đầu tiên, nó vẫn chưa biết mọi người muốn làm gì với nó. Một khi bạn thấy mọi người cố gắng làm gì với nó, tôi nghĩ rõ ràng là bạn cần một bộ trừu tượng và công cụ lập trình khác, mà ngôn ngữ Solidity không cung cấp.

Vì vậy, những hợp đồng thông minh này rất đơn giản, chúng cơ bản thực hiện hai điều. Chúng xác định loại tài sản, bao gồm khi nào có thể chuyển nhượng tài sản, bạn có thể làm gì với chúng, ai có thể đọc chúng, ai có thể viết vào chúng và các quy tắc của chúng. Đồng thời kiểm tra chính sách kiểm soát truy cập, xác định ai sở hữu tài sản đó, ai được phép sử dụng nó, ai được phép thao tác với nó. Mọi thứ đều xoay quanh tài sản, bạn muốn những tài sản này có thuộc tính giống như tài sản vật lý. Nếu tôi giao một thứ gì đó cho bạn, thì bạn nên sở hữu nó, và tôi không còn sở hữu nó nữa.

Trong hợp đồng thông minh có khái niệm về quyền sở hữu và chuyển nhượng quyền sở hữu, nhưng trên máy tính, mọi thứ chỉ là số và byte, và có thể sao chép tự do. Hơn nữa, bạn biết rằng những khái niệm này không tồn tại trong thế giới thực. Do đó, bạn muốn có một ngôn ngữ có thể cung cấp cho bạn sự trừu tượng tốt về quyền sở hữu và tính đồng nhất. Giống như trong thế giới thực, nhưng không cần phải buộc lập trình viên phải phát minh lại nó. Bạn muốn có được những đảm bảo an toàn cơ bản.

Đây là vai trò của Move và lý do tại sao chúng tôi cuối cùng đã tạo ra ngôn ngữ mới này. Những nhiệm vụ này là cơ bản cho lập trình hợp đồng thông minh. Chúng rất khó để tái tạo trong các ngôn ngữ khác, bao gồm cả các ngôn ngữ hợp đồng thông minh hiện có, chúng tôi muốn thiết kế toàn bộ ngôn ngữ xung quanh việc cung cấp những chức năng cơ bản này, để các lập trình viên có thể viết mã một cách an toàn và hiệu quả mà không cần phải phát minh lại bánh xe mỗi khi họ muốn viết một số mã.

Q3, Sui đã sử dụng một biến thể của Move, được gọi là Sui Move. Điều gì đã thúc đẩy những thay đổi này? Những đặc điểm nào của Sui Move rất phù hợp để xây dựng sản phẩm trong Web3?

Một số yếu tố sau đây đã thúc đẩy những thay đổi này, trong đó một yếu tố là mục tiêu ban đầu của dự án Libra là xây dựng một mạng lưới thanh toán tuân thủ quy định. Do đó, chúng tôi đã cố gắng thiết kế Move như một ngôn ngữ chung. Nhưng chúng tôi cũng đã có ý thức làm một số điều, vì Libra muốn có các điều kiện hạn chế. Một trong những điều quan trọng là họ không muốn mọi người có thể gửi một số tài sản đến bất kỳ đâu. Họ muốn mọi người tạo một tài khoản một cách rõ ràng và đặt ra một số quy tắc khi tạo tài khoản, chẳng hạn như chủ sở hữu tài khoản phải thực hiện xác minh KYC. Hoặc có thể cần phải trả phí để tạo tài khoản, hoặc chỉ một phần nhỏ người có quyền tạo tài khoản mới có thể tạo tài khoản. Vì toàn bộ mục đích là Libra muốn thực hiện thanh toán tuân thủ và hợp đồng thông minh tuân thủ, nên có những hạn chế này. Nhưng trong lĩnh vực Web3 chung hơn, tình hình lại hoàn toàn trái ngược. Bạn không muốn tuân thủ trên nền tảng cơ sở, đó là khái niệm của hợp đồng thông minh. Bạn muốn mọi thứ tự do nhất có thể, hoàn toàn có thể gửi một cái gì đó đến bất kỳ địa chỉ nào. Sau đó, bạn không nên thực hiện việc tạo tài khoản một cách rõ ràng, vì điều này sẽ chặn các trường hợp sử dụng khác nhau. Đây là một yếu tố quan trọng.

Một yếu tố khác là, mặc dù chúng tôi tập trung vào tài sản trong Move, nhưng vào thời điểm đó trong Libra, chúng tôi không xem xét cách đưa sự chú ý vào tài sản vào chính giao dịch. Do đó, khi bạn đến cấp độ giao dịch, bạn vẫn chỉ có API này, nơi bạn nhập các số và giá trị boolean, v.v., không phải là tài sản, sau đó trong Move, bạn sử dụng những con số này để rút tài sản từ tài khoản và thực hiện các thao tác khác. Thực tế cho thấy, phần lớn mã mà bạn chạy là công việc sổ sách khó chịu này, bao gồm việc lấy cái này, lấy cái kia, lấy cái khác, tốt, tôi đã có tất cả các tài sản mà tôi muốn. Chúng ở đây, trong studio của tôi, bây giờ tôi có thể bắt đầu làm một số việc có ý nghĩa. Sau đó, ở cuối quá trình này, bạn có thể nói: "Được rồi, hãy đưa những tài sản này trở lại tài khoản này, đưa chúng trở lại tài khoản kia, tổ chức lại chúng."

Trong Sui, chúng tôi đã suy nghĩ kỹ lưỡng, nếu mỗi chương trình đều bắt đầu và kết thúc theo cách này, liệu chúng tôi có thể trừu tượng hóa nó không? Do đó, logic xử lý giao dịch sẽ hoàn thành điều này cho lập trình viên, từ góc độ của họ, họ chỉ cần chuẩn bị tài sản cần thiết và ngay lập tức bắt đầu công việc thú vị. Đây là mô hình dữ liệu hướng đối tượng tồn tại trong Sui. Trong Move gốc, chúng tôi có mô hình dữ liệu dựa trên tài khoản, tài sản được lưu trữ dưới tài khoản và lập trình viên phải rõ ràng trích xuất chúng. Còn trong Sui, khi chúng được đưa vào phần Move của giao dịch, tài sản đã được runtime của Sui lấy. Điều này thuận tiện hơn cho lập trình viên, vì họ không cần thực hiện tất cả những công việc ghi chép trước và sau đó, và đây cũng là vũ khí bí mật cho phép chúng tôi xác định liệu có thể chạy song song một giao dịch với giao dịch khác mà không thực sự thực thi hay không, mở rộng Sui theo chiều ngang và thực hiện một số thao tác khác hiệu quả hơn.

Chúng tôi cũng đã thực hiện một số công việc rất thú vị khác, chẳng hạn như sử dụng mô hình dữ liệu dựa trên đối tượng để tạo ra các khối giao dịch có thể lập trình. Đây là một chủ đề khá kỹ thuật và tôi rất vui được thảo luận sâu hơn. Nhưng hai yếu tố này là động lực chính dẫn đến sự khác biệt với Move gốc.

Q4, bạn có thể chia sẻ thêm thông tin về khối giao dịch có thể lập trình và các chức năng của nó không?

Tôi thích sử dụng một phép ẩn dụ để giải thích, các blockchain khác giống như khu ẩm thực của một trung tâm mua sắm. Bạn muốn ăn một phần kem, bạn đến quầy kem, lấy thẻ tín dụng ra thanh toán. Nhưng nếu bạn quyết định muốn ăn một cái bánh hamburger, thì bạn đi đến quầy hamburger và thanh toán một lần nữa. Tôi không phải là người tham ăn, nhưng nếu tôi muốn ăn tám món, tôi phải thực hiện tám giao dịch riêng biệt. Còn Sui giống như một bữa tiệc tự chọn, mỗi giao dịch không chỉ là một việc. Một khi bạn đã thanh toán phí bữa tiệc tự chọn, bạn có thể làm nhiều thứ mà không cần chi thêm. Bạn có thể ăn kem, bạn có thể ăn hamburger, bạn có thể trộn chúng lại với nhau.

Để làm cho khái niệm này cụ thể hơn, trong trường hợp đơn giản, nếu bạn muốn gửi 100 giao dịch để đúc 100 NFT, bạn có thể gửi một giao dịch đúc 100 NFT. Chi phí như vậy gần như tương đương với chi phí đúc một NFT. Bạn cũng có thể thực hiện đóng gói giao dịch không đồng nhất, chẳng hạn như giao dịch đầu tiên trong khối lấy một nhân vật Mario từ ví đa chữ ký của bạn, trong khi giao dịch thứ hai yêu cầu một Mario, sau đó cho phép bạn chơi trò chơi. Nếu bạn thắng trò chơi và nhận được cúp, có thể giao dịch thứ ba sẽ đặt cúp vào một tủ cúp được chia sẻ với bạn bè. Thú vị là các khối giao dịch có thể lập trình cho phép lập trình viên viết mã theo cách này, trò chơi không cần biết cách lưu trữ ví đa chữ ký hoặc Mario, nó cũng không cần biết tủ cúp của bạn hoặc cách thực hiện của nó.

Khối giao dịch có thể lập trình bao gồm các giao dịch với các đối tượng đầu vào và đầu ra. Nếu bạn cần một đối tượng đầu vào, bạn có thể nhận được đối tượng đó mà không cần quan tâm nó đến từ đâu, sau đó chuyển đầu ra của nó cho đối tượng cần nó, cũng không cần quan tâm nó sẽ được chuyển đến đâu. Trong các blockchain khác, khả năng liên kết mạnh hơn, do đó trò chơi phải được tích hợp với ví đa chữ ký và tủ cúp, hoặc chúng phải thực hiện một số giao diện chung và có khả năng liên kết mạnh hơn. Sui đã làm cho việc tạo thành tạm thời dễ dàng hơn. Giống như, nếu ống dẫn khớp nhau, chúng ta có thể hoàn thành trong một giao dịch.

Q5、Vậy khu vực giao dịch có thể lập trình mang lại lợi ích gì cho người dùng?

Đối với người dùng, lợi ích của việc giao dịch lập trình trong blockchain bao gồm phí gas thấp hơn, vì bạn có thể gói tất cả các hoạt động vào một giao dịch thay vì thực hiện từng giao dịch riêng lẻ. Hơn nữa, số lần cần phê duyệt cũng sẽ giảm. Nếu hệ thống bạn sử dụng yêu cầu phê duyệt giao dịch, bạn chỉ cần thực hiện một lần phê duyệt và sau đó nó sẽ hoàn thành tất cả các hoạt động một lần. Một lợi ích khác là tính nguyên tử, nếu bạn muốn thực hiện ba điều khác nhau và mong muốn rằng chỉ khi hai hoạt động đầu tiên thành công thì hoạt động thứ ba mới có thể thành công, nếu những hoạt động này phải là các giao dịch độc lập, thì bạn không thể đạt được điều đó. Nhưng nếu bạn có thể gói tất cả chúng vào một giao dịch, thì bạn có thể dễ dàng thực hiện điều đó.

Q6, Tôi đã nghe bạn và những người khác nói rằng việc phát triển trên Sui là một trải nghiệm tuyệt vời cho các lập trình viên, và điều đó rất quan trọng. Bạn có thể chia sẻ một vài giai thoại nào đó cho các lập trình viên Web3 có kinh nghiệm và mới bắt đầu sử dụng Sui Move không?

Đối với những nhà phát triển đến từ các ngôn ngữ lập trình Web3 khác, trải nghiệm phát triển của họ trên Move và Sui Move thực sự hiệu quả hơn và an toàn hơn. Tôi vừa tham gia một chương trình podcast về Bucket Protocol, họ đang xây dựng một phi

MOVE3.96%
SUI6.14%
Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • 2
  • Đăng lại
  • Chia sẻ
Bình luận
0/400
MoonlightGamervip
· 19giờ trước
move chính là tương lai
Xem bản gốcTrả lời0
LiquidationWatchervip
· 19giờ trước
ugh một ngày nữa lại một ngôn ngữ hợp đồng thông minh khác... chỉ cầu nguyện nó không bị khai thác như solana
Xem bản gốcTrả lời0
  • Ghim
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)