從外部賬戶向智能合約賬戶轉賬以太幣
外部賬戶給部署智能合約時給合約初始轉賬:
使用remix 測試環境
pragma solidity >=0.4.0 <0.7.0;
contract Test{
uint256 public test1; //保存指定地址的合約的餘額
address payable owner; //保存合約的所有者,即爲部署合約的外部賬戶,設置payable 屬性
constructor()public payable{ // 合約構造函數
owner = msg.sender; // 設定智能合約的所有者
test1 = 0; // 初始化爲0
msg.value; //外部賬戶在部署時給合約賬戶轉賬msg.value以太幣
}
function svalue(address payable addr)public payable{
//輸入地址,給相應地址轉賬5 個以太幣,這裏是的單位是Gwei
addr.transfer(5* 10**18);
}
//輸入地址,獲取整個地址的餘額
function getblance(address payable addr)public payable{
test1 = addr.balance;
}
//設置fallback 函數,爲payable屬性,如果不設置這個函數,智能合約則不能接受其他合約和賬戶的轉賬
fallback() external payable{}
}
選擇賬戶地址1:0x4658C20652f24a07cB714148600F3c2390f61d6e
部署合約地址1:0xC9c97A300086210df2Fc4373dA6f75cCAF7f12aC
設置VALUE爲30以太幣,部署結果如下圖所示:
可以看到圖中accounts 旁邊的餘額變成了69.999 以太幣,查詢當前合約地址賬戶餘額:
輸入查詢地址,然後點擊變量test1,可見餘額爲30以太幣。
智能合約向外部賬戶轉賬
依然是上文的部署合約,我們將轉賬函數接受地址設定爲部署合約的外部地址,結果如下:
當前合約剩餘以太幣爲25以太幣,向外部賬戶轉移了5個以太幣。
可見外部賬戶,多出5個以太幣。
智能合約之間轉賬
智能合約之間也可以按照以上方式轉賬