Skip to content

roberts/contracts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Github Release NPM Package Coverage Status GitPOAPs Docs

Opinionated Smart Contract Library for Solidity

Overview

Installation

Hardhat (npm)

$ npm install @roberts/contracts

Foundry (git)

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.

Usage

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.

Learn More

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.

Security

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.

Contribute

Roberts Contracts exists thanks to its contributors. There are many ways you can participate and help build high quality software.

License

Roberts Contracts is released under the MIT License.

About

Ethereum Contracts Library NPM Package

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published