Menu

  • Home
  • Trending
  • Recommended
  • Latest

分類

  • #2021 新年特輯
  • 100天區塊鏈挑戰
  • 2019 台灣區塊鏈產業指南
  • 2020 台灣區塊鏈產業年鑑
  • 2022 台灣年度最影響力人物榜
  • 2023 台灣年度影響力人物榜
  • 2023 新春特輯
  • 2024 TON Hacker House
  • 2024新春特輯
  • ABS 2018 專題報導
  • AI
  • CBDC是什麼?為何全球都在積極研究、有什麼優點與隱憂
  • Cefi
  • dao
  • dApps
  • defi
  • DePIN 如何開啟去中心化物理網路革命?
  • Entertainment
  • EOS
  • EOS insights
  • Gaming
  • Howto & Style
  • ICO
  • JiaJia
  • Layer 2
  • Libra
  • Movie
  • Music
  • News
  • nft
  • Plurality 多元宇宙
  • Starknet 空投落地,後續帶來什麼影響?
  • TON的崛起之路》背靠 Telegram 如何實現 Web3 大規模應用?
  • Uncategorized
  • Web3.0
  • 中國
  • 亞太
  • 交易所
  • 人物專訪
  • 以太坊
  • 以太坊
  • 以太坊 Dencun 坎昆升級將臨,你需要知道的所有事
  • 以太坊再質押協議為何成為最熱門賽道?
  • 供應鏈
  • 保險
  • 債券
  • 元宇宙
  • 全台最大詐騙案!Ace交易所涉垃圾幣詐騙
  • 全球加密貨幣監管最新動態統整
  • 其他國家
  • 其他幣別
  • 分散式帳本技術
  • 創投
  • 加密貨幣「詐騙手法」整理,學習如何保護你的資產
  • 加密貨幣市場
  • 區塊鏈平台
  • 區塊鏈新手全攻略,你需要知道的加密貨幣基礎
  • 區塊鏈新手教學
  • 區塊鏈活動
  • 區鍵禧
  • 即時新聞
  • 台灣
  • 哈希派
  • 國際組織報告
  • 多元宇宙Plurality有多重要?未來20年人類躍進關鍵
  • 央行
  • 娛樂平台
  • 安全
  • 專欄作者
  • 巴拉區塊事
  • 市場分析
  • 幣安與美國司法部達成 43 億美元和解,CZ認罪
  • 影片測試的分類
  • 快訊
  • 技術
  • 抓住空投爆擊!值得埋伏的項目、互動教學總整理
  • 投資分析
  • 挖礦
  • 推薦閱讀
  • 搶先看
  • 支付
  • 政府報告
  • 數位產權
  • 數據報告
  • 概念
  • 歐洲
  • 比特幣
  • 比特幣現貨ETF上市,真帶來了增量資金?
  • 比特幣第四次減半將臨,行情怎麼走?
  • 比特幣銘文大爆發,Oridinal 如何改變 BTC 生態?
  • 比特彭
  • 汪彪
  • 法規
  • 測試網
  • 灰度
  • 物聯網
  • 犯罪
  • 獨立觀點
  • 瑞波
  • 環境永續
  • 社交
  • 私人機構報告
  • 稅務
  • 穩定幣
  • 管制
  • 美國
  • 肺炎
  • 能源
  • 訴訟
  • 評級報告
  • 財金哥 & 區塊妹
  • 身份驗證
  • 遊戲
  • 鄧庶杭
  • 金融市場
  • 銀行
  • 錢包

Subscriptions

  • 零壹財經 01 binary
    01 Binary
  • 0xdt
  • 0xJigglypuff
  • aaaaYYYY
  • ABCDELabs

Recent News

  • 圖解多元宇宙》V神、Glen力推的Plurality是什麼?為何協作技術是人類社會進步關鍵
  • 精選文章搶先看!動區登入Access質押訂閱服務,解鎖寶貴資訊快人一步
  • ABS獨家專訪》Gitcoin共同創辦人Scott:台灣是現實與Web3治理的重要交匯點
動區動趨-最具影響力的區塊鏈新聞媒體
  • Home
    • Home Layout 1
    • Home Layout 2
    • Home Layout 3
  • Browse
    • News
    • Movie
    • Music
    • Technology
    • Howto & Style
    • Entertainment
    • Gaming
  • Features
    • Youtube Video
    • Vimeo Video
    • Dailymotion Video
    • Self-hosted Video
    • User Profile
    • Playlists
    • User-created Playlist
    • Favorite Playlist (Private)
    • Watch Later Playlist (Private)
    • All JNews Features
No Result
View All Result
  • Login
  • Register
UPLOAD
動區動趨-最具影響力的區塊鏈新聞媒體
No Result
View All Result
Home 區塊鏈新手教學

文組也該知道的區塊鏈技術知識《2》:一次搞懂「以太坊智能合約」如何運作

Lai Jack 賴彥廷 by Lai Jack 賴彥廷
2020-12-29
in 區塊鏈新手教學
1.7k 17
0
文組也該知道的區塊鏈技術知識《1》 從一筆交易來看 ETH 與 BTC 之異同
2.4k
SHARES
10.8k
VIEWS
Share on FacebookShare on Twitter

本文作者為賴彥廷,於區塊鏈解決方案服務商 Pelith 沛理科技擔任專案經理,本系列文章並不會談到太深的技術鑽研,而是以深入淺出的方式,讓每一個想要了解區塊鏈技術的讀者,都可以在讀完後說出:原來如此!

本文目錄

  • RelatedPosts
  • 以太坊現貨ETF是什麼?與期貨差異、如何投資、優缺點、發行方式..完整分析
  • 以太坊聚合 L3 zkEVM 網路「zkLink Nova」 TVL 突破10億美元
  • 比特幣符文(Runes)是什麼?與銘文、BRC-20差異、蝕刻原理、生態系…全整理
  • 何謂智能合約?
  • 如何部署智能合約?
  • 什麼是合約地址?
  • 結論
    • 文組也該知道的區塊鏈技術知識《1》 從一筆交易來看 ETH 與 BTC 之異同
    • 比特幣的最小單位 Satoshi(SAT),究竟要用什麼符號來表示?

 

RelatedPosts

以太坊現貨ETF是什麼?與期貨差異、如何投資、優缺點、發行方式..完整分析

以太坊聚合 L3 zkEVM 網路「zkLink Nova」 TVL 突破10億美元

比特幣符文(Runes)是什麼?與銘文、BRC-20差異、蝕刻原理、生態系…全整理

在上一篇《從一筆交易來看 ETH 與 BTC 之異同》中,我們從一筆交易來概略說明了 ETH 與 BTC 轉帳交易的不同之處,本篇文章我們要來談以太坊智能合約。不會談到實作部分,而是希望能從實際應用場景切入來說明,讓閱讀完本文的讀者都能充分理解智能合約的技術運作原理。

好!那本文便開始囉!我們直接開門見山地來談談:

何謂智能合約?

智能合約本質上是一段部署 ( Deploy,即發佈 ) 到區塊鏈上的程式碼,因為區塊鏈上的程式碼(嚴格來說是二進位碼)可以被檢視,所以具備公開透明的特性。

智能合約被部署到鏈上後會產生一個合約地址,永久存在於鏈上的區塊之中。以下用 Pelith 開發部署之 CryptoCow 智能合約為範例做解說。

如何部署智能合約?

我們從智能合約的誕生談起。

開發者將程式碼開發完成後,要透過發送一筆接收地址為 “0x0” 開頭的交易(一般交易的接收地址為0x開頭,後面接一串字),並在交易的 Input Data 內放上開發完成的程式碼。礦工看到接收地址為 0x0 的交易就會知道交易的發送者想要部署智能合約,隨後便會將 Input Data 內的程式碼部署到區塊鏈上,並生成一個合約地址。

然而我們會發現 Input Data 充滿了看不懂的文字,似乎跟我們印象中的程式碼不太一樣,原因是在以太坊上儲存的合約邏輯是以 Bytecode 的形式,所以開發者以 Solidity 開發的原始碼必須先被編譯成 Bytecode 才能部署上鏈。

目前大多數開發者使用的開發工具,如:Remix 本身都具備編譯的功能,開發者開發完原始碼後只要一鍵進行編譯的動作便能取得 Bytecode 。

至此,我們來整理一下部署智能合約上鏈的流程:

  1. 開發者以 Solidity 編寫完成合約
  2. 原始碼編譯為 Bytecode
  3. 放入交易的 Input Data 中
  4. 接收地址部分留空(0x0)
  5. 節點 (礦工) 判定為要發送合約上鏈
  6. 礦工執行,並部署上鏈生成智能合約
  7. 合約擁有自己的「合約地址」,永久存在鏈上

什麼是合約地址?

在合約生成之後,會創造出一個合約地址,讓合約(Contract Account)和個人帳戶(Externally Owned Account)一樣都有一個地址,會紀錄追蹤 nonce(帳戶的交易次數) 和 balance(帳戶餘額)。

不過合約因為是「被」創造出來的,不像個人帳戶一樣可以「主動操作」來發送交易給別人,所以我們如果要使用智能合約的功能,必須要以個人帳戶發送一筆「接收地址為合約地址」的交易,來主動觸發合約,讓合約執行動作。

因此,任何一筆交易的起點都必須是個人帳戶。

接著,我們來實際看看一筆和智能合約互動的交易,下方是一筆很常見的操作合約交易,內容是將一顆透過智能合約創造出來的 ERC-20 代幣,從一個地址轉移到另一個地址中。而這些操作,必須透過交易發起者將這些操作以程式原始碼撰寫,編譯後放到 Input Data 中。

上方紅框中其實是 Etherscan 解碼(Decode)後呈現的樣式,而 Solidity 原始碼編譯後其實是長得像下列這樣,以 hex(16進位制)的方式表示。

對照上下兩種不同表現形式的圖,我們可以發現下圖紅底線的部分(0x93316cdf)在上圖中被以 MethodID 標示出來。其實 0x 後的前 8 碼表示的是 我們要呼叫合約中的什麼 function(在智能合約撰寫時我們會規劃有哪些功能是可以使用的),後面接的則是該功能的其它參數。

而這個 MethodID(0x93316cdf)其實也有許多其它的別名,這邊列舉一些比較常聽到的:HashID、Function Hash、Function Signature 等。

因此,知道這個之後,未來我們在操作 DAPP 時,便能去檢視背後的操作,也可以直接上以太坊區塊鏈瀏覽器 Etherscan 去追蹤交易(Transaction),看是否智能合約真的有按照 DAPP 應用程式介面顯示的狀態去執行功能。

如果不確定這個 MethodID 是什麼功能或會做什麼,可以到 Ethereum Function Signature Database 上查詢:

把 0x93316cdf 貼上並搜尋後,便能得知這個 MethodID 對應的是什麼 function,可以再以這個 function 到智能合約的程式碼中去確認到底操作了什麼。

結論

  1. 智能合約是一段部署到區塊鏈上的程式碼,可以有各式各樣的功能。因為區塊鏈公開透明的特性,所以可以被任何人檢視和驗證。
  2. 合約部署完成後會生成「合約帳戶」,有自己的合約地址。但所有的交易與操作都必須「個人帳戶」發起,去呼叫合約中的 function 來執行。
  3. 想要確認操作合約的交易到底做了什麼,可以檢視 Input Data 內 0x 後的前八碼 MethodID,並查詢這是什麼 function,再到合約帳戶中去檢視原始碼來確認。

好!介紹到這邊,大家閱讀至此應該都對於智能合約的概念有了基礎的認識,未來在操作 DAPP 與檢視智能合約時也多了更多的背景知識可以去做驗證。下一節我們將來介紹 區塊鏈代幣的演進史,從初代比特幣上的 USDT,到以太坊的 ERC20 token,最後會談到在技術觀點上 Libra 為什麼無法吸引頂尖開發者的目光,謝謝大家。

?相關報導?

文組也該知道的區塊鏈技術知識《1》 從一筆交易來看 ETH 與 BTC 之異同

比特幣的最小單位 Satoshi(SAT),究竟要用什麼符號來表示?


《BlockTempo動區動趨》LINE官方號開通囉~立即加入獲得第一手區塊鏈、加密貨幣新聞報導!

加入好友

Tags: 以太坊智能合約

Recommended videos

5:04

This man owned that Starbucks cup in Game of Thrones

2.5k Views
2024-07-07
    3:27

    NIKI – La La Lost You (Official Music Video)

    2.5k Views
    2024-07-28
      3:18

      ‘Stranger Things 3: The Game’ arrives on iOS and Android

      2.5k Views
      2024-06-22
        4:33

        The Night Comes For Us – Official Trailer [HD]

        2.5k Views
        2024-07-18
          Show More
          Copyright (c) 2019 by Jegtheme.
          • About
          • Buy JNews
          • Request A Demo
          • Contact
          No Result
          View All Result
          • Account
          • BlockTempo Beginner – 動區新手村
          • Change Password
          • Forgot Password?
          • Home 1
          • Home 2
          • Home 3
          • Jin-homepage
          • Latest
          • Login
          • Profile
          • Register
          • Reset Password
          • Trending
          • Users
          • Users List Item
          • 不只加密貨幣,談談那些你不知道的區塊鏈應用|動區新手村
          • 所有文章
          • 關於 BlockTempo

          © 2025 JNews - Premium WordPress news & magazine theme by Jegtheme.

          Welcome Back!

          Login to your account below

          Forgotten Password? Sign Up

          Create New Account!

          Fill the forms below to register

          All fields are required. Log In

          Retrieve your password

          Please enter your username or email address to reset your password.

          Log In

          Add New Playlist