Chuyển đến nội dung chính

Tự học Solidity bài 15: Msg.sender trong ngôn ngữ lập trình Solidity

Msg.sender Solidity

Ngôn ngữ lập trình Solidity. Trong khoá học online miễn phí Tự học lập trình web3 - Tự học ngôn ngữ lập trình Solidity

Summary for English Visitermapping (address => uint) favoriteNumber;

function setMyNumber(uint _myNumber) public {
  // Update our `favoriteNumber` mapping to store `_myNumber` under `msg.sender`
  favoriteNumber[msg.sender] = _myNumber;
  // ^ The syntax for storing data in a mapping is just like with arrays
}

function whatIsMyNumber() public view returns (uint) {
  // Retrieve the value stored in the sender's address
  // Will be `0` if the sender hasn't called `setMyNumber` yet
  return favoriteNumber[msg.sender];
}

msg.sender

Trong Solidity, có một số biến toàn cục có sẵn cho tất cả các hàm. Một trong số đó là msg.sender, nó chính là địa chỉ của người (hoặc hợp đồng thông minh) đã gọi hàm hiện tại.

Lưu ý: Trong Solidity, việc thực thi hàm luôn cần bắt đầu với một trình gọi bên ngoài. Một hợp đồng sẽ chỉ ngồi trên blockchain không làm gì cả cho đến khi ai đó gọi đến nó (sử dụng một trong các chức năng của nó). Vì vậy, sẽ luôn có một msg.sender.

Dưới đây là một ví dụ về việc sử dụng msg.sender và cập nhật mapping:

mapping (address => uint) favoriteNumber;

function setMyNumber(uint _myNumber) public {
  // Update our `favoriteNumber` mapping to store `_myNumber` under `msg.sender`
  favoriteNumber[msg.sender] = _myNumber;
  // ^ The syntax for storing data in a mapping is just like with arrays
}

function whatIsMyNumber() public view returns (uint) {
  // Retrieve the value stored in the sender's address
  // Will be `0` if the sender hasn't called `setMyNumber` yet
  return favoriteNumber[msg.sender];
}
Trong ví dụ đơn giản này, bất kỳ ai cũng có thể gọi setMyNumber và lưu trữ một uint trong hợp đồng của chúng ta, uint sẽ được gắn với địa chỉ của họ. Sau đó, khi họ gọi whatIsMyNumber, họ sẽ được trả về uint mà họ đã lưu trữ.

Sử dụng msg.sender cung cấp cho bạn sự bảo mật của chuỗi khối Ethereum - cách duy nhất ai đó có thể sửa đổi dữ liệu của người khác là đánh cắp khóa riêng được liên kết với địa chỉ Ethereum của họ.


Thực hành luôn cho nhớ lâu bạn nhé

Nếu bạn chưa biết cách TẠO FILE, COMPILER và DEPLOY thì hãy xem lại trong bài giới thiệu nhé. Có hướng dẫn chi tiết ở đó.


BÀI TIẾP THEO: BÀI SỐ 16

HỌC TỪ ĐẦU: BÀI SỐ 1