Skip to content

DSATEAM50/Bitcoin-Model

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 

Repository files navigation

The project Consists of 3 files namely:
main.c ==>contains code for the main user interface for giving input to the code. Bitcoin.c ==>Function implmentation file of our project, contains all functions we needed for the project. Bitcoin.h ==>Header file, includes basic structure & functions definations It's a basic model that impements the Bitcoin model using data structures Linked Lists, AVL Trees. //COMPILATION INSTRUCTION : run the command gcc Bitcoin.c main.c

BASIC INFO : HOW TO RUN TEST CASES:

  1. ENTER THE FUNCTION TO BE PERFORMED FROM THE GIVEN LIST OF FUNCTIONS AS INPUT STRINGS ON THE TERMINAL:

     1->ADDUSER                  ->ADDS A NEW USER TO THE DATABASE   
     2->TRANSACT                 ->TO TRANSACT AMONGST THE USERS
     3->ATTACK                   ->TO ATTACK THE BLOCK CHAIN, ALTER IT'S NONCE
     4->VALIDATE                 ->CHECKS WHETHER THE BLOCK CHAIN STRUCTURE IS VALID OR NOT==>IF NOT IT FIXES THE BLOCK CHAIN STRUCTURE
     5->PRINTUSERDETAILS         ->TO PRINT DETAILS FOR THE USER(WALLET BALANCE,UID,AND JOINING DATE)
     6->PRINTUSERTRANSACTIONS    ->TO PRINT TRANSACTION HISTORY OF A PARTICULAR USER    
     7->EXIT                     ->TERMINATES THE PROGRAM
    
  2. FOLLOWING QUERIES CAN BE PERFORMED:

     A.)ADDUSER->GENERATES A RANDOM UID, VALIDATES IF THAT UID DOESNT EXISTS ALREADY IN THE USER SYSTEM IF NOT THEN IT ADDS USER WITH THAT UNIQUE UID 
                 AND A 1000 COIN JOINING BONUS
    
             INPUT INSTRUCTION:INPUT THE STRING "ADDUSER" TO ADDING A NEW USER TO THE USER DATABASE
    
             OUTPUT:PRINTS RANDOM UID OF THE USER GENERATED AND JOINING BONUS BALANCE OF THE USER 
    
     B.)TRANSACT->TRANSACTS AMONGST THE USERS
    
             INPUT INSTRUCTIONS:INPUT THE STRING "TRANSACT" FOR CARRYING A TRANSACTION
                 THEN ENTER INPUT AS : <RECIEVER's Id> <SENDER's Id> <TRANSACTION AMOUNT>
                 
             OUTPUT:
                 1.)INVALID TRANSACTION==>IF AMOUNT<=0
                 2.)INVALID USER ID if==> EITHER OF SENDER OR RECIEVER UID IS'NT VALID//NOT PRESENT IN THE SYSYTEM DATABASE
                 3.)INSUFFICIENT BALANCE==>IF SENDERS'S WALLET BALANCE <=TRANSACTION AMOUNT
                 4.)PRINTS SENDER'S & RECIEVER'S BALANCE BEFORE TRANSACTION AND PRINTS SENDER'S & RECIEVER'S BALANCE AFTER TRANSACTION 
    
     C.)ATTACK->TO ATTACK A BLOCK IN THE BLOCK CHAIN AND ALTER IT'S NONCE
             INPUT INSTRUCTION:INPUT THE STRING "ATTACK" FOR GENERATING AN ATTACK ON THE CURRENT BLOCK CHAIN STRUCTURE
    
             OUTPUT:
                 1.)ATTACK SUCCESSFUL ==> IF A VALID ATTACK AND NONCE OF A BLOCK IN THE CHAIN CHANGED
                 2.)ATTACK FAILED ==> IF COULDN'T CHANGE THE NONCE OF A BLOCK
    
     D.)VALIDATE->CHECKS WHETHER THE BLOCK CHAIN STRUCTURE IS VALID OR NOT==>IF NOT IT FIXES THE BLOCK CHAIN STRUCTURE
             INPUT INSTRUCTION:INPUT THE STRING "VALIDATE" FOR CHECKING THE VALIDITY OF THE CURRENT BLOCK CHAIN STRUCTURE
    
             OUTPUT:
                 1.)BLOCKCHAIN IS VALID==> IF BLOCK CHAIN IS FOUND TO BE VALID
                 2.) <WHEN BLOCKCHAIN ISNT VALID>
                     a.)ATTACK DETECTED!!==>FLAG MESSAGE
                         <OUTPUTS:THE WRONG NONCE AND HASH OF THE BLOCK>
                          ATTACK FIXED!!==>FLAG MESSAGE
                           <OUTPUTS:THE CORRECT NONCE AND HASH OF THE BLOCK>
                        <AT THE END OUTPUTS THE NUMBER OF ATTACKS DETECTED AND FIXED!!!>
    
     E.)PRINTUSERDETAILS->TO PRINT DETAILS FOR THE USER(WALLET BALANCE,UID,AND JOINING DATE)
             INPUT INSTRUCTION:INPUT THE STRING "PRINTUSERDETAILS" FOR PRINTING THE DETAILS OF A PARTICULAR USER UID
                  THEN ENTER INPUT AS : <INPUT USER UID>
     
             OUTPUT:
                 1.)INVALID USER ==> IF NO USER WITH ENTERED UID EXISTS IN THE DATABASE
                 2.)<USER ID><WALLET BALANCE><USER SINCE:DATE/TIME OF JOINING> ==> IF USER WITH ENTERED UID EXISTS
    
     F.)PRINTUSERTRANSACTIONS->TO PRINT TRANSACTION HISTORY OF A PARTICULAR USER 
             INPUT INSTRUCTION:INPUT THE STRING "PRINTUSERTRANSACTIONS" FOR PRINTING THE DETAILS OF A PARTICULAR USER UID
                  THEN ENTER INPUT AS : <INPUT USER UID>
     
             OUTPUT:
                 1.)INVALID USER ==> IF NO USER WITH ENTERED UID EXISTS IN THE DATABASE
                 2.)TRANSACTION LIST EMPTY-NO TRANSACTION TO SHOW!!==>IF USER EXISTS BUT NO TRANSACTION HAS BEEN MADE
                 3.)TRANSACTIONS MADE BY  USER <USERID>        ==>FOR EACH OF THE TRANSACTION MADE BY THE USER WITH ENTERED UID 
                   <TO>      <FROM>      <AMOUNT>        <TRANSACTION DATE/TIME> 
                              <transaction details>
    
     G.)EXIT->TERMINATES THE PROGRAM
             INPUT INSTRUCTION:INPUT THE STRING "EXIT" 
    
              OUTPUT:PROGRAM-TERMINATED
    

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages