【以太坊系列-007】solidity一些函式修飾說明
solidity一些函式修飾說明
一、函式可見性分析
public - 任意訪問
private - 僅當前合約內
internal - 僅當前合約及所繼承的合約
external - 僅外部訪問(在內部也只能用外部訪問方式訪問)
二、函式的限制訪問
在Solidity中constant、view、pure三個函式修飾詞的作用是告訴編譯器,函式不改變/不讀取狀態變數,這樣函式執行就可以不消耗gas了,因為不需要礦工來驗證。
在Solidity v4.17之前,只有constant,後續版本將constant拆成了view和pure。
view的作用和constant一模一樣,可以讀取狀態變數但是不能改;
pure則更為嚴格,pure修飾的函式不能改也不能讀狀態變數,智慧操作函式內部變數,否則編譯通不過。
相關推薦
【以太坊系列-007】solidity一些函式修飾說明
solidity一些函式修飾說明 一、函式可見性分析 public - 任意訪問 private - 僅當前合約內 internal - 僅當前合約及所繼承的合約 external - 僅外部訪問(在內部也只能用外部訪問方式訪問) 二、函式的限制訪問 在Solidity中cons
【以太坊系列-005】使用solc編譯solidity智慧合約,並生產web3deploy格式的程式碼
說明 本文主要介紹,只通過solc來進行智慧合約的部署,更簡單的方式是通過remix直接生成。 該場景是用於使用者自己修改了solc編譯器,remix無法使用的情況。 1、 程式碼結構 # cat counter.sol pragma solidity ^0.4.20
【以太坊系列-006】ethereum solidity智慧合約在geth控制檯上的操作(mapping實踐)
說明,本文基於已經部署好的etherum環境,在geth控制檯上操作以下命令。文中用到的命令,可以參考該系列的其他文件。 1、解鎖賬號 > personal.unlockAccount(eth.accounts[0], "lyh001", 300) # 3
【以太坊系列-004】從原始碼搭建etherum,solidity編譯環境
使用ubuntu1804(由ubuntu-18.04.1-server-amd64.iso安裝)環境 說明: 本文主要介紹基於ubuntu1804的環境,由原始碼構建etherum,以及solidity的編譯環境。 1, 安裝go mkdir -p /home/001_
【以太坊系列-009】在ethereum private chain上進行oraclize的呼叫操作
說明: 本人使用的是 ubuntu1804-server版本(不要使用live-server,存在缺少部分包。) 在私鏈中容易遇到問題,本人第一次成功是通過truffle+ethereumjs-testrpc。
【以太坊系列-008】oraclize介紹
Introduction Oracle service builds the bridge between blockchain and the real world, and we are going to introduce an oracle service called Ora
【以太坊系列-003】以太坊智慧合約 —— 最佳安全開發指南
1基本理念 以太坊和其他複雜的區塊鏈專案都處於早期階段並且有很強的實驗性質。因此,隨著新的bug和安全漏洞被發現,新的功能不斷被開發出來,其面臨的安全威脅也是不斷變化的。這篇文章對於開發人員編寫安全的智慧合約來說只是個開始。 開發智慧合約需要一個全新的工程思維,它不同於我們以往專案的開發。因
【以太坊系列-001】基於以太坊的私有鏈環境搭建-以及搭建過程的問題記錄
本文是基於virtalbox的ubuntu1804(ubuntu-18.04.1-server-amd64,不要使用live-server安裝)的虛擬機器環境,配置是1核2GB記憶體(建議記憶體越多越好)。 本文基於網上的文件,加上自己安裝部署過程遇到的問題,進行了整理。
【以太坊開發】發幣指南--進階篇
參考:https://www.ethereum.org/token pragma solidity ^0.4.16; interface tokenRecipient { function receiveApproval(address _from, uint256 _value,
【以太坊開發】如何開發一個編譯以太坊智能合約並且發布的平臺(二)
vid new 有一個 tran slim ole https parse 交易 接上一章的內容,這篇介紹 deploy相關和結果演示。 deploy一個合約的過程中,需要計算發布的消耗和nonce值。 當進行每筆交易時,發送人設定Gas Limit 和Gas Pric
【以太坊開發】利用Oraclize開發一個投注合約(一):原理介紹
智慧合約的作用很多,但是很多資料還是要基於網際網路,那麼如何在合約中獲取網際網路中的資料?Oraclize就是為了這個目的而誕生的。 本篇介紹如何利用Oraclize開發一個投注智慧合約,開始coding之前,這一節講述一下理論。 工作原理: 智慧合約通過對Oraclize釋出一個合約之間的呼叫請求來獲
【以太坊開發】利用Oraclize開發一個投註合約(一):原理介紹
tween 協議 簡單方法 type callback 使用 抓取 獲取 num 智能合約的作用很多,但是很多數據還是要基於互聯網,那麽如何在合約中獲取互聯網中的數據?Oraclize就是為了這個目的而誕生的。 本篇介紹如何利用Oraclize開發一個投註智能合約,開始co
【以太坊錢包開發 二】MyEtherWallet 錢包介紹
以太坊常見錢包包括:Ethereum Wallet、MyEtherWallet、MetaMask、Parity。咱們的錢包開發專案主要圍繞MyEtherWallet錢包的相關功能進行開發,因此下面主要介紹MyEtherWallet的常用功能。 MyEtherWallet 是一個輕錢包,使用起來最簡單,無需下
【以太坊】 【開發環境搭建】 testrpc測試環境
[testrpc 以太坊 區塊鏈 開發環境] 一、安裝truffle+testrpc開發和測試環境。truffle是開發環境,testrpc是測試環境。 1、安裝環境時需要git add-apt-repository ppa:git-core/ppa a
【以太坊】Ethereum交易過程及ethereumjs-tx的應用
關於Ethereum交易是如何從生成並在網路中廣播的,如下總結七個步驟: 一、 構建原始交易物件 如下為原始交易物件欄位,並對各欄位進行展開說明 var rawTx = { nonce: '0x00', gasPrice: '0x09184e72a000',
【以太坊】geth常用操作
修改錢包密碼 其中–datadir引數是你的geth目錄,這個目錄裡面包含geth和keystore目錄 $ geth account update "aad71aaaef7ce2ca356b9b80d0c385eecd8ed1ae" --datadir ".
Go學習之go-ethereum【以太坊】原始碼分析(一)
關於Go語言環境的安裝與配置,我在《入門篇》進行了詳細講解,有需要的朋友可以前往閱讀,本文進入當下比較火熱的區塊鏈專案 - 以太坊(go-ethereum)進行原始碼解讀。本文內容純屬個人見解,有錯誤理解或者不足之處還請見諒,歡迎一起交流學習。 - 環境準備 -
【以太坊】私有鏈和測試網的區別
一、概述 我們想要學習一門新技術,那麼一般都是先網上查查相關概念,然後下載下來demo進行測試,本地跑通之後就可以嘗試在專案中使用。那麼學習以太坊該如何學習呢? 博主也是一位初學者,這裡和大家一起學習下。 二、以太坊測試網路 TestNet 以太坊的
【以太坊原始碼】I.區塊和交易,合約和虛擬機器
最近在看以太坊(Ethereum)的原始碼, 初初看出點眉目。 區塊鏈是近年熱點之一,面向大眾讀者介紹概念的文章無數,有興趣的朋友可自行搜尋。我會從原始碼實現入手,較系統的介紹一下以太坊的系統設計和協議實現等,希望能提供有一定深度的內容,歡迎有興趣的朋友多多討論。注:1.原始
【以太坊開發】geth的使用入門
geth的全稱是go-ethereum,是一個以太坊客戶端,用go語言編寫,應該是目前最常用的客戶端。當然以太坊客戶端還有用C++,Ruby,Python,Java等其他多種語言編寫的,不同型別的客戶端是為了滿足不同的需求場景。今天我們主要來介紹geth(發音同guess )