Solidity

錯誤 HH411:未安裝庫 openzeppelin-solidity。嘗試使用 npm 安裝它(對於舊的 0.5.0 可靠程式碼)

  • July 20, 2021

我有像這樣的文件的solidity項目

pragma solidity ^0.5.0;

import "openzeppelin-solidity/contracts/ownership/Ownable.sol";

當我嘗試編譯時,未安裝庫出現錯誤

npx hardhat compile                
Error HH411: The library openzeppelin-solidity, 
imported from contracts/....sol, is not installed. 
Try installing it using npm.

我試過安裝

npm install @openzeppelin/contracts

和與solidity v0.5.0 適當匹配的v3.1.0

npm install @openzeppelin/contracts@3.1.0

但得到同樣的錯誤。

那麼這個openzeppelin-solidity庫是什麼,如何安裝呢?

感謝@zmy 評論,指向https://www.npmjs.com/package/openzeppelin-solidity

2.3.0 是 npm 系統資料庫上的最早版本,如“@openzeppelin/contracts”

https://www.npmjs.com/package/@openzeppelin/contracts

openzeppelin-solidity 有舊版本

https://www.npmjs.com/package/ openzeppelin-solidity

所以安裝應該像

npm i openzeppelin-solidity@2.2.0   

和 2.1.0-2.5.1 範圍內的版本(對於solidity v0.5.0)

2.1.0 是針對solidity v0.5.0 的第一個版本 https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/CHANGELOG.md#210-2019-01-04

3.1.0 是最後一個 openzeppelin-contracts 版本使用solidity v0.5.0 https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/CHANGELOG.md#320-2020-09-10

3.0.0 (2020-04-20) AccessControl:新契約用於管理系統中的權限,替換 Ownable。

所以自 v3.0.0 起 Ownable 不可用

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/CHANGELOG.md#300-2020-04-20

最新的是 v4.2.0 (2021-06-30) , 自 v4.0 起需要solidity 0.8.0

你的程式碼是錯誤的。正確的程式碼應該是這樣的。

import "@openzeppelin/contracts/access/Ownable.sol";

沒有這樣的庫openZeppelin-solidity,正確的庫是@openZeppelin/contracts

引用自:https://ethereum.stackexchange.com/questions/103785