區塊鏈筆記6 利用truffle與合約互動

2021-10-07 10:49:31 字數 1777 閱讀 6275

在以太坊網路中,通常把寫入資料稱為交易,而讀取資料稱為呼叫

交易有執行成本,消耗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版本的命令較以前版本有較大區別,很多新手 包括我 在剛開始的時候按照網上的教程怎麼都搭載不出環境,也報了很多的錯誤,導...