19
votes
What is the reason behind writing "using Counters for Counters.counters" when using the Counters openzeppelin library
Counters is a library.
When we say using A for B, it means that we attach every function from library A to type B.
Libraries are an efficient way to reduce gas fees, because they are deployed only ...
16
votes
HardhatError: HH700: Artifact for contract "Greeter" not found - clarification [Hardhat, openzeppelin]
Keep in mind that your solidity contract's name has to match, too.
If you try to deploy with
const License = await ethers.getContractFactory('License');
this works
contract License {...}
this doesn'...
13
votes
Slither Tool Error On Contract That Inherit From Openzeppeling
Slither use crytic-compile for compiling your contracts. If you specify the path to your contract crytic-compile will try to compile it using your installed solc version. solc can't resolve your "...
13
votes
Accepted
What does ERC721URIStorage actually mean?
It means that the tokenURIs are also stored in "storage". The base implementation in ERC721.sol reads the baseURI in memory and concatenates the resulting String on-the-fly, without storing ...
12
votes
What's the point of ERC721Receiver.sol and ERC721Holder.sol in OpenZeppelin's implementation?
I know this thread has been here for two years, but I think the question has not been fully answered. See another post I put up here.
The real question is even having this onERC721Received function ...
12
votes
Accepted
Function _setTokenURI() in ERC721 is gone in OpenZeppelin ^0.8.0 contracts
I raised this question to the OpenZeppelin forum and they quickly replied with the following feedback:
It is a Beta release and there may be small breaking changes prior to the stable release. There ...
12
votes
How to get implementation address after deployProxy()? (@open-zepplin/hardhat-upgrades)
You can also use the hardhat upgrades plugin for the same effect as the accepted answer:
import { ethers, upgrades } from "hardhat";
const currentImplAddress = await upgrades.erc1967....
11
votes
Accepted
Error: Transaction reverted: function call to a non-contract account
It means, the interface is trying to call a contract that doesn't exist.
11
votes
Accepted
Difference between __init and __init_unchained
From OpenZeppelin's docs, there is the following section:
Initializer functions are not linearized by the compiler like constructors. Because of this, each __{ContractName}_init function embeds the ...
10
votes
Is it possible to include all the openzeppelin library files on Remix?
The easiest is to use remixd to share your build directory with remix. Here are indication how to configure it Accessing a shared folder in Remix IDE using Remixd.
Another option is to use the remix ...
10
votes
safeTransferFrom is undefined in buidler test
Ran into this myself as well. Are you using ethers.js with Buidler?
The safeTransferFrom method is overloaded and generally with ethers.js the bare definition is the default method used.
If you run ...
10
votes
Error: Transaction reverted: function call to a non-contract account
The following line in your contract is triggering the error.
uint x = IERC20(0x4F96Fe3b7A6Cf9725f59d353F723c1bDb64CA6Aa).balanceOf(address(this));
Looking at your hardhat config, you using a fresh ...
9
votes
Accepted
What's the point of ERC721Receiver.sol and ERC721Holder.sol in OpenZeppelin's implementation?
When using the safeTransferFrom function to send ERC721 tokens to a contract address, it will fail unless the receiving contract properly implements the ERC721TokenReceiver interface. (See the ERC721 ...
8
votes
An unexpected error occurred: Error: Cannot find module '@nomiclabs/hardhat-waffle' [Hardhat, openzeppelin]
The problem could be that you have not installed the hardhat waffle package. You should do:
npm install -D @nomiclabs/hardhat-waffle ethereum-waffle
then edit the hardhat.config.js file and add
...
8
votes
Accepted
How to override supportsInterface() function if contract needs to support many interfaces?
Your code already overrides the supportsInterface() method well and will cause all the extended contract's methods to be called. This method is also used by the OpenZeppelin Contracts Wizard.
If you ...
8
votes
Accepted
What's the benefit of using SafeERC20?
SafeERC20 is a wrapper library around ERC20 calls that make safe the interaction with someone else’s ERC20 token, in your contracts. What makes SafeERC20 better than then normal ERC20 is that the ...
7
votes
Accepted
How to get implementation address after deployProxy()? (@open-zepplin/hardhat-upgrades)
Try the below,
import { getImplementationAddress } from '@openzeppelin/upgrades-core';
const currentImplAddress = await getImplementationAddress(provider, proxyAddress);
7
votes
Accepted
Missing artifacts for openzeppelin contracts with hardhat
gm. Have you tried with npx hardhat clean before compiling?
It will clear the cache and delete all artifacts.
Source
6
votes
Why Transfer(0x0, _to, _amount) after Minting Tokens
That is not a transfer operations but an event notification.
This is done that way so block explorer and wallets that only interpret the 'Transfer' event can show the operation to the user. There ...
6
votes
Accepted
Error encountered, bailing. Network state unknown. Review successful transactions manually
The origin of the issue is because you're trying to deploy the contract from the file migrations/1_initial_migration.js that is supposed to be used only for the deployment of Migration.sol.
To deploy ...
6
votes
Accepted
How many storage gaps to add at the end of Base Upgradeable Contracts?
There is no optimal number as the use of storage gaps is just a convention.
I would suggest you use 50 as in the majority of the examples, but this is really up to you.
5
votes
Should INITIAL_SUPPLY & totalSupply be returned in Wei?
According to the ERC20 standard totalSupply returns an uint. Hence, this should be the amount of tokens in the smallest unit your token offers. This is not in Wei or any Ether unit, this is just the ...
5
votes
How to user SafeERC20 from zeppelin-solidity
The library SafeERC20 is to safely interact with a third party token. It is not to be used inside your own token contract.
OpenZeppelin contracts already have require to check for preconditions so ...
5
votes
How does the SafeMath library of OpenZeppelin protect your code from integer overflow?
How do you use it to protect your code?
Functions of SafeMath check logic conditions of math operations.
function sub(uint256 a, uint256 b...
assert(b <= a); // otherwise, subtracting b when (...
5
votes
Accepted
SafeMath library vs SafeMath contract on the inheritance chain
SafeMath's functions are all declared as internal. That means that the library doesn't actually have to be deployed, as the functions are 'inlined' by the compiler: their code is just copied from the ...
5
votes
How do I import from / install OpenZeppelin properly?
Here are the full steps starting from a blank truffle project. You could replace truffle init with truffle unbox <package> if you want to start from a Truffle box.
Create a new directory
...
5
votes
Does OpenZeppelin make security audits?
No, OpenZeppelin doesn't make security audits. OpenZeppelin is a community project that builds a framework of reusable smart contracts. The project doesn't offer any auditing services for things not ...
5
votes
Zeppelin OS: revert Cannot call fallback function from the proxy admin
Their documentation isn't the clearest on this one. https://docs.zeppelinos.org/docs/deploying.html
Note that we are using a specific address for the --from option which is different to the default ...
5
votes
Accepted
ERC20 not recognized by TokenTracker
Etherscan will recognize your contract once it will log its first Transfer event. This is how it works. Though, even before the first Transfer event was logged, you may view your contract in token ...
5
votes
Pros and Cons of smart contract upgradable patterns
OpenZeppelin uses the "unstructured storage" proxy pattern.
See the documentation for details:
https://docs.openzeppelin.com/sdk/2.5/pattern
OpenZeppelin in the proxy patterns blog post (https://blog....
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
openzeppelin × 571solidity × 329
openzeppelin-contracts × 124
erc-20 × 80
contract-development × 61
erc-721 × 60
truffle × 54
hardhat × 48
proxy-contracts × 38
tokens × 37
remix × 32
nft × 32
crowdsale × 26
web3js × 21
upgrading × 20
contract-design × 19
contract-upgrading × 17
blockchain × 15
brownie × 14
go-ethereum × 12
ico × 12
ethers.js × 12
erc-1155 × 12
import × 11
contract-deployment × 10