Git Product home page Git Product logo

solidterms's Introduction

Ricardian Contracts for Solidity

A simple abstract contract for implementing Ricardian contracts as part of a SmartContract.

In this case there is a an offerer, which is initially the address creating the contract.

  • The offerer creates a contract like a terms of service and uploads it to IPFS.
  • The resulting ipfs hash is added to the contract using the changeContract function
  • At this point the contract is considered active
  • Other parties can call the accept() function providing the same ipfs hash
  • This is recorded as an acceptance of the contract by the msg.sender
  • The contract author can mark functions as hasAccepted, which means that they are only allowed to be used by parties who have accepted the agreement

Changing the contract

The offerer can change the agreement using the same changeContract function

To force parties to accept the new agreement, a modifier hasAcceptedLatest can be used on functions

Running example:

You need a local ipfs node running at the moment or change code in app.js to point at a public one.

Install truffle and testrpc

npm install -g truffle
npm install -g ethereumjs-testrpc

In a terminal start testrpc:

testrpc

In another terminal install the contract and run the server:

truffle deploy
truffle serve

Try it out

solidterms's People

Contributors

pelle avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.