Opinionated Smart Contract Library for Solidity
- Opinionated implementations of standards like ERC20 & ERC721.
- Flexible role-based permissioning scheme.
- Reusable Solidity components to build custom contracts and complex decentralized systems.
$ npm install @roberts/contracts
Warning
When installing via git, it is a common error to use the master branch. This is a development branch that should be avoided in favor of tagged releases. The release process involves security measures that the master branch does not guarantee.
Warning
Foundry installs the latest version initially, but subsequent forge update commands will use the master branch.
$ forge install roberts/contracts
Add @roberts/contracts/=lib/roberts/contracts/ in remappings.txt.
Once installed, you can use the contracts in the library by importing them:
pragma solidity ^0.8.20;
import {ERC721} from "@roberts/contracts/token/ERC721/ERC721.sol";
contract MyCollectible is ERC721 {
constructor() ERC721("MyCollectible", "MCO") {
}
}If you're new to smart contract development, head to Developing Smart Contracts to learn about creating a new project and compiling your contracts.
To keep your system secure, you should always use the installed code as-is, and neither copy-paste it from online sources nor modify it yourself. The library is designed so that only the contracts and functions you use are deployed, so you don't need to worry about it needlessly increasing gas costs.
The library also has single file contracts for ERC20 and other opinionated implementations we have used for clients.
The guides in the OpenZeppelin documentation site will teach about different concepts, and how to use the related contracts this package inherits from OpenZeppelin Contracts such as:
- Access Control: decide who can perform each of the actions on your system.
- Tokens: create tradeable assets or collectives, and distribute them via Crowdsales.
- Utilities: generic useful tools including non-overflowing math, signature verification, and trustless paying systems.
The full API is also thoroughly documented, and serves as a great reference when developing your smart contract application. You can also ask for help or follow Contracts' development in the community forum.
Finally, you may want to take a look at the guides on our blog, which cover several common use cases and good practices. The following articles provide great background reading, though please note that some of the referenced tools have changed, as the tooling in the ecosystem continues to rapidly evolve.
- The Hitchhiker’s Guide to Smart Contracts in Ethereum will help you get an overview of the various tools available for smart contract development, and help you set up your environment.
- A Gentle Introduction to Ethereum Programming, Part 1 provides very useful information on an introductory level, including many basic concepts from the Ethereum platform.
- For a more in-depth dive, you may read the guide Designing the Architecture for Your Ethereum Application, which discusses how to better structure your application and its relationship to the real world.
This project is maintained by Roberts Contracts with the goal of building on OpenZeppelin's secure and reliable library of smart contract components with our opinionated functionality desicions. We address security through risk management in various areas such as engineering and open source best practices, scoping and API design, multi-layered review processes, and incident response preparedness.
Smart contracts are a nascent technology and carry a high level of technical risk and uncertainty. Although OpenZeppelin is well known for its security audits, using OpenZeppelin or Roberts Contracts is not a substitute for a security audit.
Roberts Contracts is made available under the MIT License, which disclaims all warranties in relation to the project and which limits the liability of those that contribute and maintain the project, including Roberts Contracts dev team. As set out further in the Terms, you acknowledge that you are solely responsible for any use of Roberts Contracts and you assume all risks associated with any such use.
Roberts Contracts exists thanks to its contributors. There are many ways you can participate and help build high quality software.
Roberts Contracts is released under the MIT License.