Solidity學習::(7)智慧合約案例-1
阿新 • • 發佈:2018-12-11
智慧合約案例-1
一、開啟remix-ide
二、 先導內容
- payable:函式上增加
payable
標識,即可接收ether,並會把ether存在當前合約。一般在建構函式上加payable,那麼部署合約時就可以通過發起賬戶給合約地址一併傳送以太幣。另外發送以太幣到合約的方法還有:address.call(某個方法).value(要傳送的ether) -
send:
address.send(ether to send)
向某個地址轉帳【address為要轉賬的目的地址】 -
this.balance:查詢當前合約賬戶的餘額
四、案例合約功能
- 部署時可接收發起賬戶的以太幣
- 可傳送指定數量的以太幣到指定賬戶地址
五、合約程式碼:
pragma solidity ^0.4.0; contract SendAndReceiveByContract{ function SendAndReceiveByContract() payable{} //fallback函式對應記錄事件 event fallbackTrigged(bytes data); //合約接收send()的 ether時,必須存在 function() payable{fallbackTrigged(msg.data);} //存入一些ether用於後面的測試 //function deposit() payable{ //} //查詢當前的餘額 function getBalance() constant returns(uint){ return this.balance; } event SendEvent(address to, uint value, bool result); //使用send()傳送ether function sendEther(address contract_add,uint eth_num){ //使用this來模擬從另一個合約傳送 bool result = contract_add.send(eth_num); SendEvent(contract_add, eth_num, result); } }
六、操作展示
1、編譯程式碼
2、選擇賬戶部署合約,value值為要傳送以太幣到合約賬戶的數量,點選下圖的Deploy即可部署
3、 這裡我們部署兩個,一個value值填100,一個為0
4、部署成功後,可以看到右下角多出了兩個合約,兩個合約的地址不同:
5、下面點選getBalance就會執行 return this.balance; 返回當前賬戶的以太幣(wei)
6、下面進行send操作,我們選擇以太幣為0的合約,複製它的地址
7、貼上到另一個合約的sendEther函式引數框中,然後填入想傳送的數量
8、點選transact,即可發起交易。
9、從控制檯返回的事件記錄中,可以看到result為true,即傳送成功
10、再次檢視合約賬戶以太幣數量: