TIN NHANH

Menu

Technology

3/Technology/col-right
Kẻ Độc Hành

Most Popular

[Solidity P1] Solidity là gì? Giới thiệu về ngôn ngữ lập trình Ethereum và Smart contract


 



  


Solidity là gì?

Solidity là ngôn ngữ lập trình hướng contract. Các tài liệu chính về lập trình bằng solidity có thể tìm thấy tại Solidity documentation.


Solidity là ngôn ngữ lập trình có cú pháp, cấu trúc tập lệnh giống Javascript và C, được sử dụng để xây dựng contract - thành phần cơ bản để tạo block của ứng dụng Ethereum chạy trên EVM (Ethereum Virtual Machine).

Một tập tin mã nguồn Solidity  được lưu dưới tên có kết thúc với “.sol” nên bắt đầu cùng với “version pragma” để định nghĩa phiên bản trình biên dịch Solidity được sử dụng.

Do lập trình Solidity sẽ xoay quanh Contract nên trong bài viết này chúng ta sẽ cùng đi tìm hiểu về khái niệm này nhé.

1. Contracts

  • Trong Solidity mọi thứ đều xoanh quanh contract, cũng tương tự như các ngôn ngữ hướng đối tượng (đối tượng cụ thể ở đây là contact). Về cơ bản, contract tương tự class trong OOP với các thuộc tính (state variables) và các phương thức (methods). Ngoài khái niệm Contract, Solidity cũng cung cấp 2 đối tượng khác tương tự Contract bao gồm:

    • interface: Đặc tả cấu trúc của hợp đồng, bao gồm các hàm mà không có thân hàm. Một chức năng khác của interface cũng được sử dụng rất nhiều là để giao tiếp với các Contracts khác trong mạng lưới Blockchain. Phần này mình sẽ trình bày trong các bài viết tiếp theo.
    • library: Deploy 1 lần và được sử dụng bởi các hợp đồng khác thông qua DELEGATECALL.  
  • Mã của Solidity được đóng gói trong các hợp đồng (Contract). Một hợp đồng là khối xây dựng cơ bản của các ứng dụng Ethereum – tất cả các biến và chức năng thuộc về một hợp đồng, và đây là điểm khởi đầu của tất cả các dự án của bạn.
  • Contract trong solidity cho phép đa kế thừa. Việc này dễ đến nhiều vấn đề, trong số đó có Diamond Problem. Solidity sử dụng thuật toán C3 Linearzation tương tự python để xử lí đa kế thừa. Do vậy thứ tự khai báo kế thừa sau từ khóa is là rất quan trọng.
    Ví dụ: Xét đoạn code dưới.
    
    contract X {}  
    contract A is X {}  
    contract C is A, X {} 
    

    Contract C sẽ kế thừa theo thứ tự X, A tức là X sẽ override A. Tuy nhiên theo khai báo contract A thì A lại override X. Điều này sinh ra lỗi biên dịch.

2. Version Pragma

  • Tất cả các mã nguồn đều bắt đầu với một phiên bản “version pragma“ - một tuyên bố của phiên bản của trình biên dịch Solidity. Đây là để ngăn chặn các vấn đề với các phiên bản trình biên dịch tương lai có khả năng giới thiệu những thay đổi có thể phá vỡ mã của bạn.
  • Ví dụ: pragma solidity ^0.4.22;

3. Ví dụ về một Smart Contract cơ bản

(File: HelloWorld.sol)


pragma solidity ^0.5.0;
 
contract HelloWorld {
 string defaultName;
 constructor() public{
    defaultName = 'World';
 }
 function getMessage() public view returns(string memory){
    return concat("Hello " , defaultName);
 }
}
Đối với Solidity, chúng ta có thể biên dịch và thực thi mã online tại: Remix - Ethereum IDE

Trong bài viết này chúng ta đã nắm được những khái niệm về ngôn ngữ Solidity cũng như Contracts trong hợp đồng thông minh. Trong bài viết tiếp theo chúng ta sẽ cùng tìm hiểu về những thành phần rất quan trọng khác là: Biến và Kiểu dữ liệu trong Solidity.

Chúc các bạn có một ngày thật ý nghĩa!                                     

Share This:

Kẻ Độc Hành

Một kẻ độc hành thích ngao du đó đây, kết bạn hảo hữu bốn phương, cùng ngồi uống rượu và kể chuyện đời cho nhau nghe.

No Comment to " [Solidity P1] Solidity là gì? Giới thiệu về ngôn ngữ lập trình Ethereum và Smart contract "

  • To add an Emoticons Show Icons
  • To add code Use [pre]code here[/pre]
  • To add an Image Use [img]IMAGE-URL-HERE[/img]
  • To add Youtube video just paste a video link like http://www.youtube.com/watch?v=0x_gnfpL3RM