【发布时间】:2021-03-29 20:37:18
【问题描述】:
我正在玩以太坊智能合约,并注意到一些交易的一些奇怪行为。 交易是可见的,它表明代币被发送到一个地址,但是当我在 Metamask 上检查余额时,它不在这里(代币合约被添加到 MetaMask)。这种合同行为的原因可能是什么?
这是示例交易:https://ropsten.etherscan.io/tx/0xf3316c497fd47ee79be57be7b91cb96cc0414003a155d8ff8bc83b3a090594c9 200,000 个令牌被发送到 https://ropsten.etherscan.io/address/0x9DEF8C013eb590aFf09c8c76F9A74A3055fAA177#tokentxns,并显示在 ropsten 网络浏览器上,但我在 MetaMask 上看不到它们或对其进行操作。
这是我的智能合约的一部分,它确实转移了,我用注释“不可见”标记了对我不起作用的行:
function transfer(address to, uint256 value) public returns (bool) {
require(value <= _balances[msg.sender]);
require(to != address(0));
uint256 tokensToBurn = findOnePercent(value);
uint256 tokensToStack = findOnePercent(value);
uint256 tokenstoDeduct = tokensToBurn.add(tokensToStack);
uint256 tokensToTransfer = value.sub(tokenstoDeduct);
_balances[msg.sender] = _balances[msg.sender].sub(value);
_balances[to] = _balances[to].add(tokensToTransfer);
_totalSupply = _totalSupply.sub(tokenstoDeduct);
emit Transfer(msg.sender, to, tokensToTransfer); // visible on metaMask
emit Transfer(msg.sender, address(0), tokensToBurn); // burned
emit Transfer(msg.sender, address(VAULT_ADDRESS), tokensToStack); // invisible on metaMask
return true;
}
这是地址钱包截图:0x9DEF8C013eb590aFf09c8c76F9A74A3055fAA177
请告诉我在这里做错了什么。
[同时我向 MetaMask 提交了票,可能是钱包扩展的缺陷]
【问题讨论】:
标签: blockchain ethereum solidity metamask