基于以太坊的智能合约开发教程 Solidity 地址与交易

基于以太坊的智能合约开发教程 Solidity 地址与交易

地址与交易

包括使用钱包转移资金,合约与合约账户,transfer转移资金

学习代码如下:

pragma solidity ^0.4.19;

contract payabletest{
    
    
    // 可以进行转账操作,在部署成功之后,在页面当中的value填入10ether,
    //然后点击pay,就能发现外部账户当中的10ether成功转入合约账户,而且getBalance可以查看这个账户的金额
    
    function pay() payable{
        
    }
    
    
    // this表示的是当前合约  查看当前合约的账户余额  
    function getBalance() returns(uint){
         return address(this).balance;
    }
    
    //  我们可以查看部署合约的账户的金额
    function gettargetBalance()  returns(uint){
        address account = 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;
        return account.balance;
    }
    
    // 通过transfer可以实现外部账户之间的转账
    // msg.value需要我们手动在value页面输入值
    function transfer1account() payable{
        address account = 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2;
        account.transfer(msg.value);
    }
    
    // 第二种方法实现由部署合约的外部账户向合约账户实现转账操作
    function transfer2account() payable{
        this.transfer(msg.value);
    }
    
    function() payable{
        
    }
    // 当我们在图形化界面的value输入20时,而我们调用 transfer3account(),
    // 向第二个部署合约账户转账10 ether时,此时会有10ether从第一个账户转入第二个账户,而多余的10ether会转入我们的合约账户
    function transfer3account() payable{
        address account = 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2;
        account.transfer(10 ether);
    }
    
    // send与transfer的功能一样,都能进行转账操作,但send作为底层方法比较危险,send出现问题不会报错,而transfer出现问题会进行报错
    function sendMoney() payable returns(bool){
        address account = 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2;
         return account.send(10 ether);
    }
    
    
    
}

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43537319/article/details/121188513