bscscan testnet未显示持有人

发布于 2025-02-09 01:59:20 字数 5285 浏览 3 评论 0原文

我创建了ERC20令牌,它可以在混音中运行良好,因此我想在BSCSCAN TestNet上对其进行测试。

据我所知,它是ERC20和BEP20符合的……尽管我有点缺乏经验,所以我可能已经错了。

它可以正确交易,但是在BSCSCAN上,它没有显示任何持有人。谁能帮忙?

谢谢。克里斯...代码下面:

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;


contract Share {

mapping(address => uint256) public balances;
mapping(address => User) public Users ;
address[] public Userlist;
mapping(address => mapping(address => uint256)) public allowance;
 uint256 public totalSupply = 1000000 * 10 **18;
 string public _name;
 string public _symbol;
 uint8 public decimals = 18;
 uint public Usercount = 0;
 address public creater;
 uint256 tax = 10;
 uint256 public createdtime;


 struct User {
 address Useraddress;
 uint256 Account;
 uint256 Number;
 uint256 Purchasetime;
 bool Boughtbefore;
 }




event Transfer(address indexed from , address indexed to, uint256 amount);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);
event reward(address indexed receiver, uint256 amount);


    constructor(string memory name_, string memory symbol_) {
     Usercount += 1;
     _name = name_;
     _symbol = symbol_;
     User memory newUser = User(msg.sender,totalSupply,Usercount,block.timestamp,true);
     Users[msg.sender] = newUser;
     creater = Users[msg.sender].Useraddress;
     createdtime = block.timestamp;
     Userlist.push(msg.sender);
     balances[msg.sender]= totalSupply;
     emit Transfer(address(0), msg.sender, totalSupply);

    }

    function transfer(address _to, uint256 _value) public returns(bool) {
     require(balances[msg.sender]>= _value, 'Account too low');
     uint256 transferamount = _value - ((_value*tax)/100);
     uint256 rewardamount = (_value*tax)/100;
     if(Users[_to].Boughtbefore){
     Users[_to].Account += transferamount;
     Users[msg.sender].Account -= _value;
     balances[_to] += transferamount;
     balances[msg.sender] -= _value;
     }
     if(!Users[_to].Boughtbefore){
     Usercount += 1;
     User memory NewUser = User(_to,transferamount,Usercount,block.timestamp,true);
     Users[_to] = NewUser;
     Users[msg.sender].Account -= _value; 
     Userlist.push(_to);
     balances[_to] += transferamount;
     balances[msg.sender] -= _value;
     }
     if(Users[msg.sender].Account == 0){
     removefromlist(Users[msg.sender].Number);
     delete Users[msg.sender];
     Usercount -= 1;
     }
     emit Transfer(msg.sender, _to, transferamount);
     distribute(rewardamount);
     return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns(bool) {
     require(balances[_from]>= _value, 'Account too low');
     require(allowance[_from][msg.sender] >= _value, 'Allowance too low!');
     uint256 transferamount = _value - ((_value*tax)/100);
     uint256 rewardamount = (_value*tax)/100;
     if(Users[_to].Boughtbefore){
     Users[_to].Account += transferamount;
     Users[_from].Account -= _value;
     balances[_to] += transferamount;
     balances[msg.sender] -= _value;
     }
     if(!Users[_to].Boughtbefore){
     Usercount += 1;
     User memory NewUser = User(_to,transferamount,Usercount,block.timestamp,true);
     Users[_to] = NewUser;
     Users[_from].Account -= _value; 
     Userlist.push(_to);
     balances[_to] += transferamount;
     balances[msg.sender] -= _value;
     }
     if(Users[_from].Account == 0){
     removefromlist(Users[_from].Number);
     delete Users[_from];
     Usercount -= 1;
     }
     emit Transfer(_from, _to, transferamount);
     distribute(rewardamount);
     return true;  
    }


    function distribute(uint256 _charge) internal{
     uint _reward = _charge/Usercount;
     for(uint256 i=0; i<Usercount; i++){
     Users[Userlist[i]].Account += _reward;
     balances[Userlist[i]] += _reward;
     emit reward(Users[Userlist[i]].Useraddress, _reward);
     }
    }

    function removefromlist (uint256 index) internal {
     for (uint256 i = index; i < Userlist.length; i++){
     Userlist[i] = Userlist[i +1];
     }
     Userlist.pop();
    }

    function totalsupply() public view returns(uint256){
     return totalSupply;
    }

    function name() public view returns(string memory){
     return _name;
    }

    function symbol() public view returns(string memory){
     return _symbol;
    }

    function Accountof(address _owner) public view returns(uint256){
     return balances[_owner];

    }

    function approve(address _spender, uint256 _value) public returns (bool) {
     allowance[msg.sender][_spender] = _value;
     emit Approval(msg.sender, _spender, _value);
    return true;   
    }

    function allowances(address owner, address spender) public view returns (uint256 remaining){
        return allowance[owner][spender];
    }

    function burn(uint256 amount) public returns(bool){
     require(Users[msg.sender].Account >= amount, 'Account too low');
     Users[msg.sender].Account -= amount;
     balances[msg.sender] -= amount;
     totalSupply -= amount;
     if(Users[msg.sender].Account == 0){
     removefromlist(Users[msg.sender].Number);
     delete Users[msg.sender];
     Usercount -= 1;
     }
     return true;
    }

    function getOwner()external view returns(address){
    return creater;
    }
}

I have created and ERC20 token, it works well within Remix, so I wanted to test it on BSCSCAN testnet.

As far as I can tell, it is ERC20 and BEP20 compliant... although I am a little inexperienced, so I may have gone wrong.

It transacts correctly, but on BSCSCAN, it doesn't show any holders. Can anyone help?

Thank you. Chris ... code below:

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;


contract Share {

mapping(address => uint256) public balances;
mapping(address => User) public Users ;
address[] public Userlist;
mapping(address => mapping(address => uint256)) public allowance;
 uint256 public totalSupply = 1000000 * 10 **18;
 string public _name;
 string public _symbol;
 uint8 public decimals = 18;
 uint public Usercount = 0;
 address public creater;
 uint256 tax = 10;
 uint256 public createdtime;


 struct User {
 address Useraddress;
 uint256 Account;
 uint256 Number;
 uint256 Purchasetime;
 bool Boughtbefore;
 }




event Transfer(address indexed from , address indexed to, uint256 amount);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);
event reward(address indexed receiver, uint256 amount);


    constructor(string memory name_, string memory symbol_) {
     Usercount += 1;
     _name = name_;
     _symbol = symbol_;
     User memory newUser = User(msg.sender,totalSupply,Usercount,block.timestamp,true);
     Users[msg.sender] = newUser;
     creater = Users[msg.sender].Useraddress;
     createdtime = block.timestamp;
     Userlist.push(msg.sender);
     balances[msg.sender]= totalSupply;
     emit Transfer(address(0), msg.sender, totalSupply);

    }

    function transfer(address _to, uint256 _value) public returns(bool) {
     require(balances[msg.sender]>= _value, 'Account too low');
     uint256 transferamount = _value - ((_value*tax)/100);
     uint256 rewardamount = (_value*tax)/100;
     if(Users[_to].Boughtbefore){
     Users[_to].Account += transferamount;
     Users[msg.sender].Account -= _value;
     balances[_to] += transferamount;
     balances[msg.sender] -= _value;
     }
     if(!Users[_to].Boughtbefore){
     Usercount += 1;
     User memory NewUser = User(_to,transferamount,Usercount,block.timestamp,true);
     Users[_to] = NewUser;
     Users[msg.sender].Account -= _value; 
     Userlist.push(_to);
     balances[_to] += transferamount;
     balances[msg.sender] -= _value;
     }
     if(Users[msg.sender].Account == 0){
     removefromlist(Users[msg.sender].Number);
     delete Users[msg.sender];
     Usercount -= 1;
     }
     emit Transfer(msg.sender, _to, transferamount);
     distribute(rewardamount);
     return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns(bool) {
     require(balances[_from]>= _value, 'Account too low');
     require(allowance[_from][msg.sender] >= _value, 'Allowance too low!');
     uint256 transferamount = _value - ((_value*tax)/100);
     uint256 rewardamount = (_value*tax)/100;
     if(Users[_to].Boughtbefore){
     Users[_to].Account += transferamount;
     Users[_from].Account -= _value;
     balances[_to] += transferamount;
     balances[msg.sender] -= _value;
     }
     if(!Users[_to].Boughtbefore){
     Usercount += 1;
     User memory NewUser = User(_to,transferamount,Usercount,block.timestamp,true);
     Users[_to] = NewUser;
     Users[_from].Account -= _value; 
     Userlist.push(_to);
     balances[_to] += transferamount;
     balances[msg.sender] -= _value;
     }
     if(Users[_from].Account == 0){
     removefromlist(Users[_from].Number);
     delete Users[_from];
     Usercount -= 1;
     }
     emit Transfer(_from, _to, transferamount);
     distribute(rewardamount);
     return true;  
    }


    function distribute(uint256 _charge) internal{
     uint _reward = _charge/Usercount;
     for(uint256 i=0; i<Usercount; i++){
     Users[Userlist[i]].Account += _reward;
     balances[Userlist[i]] += _reward;
     emit reward(Users[Userlist[i]].Useraddress, _reward);
     }
    }

    function removefromlist (uint256 index) internal {
     for (uint256 i = index; i < Userlist.length; i++){
     Userlist[i] = Userlist[i +1];
     }
     Userlist.pop();
    }

    function totalsupply() public view returns(uint256){
     return totalSupply;
    }

    function name() public view returns(string memory){
     return _name;
    }

    function symbol() public view returns(string memory){
     return _symbol;
    }

    function Accountof(address _owner) public view returns(uint256){
     return balances[_owner];

    }

    function approve(address _spender, uint256 _value) public returns (bool) {
     allowance[msg.sender][_spender] = _value;
     emit Approval(msg.sender, _spender, _value);
    return true;   
    }

    function allowances(address owner, address spender) public view returns (uint256 remaining){
        return allowance[owner][spender];
    }

    function burn(uint256 amount) public returns(bool){
     require(Users[msg.sender].Account >= amount, 'Account too low');
     Users[msg.sender].Account -= amount;
     balances[msg.sender] -= amount;
     totalSupply -= amount;
     if(Users[msg.sender].Account == 0){
     removefromlist(Users[msg.sender].Number);
     delete Users[msg.sender];
     Usercount -= 1;
     }
     return true;
    }

    function getOwner()external view returns(address){
    return creater;
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

被翻牌 2025-02-16 01:59:20

余额函数需要为余额

只是一个简单的大写字母!它只是表明您需要小心。

The balancesof function needed to be balancesOf.

Just a simple capital letter! It just goes to show how careful you need to be.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文