http://remix.ethereum.org/#optimize=false
payable
标识,即可接收ether,并会把ether存在当前合约。一般在构造函数上加payable,那么部署合约时就可以通过发起账户给合约地址一并发送以太币。另外发送以太币到合约的方法还有:address.call(某个方法).value(要发送的ether)send:address.send(ether to send)
向某个地址转帐【address为要转账的目的地址】
this.balance:查询当前合约账户的余额
本帖基于:http://me.tryblockchain.org/%E6%94%AF%E4%BB%98%E7%9B%B8%E5%85%B3.html 进行修改
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、再次查看合约账户以太币数量: