Solidity - 标识符未找到或不唯一 onlyOwner()
Solidity - Identifier not found or not unique onlyOwner()
当 运行 truffle compile
:
时出现以下松露编译错误
DeclarationError : Identifier not found or not unique.
--> project:/contracts/TestCoin.sol:183:56:
|
183 | function excludeFromRewards(address account) public onlyOwner() {
|
我的令牌合约中有以下代码。
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/math/SafeMath.sol";
import "@openzeppelin/contracts/utils/Address.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
contract TestCoin is ERC20 {
constructor(_name, _symbol) {
_name = name();
_symbol = symbol();
}
.......
function excludeFromRewards(address account) public onlyOwner() {
.......
}
.......
}
有人知道我在这里错过了什么吗?我似乎无法解决这个问题,我正在导入 Ownable.sol
文件,所以我很困惑为什么会这样。我需要说使用 Ownable 作为进口的任何东西吗?我假设它只会继承那些导入。
更新:
如果我调用位于 ownable.sol 中的所有者函数,我会得到同样的错误。
if(owner() == msg.sender)
Undeclared identifier.
if(owner() == msg.sender)
^^^^^
它似乎无法识别该文件。有什么想法吗?
更新 #2:
我想通了并在下面发布了我的解决方案。谢谢!
好的,我明白了。我需要将 Ownable 注入合约本身,这样它才可用。
contract TestCoin is ERC20, Ownable {
*********
}
当 运行 truffle compile
:
DeclarationError : Identifier not found or not unique.
--> project:/contracts/TestCoin.sol:183:56:
|
183 | function excludeFromRewards(address account) public onlyOwner() {
|
我的令牌合约中有以下代码。
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/math/SafeMath.sol";
import "@openzeppelin/contracts/utils/Address.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
contract TestCoin is ERC20 {
constructor(_name, _symbol) {
_name = name();
_symbol = symbol();
}
.......
function excludeFromRewards(address account) public onlyOwner() {
.......
}
.......
}
有人知道我在这里错过了什么吗?我似乎无法解决这个问题,我正在导入 Ownable.sol
文件,所以我很困惑为什么会这样。我需要说使用 Ownable 作为进口的任何东西吗?我假设它只会继承那些导入。
更新:
如果我调用位于 ownable.sol 中的所有者函数,我会得到同样的错误。
if(owner() == msg.sender)
Undeclared identifier.
if(owner() == msg.sender)
^^^^^
它似乎无法识别该文件。有什么想法吗?
更新 #2:
我想通了并在下面发布了我的解决方案。谢谢!
好的,我明白了。我需要将 Ownable 注入合约本身,这样它才可用。
contract TestCoin is ERC20, Ownable {
*********
}