About Me
En

/

Vi
Học blockchain P2

Học blockchain P2

Học blockchain P2

🧠 GIAI ĐOẠN 2: LÀM QUEN VỚI ETHEREUM VÀ SMART CONTRACT


1. Ethereum & Smart Contract là gì?

  • Ethereum: Blockchain phi tập trung cho phép chạy smart contract (hợp đồng thông minh).

  • Smart Contract: Chương trình chạy trên blockchain, tự động thực hiện khi các điều kiện được thỏa mãn.

  • Lợi ích:

    • Không cần bên trung gian.
    • Tự động và minh bạch.
    • Chạy mãi mãi (miễn phí lưu trữ không tồn tại).

📌 Ví dụ: Hợp đồng thông minh để nhận tiền góp vốn từ nhiều người, khi đủ số ETH sẽ tự động gửi cho chủ dự án.


2. Solidity – Ngôn ngữ viết Smart Contract phổ biến nhất

Solidity có cú pháp giống JavaScript + TypeScript, nhưng chạy trên EVM. File Solidity có đuôi .sol, ví dụ MyContract.sol.


a) Biến (Variables)

Trong Solidity có 3 loại biến chính:

pragma solidity ^0.8.0; contract Example { uint public number = 10; // state variable string private name = "Vu"; // private state variable function setNumber(uint _num) public { number = _num; // thay đổi biến } }
  • State variable: lưu trên blockchain (tốn gas khi thay đổi).
  • Local variable: chỉ tồn tại khi hàm chạy.
  • Global variable: cung cấp thông tin về blockchain (msg.sender, block.timestamp…).

b) Struct

Cho phép nhóm nhiều thuộc tính thành một kiểu dữ liệu mới:

struct Student { string name; uint age; } Student public student; function setStudent(string memory _name, uint _age) public { student = Student(_name, _age); }

c) Mapping

Kiểu dữ liệu lưu trữ key-value, giống object trong JS:

mapping(address => uint) public balances; function deposit(uint amount) public { balances[msg.sender] += amount; }

📌 Ưu: Tìm kiếm O(1). 📌 Nhược: Không iterate qua toàn bộ mapping được.


3. Function Visibility & Modifier

Function visibility:

  • public: gọi được từ mọi nơi.
  • private: chỉ gọi được bên trong contract.
  • internal: chỉ contract hiện tại và contract kế thừa gọi được.
  • external: chỉ gọi từ bên ngoài (không từ bên trong contract).

Modifier:

Modifier là cách viết logic kiểm tra/tái sử dụng cho nhiều hàm.

modifier onlyOwner() { require(msg.sender == owner, "Not owner"); _; } function withdraw() public onlyOwner { // chỉ owner mới gọi được }

4. Events, Constructor, Inheritance

Event:

Gửi thông tin ra ngoài blockchain, giúp DApp bắt sự kiện.

event Transfer(address indexed from, address indexed to, uint value); function send(address to, uint value) public { emit Transfer(msg.sender, to, value); }

Constructor:

Hàm chạy một lần khi deploy contract.

constructor() { owner = msg.sender; }

Inheritance:

Kế thừa từ contract khác.

contract A { function foo() public {} } contract B is A { function bar() public {} }

5. Deploy & Test với Remix IDE

  1. Vào https://remix.ethereum.org.
  2. Tạo file .sol.
  3. Viết code smart contract.
  4. Chọn compiler và compile.
  5. Deploy trên Remix VM (test) hoặc Injected Web3 (MetaMask).
  6. Test bằng cách gọi các hàm trong UI của Remix.

6. 📚 Tài liệu học thêm

Learn blockchain part2

Learn blockchain part2

🧠 GIAI ĐOẠN 2: LÀM QUEN VỚI ETHEREUM VÀ SMART CONTRACT


1. Ethereum & Smart Contract là gì?

  • Ethereum: Blockchain phi tập trung cho phép chạy smart contract (hợp đồng thông minh).

  • Smart Contract: Chương trình chạy trên blockchain, tự động thực hiện khi các điều kiện được thỏa mãn.

  • Lợi ích:

    • Không cần bên trung gian.
    • Tự động và minh bạch.
    • Chạy mãi mãi (miễn phí lưu trữ không tồn tại).

📌 Ví dụ: Hợp đồng thông minh để nhận tiền góp vốn từ nhiều người, khi đủ số ETH sẽ tự động gửi cho chủ dự án.


2. Solidity – Ngôn ngữ viết Smart Contract phổ biến nhất

Solidity có cú pháp giống JavaScript + TypeScript, nhưng chạy trên EVM. File Solidity có đuôi .sol, ví dụ MyContract.sol.


a) Biến (Variables)

Trong Solidity có 3 loại biến chính:

pragma solidity ^0.8.0; contract Example { uint public number = 10; // state variable string private name = "Vu"; // private state variable function setNumber(uint _num) public { number = _num; // thay đổi biến } }
  • State variable: lưu trên blockchain (tốn gas khi thay đổi).
  • Local variable: chỉ tồn tại khi hàm chạy.
  • Global variable: cung cấp thông tin về blockchain (msg.sender, block.timestamp…).

b) Struct

Cho phép nhóm nhiều thuộc tính thành một kiểu dữ liệu mới:

struct Student { string name; uint age; } Student public student; function setStudent(string memory _name, uint _age) public { student = Student(_name, _age); }

c) Mapping

Kiểu dữ liệu lưu trữ key-value, giống object trong JS:

mapping(address => uint) public balances; function deposit(uint amount) public { balances[msg.sender] += amount; }

📌 Ưu: Tìm kiếm O(1). 📌 Nhược: Không iterate qua toàn bộ mapping được.


3. Function Visibility & Modifier

Function visibility:

  • public: gọi được từ mọi nơi.
  • private: chỉ gọi được bên trong contract.
  • internal: chỉ contract hiện tại và contract kế thừa gọi được.
  • external: chỉ gọi từ bên ngoài (không từ bên trong contract).

Modifier:

Modifier là cách viết logic kiểm tra/tái sử dụng cho nhiều hàm.

modifier onlyOwner() { require(msg.sender == owner, "Not owner"); _; } function withdraw() public onlyOwner { // chỉ owner mới gọi được }

4. Events, Constructor, Inheritance

Event:

Gửi thông tin ra ngoài blockchain, giúp DApp bắt sự kiện.

event Transfer(address indexed from, address indexed to, uint value); function send(address to, uint value) public { emit Transfer(msg.sender, to, value); }

Constructor:

Hàm chạy một lần khi deploy contract.

constructor() { owner = msg.sender; }

Inheritance:

Kế thừa từ contract khác.

contract A { function foo() public {} } contract B is A { function bar() public {} }

5. Deploy & Test với Remix IDE

  1. Vào https://remix.ethereum.org.
  2. Tạo file .sol.
  3. Viết code smart contract.
  4. Chọn compiler và compile.
  5. Deploy trên Remix VM (test) hoặc Injected Web3 (MetaMask).
  6. Test bằng cách gọi các hàm trong UI của Remix.

6. 📚 Tài liệu học thêm

Tag

Buy Me A Coffee
    Blockchain