openzeppelin-contracts | OpenZeppelin Contracts is a library for secure smart contract development | Blockchain library

 by   OpenZeppelin JavaScript Version: v4.9.1 License: MIT

kandi X-RAY | openzeppelin-contracts Summary

kandi X-RAY | openzeppelin-contracts Summary

openzeppelin-contracts is a JavaScript library typically used in Blockchain, Ethereum applications. openzeppelin-contracts has no bugs, it has no vulnerabilities, it has a Permissive License and it has medium support. You can install using 'npm i openzeppelin-solidity' or download it from GitHub, npm.

A library for secure smart contract development. Build on a solid foundation of community-vetted code. :mage: Not sure how to get started? Check out Contracts Wizard — an interactive smart contract generator.

            kandi-support Support

              openzeppelin-contracts has a medium active ecosystem.
              It has 22449 star(s) with 11449 fork(s). There are 649 watchers for this library.
              There were 6 major release(s) in the last 12 months.
              There are 147 open issues and 1522 have been closed. On average issues are closed in 190 days. There are 58 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of openzeppelin-contracts is v4.9.1

            kandi-Quality Quality

              openzeppelin-contracts has 0 bugs and 0 code smells.

            kandi-Security Security

              openzeppelin-contracts has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              openzeppelin-contracts code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              openzeppelin-contracts is licensed under the MIT License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              openzeppelin-contracts releases are available to install and integrate.
              Deployable package is available in npm.
              Installation instructions, examples and code snippets are available.

            Top functions reviewed by kandi - BETA

            kandi has reviewed openzeppelin-contracts and discovered the below as its top functions. This is intended to give you an instant insight into openzeppelin-contracts implemented functionality, and help decide if they suit your requirements.
            • List files recursively
            Get all kandi verified functions for this library.

            openzeppelin-contracts Key Features

            No Key Features are available at this moment for openzeppelin-contracts.

            openzeppelin-contracts Examples and Code Snippets

            No Code Snippets are available at this moment for openzeppelin-contracts.

            Community Discussions


            I'm trying to implement openzeppelin's minimal proxy clone contract on TRON blockchain
            Asked 2022-Mar-23 at 03:33

            The openzeppelin minimal proxy contract here has this function predictDeterministicAddress() that hashes values like the sender's address, a salt... to generate a contract address that the create2 function will also generate, when its passed the same values as dictated in this EIP.

            This EIP states that an arbitrary value 0xff when hashed with a salt, senders address and the contract bytecode will always generate the same address.

            Im trying to implement the predictDeterministicAddress() function on TRON blockchain but the TRON docs specify a different arbitrary value, 0x41 for implementing this same feature.
            I tried to just replace the values but i can't see where the openzeppelin team used the value 0xff in their function.

            Below is the openzeppelin hashing function:



            Answered 2022-Mar-23 at 03:33

            According to solidity's official documentation (, the algorithm for calculating create2 addresses should be as follows:



            What are the rules (syntax) for importing from Github repo to Solidity Contract
            Asked 2022-Mar-18 at 22:02

            I have the following import statement in a Solidity contract ( this works).



            Answered 2022-Mar-18 at 22:02

            Your snippet shows a direct import that searches for the file in your local directories based on the compiler config.

            One of the default sources is the node_modules directory where NPM packages are installed.

            The @ symbol is just a prefix of NPM scoped packages, allowing to group more packages into the same namespace (in this case @openzeppelin/).

            To import a contract from GitHub, you can just pass its full URL:



            Rust ink, Unable to use imported module due an "unresolved import" error
            Asked 2022-Mar-07 at 12:21

            I'm trying to use my custom ERC20 contract that is stored in my local storage in the SWAP project that I'm working on.

            the error I'm getting while trying to use the erc20 import inside the SWAP contract:



            Answered 2022-Mar-04 at 15:42


            use erc20::Erc20;


            use erc20::Erc20Ref;

            Put this at the top of the ERC20 contract:

            pub use self::erc20::{Erc20, Erc20Ref};

            You can see an example of this in the subber contract where it specifies itself as SubberRef and is then called from the main delegator contract



            Brownie compile ValueError: Invalid NPM block with OpenZeppelin
            Asked 2022-Feb-10 at 20:08

            *****top lines of my .sol file // SPDX-License-Identifier: MIT pragma solidity ^0.8.0;

            import "@openzeppelin/contracts/token/ERC721/ERC721.sol";

            contract ParcelAsset is ERC721 {

            ******command line VScode brownie compile contracts\ParcelAsset.sol

            I get this error. ValueError: Invalid NPM block in '>=0.6.0 <0.8.0 import "@openzeppelin/contracts/token/ERC721/ERC721.sol"': 'import'

            *********** snippet of my brownie-config.yaml dependencies:

            • smartcontractkit/chainlink-brownie-contracts@1.1.1
            • OpenZeppelin/openzeppelin-contracts@3.4.0 compiler: solc: remappings:
              • '@chainlink=smartcontractkit/chainlink-brownie-contracts@1.1.1'
              • '@openzeppelin=OpenZeppelin/openzeppelin-contracts@3.4.0'

            I have tried npm install @openzeppelin/contracts and upadating solidity to 0.8.0

            Anyone known what I am doing wrong?



            Answered 2022-Feb-10 at 20:08

            I solved it by doing: npm install @chainlink/contracts --save

            and in the yaml file doing:

            I personally didn't bother importing openzeppelin because all safemath functionalities (if that is what you are importing) are already implemented into solidity 0.8.0, so if you're using solidity 0.8.0, the safemath library is obsolete



            ParserError: Source file requires different compiler version
            Asked 2022-Feb-08 at 13:18

            I tried all that you mentioned in the discussion here (in other questions) and at , however it is not solving the issue for me, I also noticed that the current compiler version remains (current compiler is 0.6.12+commit.27d51765.Windows.msvc). But when I right click and select Solidty:Compiler information, it shows 0.8.0.

            from output:



            Answered 2022-Jan-02 at 03:09

            i had the same issue. i had this compiler setting:



            Is it possible to call a ERC20 function inside a ERC721 contract?
            Asked 2022-Jan-28 at 04:55

            What I am trying to achieve is calling a transferFrom from ERC20 contract inside an ERC721 contract like this:

            My ERC20 contract:



            Answered 2022-Jan-11 at 14:03

            In order to interact with an ERC20 token, you have to create an instance of it from the desired contract. You would need to import ERC20 to your nfts contracts, and then create an ERC20 token instance pointing to your token. It would be something like this:



            Burning Deployed ERC Tokens In an NFT Mint Function - Compiles, but Transaction Fails
            Asked 2022-Jan-14 at 18:56

            I am very new to Solidity, and have recently been working on trying to learn the ropes. For reference, I have been using code from this video ( as a primer after having gone through the basic crypto zombies tutorial series.

            I have been attempting to adapt the Solidity contract code presented in this video (which I had functioning just fine!) to require a Burn of a specified amount of an ERC-20 token before minting an NFT as an exercise for myself. I thought I had what should be a valid implementation which compiled in Remix, and then deployed to Rinkeby. I call the allowAccess function in Remix after deploying to Rinkeby, and that succeeds. But, when I call the mint function with the two parameters, I get: "gas estimation errored with the following message (see below). The transaction execution will likely fail. Do you want to force sending? execution reverted."

            If I still send the transaction, metamask yields "Transaction xx failed! Transaction encountered an error.".

            I'm positive it has to do with "require(paymentToken.transfer(burnwallet, amounttopay),"transfer Failed");", though I'm not sure what's wrong. Below is my entire contract code. I'm currently just interacting with the Chainlink contract on Rinkeby as my example, since they have a convenient token faucet.



            Answered 2022-Jan-14 at 18:56

            I'm not sure why are you trying to burn link in order to mint and nft but first check if the link code does not have a require that check if the destination address is the burn address if it has then burn the link is not possible and you should use any other erc20 maybe your own erc20, also your contract probably does not have any link and if you want to transfer the link from the user you should do this in the contract paymentToken.transferFrom(msg.sender,destinationAddress,amount) and if the user previously approve your contract you will able to send the tokens, and i suppose that the purpose of the allowAccess function is to make the user approve the contract to move the tokens that will never work, the approve function let's anyone that call it approve any address to move an amount of tokens, the thing is that to know who is approving to let other to move the tokens the function use msg.sender to explain how this work take a look at this example

            let's say that your contract is the contract A and the link contract is the contract B

            now a user call allowAccess in the contract A, so here the msg.sender is the user because they call the function

            now internally this function call approve on contract B, here the contract A is the msg.sender, because the contract is who call the function

            so what allowAccess is really doing is making the contract approving itself to move their own tokens that I assume it doesn't have



            Sending ERC20 tokens using the transfer function
            Asked 2022-Jan-04 at 20:41

            I'm pretty new to programing in solidity and I'm currently trying to run a simple smart contract in Remix, seen bellow:



            Answered 2022-Jan-04 at 20:41


            How to add tokenomics to a ERC20 token?
            Asked 2021-Dec-11 at 22:16

            I have taken different courses and even tho they explain how to make a token I haven't been able to learn how to implement tokenomics.

            For example fees for transactions, burning to LP etc...

            I leave a link to the openzeppelin standard

            Would be great to have some more detailed examples on it.




            Answered 2021-Dec-11 at 22:16

            What you are looking for is to make a custom _transfer() method by overriding the one provided in the OpenZeppelin ERC20 standard.

            You can check with the "OXB" ( token, which implements this type of fee, but basically you just take tokens from the sender before sending them to the receiver, and once you are done charging the fees you can send the remaining tokens to the receiver.

            An example would be:



            Member "transfer" not found or not visible
            Asked 2021-Nov-18 at 15:46

            I have two contract that are separately deployed.




            Answered 2021-Nov-18 at 15:46

            FirstContract derives from ERC721 but your link at the end of the question points at ERC20 contract. So the definition of transfer() in the ERC20 is not relevant in this context.


            Community Discussions, Code Snippets contain sources that include Stack Exchange Network


            No vulnerabilities reported

            Install openzeppelin-contracts

            OpenZeppelin Contracts features a stable API, which means your contracts won't break unexpectedly when upgrading to a newer minor version. An alternative to npm is to use the GitHub repository openzeppelin/openzeppelin-contracts to retrieve the contracts. When doing this, make sure to specify the tag for a release such as v4.5.0, instead of using the master branch.


            OpenZeppelin Contracts exists thanks to its contributors. There are many ways you can participate and help build high quality software. Check out the contribution guide!.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
          • HTTPS


          • CLI

            gh repo clone OpenZeppelin/openzeppelin-contracts

          • sshUrl


          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular Blockchain Libraries


            by bitcoin


            by ethereum


            by lerna


            by OpenZeppelin


            by bitcoinbook

            Try Top Libraries by OpenZeppelin


            by OpenZeppelinJavaScript


            by OpenZeppelinJavaScript


            by OpenZeppelinPython


            by OpenZeppelinTypeScript


            by OpenZeppelinJavaScript