Tôi nên học Python hay Solidity?

Khi ngành công nghiệp web3 phát triển, các nhà phát triển có nhiều lựa chọn hơn về ngôn ngữ lập trình web3. Mỗi ngôn ngữ được thiết kế với những lợi ích và sự đánh đổi khác nhau để viết hợp đồng thông minh. Các ngôn ngữ có thể khác nhau thông qua việc hỗ trợ các chuỗi khối cụ thể hoặc có các đặc điểm khác nhau như tốc độ, khả năng đọc hoặc bảo mật

Được phát triển làm ngôn ngữ hợp đồng thông minh cho chuỗi khối Ethereum, Solidity là ngôn ngữ lập trình mạnh mẽ được sử dụng để tạo các ứng dụng phi tập trung [dApp] cho hệ sinh thái nhà phát triển lớn nhất trong ngành công nghiệp chuỗi khối

Trong bài viết này, chúng tôi sẽ giới thiệu về Solidity thông qua lịch sử, ảnh hưởng ngôn ngữ và cách sử dụng của nó. Cuối cùng, chúng tôi sẽ cung cấp một số tài nguyên dành cho nhà phát triển tốt nhất để bạn có thể tiếp tục tìm hiểu về phát triển Solidity

Được đề xuất vào năm 2014, Solidity là ngôn ngữ lập trình cấp cao, hướng đối tượng để triển khai các hợp đồng thông minh chạy trên Máy ảo Ethereum [EVM]. Solidity được lấy cảm hứng từ các ngôn ngữ lập trình nổi tiếng như C++ và JavaScript. Là một nhà phát triển web3, làm việc với Solidity có lợi cho việc học phát triển web3

Phần này giới thiệu cho bạn về lịch sử của Solidity, thiết lập những điểm tương đồng giữa Solidity và các ngôn ngữ lập trình khác, đồng thời giải thích các trường hợp sử dụng chính của Solidity

Ai đã tạo ra Solidity?

Vào năm 2014, CTO của Ethereum, Gavin Wood, đã đưa ra Solidity như một ngôn ngữ đáp ứng nhu cầu của Ethereum về một ngôn ngữ lập trình hoàn chỉnh Turing để viết hợp đồng thông minh

Người sáng lập Ethereum, Vitalik Buterin, đã đề xuất Ethereum như một giao thức mở rộng chức năng chuỗi khối do Bitcoin tiên phong, với chức năng bổ sung của hợp đồng thông minh. Theo tầm nhìn của anh ấy, Ethereum sẽ có thể chạy một mạng lưới các hợp đồng thông minh phức tạp, là những đoạn mã thực thi có điều kiện chạy trên một mạng máy tính toàn cầu, phân tán. Hợp đồng thông minh cho phép các nhà phát triển tạo tiền điện tử mới, xây dựng ứng dụng DeFi, v.v.

Nhóm dự án Solidity do Christian Reitwiessner lãnh đạo và họ đã thành công trong việc tạo ra một ngôn ngữ lập trình hướng đối tượng, hoàn chỉnh Turing để thực hiện các hợp đồng thông minh. Là ngôn ngữ cấp cao có nghĩa là các nhà phát triển tạo hợp đồng thông minh mà không cần phải thao tác với thông tin cấp hệ thống như bộ nhớ hoặc mã byte để thực hiện tính toán

Tính đầy đủ của Turing đề cập đến khả năng của một hệ thống thao tác dữ liệu, trong trường hợp này là ngôn ngữ lập trình, để mô phỏng hành vi của Máy Turing. Về mặt lý thuyết, Solidity cần thiết để có thể thực hiện bất kỳ tính toán nào mà các nhà phát triển có thể yêu cầu.

Solidity dựa trên ngôn ngữ lập trình nào?

Solidity dựa trên và chịu ảnh hưởng của nhiều ngôn ngữ lập trình hiện có trong quá trình phát triển, bao gồm C++, Python và JavaScript.  

Tính tương đồng với C++

Solidity sử dụng cú pháp giống hệt với C++ để khai báo biến và vòng lặp. Ngoài ra, có hỗ trợ nạp chồng hàm kiểu C++, cần thiết khi hai hàm có cùng tên nhưng khác nhau về tham số mà chúng chấp nhận

Cuối cùng, Solidity cho phép chuyển đổi cả kiểu ẩn và kiểu rõ ràng. Điều này có nghĩa là các loại biến có thể được tạo bằng mã nhà phát triển rõ ràng hoặc sẽ được tự động chuyển đổi nếu tính toán yêu cầu

Tính tương đồng với JavaScript

Solidity từng bị ảnh hưởng nặng nề bởi JavaScript. Giờ đây, điểm tương đồng chính có thể nhìn thấy là ở việc Solidity sử dụng từ khóa 'hàm' để xác định các hàm.  

Đối với các nhà phát triển quen thuộc với một số ảnh hưởng lớn nhất của Solidity, việc tìm hiểu về Solidity sẽ khá đơn giản. Ngoài ra, Solidity được gõ tĩnh, cho phép sử dụng các thư viện cũng như tạo các kiểu phức tạp

Tính tương đồng với Python

Ảnh hưởng của Solidity từ Python ít rõ ràng hơn về mặt cú pháp, tuy nhiên, giống như Python, Solidity sử dụng tuyến tính hóa C3, đa kế thừa và duy trì từ khóa 'siêu'.  

Sử dụng cú pháp Pythonic, Vyper tương tự như Solidity và được thiết kế có chủ đích để tăng cường bảo mật cho các hợp đồng thông minh được sử dụng trên các chuỗi khối tương thích với EVM.  

Solidity được sử dụng như thế nào?

Cụ thể với bản chất là ngôn ngữ mã hóa chuỗi khối, Solidity được tạo ra để được biên dịch rõ ràng trên Máy ảo Ethereum [EVM]. Do đó, Solidity có thể viết các hợp đồng thông minh tương thích với Ethereum an toàn, cho bất kỳ chuỗi khối tương thích với EVM nào.  

Khả năng tương thích rộng rãi này, kết hợp với tính dễ hiểu và chức năng linh hoạt của nó, đã khiến Solidity trở thành ngôn ngữ phát triển chuỗi khối được sử dụng rộng rãi nhất trong ngành.  

Solidity hoạt động như thế nào?

Các nhà phát triển Solidity viết các hợp đồng thông minh, là các chương trình chạy trên EVM. Tương tự như các lớp trong các ngôn ngữ khác, hợp đồng thông minh có thể có nhiều chức năng, trạng thái bên trong và khai báo công khai

Các hợp đồng Solidity được biên dịch thành mã byte để EVM đọc được. Sau khi biên dịch, các hợp đồng Solidity sẽ trông không khác gì các hợp đồng được viết bằng các ngôn ngữ hợp đồng thông minh EVM khác như Vyper hoặc Huff

Giống như bất kỳ công cụ dành cho nhà phát triển nào khác, Solidity trải qua các bản cập nhật phiên bản thường xuyên. Lưu ý rằng vì các hợp đồng thông minh được triển khai một lần và không thể đảo ngược sau khi tham gia chuỗi khối, các ràng buộc về phiên bản Solidity sẽ chỉ quan trọng tại thời điểm tạo

Mặc dù về mặt lý thuyết, các nhà phát triển Solidity có thể viết hợp đồng thông minh Ethereum trực tiếp bằng mã byte, nhưng các ngôn ngữ cấp cao như Solidity cho phép các kỹ sư viết hợp đồng hiệu quả hơn mà không cần bất kỳ thao tác cấp thấp nào.

Solidity tương tác với EVM như thế nào?

Sau đây là tóm tắt cách thức hoạt động của Solidity để thay đổi trạng thái của EVM

  1. Viết hợp đồng thông minh trong Solidity
  2. Hợp đồng thông minh Solidity được biên dịch thành mã byte
  3. Bytecode được chuyển đổi thành opcodes EVM
  4. Mã lệnh EVM thay đổi trạng thái của EVM

EVM là một máy trạng thái ảo và lưu giữ hồ sơ cho “máy tính toàn cầu” của Ethereum. ” Nói một cách đơn giản nhất, EVM duy trì trạng thái toàn cầu của mạng, bao gồm địa chỉ, số dư tài khoản và nắm giữ mã thông báo.  

Hợp đồng thông minh Solidity được viết để thay đổi trạng thái toàn cầu của EVM. Trạng thái chung của EVM được thay đổi bởi các hành động như đúc mã thông báo, gửi và nhận mã thông báo hoặc giải phóng tài sản.  

Một loạt các hoạt động EVM, được mã hóa thành opcodes EVM, nhắc những thay đổi này về trạng thái chung. Mỗi opcode EVM được thiết kế để nhắc EVM thực hiện một loại thay đổi trạng thái cụ thể, chẳng hạn như gửi mã thông báo từ địa chỉ này sang địa chỉ khác, đúc mã thông báo hoặc thậm chí hủy hợp đồng thông minh.  

Ở bước cuối cùng, EVM dịch mã byte của hợp đồng thông minh thành mã opcode EVM, mã này thực hiện các thay đổi cần thiết đối với chuỗi khối.  

Mỗi opcode đi kèm với một khoản phí gas nhất định, được tính bằng ETH để giảm thiểu rủi ro khi một tác nhân độc hại làm tắc nghẽn mạng với số lượng yêu cầu quá lớn. Do đó, tổng chi phí gas của một giao dịch được tính bằng giá trên mỗi đơn vị gas nhân với tổng chi phí gas của các opcode của giao dịch

Chuỗi khối tương thích với EVM nào hỗ trợ Solidity?

Solidity có thể viết hợp đồng thông minh cho bất kỳ chuỗi khối nào tương thích với EVM, bao gồm các L2 như Polygon, Arbitrum và Optimism. Vì Solidity linh hoạt và dễ sử dụng nên nó được hỗ trợ bởi một số lượng lớn các chuỗi khối khác. Dưới đây là một số dự án lớn nhất hỗ trợ Solidity

1. chấm bi

Polkadot là một chuỗi tập trung vào việc tích hợp nhiều chuỗi khối [i. e. parachains] thành một chuỗi bằng cách sử dụng chuỗi chuyển tiếp. Mục tiêu của Polkadot là để các parachains có thể tương tác với nhau để cho phép khả năng mở rộng và tăng băng thông. Một ví dụ về parachain Polkadot là Astar, được hỗ trợ bởi Alchemy

2. tuyết lở

Avalanche là đối thủ cạnh tranh của Ethereum hỗ trợ phát triển Solidity. Kiến trúc Avalanche dựa trên mạng gồm ba chuỗi khối. một để phát hành và giao dịch tài sản [X Chain], một để điều phối các trình xác thực của mạng [P-Chain] và một cho phép tạo hợp đồng thông minh [C Chain].  

3. Chuỗi BNB [Trước đây là Chuỗi thông minh Binance]

Binance Smart Chain bắt đầu dưới dạng mã thông báo ERC-20 trên Ethereum và để hỗ trợ hệ sinh thái dApps đang phát triển của họ, mạng Binance Smart Chain [BSC] đã được tạo. BSC và các token của nó sử dụng Solidity trong các hợp đồng thông minh của họ. Ngày nay, Chuỗi thông minh Binance được gọi là Chuỗi BNB

Solidity phổ biến như thế nào?

Solidity là ngôn ngữ lập trình hợp đồng thông minh phổ biến nhất trong ngành công nghiệp blockchain. Solidity là ngôn ngữ mẹ đẻ để tạo các hợp đồng thông minh tương thích với EVM. Ngay cả bên ngoài EVM, vẫn có những dự án có hỗ trợ tích hợp cho Máy ảo của Ethereum, chẳng hạn như Solana EVM của Neon Labs.  

Vì ngành công nghiệp blockchain vẫn đang phát triển nên có vẻ như Solidity ít được sử dụng hơn so với tất cả các ngôn ngữ lập trình khác. Tuy nhiên, trong ngành, Solidity là ngôn ngữ hợp đồng thông minh được áp dụng rộng rãi nhất. Solidity Có các trường hợp sử dụng mạnh mẽ trên nhiều chuỗi và trong hệ sinh thái web3 dApp đang phát triển nhanh nhất

Theo báo cáo của The Next Web’s Hard Fork, Solidity xuất hiện trong số câu hỏi được gắn thẻ blockchain nhiều gấp đôi so với đối thủ cạnh tranh gần thứ hai của nó. JavaScript chỉ có 4. 8% âm lượng so với Solidity's 9. 5%.  

Solidity được sử dụng như thế nào trên Ethereum?

Xem một số ví dụ về việc sử dụng Solidity trong Ethereum sẽ giúp bạn hiểu rõ về sự đơn giản của mã Solidity trong việc tạo hợp đồng thông minh linh hoạt. Các ví dụ mã được tìm thấy trong tài liệu chính thức của Solidity là phần giới thiệu tuyệt vời về ngôn ngữ này.  

Hợp đồng thông minh

Sau đây là một ví dụ mã đơn giản từ tài liệu Solidity tạo ra một loại tiền tệ đơn giản trên Ethereum

Mã này tạo ra một loại tiền tệ

Lưu ý các khai báo hàm, biến private và public cho hợp đồng. Các chức năng cho phép hợp đồng thực hiện các hành động khác nhau trên chuỗi, trong trường hợp này là gửi mã thông báo từ địa chỉ này sang địa chỉ khác và đúc mã thông báo.  

Các biến công khai có thể truy cập từ bên ngoài hợp đồng và tự động tạo các hàm getter để truy xuất giá trị của các biến đó. Từ khóa sự kiện cho phép các ứng dụng khách lắng nghe những thay đổi do hợp đồng gây ra

Trong ví dụ này, một khách hàng sẽ thấy sự kiện đã gửi, sự kiện này cho người nghe biết địa chỉ của thông điệp. người gửi đã gửi một lượng mã thông báo đến người nhận địa chỉ

Tiêu chuẩn Solidity ERC là gì?

Cơ sở cho thiết kế của các hợp đồng thông minh Solidity là các tiêu chuẩn ERC [Ethereum Request for Comment], đây là các nguyên tắc được thực hiện để cải thiện và tiêu chuẩn hóa việc triển khai các loại mã thông báo Ethereum khác nhau

Các tiêu chuẩn ERC được đề xuất bởi EIP [Đề xuất cải tiến Ethereum]. Sau khi các tiêu chuẩn ERC được phê duyệt và hoàn thiện, chúng sẽ trở thành tiêu chuẩn để viết hợp đồng Solidity. Điều này cho phép một mẫu giao diện Solidity phổ biến để xây dựng hợp đồng thông minh. Khi các nhà phát triển Solidity xây dựng mã thông báo tuân thủ các tiêu chuẩn ERC hiện có, họ biết cách mã thông báo của họ sẽ hoạt động phù hợp trên chuỗi khối.  

Một số tiêu chuẩn ERC được sử dụng rộng rãi nhất là

  • ERC-20 - tiêu chuẩn mã thông báo có thể thay thế
  • ERC-721 - tiêu chuẩn mã thông báo không thể thay thế
  • ERC-1155 - tiêu chuẩn mã thông báo bán có thể thay thế
  • ERC-4626 - tiêu chuẩn kho tiền chịu năng suất

Cách học lập trình Solidity

Vậy bạn đã biết Solidity là gì, nhưng bạn bắt đầu học Solidity như thế nào? .  

Một trong những cách tốt nhất để tìm hiểu về Solidity là tham gia chương trình đào tạo về Solidity kéo dài 7 tuần của Đại học Alchemy. Chương trình này ban đầu được tạo bởi ChainShot, một nhóm kỹ sư web3 hàng đầu và được Alchemy thiết kế lại sau khi họ mua lại ChainShot vào tháng 8 năm 2022

Bootcamp dành cho nhà phát triển Ethereum ban đầu là một khóa học cấp chứng chỉ trị giá 3.000 đô la và hiện MIỄN PHÍ. Đảm bảo vị trí của bạn xếp hàng để tham gia Đại học Alchemy

Tài nguyên vững chắc

Phần này cung cấp cho bạn một số tài nguyên trực tuyến tốt nhất để học phát triển Solidity

  1. ‍Tài liệu chính thức về Solidity - sử dụng tài liệu làm tài nguyên chính để học phát triển Solidity
  2. Solidity by Example - tổng hợp các ví dụ về Solidity, từ chương trình ‘Xin chào thế giới’ đến các ứng dụng ví và DeFi
  3. Hợp đồng sạch - hướng dẫn cách viết hợp đồng thông minh an toàn và có thể dự đoán được với các ví dụ về mã Solidity. ‍
  4. Ethernaut của OpenZeppelin - một trò chơi chiến tranh dựa trên hợp đồng thông minh trong đó mỗi cấp độ bao gồm hack một hợp đồng thông minh

Bắt đầu xây dựng với sự vững chắc

Bài viết này đã giới thiệu cho bạn về Solidity và cung cấp cho bạn các tài nguyên để bắt đầu học phát triển Solidity. Solidity là một ngôn ngữ cực kỳ linh hoạt và mạnh mẽ để phát triển các ứng dụng phi tập trung trên các chuỗi khối tương thích với Ethereum và EVM

Khi bạn cảm thấy thoải mái với kiến ​​thức của mình, đừng ngần ngại triển khai một ứng dụng trên mạng thử nghiệm Goerli, tham dự cuộc thi hackathon web3 và bắt đầu cố gắng xây dựng một công ty khởi nghiệp web3.  

Python có đủ để học Solidity không?

Solidity là bước tiếp theo hoàn hảo dành cho Nhà phát triển có kinh nghiệm về Python hoặc Javascript, nhưng nó cũng tương đối dễ học [khi làm theo .

Có đáng để học Solidity 2022 không?

Solidity, ngôn ngữ lập trình để viết hợp đồng thông minh trên các chuỗi khối tương thích với Ethereum và EVM, là một trong những kỹ năng quan trọng nhất đối với các nhà phát triển chuỗi khối . Khi hệ sinh thái xung quanh Ethereum và các nền tảng hợp đồng thông minh khác phát triển, nhu cầu về các nhà phát triển Solidity cũng tăng theo.

Tôi nên học blockchain hay Python?

Python đơn giản và tối giản . Nó làm cho công việc xây dựng các khối với thông tin liên quan và liên kết chúng lại với nhau dễ dàng hơn nhiều. Python is recommended for blockchain because you can easily perform many tasks with a single command. It makes the job of building blocks with the relevant information and linking them together much easier to do.

Solidity vẫn còn nhu cầu?

Nó cũng có thể được sử dụng cho các chuỗi khối khác; . Trong khi Các nhà phát triển Solidity vẫn còn ít hơn nhu cầu , thì việc làm cho các nhà phát triển Solidity đang tăng lên. Phần lớn những công việc này đều được trả lương cao.

Chủ Đề