私はこの OpenZeppelin チュートリアルを進めています: https://docs.openzeppelin.com/learn/developing-smart-contracts?pref=truffleで、手順に正確に従いました。ただし、Auth コントラクトをインポートした後にコントラクトをコンパイルすると、コンパイルが失敗し、Identifier not found or not unique と表示されます。
これは私が得るエラーです: contract/Box.sol:10:5: DeclarationError: Identifier not found or not unique. プライベート認証を認証します。^--^
私のディレクトリは、チュートリアルとまったく同じようにセットアップされていますが、Auth.sol は access-control というディレクトリにありましたが、機能しません。
実行しようとしているコードは次のとおりです。
// contracts/Box.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
// Import Auth from the access-control subdirectory
import "./access-control/Auth.sol";
contract Box {
uint256 private value;
Auth private auth;
event ValueChanged(uint256 newValue);
constructor(Auth _auth) public {
auth = _auth;
}
function store(uint256 newValue) public {
// Require that the caller is registered as an administrator in Auth
require(auth.isAdministrator(msg.sender), "Unauthorized");
value = newValue;
emit ValueChanged(newValue);
}
function retrieve() public view returns (uint256) {
return value;
}
}