Solidity Path: Beginner to Intermediate Smart Contracts
課程鏈接:https://cryptozombies.io/zh/lesson/2
你成功晉升到第二課啦!
厲害了,我的人類! 你比我設想的更會編程! 第二課中,你會學到如何通過獵食其他生物,擴張你的僵尸軍團在這一課里,我們會使用到一些高級的Solidity概念,所以你一定要先完成第一課,
第3章: Msg.sender
現在有了一套映射來記錄僵尸的所有權了,我們可以修改_createZombie方法來運用它們,
為了做到這一點,我們要用到msg.sender,
msg.sender
在Solidity中,有一些全域變數可以被所有函式呼叫,其中一個就是msg.sender,它指的是當前呼叫者(或智能合約)的address,
注意:在Solidity中,功能執行始終需要從外部呼叫者開始,一個合約只會在區塊鏈上什么也不做,除非有人呼叫其中的函式,所以msg.sender總是存在的,
以下是使用msg.sender來更新mapping的例子:
mapping (address => uint) favoriteNumber;
function setMyNumber(uint _myNumber) public {
// 更新我們的 `favoriteNumber` 映射來將 `_myNumber`存盤在 `msg.sender`名下
favoriteNumber[msg.sender] = _myNumber;
// 存盤資料至映射的方法和將資料存盤在陣列相似
}
function whatIsMyNumber() public view returns (uint) {
// 拿到存盤在呼叫者地址名下的值
// 若呼叫者還沒呼叫 setMyNumber, 則值為 `0`
return favoriteNumber[msg.sender];
}
在這個小小的例子中,任何人都可以呼叫setMyNumber在我們的合約中存下一個uint并且與他們的地址相系結,然后,他們呼叫whatIsMyNumber就會回傳他們存盤的uint,
使用msg.sender很安全,因為它具有以太坊區塊鏈的安全保障 —— 除非竊取與以太坊地址相關聯的私鑰,否則是沒有辦法修改其他人的資料的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/261431.html
標籤:區塊鏈
上一篇:GDB簡介
