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

更新於 發佈於 閱讀時間約 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
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
智能合约和区块链是当今社会最热门的话题之一,智能合约钱包是指用合约账户作为地址的钱包,是基于智能合约而不是外部账户的钱包,那么,智能合约钱包和区块链的关系是什么?一样安全吗?本文将为大家详细介绍 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续费返佣
Thumbnail
本文概述了加密貨幣和區塊鏈項目中常見的協議功能和技術元素,包括Distribution, Emission Schedule, Utility/Value Capture等。通過瞭解這些概念,投資者和開發者可以更好地理解市場和技術動態,作出更明智的決策。
Thumbnail
介紹: DOP 是一種區塊鏈隱私協議,在以太坊上運行,使用戶能夠精確管理他們希望分享的資訊(資產持有、交易信息等),主打『您的數據,您的選擇』 項目無融資資料,但推特有大佬追蹤,Kevin Susanto、nftguyy和哥吉拉聯合創辦人shan
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
智能合约和区块链是当今社会最热门的话题之一,智能合约钱包是指用合约账户作为地址的钱包,是基于智能合约而不是外部账户的钱包,那么,智能合约钱包和区块链的关系是什么?一样安全吗?本文将为大家详细介绍 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续费返佣
Thumbnail
本文概述了加密貨幣和區塊鏈項目中常見的協議功能和技術元素,包括Distribution, Emission Schedule, Utility/Value Capture等。通過瞭解這些概念,投資者和開發者可以更好地理解市場和技術動態,作出更明智的決策。
Thumbnail
介紹: DOP 是一種區塊鏈隱私協議,在以太坊上運行,使用戶能夠精確管理他們希望分享的資訊(資產持有、交易信息等),主打『您的數據,您的選擇』 項目無融資資料,但推特有大佬追蹤,Kevin Susanto、nftguyy和哥吉拉聯合創辦人shan