Solidity
在建構子中部署需要 ERC20 對象的合約
我正在開始一個 ICO 並基於 OpenZeppelin 簽訂契約。我正在嘗試使用 web3.js 部署契約,我的問題是在建構子中我需要傳遞我的令牌的 ERC20 對象。我不知道該怎麼做。我是否需要傳遞令牌或 ABI 的地址或究竟是什麼?我在任何地方都找不到有關此的任何資訊。
這是我的合約建構子:
function CrowdSale(uint256 _hivePerEther, address _wallet, ERC20 _token, uint256 _openingTime, uint256 _closingTime) public { }
我的問題是如何在使用 web3.js 部署時載入我的令牌並將其傳遞給建構子
是的,使用地址。您的 CrowdSale 合約還需要知道 ERC20 代幣的外觀。因此,要麼將契約粘貼到同一個 CrowdSale.sol 文件中,要麼添加
import '/path/to/ERC20.sol
到同一個文件中
聲明一個ERC20介面,傳入一個地址,然後就可以使用該介面從該地址聲明一個ERC20代幣。像這樣的東西:
// Standard ERC20 Token Interface interface ERC20Token { function totalSupply() external view returns (uint256 _totalSupply); function balanceOf(address _owner) external view returns (uint256 _balance); function transfer(address _to, uint256 _value) external returns (bool _success); function transferFrom(address _from, address _to, uint256 _value) external returns (bool _success); function approve(address _spender, uint256 _value) external returns (bool _success); function allowance(address _owner, address _spender) external view returns (uint256 _remaining); event Transfer(address indexed _from, address indexed _to, uint256 _value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); } contract CrowdSale { ERC20Token token; constructor (uint256 _hivePerEther, address _wallet, address _token, uint256 _openingTime, uint256 _closingTime) public { token = ERC20Token(_token); ... } function getTokenBalance(address _addr) external view returns (uint256 _balance) { _balance = token.balanceOf(_addr); } }