GithubHelp home page GithubHelp logo

mbestavros / supplychain Goto Github PK

View Code? Open in Web Editor NEW
2.0 4.0 2.0 5.36 MB

Final project for CS651: Distributed Systems. Blockchain mixed with distributed systems.

Go 66.40% Python 5.35% CSS 0.37% JavaScript 0.20% HTML 27.68%
distributed-systems blockchain blockchain-technology

supplychain's Introduction

SupplyChain

Final project for CS651: Distributed Systems. Blockchain for supply-chain verification.

Setup:

  • Set your GOPATH variable to be the root folder of this repo, and go to that folder. You can do this by navigating to the main directory and running:
    GOPATH=\$(pwd)

  • Run the following to get required packages:
    go get github.com/rs/xid
    go get github.com/sirupsen/logrus

Build, Run, and Test:

  • Whole project
    go build cli
    ./cli
  • Individual packages
    cd <package-name> To run:
    go build <package-name>
    ./<package-name>
    To test:
    go test

Debugging

We're using the logrus library. To set the log level to Debug, for example, write log.SetLevel(log.DebugLevel). To then log something to Debug, use log.Debug("Debug statement!").

supplychain's People

Contributors

keng98 avatar mbestavros avatar mhendrick98 avatar puzzledsean avatar shreya726 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

supplychain's Issues

CLI improvements and finalizations

  • Complete ability to create all types of transactions w/ authentic details
  • Good logging for all sorts of events (user X make Y transaction, user X tried to forge a transaction, your transaction isn't valid for reason Z...)
  • make the CLI presentation ready

[Task #3] History of an Item

  • Add a function that takes in an input:
    • Item ID
  • Output: ....?
    • A list of users who owned the Item?
    • A list of Transaction structs that contained the Item?

Goes hand in hand with issue #3

[Task #4] Verification of ownership

  • Write a verify function that takes in:
    • Item ID
    • User ID
  • Outputs a True/False of whether the owner was the last user ID in a transaction with that Item ID

Can probably make a call to the history function in issue #4 and output True/False based on the output

add rule check on sending blocks

Currently there is logic for having a rule check for verifying a block when it is received. However, this check should also be in a sendBlock, or else the following scenario happens:

  • user1 exchanges diamonds with user2
  • user2 rejects validity because it sees that user1 doesn't actually own diamonds
  • user1 still appends the invalid block to its own log
  • user1 now makes a valid transaction (i.e. create diamonds)
  • user2 rejects because of index mismatch (user2 has blockchain of size 0, user1 has blockchain of size 1)

This scenario basically means that any future transaction provided by user1 will never be accepted, even if it attempts to make valid transactions in the future

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.