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 Visiter
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];
}
Summary for English Visiter
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];
}
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