我从openzeplin进口erc20,但它不起作用!
这是代码
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol";
contract lock is ERC20{
}这是错误
TypeError: Contract "lock" should be marked as abstract.
--> learning/lock.sol:6:1:
|
6 | contract lock is ERC20{
| ^ (Relevant source part starts here and spans across multiple lines).
Note: Missing implementation:
--> https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol:54:5:
|
54 | constructor(string memory name_, string memory symbol_) {
| ^ (Relevant source part starts here and spans across multiple lines).发布于 2022-04-25 11:39:25
正如在open的文档中所描述的,您应该实现构造函数,否则您的契约需要标记为抽象,因为您的错误也指定了这一点。
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract lock is ERC20 {
constructor()...
}发布于 2022-04-25 14:57:51
我想用它锁定合同,我不需要名字,供应。当我从构造函数中删除参数时,它会给出相同的错误。
我假设您希望在智能契约中锁定特定的令牌。要解决此问题,可以使用ERC20智能契约(如状态变量)和访问erc20智能契约方法。您可以看到这个例子:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol";
contract lock {
ERC20 _token;
constructor(address _tokenAddress) {
_token = ERC20(_tokenAddress);
}
// Get name about ERC20 token
function getName() external view returns(string memory) {
return _token.name();
}
}https://ethereum.stackexchange.com/questions/126846
复制相似问题