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

留言
avatar-img
Follow the Rainmaker 🌧️
5會員
91內容數
尋大神腳印, 亦步亦趨。
2024/06/12
0. 大綱Outline 以太坊交易 發起交易 與智能合約互動 receive & fallback function 1. 舊以太坊交易 Ethereum Gas Tracker - 7 Gwei - Etherscan //交易技術, 表示特定帳戶的交易數量,是計數器, 每發一筆交
2024/06/12
0. 大綱Outline 以太坊交易 發起交易 與智能合約互動 receive & fallback function 1. 舊以太坊交易 Ethereum Gas Tracker - 7 Gwei - Etherscan //交易技術, 表示特定帳戶的交易數量,是計數器, 每發一筆交
2024/05/29
Overview 1. Request Wallet Connection from Metamask get account function get account function 2. Set your smart contract address injected provide
2024/05/29
Overview 1. Request Wallet Connection from Metamask get account function get account function 2. Set your smart contract address injected provide
2024/05/28
在 Solidity 中,constant 變量用於定義不可變的常數值。這些常數在合約的生命週期內不會改變,並且它們的值必須在宣告時設定。使用 constant 關鍵字可以節省 gas,因為它們在編譯時就已經被嵌入到字節碼中,不需要在運行時讀取存儲。 用法 定義常數: 常數變量必須在宣告時初始
2024/05/28
在 Solidity 中,constant 變量用於定義不可變的常數值。這些常數在合約的生命週期內不會改變,並且它們的值必須在宣告時設定。使用 constant 關鍵字可以節省 gas,因為它們在編譯時就已經被嵌入到字節碼中,不需要在運行時讀取存儲。 用法 定義常數: 常數變量必須在宣告時初始
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
Dynamic Metadata NFTs 是區塊鏈技術中的一大創新,特別是在遊戲領域,能提供更大的靈活性
Thumbnail
Dynamic Metadata NFTs 是區塊鏈技術中的一大創新,特別是在遊戲領域,能提供更大的靈活性
Thumbnail
比特幣區塊鏈為了滿足各種不同的需求與技術,目前衍生出四種不同型態的地址形式,主要是針對安全性、靈活性與新版本兼容性的改革。
Thumbnail
比特幣區塊鏈為了滿足各種不同的需求與技術,目前衍生出四種不同型態的地址形式,主要是針對安全性、靈活性與新版本兼容性的改革。
Thumbnail
本文概述了加密貨幣和區塊鏈項目中常見的協議功能和技術元素,包括Distribution, Emission Schedule, Utility/Value Capture等。通過瞭解這些概念,投資者和開發者可以更好地理解市場和技術動態,作出更明智的決策。
Thumbnail
本文概述了加密貨幣和區塊鏈項目中常見的協議功能和技術元素,包括Distribution, Emission Schedule, Utility/Value Capture等。通過瞭解這些概念,投資者和開發者可以更好地理解市場和技術動態,作出更明智的決策。
Thumbnail
Staking也可以稱為質押,但與傳統意義的質押Pledge不同,虛擬貨幣的質押可以被簡單說明為「將持有的虛擬貨幣鎖倉提供鏈上驗證的挖礦行為」,即第一章提到的POS權益證明。
Thumbnail
Staking也可以稱為質押,但與傳統意義的質押Pledge不同,虛擬貨幣的質押可以被簡單說明為「將持有的虛擬貨幣鎖倉提供鏈上驗證的挖礦行為」,即第一章提到的POS權益證明。
Thumbnail
介紹: DOP 是一種區塊鏈隱私協議,在以太坊上運行,使用戶能夠精確管理他們希望分享的資訊(資產持有、交易信息等),主打『您的數據,您的選擇』 項目無融資資料,但推特有大佬追蹤,Kevin Susanto、nftguyy和哥吉拉聯合創辦人shan
Thumbnail
介紹: DOP 是一種區塊鏈隱私協議,在以太坊上運行,使用戶能夠精確管理他們希望分享的資訊(資產持有、交易信息等),主打『您的數據,您的選擇』 項目無融資資料,但推特有大佬追蹤,Kevin Susanto、nftguyy和哥吉拉聯合創辦人shan
Thumbnail
進入區塊鏈/Web3的世界,首先需要擁有一個錢包或帳號。本文從重要名詞和觀念入手,介紹公鑰和私鑰的重要性,以及助記詞的作用。探討加密錢包的種類,從私鑰控制權和網路連接的角度進行分類。同時提醒了私鑰保管的重要性,以及在交易所和網路交互中的安全提醒。最後透過實際案例介紹了社交工程和釣魚的危害。
Thumbnail
進入區塊鏈/Web3的世界,首先需要擁有一個錢包或帳號。本文從重要名詞和觀念入手,介紹公鑰和私鑰的重要性,以及助記詞的作用。探討加密錢包的種類,從私鑰控制權和網路連接的角度進行分類。同時提醒了私鑰保管的重要性,以及在交易所和網路交互中的安全提醒。最後透過實際案例介紹了社交工程和釣魚的危害。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News