基于以太坊的智能合约开发教程 Solidity 地址与交易
地址与交易
- 地址与交易
包括使用钱包转移资金,合约与合约账户,transfer转移资金
学习代码如下:
pragma solidity ^0.4.19;
contract payabletest{
// 可以进行转账操作,在部署成功之后,在页面当中的value填入10ether,
//然后点击pay,就能发现外部账户当中的10ether成功转入合约账户,而且getBalance可以查看这个账户的金额
function pay()public payable{
}
// this表示的是当前合约 查看当前合约的账户余额
function getBalance()public view returns(uint){
return address(this).balance;
}
// 我们可以查看部署合约的账户的金额
function gettargetBalance()public view returns(uint){
address account = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;
return account.balance;
}
// 通过transfer可以实现外部账户之间的转账
// msg.value需要我们手动在value页面输入值
function transfer1account()public payable{
address account = 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2;
account.transfer(msg.value);
}
// 第二种方法实现由部署合约的外部账户向合约账户实现转账操作
function transfer2account()public payable{
this.transfer(msg.value);
}
function()public payable{
}
// 当我们在图形化界面的value输入20时,而我们调用 transfer3account(),
// 向第二个部署合约账户转账10 ether时,此时会有10ether从第一个账户转入第二个账户,而多余的10ether会转入我们的合约账户
function transfer3account()public payable{
address account = 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2;
account.transfer(10 ether);
}
// send与transfer的功能一样,都能进行转账操作,但send作为底层方法比较危险,send出现问题不会报错,而transfer出现问题会进行报错
function sendMoney()public payable returns(bool){
address account = 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2;
return account.send(10 ether);
}
address public owner;
// 可以将合约中的金额提现至部署合约的账户当中
function withdraw()public{
owner = msg.sender;
owner.transfer(this.balance);
}
}