Skip to content

Smart collateral contract for building smart libraries. Uses collateral to align incentives between lenders and borrowers

Notifications You must be signed in to change notification settings

pmoncada/junto_contracts

 
 

Repository files navigation

Junto

A smart collateral contract to solve the game theoretical nash-equilibrium for sharing items with others. This contract aligns incentives using collateral that can be destroyed by either party if the contract falls through. Trying to make sharing easier / less risky!

See this post for more details: DALi - web3 libraries

This project uses a starter kit for developing, testing, and deploying smart contracts with a full Typescript environment. This stack uses Buidler as the platform layer to orchestrate all the tasks. Ethers is used for all Ethereum interactions and testing.

Blog Post

Using this Project

Clone this repository, then install the dependencies with npm install. Build everything with npm run build. https://buidler.dev has excellent docs, and can be used as reference for extending this project.

Available Functionality

Build Contracts

npm run compile

Generate TypeChain Typings

npm run build

Run Contract Tests & Get Callstacks

In one terminal run npx buidler node

Then in another run npm run test

Notes:

  • As is, the tests fail on purpose. This is to show the Solidity stack traces that Buidler enables!
  • The gas usage table may be incomplete (the gas report currently needs to run with the --network localhost flag; see below).

Run Contract Tests and Generate Gas Usage Report

In one terminal run npx buidler node

Then in another run npm run test -- --network localhost

Notes:

  • When running with this localhost option, you get a gas report but may not get good callstacks
  • See here for how to configure the gas usage report.

Run Coverage Report for Tests

npm run coverage

Notes:

  • running a coverage report currently deletes artifacts, so after each coverage run you will then need to run npx buidler clean followed by npm run build before re-running tests
  • the branch coverage is 75%

Deploy to Ethereum

Create/modify network config in buidler.config.ts and add API key and private key, then run:

npx buidler run --network rinkeby scripts/deploy.ts

Verify on Etherscan

Add Etherscan API key to buidler.config.ts, then run:

npx buidler verify-contract --contract-name Counter --address <DEPLOYED ADDRESS>

Enhancement Wish List

  • Better migrations strategy (Buidler working on this)

PRs and feedback welcome!

About

Smart collateral contract for building smart libraries. Uses collateral to align incentives between lenders and borrowers

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 34.3%
  • Solidity 31.4%
  • TypeScript 28.4%
  • HTML 4.9%
  • Other 1.0%