地址、交易篇(完结)

地址、交易篇

注:以下代码来源于b站上面的基于以太坊的智能合约开发教程【Solidity】链接:https://www.bilibili.com/video/BV1St411a7Pk?p=34

使用钱包转移资金

pragma solidity >=0.4.15 <0.6.0;

contract payableTest
{
    //转账
    function pay() public payable
    {
       
    }
    //获取合约地址余额
    function getBalance() public returns(uint)
    {
        return this.balance;
    }
    
    //获取合约地址
    function getThis() view returns(address)
    {
        return this;
    }
    //获取指定地址的余额
    function getrandomBalance(address account) view returns(uint)
    {
        return account.balance;
    }
    
}

编译完成后,部署合约,然后再交易金额上面写上10,也就是转10个以太币到合约账户中,点击2所示的pay按钮,可以看到控制台显示转账成功,然后点3所示的getBalance获取当前合约地址的余额,5所示的getThis是指当前合约的地址,4所示的getRandomBalance是指根据所输入的地址显示他的余额。
在这里插入图片描述

send和transfer区别

pragma solidity >=0.4.15 <0.6.0;

contract transfer
{
    //向指定地址转账地址转账
    function transfer() payable{
        address account=0xca35b7d915458ef540ade6068dfe2f44e8fa733c;
        account.transfer(msg.value);
    }
    //用msg.value向合约转账,但是要加上回滚函数
    function transfer1() payable{
       
        this.transfer(msg.value);
    }
    function () payable
    {
        
    }
    //send转账,这个返回值是bool类型,在控制台查看,transfer要比send安全
     function sendMoney() payable returns(bool){
        address account=0xca35b7d915458ef540ade6068dfe2f44e8fa733c;
        return account.send(msg.value);
    }
    //获取转账人的地址
    function getGloble1() view returns(address)
    {
        return msg.sender;
    }
    //获取块号
    function getGloble2() view returns(uint)
    {
        return block.number;
    }
    //块的难度
    function getGloble3() view returns(uint)
    {
        return block.difficulty;
    }
}

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

映射

pragma solidity >=0.4.15 <0.6.0;

contract mappingTest
{
    //这是这地址-》id的映射,然后又将id-》name上
    mapping(address=>uint) idmapping;
    mapping(uint=>string) namemapping;
    uint sum=0;
    //注册账户
    function register(string name)
    {
        address account=msg.sender;
        sum=sum+1;
        idmapping[account]=sum;
        namemapping[sum]=name;
    }
    //获取id需要的地址是账户地址不是合约地址
    function getIDAddress(address are) view returns(uint)
    {
        return idmapping[are];
    }
    //获取名字需要的地址是账户地址不是合约地址
    function getNameById(uint id) view returns(string)
    {
        return namemapping[id];
    }
    //如果要注册第二个人,需要换一个账户地址
    function getSum() view returns(uint)
    {
        return sum;
    }
    
}

在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值