solidity Dapp 通讯录合约 —— 点名即可

我们在使用智能合约过程中,经常需要使用地址,一般都是20字节的字符串,不是很方便记忆,是不是对地址感到很头疼;如果每个地址都是一个的名字该多好。ENS是建立在以太坊区块系统上的域名系统,就解决了类似的问题,我们也可以在自己的智能合约里,添加一个类似的模块,把经常使用的地址和名字记录下来,这样使用的时候,可以直接名字代替地址。

今天我们实现一个通讯合约模块,用户可以给自己经常使用的地址设定一个名字,使用的时候的时候不需要写地址,只需要写一个名字即可。

老规矩先来理清一下思路,用户创建一个通讯录合约,然后手动进行关联地址和姓名,也可以进行修改和删除。还可以查询现在通讯录里的记录;当需要使用的时候,只需要选择姓名既可以。而不用写长长的地址。

pragma solidity ^0.4.7;
contract AddressList{
    address  owner;
    mapping (string => address)  linkman; //通讯录列表
    
    modifier isOwner{
        require(owner == msg.sender);
        _;
    }
    
    constructor() public{
        owner = msg.sender;
    }
    
    event Transfer(address to, uint amount);
    
    function addAddress(string man, address to) public  isOwner {
        linkman[man] = to;//添加新的联系人
    }
    
    function queryAddress(string man ) public  view isOwner returns(address) {
        return linkman[man];//查询联系人
    }
    
    function removeAddress(string man) public  isOwner{
        linkman[man]=address(0);
    }
    
    function changeAddress(string man, address to) public   isOwner{
        linkman[man] = to;
    }
    //用户可以直接使用姓名进行发交易
    function transferTo(string man,  uint amount) payable  public{
        require(msg.sender.balance >= amount);
        require(linkman[man]!=address(0));
        
        linkman[man].transfer(amount);//获取到姓名对应的地址后,进行发交易
        Transfer(msg.sender, amount);
    }
}

addAddress函数,负责添加地址对应的名称;

queryAddress函数,根据名称返回地址;

removeAddress函数,在合约里,删除对应的地址;

changeAddress函数,修改地址对应的名称;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0xweb3q

有钱的捧个钱场,没钱的捧个人场

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值