轉賬
今天給大家聊聊智能合約賬戶之間的轉賬,并給出了代碼,
- 發起合約方賬戶
- 接受合約賬戶
- 合約地址賬戶
匿名函式
這里我們了解一下solidity中的匿名函式,這個匿名函式主要用于轉賬,
- ?個合約可以有且只有?個匿名函式,此函式不能有引數,也不能有任何回傳值,當我們企圖去執行?個合約上沒有的函式時,那么合約就會執?這個匿名函式,
- 當合約在只收到以太幣的時候,也會調?這個匿名函式,而且?般情況下會消耗很少的gas,所以當你接收到以太幣后,想要執行?些操作的話,你盡可以把你想要的操作寫到這個匿名函式?,因為這樣做成本非常便宜,
發起方給合約賬戶地址轉賬
pragma solidity ^0.4.24;
contract demo{
address public addr0 = 0x00ca35b7d915458ef540ade6068dfe2f44e8fa733c;
//地址address型別本質上是一個160位的數字
//可以進行加減,需要強制轉換
function add() public view returns(uint160) {
return uint160(addr1) + 10;
}
//1. 匿名函式一般用來給合約轉賬,因為費用低
//2. 這個匿名函式是由發起合約方對合約地址賬戶轉賬
function () public payable {
}
function getBalance() public view returns(uint256) {
return addr1.balance;
}
function getContractBalance() public view returns(uint256) {
//this代表當前合約本身
//balance方法,獲取當前合約的余額
return address(this).balance;
}
}
合約賬戶向一個地址進行轉賬
pragma solidity ^0.4.24;
contract demo02 {
address public addr1 = 0x0014723a09acff6d2a60dcdf7aa4aff308fddc160c;
//地址address型別本質上是一個160位的數字
//1. 匿名函式一般用來給合約轉賬,因為費用低
//2. 這個匿名函式是由發起合約方對合約地址賬戶轉賬
function () public payable {
}
function getBalance() public view returns(uint256) {
return addr1.balance;
}
function getContractBalance() public view returns(uint256) {
//this代表當前合約本身
//balance方法,獲取當前合約的余額
return address(this).balance;
}
//由合約向addr1 轉賬10以太幣
function transfer() public {
//1 ether = 10 ^18 wei (10的18次方)
addr1.transfer(10 * 10 **18);
}
//send轉賬與tranfer使用方式一致,但是如果轉賬金額不足,不會拋出例外,而是會回傳false
function sendTest() public {
addr1.send(10 * 10 **18);
}
}
注意:在solidity中tranfer轉賬函式,這個函式使用方法是向哪個address轉賬,就用這個address呼叫address.tranfer()(轉賬單位是“wei”),這個轉賬是由當前合約賬戶余額向該地址轉賬,如果當前合約地址賬戶余額不足,會拋出例外,(但solidity轉賬函式還有一個send(),轉賬一般不用這個,因為合約賬戶余額不足進行轉賬,send函式不會拋出例外),
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/276674.html
標籤:區塊鏈
上一篇:個人理解的位元幣
