[Solidity] Giới thiệu về Smart Contracts
Một ví dụ đơn giản về Smart Contract Hãy bắt đầu với một ví dụ đơn giản nhất về smart contract. Chúng ta không cần phải hiểu hết mọi thứ, chúng ta sẽ tìm hiểu chúng sau. pragma solidity ^0.4.0; contract SimpleStorage { uint storedData; function set(uint x) public { ...
Một ví dụ đơn giản về Smart Contract
- Hãy bắt đầu với một ví dụ đơn giản nhất về smart contract. Chúng ta không cần phải hiểu hết mọi thứ, chúng ta sẽ tìm hiểu chúng sau.
pragma solidity ^0.4.0; contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; } function get() public view returns (uint) { return storedData; } }
-
Dòng đầu tiên pragma solidity ^0.4.0; cho chúng ta biết rằng code này được viết trên Solidity version 0.4.0 và mọi phiên bản mới (ví dụ Solidity version 0.5.0) sẽ không làm phá vỡ chương trình. Điều này đảm bảo rằng, hợp đồng (smart contract) sẽ không có bất cứ hoạt động nào kỳ quặc ở các phiên bản cao hơn. Keyword pragma để khai báo version đang được sử dụng của solidity.
-
Một hợp đồng (contract) là những dòng bao gồm tập hợp các code (là các chức năng của hợp đồng) và dữ liệu (là các trạng thái của hợp đồng) nằm ở cụ thể một địa chỉ trên Ethereum blockchain. Dòng uint storedData; khai báo một biến trạng thái được gọi là storedData của kiểu uint(unsigned integer of 256 bit). Chúng ta có thể hiểu đơn giản là nó là một record trong database thông thường, có thể query được, thay đổi được và được quản lý bởi database. Trong trường hợp của Ethereum, đây luôn luôn là những hợp đồng sở hữu. Và trong trường hợp này, các function set và get được sử dụng để sửa dữ liệu, hay nhận giá trị từ các biến.
-
Để truy cập đến các biến trạng thái (state variable) cụ thể trong trường hợp này là storedData, chúng ta không cần thiết phải sử dụng this. như các ngôn ngữ thông thường khác. Như chúng ta đã thấy, thì return storedData; là được. Nhưng câu hỏi đặt ra là nếu sử dụng this.storedData; có được hay không Chúng ta sẽ trả lời câu hỏi này khi hiểu rõ hơn về Solidity.
-
Hợp đồng (contract) mà được ví dụ ở trên không có làm gì nhiều. Nó đơng giản chỉ là đồng ý bất cứ ai đó lưu trữ một số (unsigned integer 256bit) có thể được truy cập bởi bất cứ ai mà không có cơ chế nào ngăn chặn việc thay đổi giá trị của nó. Như vậy mọi người đều có thể sử dụng phương thức set để thay đổi giá trị con số của bạn. Tuy nhiên giá trị của chúng ta đã lưu vẫn có thể tìm thấy chính xác trên history của block-chain. Về sau, chúng ta sẽ tìm hiểu cách ngăn chặn bất cứ ai truy cập và thay đổi giá trị của bạn ngoại trừ chính bản thân bạn.