在以太坊網路中,通常把寫入資料稱為交易,而讀取資料稱為呼叫。
交易有執行成本,消耗gas、更改網路的狀態、不立即處理、通常獲取交易的id。
呼叫免費,不消耗gas、不改變網路的狀態、立即處理、有返回值。
pragma solidity >=
0.4.21
<
0.7.0
;library convertlib
}
pragma solidity >=
0.4.21
<
0.7.0
;import "./convertlib.sol"
;contract metacoin
//轉賬
function sendcoin
(address receiver, uint amount)
public
returns
(bool sufficient)
//獲取給定賬戶的轉換後金額
function getbalanceineth
(address addr)
public view returns
(uint)
//獲取給定賬戶的原始金額
function getbalance
(address addr)
public view returns
(uint)
}
通過語句metacoin.deployed().then(instance => contract = instance)
獲取metacoin合約的抽象,並返回給contract變數。這時就可以通過contract變數來訪問其中的方法了。
通過web3.eth.accounts
可以獲得ganache網路上的所有賬戶位址
用變數來接一下var accounts = web3.eth.accounts
交易引數– sendcoin函式沒有第3個引數,傳入了第三個引數,當然也可以不寫
這個引數是乙個特殊引數,稱為交易引數,它總是可以作為最後乙個引數傳遞給乙個函式,用於設定交易的相關細節。交易引數還有很多,這裡不詳細說明。
然後通過
testcontract.getbalance(accounts[0])
testcontract.getbalance(accounts[1])
var result = testcontract.sendcoin(accounts[1], 5)
result會返回很多資訊,這裡只記錄一部分
result.tx–交易的雜湊值id
result.logs–交易日誌
result.receipt–交易單據
但是有個問題,菜雞能夠返回result,但是無法獲取裡面的屬性,不知道咋個回事。
如果已經有了合約位址,則可以建立乙個合約抽象來表示該位址處的合約。
const specificinstance = await metacoin.at("0x1234...");
通過instance.sendtransaction()
或者instance.send()
就可以了。
區塊鏈入門技術之Truffle
區塊鏈技術 一 truffle開發入門 安裝truffle npm install g truffle 需要安裝ethereum客戶端,來支援json rpc api呼叫 開發環境,推薦使用ethereumjs testrpc 安裝命令 npm install g ethereumjs testrp...
區塊鏈技術 一 Truffle開發入門
npm install g truffle 系統 windows,linux or mac os x,推薦mac os x,不建議使用windows,會碰到各種各樣的問題,導致放棄。需要安裝ethereum客戶端,來支援json rpc api呼叫 開發環境,推薦使用ethereumjs testr...
區塊鏈truffle 4 1 5 開發入門
區塊鏈近幾年非常的火爆。truffle是目前最流行的以太坊開發框架。網上很多的truffle的環境部署都是2.x或者是3.x。最新的truffle已經更新至4.1.x版本。4.1.x版本的命令較以前版本有較大區別,很多新手 包括我 在剛開始的時候按照網上的教程怎麼都搭載不出環境,也報了很多的錯誤,導...