Lập trình Blockchain: Ngôn ngữ Solidity cơ bản (P1)

RESEARCH CREW
20:29 24/07/2018

Lập trình Blockchain - Bài 03: Solidity cơ bản - Các kiểu dữ liệu

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).

Trong bài viết này chúng ta sẽ tập trung vào việc nêu các kiểu dữ liệu, cách định nghĩa và sử dụng phương thức trong Solidity để các bạn có kiến thức cơ bản trước khi bắt tay vào xây dựng ứng dụng Blockchain trên nền tảng Ethereum.

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.

 

1. Contracts

2. Version Pragma

3. Biến

4. Kiểu dữ liệu

4.1. Mảng:

pragma solidity ^0.4.22; contract DeveloperFactory {     // Let's create a Developer!     uint dnaDigits = 16;     uint ageDigits = 2;     struct Developer {         string name;         uint dna;         uint age;     }     Developer[] public developers; }
 

Biến struct cho phép chúng ta xác định nhiều cấu trúc data hơn. Ở đây Developer lấy một string được gọi là name, một uint tên dna và một uint tên age.

Solidity cũng có các array. Bạn có thể tạo các array cố định hoạt linh hoạt tùy ý. Mãng Developer của chúng ta là linh hoạt vì không xác định chiều dài. Vì thế chúng ta có thể add thêm các Developer vào vô số mà không có giới hạn.

Developer[5] public developers là một array cố định có thể chứa đến 5 Developer struct.

4.2. Địa chỉ - address

4.3. Mảng

Khi muốn lưu trữ tập các giá trị có kiểu dữ liệu giống nhau, bạn có thể sử dụng mảng - array. Solidity có 2 kiểu dữ liệu mảng đó là mảng với kích thước cố định và mảng động.

Mảng tĩnh A với kích thước cố định k được viết như sau:  A[k]

Mảng kích thước không cố định A được viết là: A[]

bytes và string là các mảng đặc biệt trong đó bytes tương tự byte[] có thể truy cập phần tử thông qua giá trị index còn string hiện tại không cho phép thực hiện điều này.

Nếu bạn muốn truy xuất giá trị dưới dạng mảng các bytes của một string có tên S, ta có thể chuyển đổi nó sang bytes như sau:

        bytes bytePresentation = bytes (S)

Nhưng bạn nên nhớ rằng giá trị sau khi chuyển đổi sẽ là mảng các byte chứ không phải mảng các ký tự của string ở trên.

4.4. Mapping

Mappings là một cách khác để lưu trữ dữ liệu có tổ chức trong Solidity.

Ví dụ:
// For a financial app, storing a uint that holds the user’s account balance:

mapping (address => uint) public accountBalance;

// Or could be used to store / lookup usernames based on userId

mapping (uint => string) userIdToName;

Mappings là một kho lưu trữ giá trị chính để lưu trữ và tìm kiếm dữ liệu. Trong ví dụ đầu tiên, khóa là address và giá trị là một uint, và trong ví dụ thứ hai, khoá là một uint và giá trị là string.

4.5. Structs

 

TIN LIÊN QUAN
Trong bối cảnh công nghệ Blockchain được nhiều chuyên gia trong lĩnh vực nghiên cứu học thuật và lập trình viên đầu tư thời gian và công sức để áp dụng  vào trong các ngữ cảnh ứng dụng thực tế khác nhau, Ethereum cùng với ngôn ngữ Solidity là một...
Lỗ hổng bảo mật trong Hợp đồng thông minh  Hợp đồng thông minh (Smart Contract) là một thiết kế đột phá, cho phép triển khai mọi giao dịch mà không cần bên thứ ba xác nhận. Thiết kế này là một ứng dụng rất hữu ích trên nền tảng Blockchain....
EOS là một nền tảng Blockchain để phát triển các ứng dụng phi tập trung (DApp), tương tự Ethereum. Nó giúp cho việc phát triển DApp dễ dàng hơn bằng cách cung cấp nhóm các dịch vụ, tính năng giống như hệ điều hành và phù hợp cho DApp. Ý...