Skip to content
Open source library for registry smart contracts
JavaScript Solidity Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
contracts fix a spelling error in a comment Nov 28, 2018
migrations remove migrations Oct 26, 2018
scripts
test Rename item reference from data to id Nov 27, 2018
.babelrc initial commit Sep 18, 2018
.gitattributes initial commit Sep 18, 2018
.gitignore init zos Oct 26, 2018
.solcover.js initial commit Sep 18, 2018
README.md rename to registry-builder and redploy to zos Dec 9, 2018
package-lock.json rename to registry-builder and redploy to zos Dec 9, 2018
package.json
truffle.js remove extra line Oct 26, 2018
zos.json
zos.kovan.json rename to registry-builder and redploy to zos Dec 9, 2018
zos.mainnet.json rename to registry-builder and redploy to zos Dec 9, 2018
zos.rinkeby.json rename to registry-builder and redploy to zos Dec 9, 2018
zos.ropsten.json

README.md

registry-builder

*** DISCLAIMER: Current version contracts are not thoroughly tested or audited. Use at own risk ***

About

This library aims to be a readable and modular library for registries and TCR's. Ideally developers can use these contracts to deploy their TCR or use these contracts as an extension onto their personalized registry contract.

Setup

Install node modules:

$ npm install

Compile contracts:

$ npm run compile

Run tests:

$ npm run test

Using from ZeppelinOS

You can create a TCR instance using ZeppelinOS by linking to this EVM package. This will use the logic contracts already deployed to mainnet, kovan, ropsten, or rinkeby, reducing your gas deployment costs.

As an example, to create an instance of a registry using ZeppelinOS, run the following commands:

$ npm install -g zos
$ zos init YourProject
$ zos link registry-builder
$ zos push --network rinkeby
> Connecting to dependency registry-builder 0.1.0
$ zos create registry-builder/OwnedItemRegistry --network rinkeby --from $SENDER
> Instance created at ADDRESS

It is strongly suggested to use a non-default address (this is, not the first address in your node) as $SENDER.

Check out this example project for creating a more interesting full TCR instead of a basic owned item registry.

Contract Structure

Registry Interface

IRegistry.sol

interface IRegistry {
  function add(bytes32 data) public;
  function remove(bytes32 data) public;
  function exists(bytes32 data) public view returns (bool item);
}

Challenge Interface

IChallengeFactory.sol

interface IChallengeFactory {
  function create(address registry, address challenger, address applicant) returns (address challenge);
}

IChallenge.sol

interface IChallenge {
  // returns the address of the challenger
  function challenger() view returns (address);

  // returns true if the challenge has ended
  function close() public;

  // returns whether challenge has been officially closed
  function isClosed() public view returns (bool);

  // returns true if the challenge has passed
  // reverts if challenge has not been closed
  function passed() public view returns (bool);

  // @notice returns the amount of tokens the challenge must
  // obtain to carry out functionality
  function fundsRequired() public view returns (uint);

  // @dev returns amount to be rewarded to challenge winner
  function winnerReward() public view returns (uint);
}

Code Review

You can’t perform that action at this time.