1.17 msg.sender跟owner最大的差異?

更新於 2024/06/03閱讀時間約 3 分鐘

msg.sender

  • 定義msg.sender 是 Solidity 中的一個全局變量,表示當前調用合約函數的外部地址。這個地址可以是普通用戶賬戶(EOA)或另一個智能合約。
  • 用途:用於識別誰在調用當前函數。在每次函數調用期間,msg.sender 都會動態地更新為當前調用該函數的賬戶地址。
  • 典型場景:驗證函數調用者的身份和權限,記錄操作人等。

owner

  • 定義owner 通常是智能合約中的一個狀態變量,用於存儲合約所有者的地址。這個地址通常在合約部署時由部署者設置,或者在合約運行期間通過特定函數更新。
  • 用途:用於實現合約的權限控制,確保只有特定地址(通常是合約的部署者或管理者)可以執行某些敏感操作。
  • 典型場景:限制只有合約所有者能調用某些函數,如更改合約配置、提取合約內的資金等。

範例

下面是一個簡單的智能合約範例,展示了 msg.senderowner 的不同用途:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

contract MyContract {
address public owner;

// 構造函數,部署合約時設置合約所有者
constructor() {
owner = msg.sender;
}

// 只有合約所有者可以調用的修飾符
modifier onlyOwner() {
require(msg.sender == owner, "Not the contract owner");
_;
}

// 更改合約所有者的函數,只能由當前所有者調用
function changeOwner(address newOwner) public onlyOwner {
owner = newOwner;
}

// 任何人都可以調用的函數
function doSomething() public {
// 在這個函數中,msg.sender 表示當前調用者的地址
}

// 只有合約所有者才能調用的函數
function ownerOnlyFunction() public onlyOwner {
// 這個函數只能由合約所有者調用
}
}


主要區別

  1. 定義的性質
    • msg.sender:是一個全局變量,表示當前調用函數的發送者地址,每次函數調用時都會更新。
    • owner:是一個狀態變量,用於存儲特定地址,通常是合約的所有者或管理者。
  2. 使用目的
    • msg.sender:用於檢查和識別當前調用者的身份,通常在任何函數中都會用到。
    • owner:用於權限控制,限制只有特定地址可以執行某些操作,通常結合修飾符(如 onlyOwner)使用。
  3. 變化方式
    • msg.sender:隨每次函數調用而變化,表示當前調用該函數的地址。
    • owner:通常在合約的生命周期內很少變化,只在特定情況下(如更改所有者時)變化。


[Reference]

ChatGPT3.5

    尋大神腳印, 亦步亦趨。
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    以前覺得程式隔行如隔山, 一直都鴨子聽雷進入自我懷疑回圈, 特別感謝Paul老師, 願意花大量時間鉅細靡遺的介紹, 像解釋文言文一般, 悉心的一字一句清晰的解釋成白話文給我們大家, 終於找到了火山登山口的感覺, 繼續加油 🌳 1. mapping(address account => uint2
    Build a ERC-721A Smart Contract ERC721A Explained: Cheaper Gas and More Energy Efficient NFT Minting Contract ERC721A Azuki Smart Contract Tutorial
    Create an NFT Lootbox for blockchain games or NFT trading card platforms (NBA Topshot clone)
    Dapp Tutorial - ERC20 帶你發行自己的加密貨幣 🔥 Build Your Own ERC-20 Crypto Coin
    Merkle Tree Solidity Whitelist Using Merkle Trees for NFT Whitelists - Solidity Tutorial (ERC-721, NFT, Whitelist, Solidity)
    Mapping Vs Arrays | Gas Optimisation - Solidity Top Solidity Interview Questions: Questions 7: Whitelist: Array Vs Mapping!  #solidity
    以前覺得程式隔行如隔山, 一直都鴨子聽雷進入自我懷疑回圈, 特別感謝Paul老師, 願意花大量時間鉅細靡遺的介紹, 像解釋文言文一般, 悉心的一字一句清晰的解釋成白話文給我們大家, 終於找到了火山登山口的感覺, 繼續加油 🌳 1. mapping(address account => uint2
    Build a ERC-721A Smart Contract ERC721A Explained: Cheaper Gas and More Energy Efficient NFT Minting Contract ERC721A Azuki Smart Contract Tutorial
    Create an NFT Lootbox for blockchain games or NFT trading card platforms (NBA Topshot clone)
    Dapp Tutorial - ERC20 帶你發行自己的加密貨幣 🔥 Build Your Own ERC-20 Crypto Coin
    Merkle Tree Solidity Whitelist Using Merkle Trees for NFT Whitelists - Solidity Tutorial (ERC-721, NFT, Whitelist, Solidity)
    Mapping Vs Arrays | Gas Optimisation - Solidity Top Solidity Interview Questions: Questions 7: Whitelist: Array Vs Mapping!  #solidity
    你可能也想看
    Google News 追蹤
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    市場盤勢,步步為營的一天 ▍盤勢分析: 今日的加權指數,在開盤平穩後,似乎開始演繹一幕鈍刀割肉的戲碼,緩緩地下滑。最終下跌185.08點,以17161.79點作收,跌破了季線的支撐。櫃買指數表現更為劇烈,下挫3.61點,雖然仍守在季線之上,但風雲變色的跡象已隱隱在市。 ▍籌碼分析:
    大盤熱錢資金目前流往儲能 資安 通路 AI
    Thumbnail
    1/8怪怪分點籌碼3149正達續創短高價 周一神盾集團也多檔漲停
    大家早安 預言的季線支撐,就差不多快到了。 目前低283、季線224 昨天這樣大殺盤,都是能預測到的 而非事後論。 那今天怎麼走? 由於夜盤只有測試壓力, 在群組提到,反彈283+50~100點 然後360、380注意 果真高點落在370、收329 若300以上做多,至少短打50
    Thumbnail
    臺股指數及OTC低走,外資賣超,中共和伊朗等地緣風險增加投資不確定性,值得觀察AI相關產業和半導體行情。留意聯發科股價止跌,臺積電法說對半導體業的展望。近期波動市場將是選股機會。
    Thumbnail
    魯蛇如我又在處理做不好的部位了,還好順利解決。
    Thumbnail
    散步時,婆西有感而發說在超市看到徵人啟事,突然發現,這輩子從來沒有應徵過。 我:「這輩子都是我去應徵,你要和我交換嗎?」 「不要。」 接著就聊到應徵工作很囧的往事,例如老闆會問:「可以接受加班嗎?」 「不可以。」 我這種應徵工作常碰壁的普通人,很想了解不用應徵工作,所謂贏家的人生。
    財富自由的基本公式 主動薪資收入+被動收入-投資金 -保險費-生活基本開銷=>還能有結餘 有結餘處可以存款,以應不時之需。生活基本開銷一班有房貸或租金、水、電費、網路費、房貸、買食物等。保險費是為了因應緊急情況的大筆支出。從上面的公式看起來照邏輯來說就是增加主動或被動收入,再來降低開銷。 可行的步驟
    Thumbnail
    週二21:00-23:00首播、 週六22:00-00:00重播(CST)。 FM98.1 News98電台。www.news98.com.tw 點選「線上收聽」鏈結即可。 亦可利用 hiChannel 收聽。(小秘密:週六22:00重播有bonus track喔。) 1967是搖滾史瘋狂大豐收的
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    市場盤勢,步步為營的一天 ▍盤勢分析: 今日的加權指數,在開盤平穩後,似乎開始演繹一幕鈍刀割肉的戲碼,緩緩地下滑。最終下跌185.08點,以17161.79點作收,跌破了季線的支撐。櫃買指數表現更為劇烈,下挫3.61點,雖然仍守在季線之上,但風雲變色的跡象已隱隱在市。 ▍籌碼分析:
    大盤熱錢資金目前流往儲能 資安 通路 AI
    Thumbnail
    1/8怪怪分點籌碼3149正達續創短高價 周一神盾集團也多檔漲停
    大家早安 預言的季線支撐,就差不多快到了。 目前低283、季線224 昨天這樣大殺盤,都是能預測到的 而非事後論。 那今天怎麼走? 由於夜盤只有測試壓力, 在群組提到,反彈283+50~100點 然後360、380注意 果真高點落在370、收329 若300以上做多,至少短打50
    Thumbnail
    臺股指數及OTC低走,外資賣超,中共和伊朗等地緣風險增加投資不確定性,值得觀察AI相關產業和半導體行情。留意聯發科股價止跌,臺積電法說對半導體業的展望。近期波動市場將是選股機會。
    Thumbnail
    魯蛇如我又在處理做不好的部位了,還好順利解決。
    Thumbnail
    散步時,婆西有感而發說在超市看到徵人啟事,突然發現,這輩子從來沒有應徵過。 我:「這輩子都是我去應徵,你要和我交換嗎?」 「不要。」 接著就聊到應徵工作很囧的往事,例如老闆會問:「可以接受加班嗎?」 「不可以。」 我這種應徵工作常碰壁的普通人,很想了解不用應徵工作,所謂贏家的人生。
    財富自由的基本公式 主動薪資收入+被動收入-投資金 -保險費-生活基本開銷=>還能有結餘 有結餘處可以存款,以應不時之需。生活基本開銷一班有房貸或租金、水、電費、網路費、房貸、買食物等。保險費是為了因應緊急情況的大筆支出。從上面的公式看起來照邏輯來說就是增加主動或被動收入,再來降低開銷。 可行的步驟
    Thumbnail
    週二21:00-23:00首播、 週六22:00-00:00重播(CST)。 FM98.1 News98電台。www.news98.com.tw 點選「線上收聽」鏈結即可。 亦可利用 hiChannel 收聽。(小秘密:週六22:00重播有bonus track喔。) 1967是搖滾史瘋狂大豐收的