Trang chủ Kiến Thức Công Nghệ Tìm hiểu kiểu dữ liệu (Unsigned) Integer trong Solidity
Công Nghệ

Tìm hiểu kiểu dữ liệu (Unsigned) Integer trong Solidity

Chia sẻ
Chia sẻ

Hello mọi người, trong bài viết này, mình sẽ giới thiệu một kiểu dữ liệu cơ bản khi lập trình Smart Contract trên Ethereum Blockchain đó chính là (Unsigned) Integer. Nếu mọi người chưa biết gì về ngôn ngữ Solidity thì hãy tham khảo thêm video bên dưới nha:

1. Định nghĩa:

Trong trường hợp bạn không biết chính xác kiểu dữ liệu Integer là gì, mình sẽ cùng nhau tìm hiểu định nghĩa về kiểu dữ liệu này trên trang Wikipedia nhé!

An integer […] is colloquially defined as a number that can be written without a fractional component. For example, 21, 4, 0, and −2048 are integers, while 9.75, 5+1/2, and √2 are not.

(Đọc thêm tại https://en.wikipedia.org/wiki/Integer)

Nói một cách ngắn gọn dễ hiểu, kiểu dữ liệu Integer là tập hợp các số nguyên (bao gồm nguyên dương và nguyên âm), không chứa số thập phân. Còn khi ta thêm keyword Unsigned nghĩa là mình đang loại trừ các số nguyên âm đi. Từ đó mình dễ dàng nhận biết được có 2 kiểu dữ liệu Integer chính bao gồm:

  • int – signed integers (bao gồm số dương và số âm).
  • uint – unsigned integers (chỉ có số dương mà thôi).

Ví dụ, nếu như mình khai báo 1 biến có kiểu dữ liệu là uint8 thì khoảng giá trị cho phép của biến đó sẽ chạy từ 0 -> 255. Tuy nhiên, nếu 1 biến có kiểu dữ liệu là int8 sẽ có khoảng giá trị từ -128 -> 127. Lúc này bạn sẽ thắc mắc tại sao những biến này lại có khoảng giá trị trên đúng không? Đó là bởi vì giá trị được tính là 2^8 -1 = 255.

Ngoài ra, trong Solidity còn có thêm 1 kiểu khác đó chính là (u)int256. Đây là kiểu dữ liệu được sử dụng thông thường nhất, bạn sẽ bắt gặp rất nhiều trong hầu hết các Smart contract dưới dạng viết tắt là u(int).

2. Code demo:

Mình có làm 1 clip cho phần demo này, nếu bạn thích xem và theo dõi trực tiếp thì hãy xem video bên dưới nha! Còn không thì bạn cứ tiếp tục đọc tiếp bài viết phía dưới

Tiếp theo là mình sẽ khởi tạo 1 Smart Contract đơn giản để tìm hiểu cách khai báo và sử dụng Integer trong việc lập trình Smart Contract nhé! Đầu tiên là bạn bật Remix Editor Online lên và tạo 1 file Solidity tên là IntegerExample.sol

Bạn có thể đọc thêm về hướng dẫn sử dụng Remix và lập trình Smart contract đầu tiên ở bài viết bên dưới nhé!

Sử dụng Remix để viết Smart Contract đầu tiên

Trong bài viết này, em sẽ giới thiệu với mọi người Remix – một IDE nổi tiếng hỗ trợ chúng ta trong quá trình tìm hiểu, làm việc với ngôn ngữ lập trình Solidity và viết thử , deploy Smart Contract đầu tiên.

200Lab BlogTùng Đường

Trước tiên, chúng ta sẽ khai báo version Solidity mà mình sử dụng đó chính là 0.8.1 và anh chị lưu ý mình nhớ khai báo dòng đầu tiên vào mỗi file Solidity của chúng ta nhé! Nếu không có dòng đó thì chương trình chúng ta sẽ warning và không thể compile được Smart contract.

Solidity

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.1;

contract IntegerExample {

}

Mình sẽ khai báo 1 biến public có kiểu dữ liệu uint tên là myUint để tương tác. Trước khi thực hiện các bước tiếp theo mình xin lưu ý với anh chị hai điều sau:

  • Tất cả các biến trong Solidity nếu như anh chị khởi tạo mà không gán giá trị cho nó thì tự động nó sẽ được gán một giá trị mặc định.
  • Một biến bất kì khi được khai báo public sẽ tự động khởi tạo 1 getter function để bên ngoài có thể xem được giá trị hiện tại của biến đó.

Sau đó, mình sẽ thực hiện việc Compile & Deploy contract IntegerExample của chúng ta. Sau khi deploy thành công, mình sẽ thấy trên Remix sẽ hiển thị chúng ta một cái khung UI để chúng ta có thể dễ dàng “tương tác” với Smart contract.

Như mình có lưu ý với mọi người ở trên nếu như biến được khai báo public sẽ tự động khởi tạo getter function tương ứng với biến đó. Hình trên cho chúng ta thấy Remix đã tự động khởi tạo 1 cái button tương ứng với getter function cho biến myUint  và khi nhấn thử vào nút myUint trên giao diện chúng ta sẽ thấy được giá trị hiện tại cũng là giá trị mặc định của biến là 0.

Tiếp theo, mình sẽ viết thêm 1 function có tên là setNewValue để cập nhật lại giá trị mới cho biến myUint như sau:

Solidity

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.8.1;

contract IntegerExample {
    uint public myUint;

    function setNewValue(uint newValue) public {
        myUint = newValue;
    }
}

Sau đó, mình sẽ xoá contract cũ đi và deploy lại 1 contract mới. Anh chị xoá contract hiện tại bằng cách nhấn vào icon Trash như hình dưới:

Contract mới sau khi được deploy sẽ có thêm một nút button setNewValue và một ô Text input cạnh bên tương ứng với tham số đầu vào newValue của function setNewValue để mình có thể nhập vào giá trị mới.

Mình sẽ nhập vào số 69 và nhấn nút setNewValue rồi sau đó nhấn vào nút myUint để xem giá trị hiện tại của biến myUint.

Lúc này, biến myUint đã được cập nhật lại giá trị mới là 69 rồi đó  😆.

Tổng kết

Và đó là toàn bộ phần tìm hiểu cơ bản về kiểu dữ liệu Integer, còn rất nhiều bài viết hay về Blockchain trên Blog 200Lab Education anh chị nhớ xem thêm các bài viết khác nữa nhé!

Chia sẻ

Để lại bình luận

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Bài viết cùng chuyên mục
Tối ưu ứng dụng với cấu trúc dữ liệu cơ bản và bitwise
Công Nghệ

Tối ưu ứng dụng với cấu trúc dữ liệu cơ bản và bitwise

Trong bài viết này, 200Lab sẽ chia sẻ những trường hợp dễ...

Công Nghệ

So sánh Flutter vs React Native: Framework nào đáng học năm 2021

Điểm chung của Flutter, React Native đều là Cross-platform Mobile, build native...

HTTP/2 là gì? So sánh HTTP/2 và HTTP/1
Công Nghệ

HTTP/2 là gì? So sánh HTTP/2 và HTTP/1

Từ khi Internet ra đời, sự phát triển về các giao thức...

Upload File từ Frontend đến Backend mà rất nhiều bạn vẫn đang làm sai!!
Công Nghệ

Upload File từ Frontend đến Backend mà rất nhiều bạn vẫn đang làm sai!!

1. Client encode file (base64) rồi gởi về backend 200Lab đã từng...

Công Nghệ

React Native – Hướng dẫn làm việc với Polyline và Animated-Polyline trên Map

Vẽ đường đi trên bản đồ là một nghiệp vụ vô cùng...

Công Nghệ

Hybrid App và Native App: Những khác biệt to lớn

Bất cứ khi nào một công ty quyết định làm ứng dụng...

Web/System Architecture 101 – Kiến trúc web/hệ thống cơ bản cho người mới
Công Nghệ

Web/System Architecture 101 – Kiến trúc web/hệ thống cơ bản cho người mới

Đây là một kiến trúc cơ bản mà bất kì một người...

Công Nghệ

Tư duy kiến trúc thông qua các trò chơi mà rất nhiều bạn không biết

Tư duy kiến trúc là gì? Tư duy kiến trúc có thể...