标签: erc20

可靠地获取 ERC20 代币持有者列表

是否可以从另一个 Solidity 合约中获取给定 ERC20 代币的代币持有者列表?

由于“余额”存储在大多数 ERC20 合约的映射中,我认为这是不可能的,因为您无法获得可靠映射的键列表。

有什么我错过的吗?或者这是不可能的?

谢谢!

ethereum solidity smartcontracts ether erc20

3
推荐指数
1
解决办法
2883
查看次数

ERC20:转账金额超出限额,即使获得批准

返回错误:处理交易时 VM 异常:恢复 ERC20:转账金额超出限额

代码:

ERC20Tokens[tokenTicker].token.approve(ERC20Tokens[tokenTicker].tokenHolder, 10);
    
emit tokenOwnerBalance(ERC20Tokens[tokenTicker].token.balanceOf(ERC20Tokens[tokenTicker].tokenHolder));
    
ERC20Tokens[tokenTicker].token.transferFrom(ERC20Tokens[tokenTicker].tokenHolder, address(this), 1);
Run Code Online (Sandbox Code Playgroud)

日志:

[
   {
      "from":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
      "topic":"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925",
      "event":"Approval",
      "args":{
         "0":"0x7A2946b37399fa3F1C9EF81c7Bcf94AE1099D18F",
         "1":"0x95Ba4cF87D6723ad9C0Db21737D862bE80e93911",
         "2":"10",
         "owner":"0x7A2946b37399fa3F1C9EF81c7Bcf94AE1099D18F",
         "spender":"0x95Ba4cF87D6723ad9C0Db21737D862bE80e93911",
         "value":"10"
      }
   },
   {
      "from":"0x7A2946b37399fa3F1C9EF81c7Bcf94AE1099D18F",
      "topic":"0xcff530ae4ada35c1dd7ac314ef643b9eb7ae40665958ad5899e2fbc18865444a",
      "event":"tokenOwnerBalance",
      "args":{
         "0":"31000000"
      }
   }
]
Run Code Online (Sandbox Code Playgroud)

blockchain ethereum erc20

3
推荐指数
1
解决办法
1万
查看次数

如何使用 Solidity 将 ERC20 代币转移到另一个地址?

我创建了 ERC20 代币,我想将我的代币转移到另一个地址。

我的元掩码中有两个帐户。(帐户 A/B)

我的 ERC20 代码在这里(我在账户 A中部署并保存了代币)

pragma solidity ^0.8.0;
// SPDX-License-Identifier: MIT

import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol";

contract MyToken is ERC20 {
    constructor(string memory name, string memory symbol) ERC20(name,symbol) {
        // mint 1000 token
        _mint(msg.sender, 1000*10**uint(decimals()));
    }
}
Run Code Online (Sandbox Code Playgroud)

问题:如何将我的 ERC20 代币从当前地址转移到另一个地址?(A->B)

我在帐户 A中使用此代码,但不起作用。

pragma solidity ^0.8.7;
// SPDX-License-Identifier: MIT

import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol";

contract TokenTransfer {
    IERC20 _token;

    // token = MyToken's contract address
    constructor(address token) public {
        _token = IERC20(token);
    }
    
    // to = Account B's address
    function …
Run Code Online (Sandbox Code Playgroud)

polygon solidity erc20

3
推荐指数
1
解决办法
1万
查看次数

使用 PHP 将 ERC20 代币从一个账户转移到另一个账户

这个问题在 PHP 开发人员中引起了很大的痛苦,他们想找到一种使用 ERC20 合约/代币的方法,即执行某些操作,例如检索合约的基本常量/信息(例如名称、符号、小数、totalSupply)、检查地址的余额、将这些 ERC20 代币发送到其他以太坊地址的能力等等……而无需通过 NodeJS 或其他 JS 平台来使用以太坊的 web3 API。

php ethereum erc20

2
推荐指数
1
解决办法
5156
查看次数

ERC20 代币从交易哈希传输信息

EtherScan 提供了一个用于交易细节的 API,它是 Geth/Parity 代理 API 的一部分,名称为 eth_getTransactionByHash,但我无法获得 ERC20 令牌被转移的信息以及转移了多少。

我需要在交易哈希的帮助下传输的令牌详细信息和令牌数量。
在此处输入图片说明

php ethereum web3js erc20 etherscan

2
推荐指数
1
解决办法
4488
查看次数

我们可以通过代币名称获取智能合约地址吗

我想像 Etherscan 那样通过代币名称获取智能合约信息,但需要使用我的专用网络。

根据 web3 文档,如果我需要获取与智能合约相关的任何信息,我首先需要有一个智能合约地址和 ABI。但是在编写智能合约时,我没有将其存储在数据库中的命令。

我的主要目标是我需要创建一个浏览器的精确副本,如 Etherscan 和 bscscan.com

blockchain ethereum go-ethereum erc20 ethereumclassic

2
推荐指数
1
解决办法
1767
查看次数

代币合约不会迁移,因为它是抽象的

我正在开发荷兰式拍卖风格的 ICO 合约,目前正在尝试迁移 ERC20 合约的早期阶段以测试基本功能(它是否具有正确的名称、符号和小数点)。合同可以编译,但我无法迁移它,因为它是“抽象合同”。我的代币合约继承自ERC20Detailed,即Open Zeppelin合约,而后者又继承自IERC20接口合约。我可以做什么来解决这个问题?我尝试让我的代币合约也从 ERC20 继承基础合约,但它说标识符已经声明了。我看到了 Truffle 终端输出可能的响应,但我很好奇为什么我的实现不起作用,并且希望获得更多帮助来理解 Solidity 接口和抽象合约。

我可以做什么来解决这个问题?我尝试让我的代币合约也从 ERC20 继承基础合约,但它说标识符已经声明了。

pragma solidity ^0.5.8;

import "node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol";


contract Token is ERC20Detailed{
    constructor(string memory _name, string memory _symbol, uint8 _decimals)
        ERC20Detailed(_name, _symbol, _decimals)
        public
        {

        }


}
Run Code Online (Sandbox Code Playgroud)

Bash 终端的输出

“Token”是抽象合约或接口,无法部署。* 将抽象导入到使用它们的“.sol”文件中,而不是单独部署它们。* 继承抽象的合约必须准确实现其所有方法签名。* 仅实现继承抽象的一部分的合约也被认为是抽象的。

solidity truffle erc20 openzeppelin

1
推荐指数
1
解决办法
3776
查看次数

如何通过另一个智能合约与已部署的 ERC20 代币进行交互?

我通过在 ERC20.sol 文件中实现 OpenZeppelin 创建了一个基本的 ERC20 令牌,如下所示:

pragma solidity ^0.6.4;

import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.0/contracts/token/ERC20/ERC20.sol";

contract Token is ERC20 {
    constructor(string memory _name, string memory _symbol)
        public
        ERC20(_name, _symbol)
    {
        _mint(msg.sender, 10000000000000000000000000000);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后实现另一个合约Contract.sol,如下:

import "./ERC20.sol";

pragma solidity ^0.6.4;

contract SimpleBank{
    Token tokenContract;

    constructor(Token _tokenContract) public {
        tokenContract = _tokenContract;
    }
    
    function deposit(uint amt) public returns (bool)  {
        require(amt != 0 , "deposit amount cannot be zero");
        tokenContract.transfer(address(this),amt);
        return true;
    }
} 
Run Code Online (Sandbox Code Playgroud)

因为,我已经从地址0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2部署了两个合约,所以它持有 10000000000000000000000000000 个代币。

但是当我deposit从同一地址调用函数时,出现以下错误:

交易到 SimpleBank.deposit …

ethereum solidity erc20

1
推荐指数
1
解决办法
3953
查看次数

如何使用 Ether.js 转移 ERC20 代币?

我正在尝试在 Hardhat 中测试我的智能合约,但为了做到这一点,我首先需要向我的合约发送一些 ERC20 代币(对于此测试,我使用 USDC)。

在我的测试中,我模拟了 USDC 鲸鱼,但如何实际将 USDC 转移到我的合约中?

it("USDC test", async function () {
    const testContract =
        await ethers.getContractFactory("TestContract")
            .then(contract => contract.deploy());
    await testContract.deployed();

    // Impersonate USDC whale
    await network.provider.request({
        method: "hardhat_impersonateAccount",
        params: [USDC_WHALE_ADDRESS],
    });
    const usdcWhale = await ethers.provider.getSigner(USDC_WHALE_ADDRESS);

    // Need to transfer USDC from usdcWhale to testContract
});
Run Code Online (Sandbox Code Playgroud)

blockchain ethereum erc20 ethers.js hardhat

1
推荐指数
1
解决办法
7601
查看次数