Solidity学习::(7)智能合约案例-1

智能合约案例-1


一、打开remix-ide

http://remix.ethereum.org/#optimize=false


二、 先导内容

  • payable:函数上增加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  进行修改


 四、案例合约功能

  1. 部署时可接收发起账户的以太币
  2. 可发送指定数量的以太币到指定账户地址

五、合约代码: 

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即可部署

Solidity学习::(7)智能合约案例-1_第1张图片

3、 这里我们部署两个,一个value值填100,一个为0

4、部署成功后,可以看到右下角多出了两个合约,两个合约的地址不同:

Solidity学习::(7)智能合约案例-1_第2张图片Solidity学习::(7)智能合约案例-1_第3张图片

5、下面点击getBalance就会执行 return this.balance; 返回当前账户的以太币(wei)

Solidity学习::(7)智能合约案例-1_第4张图片

6、下面进行send操作,我们选择以太币为0的合约,复制它的地址

Solidity学习::(7)智能合约案例-1_第5张图片

7、粘贴到另一个合约的sendEther函数参数框中,然后填入想发送的数量

Solidity学习::(7)智能合约案例-1_第6张图片

8、点击transact,即可发起交易。

9、从控制台返回的事件记录中,可以看到result为true,即发送成功

Solidity学习::(7)智能合约案例-1_第7张图片

10、再次查看合约账户以太币数量:

 Solidity学习::(7)智能合约案例-1_第8张图片

你可能感兴趣的:(区块链学习)