一、瀏覽器打開https://remix.ethereum.org 地址

點擊"+"新建一個sol文件,命名為faucet.sol



然后在代碼區輸入solidity代碼

選擇相關插件

將Solidity compiler、Deploy & run transactions插件激活,選擇編譯

編譯成功后,會顯示一個綠色的勾

再點擊“Deploy & Run Transaction”
部署環境選擇"Injected web3",這樣把通過metamask客戶端將我們的合約部署到測試環境上
接下來會提示我們remix需要將metamask里的賬戶關聯上,選擇“確定”,這樣在Environment:顯示鏈接的網絡信息,這里為Ropsten測試網絡,account里會顯示我們metamask賬戶的地址和余額

再點擊“Deploy”開始部署合約,彈出提示確認框,里面顯示由metamask賬戶發起一筆0金額的交易來進行合約部署,並顯示收取的GAS費

,點擊確認,部署成功后,頁面下方會顯示部署的合約地址

同樣,我們點開metamask錢包,也會顯示一筆合約部署的交易記錄

回到remix編譯環境頁面,點擊“Deployed Contracts”的下拉箭頭,可以顯示本合約的合一調用的方法列表


一個fallback,一個winthdraw函數
我們在withdraw函數后面輸入一個參數,我們輸入1后面18個0,表示1個ETH,再點擊“withdraw”調用函數

這是會彈出一個Gas費用估計不足的提示,我們忽略繼續發送交易

接下來自動打開metamask客戶端,顯示如下

從錢包賬戶到合約地址的一筆交易,金額是0,因為是調用合約提幣函數,所以金額為0,點擊“確認”
我們看到remix的控制台已經顯示出本次交易的HASH

但是還沒有出結果,等待一會,下面出現

顯示交易失敗了,點擊Debug后面的箭頭,顯示詳情

這筆交易執行失敗,由於我們新部署的合約里還沒有ETH,所以調用withdraw函數,是無法提幣的,那么首先我們向這個合約發送一些ETH
首先復制合約地址,然后打開metamask錢包,發送2個ETH到這個合約地址

下一步

確認
顯示合約交互,狀態為待處理


等到確認狀態后,這時我們的合約地址里就有2ETH了,我們從ropsten.etherscan.io上查看交易詳情

我們回到remix ide ,再次執行withdraw函數進行提幣

我們輸入1ETH,點擊withdraw,后,彈出metamask界面,點擊確認,金額為0,表示調用合約函數,發送本筆交易

控制台很快顯示本次交易的HASH
再等待一會兒,交易確認

點擊箭頭,顯示詳情

打開etherscan.io查看詳情

可以看到To 字段值,為合約地址,並且下面顯示了調用的合約函數和輸入參數,並顯示從合約地址向外部賬戶地址轉賬的信息。但是這筆調用合約的交易金額為0,那么我們怎么查看函數里面轉賬的交易呢,我們知道合約賬戶是內部賬戶,是由外部用戶賬戶創建的,所以我們在etherscan.io里點擊"Internal Tansaction"即可顯示合約內部交易記錄

我們可以看到剛才調用合約函數成功提幣的交易記錄,從合約賬戶地址到外部賬戶地址,金額為1ETH
我們點擊From 下面的地址,即合約地址,就會顯示當前合約的詳情,包括賬戶余額,外部交易記錄

點擊“Internal Txns”,顯示合約內部交易記錄,既外部賬戶調用合約函數所執行的轉賬交易

我們打開metamask錢包,看看賬戶地址是否多了這筆交易


有一筆withdraw交易,我們當時輸入的金額為1ETH,賬戶余額顯示為3.4987ETH,而之前賬戶余額為2.4989,減去本次交易的gas費用0.000174,再加上得到的1ETH,余額正好為3.4987ETH,至此函數執行成功。
