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, 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, các 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 cuộc phỏng vấn lần này:
Q1, trước tiên, bạn có thể tóm tắt 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?
Ngôn ngữ lập trình 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ì ý nghĩa toàn bộ của ngôn ngữ tự nhiên là có sự phong phú và khả năng diễn đạt.
Trong ngôn ngữ lập trình, điều quan trọng nhất là có một ngữ nghĩa được định nghĩa chính xác. Khi bạn viết một chương trình, bạn biết rõ 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ì.
Tôi cho 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ì vậy, câu chuyện của Move rất giống với điều này. Khi tôi tạo ra nó, không phải để tạo ra một ngôn ngữ mới. Các nhà phát triển khi chọn ngôn ngữ sẽ hỏi: "Ngôn ngữ này có phù hợp với nhiệm vụ tôi muốn hoàn thành không?" Nhưng tôi nghĩ có thể quan trọng hơn 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ó nguồn tài liệu 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 ngưỡng để tạo ra một ngôn ngữ mới phải rất cao.
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ữ tổng quát thông thường, như WASM hoặc JVM, và áp dụng nó cho Libra? Hay chúng tôi nên tạo ra thứ của riêng mình?
Quyết định tạo ra thứ của riêng chúng tôi 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ì lập trình viên cố gắng làm, cũng như những ngôn ngữ nào giúp họ và những ngôn ngữ nào 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ể thấy rõ từ hồ sơ an ninh kém của Solidity, nhưng điều 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ờ.
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 việc. Chúng định nghĩa 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. Đồ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ó. Tất cả đều xoay quanh tài sản, bạn muốn những tài sản này có các thuộc tính giống như tài sản vật lý.
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 mong muốn có một ngôn ngữ có thể cung cấp cho bạn một 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 bắt buộc lập trình viên phải phát minh lại nó. Bạn mong muốn có được các đả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ó, và chúng tôi hy vọng sẽ 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ể an toàn và hiệu quả viết mã mà không 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ố dưới đâ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 đã làm một số điều một cách có ý thức, vì Libra muốn có những đ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à thiết lập một số quy tắc khi tài khoản được tạo, chẳng hạn như chủ tài khoản phải thực hiện xác minh danh tính KYC. Hoặc có thể cần phải trả phí để tạo tài khoản, hoặc chỉ một nhóm nhỏ người có quyền tạo tài khoản mới được phép tạo tài khoản. Bởi 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 huống lại hoàn toàn ngược lại. Bạn không muốn tuân thủ ở cấp độ cơ sở, đó là khái niệm về 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 lúc đó trong Libra, chúng tôi không xem xét cách đưa trọng tâm của 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, trong đó bạn nhập các số và giá trị boolean không phải là tài sản, và sau đó trong Move, bạn sử dụng các 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. Hóa ra, phần lớn mã mà bạn chạy đều 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, được rồi, 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 những điều có ý nghĩa. Sau đó, vào cuối quá trình này, bạn có thể nói: "Được rồi, trả những tài sản này về tài khoản này, trả chúng về 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 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ẽ giúp lập trình viên thực hiện điều này, từ góc độ của lập trình viên, họ chỉ cần chuẩn bị tài sản cần thiết, 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 trong việc trích xuất chúng. Còn trong Sui, khi bước vào phần Move của giao dịch, tài sản đã được Sui runtime 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 xem một giao dịch có thể chạy song song với một giao dịch khác hay không, mở rộng Sui theo chiều ngang và thực hiện một số hoạt động 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 lập trình được. Đây là một chủ đề có phần kỹ thuật, tôi rất vui lòng 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ề các khối giao dịch có thể lập trình và chức năng của chúng 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 của bạn để thanh toán. Nhưng nếu bạn quyết định còn muốn ăn một chiếc hamburger, thì bạn đi đến quầy hamburger, lại thanh toán lần nữa. Tôi không phải là một 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 thì giống như một bữa tiệc buffet, mỗi giao dịch không chỉ là một điều. Khi bạn đã thanh toán phí buffet, bạn có thể làm nhiều điều 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ủa việc đúc một NFT. Bạn cũng có thể thực hiện 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 chia sẻ với bạn bè. Điều 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 phải biết cách lưu trữ ví đa chữ ký hoặc Mario, nó cũng không cần phải biết tủ cúp của bạn hoặc cách thực hiện của nó.
Các khối giao dịch lập trình được tạo thành từ các giao dịch 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 việc 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 việc nó sẽ được chuyển đến đâu. Trong các blockchain khác, tính kết hợp mạnh hơn, vì vậy trò chơi phải tích hợp với ví đa chữ ký và tủ thưởng, hoặc chúng phải thực hiện một số giao diện chung và có tính kết hợp mạnh hơn. Sui làm cho cái gọi là sự kết hợp tạm thời trở nên 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 lợi ích của khối giao dịch có thể lập trình đối với người dùng là gì?
Lợi ích của việc sử dụng các khối giao dịch có thể lập trình đối với người dùng bao gồm phí gas thấp hơn, vì bạn có thể gói tất cả các thao tác vào một giao dịch, thay vì thực hiện các giao dịch riêng lẻ. Ngoài ra, 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, sau đó nó sẽ hoàn thành tất cả các thao tác 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 việc khác nhau và muốn việc thứ ba chỉ thành công nếu hai thao tác đầu tiên thành công, nếu những thao tác này phải là các giao dịch độc lập, bạn sẽ không thể thực hiện được điều đó. Nhưng nếu bạn có thể gói 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 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 này rất quan trọng. Bạn có câu chuyện nào để chia sẻ về việ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 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 dự án DeFi rất thú vị trên Sui. Khi họ trình bày kiến trúc hệ thống, họ đã nói về cách các thành phần khác nhau làm việc cùng nhau. Họ nói rằng nếu họ viết dự án này bằng Solidity, có thể mất tám tháng, nhưng với Sui Move chỉ mất hai tháng, và họ rất tự tin về tính an toàn của nó. Cách thức hoạt động của ngôn ngữ này rất phù hợp với ý tưởng về danh mục dự án trong đầu họ. Còn trong lĩnh vực Solidity, mối liên hệ này không trực tiếp như vậy.
Đây chỉ là một ví dụ, nhưng chúng tôi đã nghe rất nhiều trường hợp tương tự, mọi người nói rằng họ phát triển nhanh hơn trên ngôn ngữ này và tự tin hơn khi hoàn thành. Nghe những điều này khiến tôi cảm thấy vui mừng. Nhưng ở một mức độ nào đó, điều này không gây ngạc nhiên, chúng tôi đã nghiên cứu Solidity và hiểu các vấn đề của nó. Chúng tôi đã thiết kế rõ ràng các giải pháp xoay quanh cách làm cho nó an toàn hơn và nhanh hơn. Chúng tôi xem xét những gì các nhà phát triển sử dụng ngôn ngữ này đang cố gắng làm và cách thiết kế ngôn ngữ phù hợp với nhu cầu của họ, thay vì phục vụ cho các tình huống hiện có. Ngôn ngữ này được thiết kế để giải quyết các vấn đề mà mọi người gặp phải, vì vậy khi họ chuyển sang sử dụng nó, họ thực sự sẽ rất trân trọng ngôn ngữ này.
Họ nói lợi thế tiên phong rất quan trọng, nhưng tôi nghĩ trong trường hợp này, lợi thế đi sau lại quan trọng hơn.
Đúng vậy, chính là như vậy.
 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.
15 thích
Phần thưởng
15
5
Đăng lại
Chia sẻ
Bình luận
0/400
DegenWhisperer
· 16giờ trước
Ông Lão Hắc lần này nói đúng đấy.
Xem bản gốcTrả lời0
BearMarketBro
· 08-18 06:41
新đồ ngốc还是别来了
Xem bản gốcTrả lời0
OnchainDetective
· 08-17 04:31
move tuyệt vời sui theo To da moon
Xem bản gốcTrả lời0
GateUser-44a00d6c
· 08-17 04:22
Đã theo dõi Move tuyệt vời từ lâu
Xem bản gốcTrả lời0
AirdropHuntress
· 08-17 04:22
Tốc độ lặp mã của Sui đang gây nghi ngờ, dữ liệu cho thấy hoạt động của Mạng chính không đạt tiêu chuẩn.
Người sáng lập ngôn ngữ Move giải thích: Tại sao Sui Move phù hợp hơn để 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, 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, các 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 cuộc phỏng vấn lần này:
Q1, trước tiên, bạn có thể tóm tắt 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?
Ngôn ngữ lập trình 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ì ý nghĩa toàn bộ của ngôn ngữ tự nhiên là có sự phong phú và khả năng diễn đạt.
Trong ngôn ngữ lập trình, điều quan trọng nhất là có một ngữ nghĩa được định nghĩa chính xác. Khi bạn viết một chương trình, bạn biết rõ 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ì.
Tôi cho 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ì vậy, câu chuyện của Move rất giống với điều này. Khi tôi tạo ra nó, không phải để tạo ra một ngôn ngữ mới. Các nhà phát triển khi chọn ngôn ngữ sẽ hỏi: "Ngôn ngữ này có phù hợp với nhiệm vụ tôi muốn hoàn thành không?" Nhưng tôi nghĩ có thể quan trọng hơn 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ó nguồn tài liệu 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 ngưỡng để tạo ra một ngôn ngữ mới phải rất cao.
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ữ tổng quát thông thường, như WASM hoặc JVM, và áp dụng nó cho Libra? Hay chúng tôi nên tạo ra thứ của riêng mình?
Quyết định tạo ra thứ của riêng chúng tôi 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ì lập trình viên cố gắng làm, cũng như những ngôn ngữ nào giúp họ và những ngôn ngữ nào 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ể thấy rõ từ hồ sơ an ninh kém của Solidity, nhưng điều 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ờ.
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 việc. Chúng định nghĩa 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. Đồ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ó. Tất cả đều xoay quanh tài sản, bạn muốn những tài sản này có các thuộc tính giống như tài sản vật lý.
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 mong muốn có một ngôn ngữ có thể cung cấp cho bạn một 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 bắt buộc lập trình viên phải phát minh lại nó. Bạn mong muốn có được các đả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ó, và chúng tôi hy vọng sẽ 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ể an toàn và hiệu quả viết mã mà không 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ố dưới đâ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 đã làm một số điều một cách có ý thức, vì Libra muốn có những đ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à thiết lập một số quy tắc khi tài khoản được tạo, chẳng hạn như chủ tài khoản phải thực hiện xác minh danh tính KYC. Hoặc có thể cần phải trả phí để tạo tài khoản, hoặc chỉ một nhóm nhỏ người có quyền tạo tài khoản mới được phép tạo tài khoản. Bởi 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 huống lại hoàn toàn ngược lại. Bạn không muốn tuân thủ ở cấp độ cơ sở, đó là khái niệm về 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 lúc đó trong Libra, chúng tôi không xem xét cách đưa trọng tâm của 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, trong đó bạn nhập các số và giá trị boolean không phải là tài sản, và sau đó trong Move, bạn sử dụng các 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. Hóa ra, phần lớn mã mà bạn chạy đều 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, được rồi, 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 những điều có ý nghĩa. Sau đó, vào cuối quá trình này, bạn có thể nói: "Được rồi, trả những tài sản này về tài khoản này, trả chúng về 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 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ẽ giúp lập trình viên thực hiện điều này, từ góc độ của lập trình viên, họ chỉ cần chuẩn bị tài sản cần thiết, 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 trong việc trích xuất chúng. Còn trong Sui, khi bước vào phần Move của giao dịch, tài sản đã được Sui runtime 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 xem một giao dịch có thể chạy song song với một giao dịch khác hay không, mở rộng Sui theo chiều ngang và thực hiện một số hoạt động 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 lập trình được. Đây là một chủ đề có phần kỹ thuật, tôi rất vui lòng 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ề các khối giao dịch có thể lập trình và chức năng của chúng 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 của bạn để thanh toán. Nhưng nếu bạn quyết định còn muốn ăn một chiếc hamburger, thì bạn đi đến quầy hamburger, lại thanh toán lần nữa. Tôi không phải là một 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 thì giống như một bữa tiệc buffet, mỗi giao dịch không chỉ là một điều. Khi bạn đã thanh toán phí buffet, bạn có thể làm nhiều điều 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ủa việc đúc một NFT. Bạn cũng có thể thực hiện 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 chia sẻ với bạn bè. Điều 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 phải biết cách lưu trữ ví đa chữ ký hoặc Mario, nó cũng không cần phải biết tủ cúp của bạn hoặc cách thực hiện của nó.
Các khối giao dịch lập trình được tạo thành từ các giao dịch 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 việc 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 việc nó sẽ được chuyển đến đâu. Trong các blockchain khác, tính kết hợp mạnh hơn, vì vậy trò chơi phải tích hợp với ví đa chữ ký và tủ thưởng, hoặc chúng phải thực hiện một số giao diện chung và có tính kết hợp mạnh hơn. Sui làm cho cái gọi là sự kết hợp tạm thời trở nên 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 lợi ích của khối giao dịch có thể lập trình đối với người dùng là gì?
Lợi ích của việc sử dụng các khối giao dịch có thể lập trình đối với người dùng bao gồm phí gas thấp hơn, vì bạn có thể gói tất cả các thao tác vào một giao dịch, thay vì thực hiện các giao dịch riêng lẻ. Ngoài ra, 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, sau đó nó sẽ hoàn thành tất cả các thao tác 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 việc khác nhau và muốn việc thứ ba chỉ thành công nếu hai thao tác đầu tiên thành công, nếu những thao tác này phải là các giao dịch độc lập, bạn sẽ không thể thực hiện được điều đó. Nhưng nếu bạn có thể gói 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 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 này rất quan trọng. Bạn có câu chuyện nào để chia sẻ về việ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 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 dự án DeFi rất thú vị trên Sui. Khi họ trình bày kiến trúc hệ thống, họ đã nói về cách các thành phần khác nhau làm việc cùng nhau. Họ nói rằng nếu họ viết dự án này bằng Solidity, có thể mất tám tháng, nhưng với Sui Move chỉ mất hai tháng, và họ rất tự tin về tính an toàn của nó. Cách thức hoạt động của ngôn ngữ này rất phù hợp với ý tưởng về danh mục dự án trong đầu họ. Còn trong lĩnh vực Solidity, mối liên hệ này không trực tiếp như vậy.
Đây chỉ là một ví dụ, nhưng chúng tôi đã nghe rất nhiều trường hợp tương tự, mọi người nói rằng họ phát triển nhanh hơn trên ngôn ngữ này và tự tin hơn khi hoàn thành. Nghe những điều này khiến tôi cảm thấy vui mừng. Nhưng ở một mức độ nào đó, điều này không gây ngạc nhiên, chúng tôi đã nghiên cứu Solidity và hiểu các vấn đề của nó. Chúng tôi đã thiết kế rõ ràng các giải pháp xoay quanh cách làm cho nó an toàn hơn và nhanh hơn. Chúng tôi xem xét những gì các nhà phát triển sử dụng ngôn ngữ này đang cố gắng làm và cách thiết kế ngôn ngữ phù hợp với nhu cầu của họ, thay vì phục vụ cho các tình huống hiện có. Ngôn ngữ này được thiết kế để giải quyết các vấn đề mà mọi người gặp phải, vì vậy khi họ chuyển sang sử dụng nó, họ thực sự sẽ rất trân trọng ngôn ngữ này.
Họ nói lợi thế tiên phong rất quan trọng, nhưng tôi nghĩ trong trường hợp này, lợi thế đi sau lại quan trọng hơn.
Đúng vậy, chính là như vậy.
![Phỏng vấn cha đẻ ngôn ngữ Move: Tại sao ngôn ngữ hợp đồng thông minh Sui Move phù hợp để xây dựng sản phẩm Web3?](