Вы находитесь на странице: 1из 70

1.

INTRODUCTION

The cryptocurrency exchange, known as “BITCOBS” is a crypto trading platform that


intends to make crypto trading easy for nonexperts. Bitcobs is a free app for crypto exchanges
which provide real-time cryptocurrency prices and fluctuation rate in real time, you can easily
purchase and receive payments anytime, anywhere.

The Bitcobs mobile app is simple and easy to use. From the app, the user can buy, sell &
view their trade history, open orders, and crypto holdings with their total equivalent value in
Indian rupees.

Bitcobs uses the Distributed Ledger Technology (Blockchain) offers multiple benefits to
trading that make a difference when implementing a solution that requires a high degree of
trust for transactions. Using the technology offers the possibility to reduce costs and offers
the opportunity for businesses to build and maintain an infrastructure that delivers capabilities
at lower expenses than traditional centralized models.

Blockchain can process transactions faster because it doesn’t use a centralized infrastructure.
Although there is no system totally secure from cyberattacks , the distributed nature of
blockchain provides an unprecedented level of trust. The unchangeable property of
blockchain and its public availability among itsusers.

Another cryptocurrency benefit that blockchain technology provides is that transfers can
cross national boundaries in seconds, with minimum fees, and without going through third –
party entities such as bank.

Page|1
1.1 Background

The idea behind this project we’ll remove many of problems that are exist in other app.
cryptocurrencies sometimes make the problems more likely to occur, and thus more
disturbing. In addition, the same principles are responsible for a certain number of risks
unique to cryptocurrencies.

 Insecure Transactions:We’ll start with common problems such as “Insecure


Transaction”. Let’s say you’re transferring money to a friend. So you give all your
information like id, phone no.etc. so that is insecure to theuser.

 Involvement of Third party: when the user transfers money from one account to
another, the bank remains involved in this entire session, which is the insecure for
bothparties.

 Fraud-proof :When cryptocurrency is created, all confirmed transactions are stored


in a public ledger .All identities of coin owners are encrypted to ensure the legitimacy
of record keeping. Because the currency is decentralized, you own it. Neither
government nor bank has any control overit.

 Spoofing:Spoofing is a broad term for the type of behavior that involves a


cybercriminal masquerading as a trusted user or device to get you to do something
beneficial to the hacker and detrimental toyou.

 Phishing:Phishing is the fraudulent attempt to obtain sensitive information such as


usernames, passwords and credit card details by disguising as a trustworthy entity in
an electroniccommunication.

 Payment Attack:An attack that is theoretically possible is a 51% attack. Where you
can rewrite blocks and give yourself the mining reward and undo your transactions, so
you can erase previous transactions and get your bitcoinback.

Page|2
1.2 Objectives

There should be discuss the objectives of project -


 Cryptocurrency exchange, is a digital currency exchange of a business that allows
customers to trade cryptocurrencies or digital currencies for other assets , such as
conventional fiat money or other digital currencies. As an online business, it
exchanges electronically transferred money.

 Online trading is basically the act of buying and selling financial products through an
online trading platform. Such as, you managed to make a small profit as you bought
your currencies at low rate and sold them back at a higher rate.

 “Earn Money”, in cryptoland is to buy good cryptocurrencies that have a fundamental


usecase and hold them until they obtain a fair marketshare.

 Stocks Sharing

Page|3
1.3 Purpose andScope

The BITCOBS platform is easy to use. From the app, the user can buy ,sell and view
their trade .The BITCOBS app makes it easy to trade seamlessly between
cryptocurrencies. The tool designed to make financial markets accessible to the average
person. Traders can trade using limit order, market order, stop-loss, take- profit and settle
position functions over a variety of cryptoexchanges.

Scope:
 Security Services
 Healthcare
 World Trade Managed using Blockchain.
 Monitoring
 Data Analysis
 File Storage
 Protection of Intellectual property rights.

A country like India which has recently faced demonetization has developed great affection
for crypto currencies in the recent past. It has been nearly five years sincebitcoin made its
debut in Indian financial markets. In India, the transactions made through cryptocurrency are
on the rise despite the notifications circulated by the finance ministry. This makes it clear that
the upcoming future of bit coin in India is drazzling. There are about 1548 crypto currencies
currently operational in the market available as an alternate to bitcoin. Since bitcoin is not
available in the physical form, is this virtual currency can be converted into physical form by
it on various online exchange platforms.

Page|4
2. SURVEY OF TECHNOLOGIES

Backend-

a) PHP – (recursive acronym for PHP: Hypertext Preprocessor )is a widely –used open
source general-purpose server side scripting language that is especially suited for web
development and can be embedded into HTML.

b) MySQL- MySQL is a full-featured relational database management system


(RDBMS) that competes with the like Oracle DB and Microsoft’s SQL server.
MySQL is sponsored by the Swedish Company MySQL AB, which is owned by
Oracle Corp. However, the MySQL source code is freely available because it was
originally developed as freeware. MySQL is written in C and is compatible with all
major operatingsystems.

c) Android (JAVA/KOTLIN) - The official language for Android development is


Java. Large parts of Android are written in Java and its APIs are designed to be called
primarily from java .But you can write Android apps in any language that can compile
and run on the Java Virtual Machine(JVM), and your end users will be none thewiser
.And one JVM –compatible programming language that’s really caught the attention
of the Android community is KOTLIN, a statically typed programming language from
JetBrains.

d) JavaScript- JavaScript often abbreviated as JS, high-level, interpreted


programming language. It is a language which is also characterized as dynamic ,
weakly typed, protype-based and multiparadigm. Alongside HTML and CSS,
JavaScript is one of the three core technologies of the World Wide Web. JavaScript
enables interactive web pages and thus is an essential part of web applications .The
vast majority of websites use it, and all major web browsers have a dedicated
JavaScript engine to executeit.

Frontend-
a) HTML - Hypertext Markup Language(HTML) is the standard markup language for
creating web pages and web applications. With Cascading Style Sheet (CSS) and
JavaScript, it forms a triad of cornerstone technologies for the World Wide
Web.HTML can embed programs written in a scripting language such as JavaScript,
which affects the behaviour and content of web pages. Inclusion of CSS defines the
look and layout of content. The World Wide Web Consortium, maintainer of both the
HTML and the CSS standards, has encouraged the use of CSS over explicit
presentationalHTML.

Page|5
b) Cascading Style Sheet (CSS) – CSS is a Style Sheet language used for
describing the presentation of a document written in a markup language like HTML.
CSS is a cornerstone technology of the World Wide Web, alongside HTML and
JavaScript. CSS is designed to enables the separation of presentation and content ,
including layout, colors, and fonts. This separation can improve content accessibility,
relevant CSS in separate .cssfile , and reduce complexity and repetition in the
structuralcontent.

c) Bootstrap - Bootstrap is a free and open-source front-end framework for designing


websites and web application. It contains HTML and CSS based design templates for
typography, forms, buttons, navigation and other interface components, as well as
optional JavaScriptextensions.

d) XML- Extensible Markup Language(XML) is a very popular format and commonly


used for sharing data on the internet. Android provides three types of XML parsers
which are DOM, SAX and XMLPullParser. Among all of them android recommend
XMLPullParser because it is efficient and easy to use. So we are going to use
XMLPullParser for parsingXML.

e) Sass-Sass is a CSS pre-processor with syntax advancement. Style sheetIn the


advanced syntax are processed by the program, and turned into regular CSS style sheet.

f) Gulp-Gulp is a tool that helps you out with several tasks when it comes to web devel-
opment. It’s often used to do front end tasks like Spinning up a web server, optimizing
assets like CSS, JavaScript, and images.Basically, feasibility study aims to objectively
and rationally uncover the strengths and weaknesses of an existing business or proposed
venture, opportunities and threats present in the natural environment the resources required
to carry through, and ultimately the prospects for success. In its simplest terms, the two
criteria to judge feasibility are cost required and value to be attained.

g) Task runner- A Task runner is a tool used to automate tasks in the development process.
The task can be used to perform a wide variety of operations such as the compilationof
TypeScript files or the compression of JavaScript files.

Page|6
3. FEASIBILITY STUDY

A feasibility study was conducted to objectively evaluate the project idea and compare it
with solution that already exist in the market. An study and analysis of a
proposed project to determine if it is technically feasible, is feasible within the estimated
cost, and will be profitable. Feasibility studies are almost always conducted where large
sums are at stake, also called feasibilitystudy.

The Feasibility study is focused towards goal of the developer. This study analyzes
whether the software product can be practically materialized in terms of implementation ,
contribution of project to team, cost constraints and as per values and objectives of the
project team.

Basically, feasibility study aims to objectively and rationally uncover the strengths anweak-
nessesof an existing business or proposed venture, opportunities and threats present in the
naturalenvironment the resources required to carry through, and ultimately the prospects
forsuccess. In its simplest terms, the two criteria to judge feasibility are cost required and
value to be attained.

3.1 Economic Feasibility


The economic feasibility analysis is the most commonly used method for determining the
efficiency of a new project. It is also known as cost analysis .So, this project should be
economically feasible because, in this no a huge amount of moneyrequired.

Economic feasibility determines whether the required software is capable of generatin


Financial gains for an organization. It involves the cost incurred on the software
development team, estimated cost of hardware and software, cost of performing
feasibility study, and so on.

It helps in identifying profit against investment expected from a project. Cost and time are
the most essential factors involved in this field of study.

3.2 Technical Feasibility


Technical feasibility analysis is an attempt to study the project basically from a
technician’s angle . The main aspect to be considered under this study are technology of
the project. However, my project group still has adopt the evolutionary techniques which
would allow them to work effectively with your team. These technologies are easy &
simple, extremely flexible, efficient performance and more reliable.
Page|7
4. REQUIREMENT & ANALYSIS

4.1 Problem Definition:

 Data Integrity: Data integrity is the maintenance of, and the assurance of the
accruracy and consistency of, data over its entire life-cycle , and is a critical aspect to
the design,implementation and usage of any system which stores,processes,or
retrievesdata.

 Data Authentication : Data authentication is the process of confirming the origin and
integrity of data. The term is typically related to communication, messaging and
integration . Data Authentication has two elements: authenticating that you’re getting
data from the correct entity and validating the integrity of thedata.

 Security (Bruteforce) : Brute force cracking is a trial and error method used by
application programs to decode encrypted data such as passwords or data encryption
standard keys, through exhaustive effort(using brute force) rather than employing
intellectualstrategies.

 User Interface(UI) Designing : User Interface problems in software use analysis are
mostly related to information that is incorrectly displayed in the application or to
errors that arise in the non-English-languages versions of thesoftware.

Page|8
4.2 Planning and Scheduling

a) GANTT CHART

Page|9
b) PERT CHART

P a g e | 10
4.3Software & Hardware Requirements

Software Requirement :
a) Development–

 Ubuntu, is a free and open –source operating system and Linux distribution based on
Debian. Ubuntu is offered in three official editions: Ubuntu Desktop for personal
computers, Ubuntu server for servers and the cloud, and Ubuntu Core for internet of
things devices androbots.

 CentOS, Linux is a community-supported distribution derived from sources freely


provided to the public by Red Hat for Red Hat Enterprise Linux(RHEL). As such,
CentOS Linux aims to be functionality compatible with RHEL. The CentOS project
mainly changes package to remove upstream vendor branding andartwork.

 JSON-RPC is a remote procedure call protocol encoded in JSON. It is a very simple


protocol defining only a few data types and commands. JSON-RPC allows for
notifications and for multiple calls to be sent to the server which may be answeredout
oforder.

 Client , is a piece of computer hardware or software that accesses a service made


available by a server. The server is often on another computer system, in whichcase
the client accesses the service by way of anetwork.

 PuTTY is a free open-source terminal emulator, serial console and network file
transfer application. It supports several network protocols, including SCP, SSH,
Telnet, rlogin, and raw socket connection. It can also connect to a serialport.

 IDE (Android Studio &PhpStorm) is a GUI based workbench designed to aid a


developer in building software applications with an integrated environment combined
with all the required tools at hand. Here to be select two IDE, Android Studio is a new
Android development environment based on Intellij IDEA. It provides new features
and improvements over Eclipse ADT and will be the official Android IDE once It’s
ready.

 PhpStormis a commercial, cross-platform IDE for PHP built on JetBrains Intellij


IDEA platform. PhpStorm provides an editor for PHP, HTML and JavaScript with on-
the-fly code analysis, error prevention and automated refactorings for PHP and
Javascriptcode.

P a g e | 11
 phpMyAdmin is a free software tool written in PHP, intended to
handle the administration of MySQL over the web. phpMyAdmin
supports a wide range of operations on MySQL and MariaDB.
Frequently used operations (managing databases, tables, columns,
relations, indexes, users, permissions, etc.) can be performed via the
user interface, while you still have the ability to directlyexecute any
SQLstatement.

 Apache is the most widely used web server software. Developed and
maintained by Apache Software Foundation, Apache is an open source
software available for free.It is fast, reliable andsecure.

b) Deployment-

 Browser(web) refer as a software application for accessing


information on the World Wide Web. Each individual web page , image
, and video is identified by a distinct URL, enabling browsers to retrieve
and display them on the user’sdevice.

 Android OS a mobile operating system developed by Google, based on


a modified version of a Linux kernel and other open source software and
designed primarily for touchscreen mobile devices such as smartphones
andtablets.

Hardware Requirements :
a) Development-

 3 servers , 1GB RAM, 30GBSSD.


 4GB RAM , 30 GBSSD
 2GB RAM , 60 GB SSD, Googlecloud.

b) Deployment-

 WEB- Internet, Min RAM -512mb.


 Android- 1 GB , 100 MB, 5.0 Android version(Advancedversion)

P a g e | 12
5.SOFTWARE DEVELOPMENT LIFE CYCLE

loops for problems


Requirements

Request for Change in requirements at any stage.


Design Lacking feedback

Implementation

Verification

Maintenance

In the Iterative model, Iterative process starts a simple implementation of a small


set of the software requirements and Iteratively enhances the evolving versions until the
complete system is implemented and ready to be displayed.

An Iterative life cycle model does not attempt to start with a full specification of
requirements instead, development begins by specifying and implementing just part of
the software, which then reviewed to indentify further requirements. This process is then
repeated, producing a new version of the software at the end of each iteration of the model.

Iterative Model-Design:

Iterative processstarts with a simple implementation of a subset of the software requirements


and iteratively enhances the evolving versions until the full system is implemented. At each
iteration, design modifications are made and new functional capabilities are added. The basic
idea behind this method is to develop a system thorough repeated cycles (iterative) and in
smaller portions at a time (incremental).

The following illustration is a representation of the iterative and incremental model –

P a g e | 13
Design & Testing Implementation
Development

Requirements
Design & Testing Implementation
Development

Design & Testing Implementation


Development

Iterative and incremental development is a combination of both iterative design or


Iterative method and incremental build model for development. “during software
development, more than one iteration of the software development cycle may be in
progress at the same time.” This process may be described as an “evolutionary
acquisition” or “ incremental build” approach.”

In this incremental model, the whole requirement is divided into various builds.
During each iteration, the development module goes thorough the requirements,
design , implementation and testing phase. Each subsequent release of the module
adds function to the previous release. The process continues till the complete system is
ready as per the requirement.

The key to a successful use of an iterative software development lifecycle is rigorous


validation of requirements, and verification & testing of each version of the software against
those requirements within each cycle of the model. As the software evolves through
successive cycles, tests must be repeated and extended to verify each version of the software.

Iterative Model–Application:

Like other SDLC models, iterative and incremental development has some specific
application in the software industry. This model is most often used in the following scenarios

 Requirements of the complete system are clearly defined and understood.


 Major requirements must be defined; however, some functionalities or requested
enhancements may evolve with time.
 There is a time to the market constraint.

P a g e | 14
 A new technology is being used and is being learnt by the development team while
working on the project.
 Resources with needed skill sets are not available and are planned to be used on
contractbasis for specific iterations.
 There are some high-risk features and goals which may change in the future.

Iterative model-Pros and Cons:

The advantage of this model is that there is a working model of the system at a
very early stage of development, which makes it easier to find functional or desi gn
flaws.Finding issues at an early stage of development enables to take corrective
measures in a limited budget.

The disadvantages with this SDLC model is that it is applicable only to large and bulky
software development projects. This is because it is hard to break a small software system
into further small serviceable increments modules.

The advantages of the iterative and incremental SDLC model are as


Follow- –

 Some working functionality can be developed quickly and early in the


life cycle.
 Results are obtained early and periodically.
 Parallel development can be planned.
 Progress can be measured.
 Less costly to change the scope/requirements.
 Testing and debugging during smaller iteration is easy.
 Risks are identified and resolved during iteration; and each iteration is
an easily managed milestone.
 Easier to manage risk – high risk part is done first.
 With every increment, operational product is delivered.
 Issues, challenges and risks identified from each increment can be utilized
applied to the next increment.
 Risk analysis is better.
 It supports changing requirements.
 Initial operating time is less.
 Better suited for large and mission-critical projects.
 During the life cycle, software is produced early which facilitates customer
evaluation and feedback.

The disadvantages of the iterative and incremental SDLC model are as follows –

P a g e | 15
 More resources may be required
 Although cost of change is lesser, but it is not very suitable for changing
requirements.
 More management attention is required.
 System architecture or design issues may arises because not all
requirements are gathered in the beginning of the entire life cycle.
 Defining increments may require definition of the complete system.
 Not suitable for smaller projects.
 Management complexity is more.
 End of the project may not be known which is a risk.
 Highly skilled resources are required for the risk analysis.
 Projects progress is highly dependent upon the risk analysis phase.

Why we use Iterative Model ? :

Basically, Iterative model use for highly risky project and Bitcobs also a new
technology based project like blockchain in which risk available at each phase so,
iterative model help to iterates requirements, design, build and test phases again and
again for each requirement and builds up a system iteratively till it is completely built.

In iterative model we can start with a little of requirements specification and we can
detect the defects and faults at an early stage.It supports user feedback. Less time is
utilized for documentation .More time is utilized for software development.

P a g e | 16
6.PRELIMINARY MODULE DESCRIPTION

ADMIN
Interface

MANAGER
Interface

USER

ADMIN MODULE : The Admin module is used to administer application settings


,manage business rules and notifications for data , view trading history and also
analyzed the stored data. It can performs all user and manager panel activities.

Admin module helps to trading administration for efficient management of human


resources. Admin module helps to manage user and manager panel , track user
activities like buying and selling digital currency. One of the important sub
module in admin module is business rules and notification for data which helps to
provide current rate of coin and trading history , payment reports etc. It can also
blocking the unauthorized users.

Administration module to be a helpful tool in reviewing and managing .

P a g e | 17
MANAGER PANEL MODULE:
The purpose of this manager module is to view transactions and also verify the
validate user or not. There are some features of manager panel module-

 View transactions- The manager can view the all transactions.


 Alter transactions
 Block Users
 View user accounts
 Confirm INR balance
 View tickets
 Account matching
 KYC Verification.

In trading system that have multiple users, they can access the software at any way so we
will find the Manger panel module to be a helpful tool in reviewing and managing the work
of their users within a database. With the module you will be able to

 See the list of users, their login Id’s and last activity within the organization’s
database.

 Drill-Down to see which accounts were modified by a specific user and the time and
date of modification.

How does it work:

Bitcobs users with appropriate security privileges will now have access to a special “Manger
Panel” section within their Bitcobs database. Options under Manger panel include a user
report that lists the Bitcobs users for your database and a summary of their recent activity. By
drilling down on a user name you can see their activity for the last days. A more detailed
User Activity Report shows details on the number of accounts and journal entries added, and
changed over the last week and last month. Manger panel also block the unauthorized users.

USER Module:

In this module perform various type of work -

 Login
 Signup
 Wallet Section
 Trading View

P a g e | 18
 Internet Transaction Database
 Multiple Coins view
 Google Authentication
 Payment gateway

P a g e | 19
7. SYSTEM DESIGNING

7.1 Data Flow Diagram (DFD)

A Data Flow Diagram (DFD) is a diagram that describes the flow of data and the
processes that change data throughout a system. It’s a structured analysis and design
tool that can be used for flowcharting in place of or in association with information.
Oriented and process oriented system flowcharts. When analysis prepare the data flow
diagram, they specify the user needs at a level of detail that virtually determines the
information flow into and out of the system and the required data resources. This
network is constructed by using a set of symbols that do not imply physical implemen-
tations. The Data Flow Diagram reviews the current physical system, prepares input
and output specification, specifies the implementation plan etc.

Four basic symbols are used to construct data flow diagram. They are symbols that
represent data source, data flows, and data transformations and data storage. The
pointsat which data are transformed are represented by enclosed figures, usually circles,
which are called nodes.

Data Flow Diagram Symbols-

- Source or Destination of data

- Data Flow

- Process

- Storage

P a g e | 20
Steps to construct Data Flow Diagram-

Mainly Four steps are commonly used construct a DFD:

 Process should be named and numbered for easy reference. Each name should be
representative of the process.
 The destination of flow is from top to bottom and from left to right.
 When a process is exploded in to lower level details they are numbered.
 The names of data stores, sources and destinations are written in capital letters.

Rules for constructing a Data Flow Diagram-

 Arrows Should not cross each other.


 Squares, circles and files must bear names.
 Decomposed data flow squares and circles can have same names.
 Draw all data flow around the outside of the diagram.

a) 0 Level DFD:

Make Trade

User Bitcobs Services


Exchange

P a g e | 21
b) 1 Level DFD:

P a g e | 22
c) 2 Level DFD :

Manager
User Panel

Provide
Support to
Create Cryptocurr
Accoun ency
t

Update BITCOBS
Review
KYC Cryptocurrency and
update
Exchange KYC

KYC
Status View
Transacti
on

Buy
Cryptoc
Stop/
urrency
Block
Super transfer
user users
access

Acknowle
gement of
Buyer’s
Purchase
Admin
Can block
manager
Sell / too
Transfer
Cryptocu Acknowlegem
rrency ent of Tranfer
of
Cryptocutrre
ncy

P a g e | 23
7.2 Entity Relationship Diagram(ERD)

P a g e | 24
7.3Data Structure

a) Users Table
Sr no. Field Type Null Length Default Extra

1 Uid Int No 255 None Auto-increment

2 Fname Varchar No 255 None No auto increment

3 Lname Varchar No 255 None No auto increment

4 Email Varchar No 255 None No auto increment

5 Password Varchar No 255 None No auto increment

6 Mobile Varchar No 255 None No auto increment

7 Blocked Int No 1 0 No auto increment

8 kyc_status Int No 1 0 No auto increment

b) Coins Table
Sr no. Field Type Null Length Default Extra

1 Coin_id Int No 255 None Auto-increment

2 Coin_name Varchar No 255 None No auto increment

3 Coin_code Varchar No 255 None No auto increment

c) Balances table
Sr no. Field Type Null Length Default Extra

1 Coin_id Int No 255 None No Auto-increment

2 C_id Int No 255 None No auto increment

3 Balances Double No (32,6) None No auto increment

P a g e | 25
d) Dwacc Table
Sr no. Field Type Null Length Default Extra

1 dw_id Int No 255 None Auto-increment

2 c_id Int No 255 None No auto increment

3 coin_id Int No 255 None No auto increment

4 Tran_hash Varchar No 255 None No auto increment

5 Balance Double No (32,6) None No auto increment

6 Type Int No 1 None No auto increment

7 trn_time Datetim No - 0 No auto increment


e

e) Opncls Table
Sr no. Field Type Null Length Default Extra

1 order_id Int No 255 None Auto-increment

2 coin_id1 Int No 255 None No auto increment

3 c_id1 Int No 255 None No auto increment

4 coin_id2 Int No 255 None No auto increment

5 c_id2 Int No 255 None No auto increment

6 Rate Double No (32,6) None No auto increment

7 Amount Double No (32,6) None No auto increment

8 Status Int No 1 0 No auto increment

9 Trn_date Datetim No - None No auto increment


e

P a g e | 26
8. CODING

Authentication module :

<?php
if(!isset($_SESSION["id"])){
header("Location: login.php");
exit(); }
?>

Funds module :

<?php
include('functions.php');
include('auth.php');
$cust_id = $_SESSION['id'];
$result = funds($cust_id);

?>

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Crypto | Exchange</title>
<link href="https://fonts.googleapis.com/css?family=Montserrat|Roboto+Condensed"
rel="stylesheet">

<link rel="stylesheet" href="./css/all.css">


<link rel="stylesheet" href="./css/bootstrap.css">
<link rel="stylesheet" href="./css/style.css">

</head>

<body>
<!-- NAVBAR -->
<section id="showcase">
<nav class="navbar sticky-top navbar-expand-md navbar-dark">
<div class="container">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-
target="#navbarTogglerDemo02"
aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle
navigation">
<span class="navbar-toggler-icon"></span>
</button>

<div class="collapse navbar-collapse" id="navbarTogglerDemo02">


<ul class="navbar-nav ml-auto">
<li class="nav-item active">
<a class="nav-link" href="./market.html">Market <span class="sr-only">(current)</span></a>

P a g e | 27
</li>
<li class="nav-item">
<a class="nav-link" href="./funds.php">Funds</a>
</li>

<li class="nav-item chart">


<a class="nav-link" href="./trade_history.html">Trade-history</a>
</li>
<div class="clearer">
<li class="nav-item signin" id="ram">
<a class="nav-link link1" href="./login.php">Sign In</a>
</li>
<li class="nav-item signup">
<a class="nav-link link2" href="./register.php">Sign Up</a>
</li>
</div>

<li class="nav-item smaller1">


<a class="nav-link" href="./login.php">Sign In</a>
</li>
<li class="nav-item smaller2">
<a class="nav-link" href="./register.php">Sign Up</a>
</li>

</ul>

</div>
</div>
</nav>

<!-- NAVBAR ENDED -->

<!-- SHOWCASE AREA -->

<div class="container">
<!-- FUNDING SECTION STARTED -->
<!-- INTRODUCTORY CARD STARTED -->
<div class="card mt-3 shadow">

<div class="card-body">
<div class="row">
<div class="col-md-2 text-center mt-md-3">
<imgsrc="./img/funds.svg" alt="" style="max-width:100%; height: auto;">
</div>
<div class="col-md-7 mt-md-1" id="funding">
<h5 class="text-dark">Bitcobs P2P: Convert INR ↔ USDT</h5>
<p class="text-muted">
<small>Use Bitcobs P2P when you want to buy USDT to trade cryptos, or when you want to
sell USDT and
cash
out to INR. It's safe and hassle free!</small>
</p>
</div>
<div class="col-md-3 text-center mt-md-4">
<button class="btnbtn-success text-white btn-lg" type="submit">INR ↔ USDT</button>

P a g e | 28
</div>
</div>
</div>
</div>
<!-- INTRODUCTORY CARD ENDED -->
<!-- FUNDING TABLE CONTENT STARTED -->
<h2 class="text-white border-bottom mt-4">Funds</h2>
<div class="card">
<div class="card-body p-1">
<div class="text-dark d-flex justify-content-between flex-wrap">
<div class="fukrey">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>

</div>
<input type="text" class="form-control m-0" aria-label="Dollar amount (with dot and two
decimal places)"
placeholder="search">

</div>
</div>
<!-- MATERIAL SWITCH -->
<div class="d-flex align-self-center mt-2">
<label class="switch align-self-center mt-1 mr-1">
<input type="checkbox">
<span class="slider round"></span>
</label>
<div style="font-size:1rem;"><small>Hide Zero Balances</small></div>
</div>
<div style="font-size:1rem;" class="mt-md-2 mt-2"><small>Estimated Portfolio ~ <i class="fas
fa-rupee-sign align-self-center"></i>00.00</small></div>
</div>

</div>
</div>

<!-- TABLE CONTENT STARTED -->


<div class="card mt-3 mb-3">
<div class=" card-body text-secondary p-1">
<div class="table-responsive-md">
<table class="table" id="tabble">

<thead>
<tr>

<th scope="col"><small>ASSETS</small></th>
<th scope="col"><small>
<div class="d-flex">
<div>AVAILABLE</div>
<div class="ml-1"> BALANCE</div>

</div>
</small></th>
<th scope="col"><small>
<div class="d-flex">
<div class="mr-1">IN</div>
<div>ORDERS</div>

P a g e | 29
</div>
</small></th>
<th scope="col"><small>TOTAL</small></th>
<th scope="col">
<div class="text-primary"><small>
<div class="d-flex mt-0">
<div>INR</div>
<div class="ml-1">VALUE</div>
<i class="fas fa-arrow-down align-self-center"></i>
</div>

</small></div>
</th>
<th scope="col"><small>ACTION</small></th>
</tr>
</thead>
<tbody>

<?php $i=1;
while($row = mysqli_fetch_array($result)) { ?>
<tr>
<th class="text-dark">
<div class="d-flex"><imgsrc="./img/<?= $row['coin_logo'];?>" alt="ut" style="max-width:1rem;
max-height:1.2rem;" class="align-self-center mr-1">
<div class="d-flex">
<div><small><?= $row['coin_name'];?></small></div>
<div><small>(<?= $row['coin_code'];?>)</small></div>
</div>
</div>
</th>
<td><small>0.0</small></td>
<td><small>0.0</small></td>
<th>0</th>

<td>

<small>
<div class="d-flex">
<i class="fas fa-rupee-sign align-self-center mr-1"></i>
<div>0.00</div>
</div>
</small></td>
<td>
<div class="d-flex">
<div class="btnbtn-outline-success btn-sm mr-2" id="deposite<?php echo $i;
?>">Deposit</div>
<div class="btnbtn-outline-danger btn-sm" id= "withdraw<?php echo $i;?>">Withdraw</div>

</div>
</td>

<tr>

<td style="border:none; padding:0;" colspan="7">


<div id="mere<?php echo $i; ?>">
<div class="container pb-3">
<div class="row">

P a g e | 30
<!--<div class="col-12"> -->

<div class="col-md-12" style="width:50%;">


<p class="border-bottom"><small class="font-weight-bold">Transfer Zebi from your WazirX
Wallet to another</small></p>
<form>

<div class="row">
<div class="col-md-4">
<div class="d-flex justify-content-between">
<small>VOLUME</small>
<small>AVAILABLE ZIL: 0.0
</small>
</div>
<input type="number" placeholder="0" class="form-control">
</div>
<div class="col-md-4">
<small>DESTINATION ADDRESS</small>
<input type="number" class="form-control">

</div>
<div class="col-md-4">
<small>REMARKS</small>
<input type="number" class="form-control">

</div>
<div class="col-md-4 mt-4">
<button class="btnbtn-danger text-white"><small>PROCEED WITH WITHDRAW

</div>
</div>
<p class="mt-2"><small>WITHDRAW FEE: ZIL 65</small></p>

</form>
<!--</div> -->

</div>

</div>

<!-- row ended -->


<p class="text-danger border-bottom mb-0"><small class="font-weight-bold"><i class="fas fa-
exclamation-circle"></i>Disclaimer</small></p>
<div class="text-muted text-left" style="font-size:.7rem;"><small>• Please cross-check the
destination address. Withdrawals to Smart Contract Addresses,
payments or participation in
ICOs/Airdrops are not supported and will be lost forever.
Withdrawal requests cannot be
cancelled after submission.</small></div>
</div>

P a g e | 31
</div>
</div>
<div id="gayab<?php echo $i; ?>" class="p-3">

<div class="row">
<div class="col-md-8 text-secondary">
<h6 class="text-secondary border-bottom pb-2 font-weight-bold">Send to Your Secure Zebi
Deposit
Address</h6>
<div class="mt-3 mb-3"><small>Destination Address</small></div>

<div class="d-flex col-md-6" style="width:50%;">


<input type="text" value="<?= $row['address']; ?>" id="myInput" class="form-control"
readonly>

<div id="tooltip">
<button id="copied" class="btnbtn-success">
<span class="tooltiptext" id="myTooltip">Copy</span>
<i class="far fa-clone mr-2"></i>Copy
</button>
</div>
</div>

<p class="text-danger mt-4 border-bottom mb-0"><small class="font-weight-bold"><i


class="fas fa-exclamation-circle"></i>Disclaimer</small></p>
<div class="text-muted text-left" style="font-size:.7rem;"><small>• Minimum deposit of 130
ZIL,
deposit below that
cannot be
recovered.
• Please
deposit only ZIL on this address. If you deposit any other coin, it will be
lost forever.</small></div>
</div>
<div class="col mt-1 ">
<div class="border-bottom"><small class="font-weight-bold">Or scan this QR
Code</small></div>
<div class="mt-3 d-flex justify-content-md-center">
<!--<imgsrc="./img/qrcode.png" alt="" style="width:116px;height:116px;" class="shadow"> -->
<img src="https://chart.googleapis.com/chart?chs=116x116&cht=qr&chl=<?= $row['address'];
?>&choe=UTF-8" class="shadow" />
</div>

</div>

</div>
</div>

</td>

</tr>

P a g e | 32
</tr>
<?php
$i++;
} ?>
</tbody>
</table>
</div>

</div>
</div>

<!-- TABLE CONTENT ENDED -->


<!-- FUNDING TABLE CONTENT STARTED -->
<!-- FUNDING SECTION ENDED -->
</div>

</section>

<!-- SHOW CASE AREA ENDED -->

<script src="./js/jquery.min.js"></script>

<script src="./js/bootstrap.min.js"></script>
<script src="./js/bootstrap.bundle.min.js"></script>
<script src="./js/main.js"></script>
<script src="./js/fund.js"></script>
</body>

</html>
<?php

P a g e | 33
include('functions.php');
include('auth.php');
$cust_id = $_SESSION['id'];
$result = funds();

?>

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Crypto | Exchange</title>
<link href="https://fonts.googleapis.com/css?family=Montserrat|Roboto+Condensed"
rel="stylesheet">

<link rel="stylesheet" href="./css/all.css">


<link rel="stylesheet" href="./css/bootstrap.css">
<link rel="stylesheet" href="./css/style.css">

</head>

<body>
<!-- NAVBAR -->
<section id="showcase">
<nav class="navbar sticky-top navbar-expand-md navbar-dark">
<div class="container">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-
target="#navbarTogglerDemo02"
aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle
navigation">
<span class="navbar-toggler-icon"></span>
</button>

<div class="collapse navbar-collapse" id="navbarTogglerDemo02">


<ul class="navbar-nav ml-auto">
<li class="nav-item active">
<a class="nav-link" href="./market.html">Market <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="./funds.php">Funds</a>
</li>

<li class="nav-item chart">


<a class="nav-link" href="./trade_history.html">Trade-history</a>
</li>
<div class="clearer">
<li class="nav-item signin" id="ram">
<a class="nav-link link1" href="./login.php">Sign In</a>
</li>
<li class="nav-item signup">
<a class="nav-link link2" href="./register.php">Sign Up</a>
</li>
</div>

P a g e | 34
<li class="nav-item smaller1">
<a class="nav-link" href="./login.php">Sign In</a>
</li>
<li class="nav-item smaller2">
<a class="nav-link" href="./register.php">Sign Up</a>
</li>

</ul>

</div>
</div>
</nav>

<!-- NAVBAR ENDED -->

<!-- SHOWCASE AREA -->

<div class="container">
<!-- FUNDING SECTION STARTED -->
<!-- INTRODUCTORY CARD STARTED -->
<div class="card mt-3 shadow">

<div class="card-body">
<div class="row">
<div class="col-md-2 text-center mt-md-3">
<imgsrc="./img/funds.svg" alt="" style="max-width:100%; height: auto;">
</div>
<div class="col-md-7 mt-md-1" id="funding">
<h5 class="text-dark">WazirX P2P: Convert INR ↔ USDT</h5>
<p class="text-muted">
<small>Use WazirX P2P when you want to buy USDT to trade cryptos, or when you want to sell
USDT and
cash
out to INR. It's safe and hassle free!</small>
</p>
</div>
<div class="col-md-3 text-center mt-md-4">
<button class="btnbtn-success text-white btn-lg" type="submit">INR ↔ USDT</button>
</div>
</div>
</div>
</div>
<!-- INTRODUCTORY CARD ENDED -->
<!-- FUNDING TABLE CONTENT STARTED -->
<h2 class="text-white border-bottom mt-4">Funds</h2>
<div class="card">
<div class="card-body p-1">
<div class="text-dark d-flex justify-content-between flex-wrap">
<div class="fukrey">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>

</div>

P a g e | 35
<input type="text" class="form-control m-0" aria-label="Dollar amount (with dot and two
decimal places)"
placeholder="search">

</div>
</div>
<!-- MATERIAL SWITCH -->
<div class="d-flex align-self-center mt-2">
<label class="switch align-self-center mt-1 mr-1">
<input type="checkbox">
<span class="slider round"></span>
</label>
<div style="font-size:1rem;"><small>Hide Zero Balances</small></div>
</div>
<div style="font-size:1rem;" class="mt-md-2 mt-2"><small>Estimated Portfolio ~ <i class="fas
fa-rupee-sign align-self-center"></i>-31.70</small></div>
</div>

</div>
</div>

<!-- TABLE CONTENT STARTED -->


<div class="card mt-3 mb-3">
<div class=" card-body text-secondary p-1">
<div class="table-responsive-md">
<table class="table" id="tabble">

<thead>
<tr>

<th scope="col"><small>ASSETS</small></th>
<th scope="col"><small>
<div class="d-flex">
<div>AVAILABLE</div>
<div class="ml-1"> BALANCE</div>

</div>
</small></th>
<th scope="col"><small>
<div class="d-flex">
<div class="mr-1">IN</div>
<div>ORDERS</div>
</div>
</small></th>
<th scope="col"><small>TOTAL</small></th>
<th scope="col">
<div class="text-primary"><small>
<div class="d-flex mt-0">
<div>INR</div>
<div class="ml-1">VALUE</div>
<i class="fas fa-arrow-down align-self-center"></i>
</div>

</small></div>
</th>
<th scope="col"><small>ACTION</small></th>
</tr>
</thead>

P a g e | 36
<tbody>

<?php while($row = mysqli_fetch_array($result)) { ?>


<tr>
<th class="text-dark">
<div class="d-flex"><imgsrc="https://www.codecreators.tk/bitcobs/img/coins/<?=
$row['coin_logo'];?>" alt="ut" style="max-width:1rem; max-height:1.2rem;" class="align-self-
center mr-1">
<div class="d-flex">
<div><small><?= $row['coin_name'];?></small></div>
<div><small>(<?= $row['coin_code'];?>)</small></div>
</div>
</div>
</th>
<td><small>0.0</small></td>
<td><small>0.0</small></td>
<th>0</th>

<td>

<small>
<div class="d-flex">
<i class="fas fa-rupee-sign align-self-center mr-1"></i>
<div>0.00</div>
</div>
</small></td>
<td>
<div class="d-flex">
<div class="btnbtn-outline-success btn-sm mr-2" id="deposite">Deposit</div>
<div class="btnbtn-outline-danger btn-sm" id="withdraw">Withdraw</div>

</div>
</td>

<tr>

<td style="border:none; padding:0;" colspan="7">


<div id="mere">
<div class="container pb-3">
<div class="row">
<!--<div class="col-12"> -->

<div class="col-md-12" style="width:50%;">


<p class="border-bottom"><small class="font-weight-bold">Transfer Zebi from your WazirX
Wallet to another</small></p>
<form>

<div class="row">
<div class="col-md-4">
<div class="d-flex justify-content-between">
<small>VOLUME</small>
<small>AVAILABLE ZIL: 0.0
</small>
</div>
<input type="number" placeholder="0" class="form-control">
</div>
<div class="col-md-4">

P a g e | 37
<small>DESTINATION ADDRESS</small>
<input type="number" class="form-control">

</div>
<div class="col-md-4">
<small>REMARKS</small>
<input type="number" class="form-control">

</div>
<div class="col-md-4 mt-4">
<button class="btnbtn-danger text-white"><small>PROCEED WITH WITHDRAW

</div>
</div>
<p class="mt-2"><small>WITHDRAW FEE: ZIL 65</small></p>

</form>
<!--</div> -->

</div>

</div>

<!-- row ended -->


<p class="text-danger border-bottom mb-0"><small class="font-weight-bold"><i class="fas fa-
exclamation-circle"></i>Disclaimer</small></p>
<div class="text-muted text-left" style="font-size:.7rem;"><small>• Please cross-check the
destination address. Withdrawals to Smart Contract Addresses,
payments or participation in
ICOs/Airdrops are not supported and will be lost forever.
Withdrawal requests cannot be
cancelled after submission.</small></div>
</div>

</div>
</div>
<div id="gayab" class="p-3">

<div class="row">
<div class="col-md-8 text-secondary">
<h6 class="text-secondary border-bottom pb-2 font-weight-bold">Send to Your Secure Zebi
Deposit
Address</h6>
<div class="mt-3 mb-3"><small>Destination Address</small></div>

<div class="d-flex col-md-6" style="width:50%;">


<input type="text" value="<?= $row['address']; ?>" id="myInput" class="form-control"
readonly>

<div id="tooltip">
<button id="copied" class="btnbtn-success">

P a g e | 38
<span class="tooltiptext" id="myTooltip">Copy</span>
<i class="far fa-clone mr-2"></i>Copy
</button>
</div>
</div>

<p class="text-danger mt-4 border-bottom mb-0"><small class="font-weight-bold"><i


class="fas fa-exclamation-circle"></i>Disclaimer</small></p>
<div class="text-muted text-left" style="font-size:.7rem;"><small>• Minimum deposit of 130
ZIL,
deposit below that
cannot be
recovered.
• Please
deposit only ZIL on this address. If you deposit any other coin, it will be
lost forever.</small></div>
</div>
<div class="col mt-1 ">
<div class="border-bottom"><small class="font-weight-bold">Or scan this QR
Code</small></div>
<div class="mt-3 d-flex justify-content-md-center">
<imgsrc="./img/qrcode.png" alt="" style="width:116px;height:116px;" class="shadow">
</div>

</div>

</div>
</div>

</td>

</tr>

</tr>
<?php } ?>
</tbody>
</table>
</div>

P a g e | 39
</div>
</div>

<!-- TABLE CONTENT ENDED -->


<!-- FUNDING TABLE CONTENT STARTED -->
<!-- FUNDING SECTION ENDED -->
</div>

</section>

<!-- SHOW CASE AREA ENDED -->

<script src="./js/jquery.min.js"></script>

<script src="./js/bootstrap.min.js"></script>
<script src="./js/bootstrap.bundle.min.js"></script>
<script src="./js/main.js"></script>
<script src="./js/fund.js"></script>
</body>

</html>

GoogleauthModule :

<?php
include('functions.php');
include('auth.php');
require "./Authenticator/Authenticator.php";

$id=$_SESSION['id'];
$con=db();
$q="SELECT COUNT(*) from googleauth where c_id='$id'";
$r=mysqli_query($con,$q);
if($a=mysqli_fetch_array($r,MYSQLI_NUM)){
if($a[0]>0)
header('location:twofactor.php');
}else{
header('location:dashboard.php');
}

P a g e | 40
$Authenticator = new Authenticator();
if (!isset($_SESSION['auth_secret'])) {
$secret = $Authenticator->generateRandomSecret();
$_SESSION['auth_secret'] = $secret;
}

$qrCodeUrl = $Authenticator->getQR('Bitcobs', $_SESSION['auth_secret']);

if (!isset($_SESSION['failed'])) {
$_SESSION['failed'] = false;
}

?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Two-Factor Authenticator</title>
<link rel="icon" href="favicon.ico" type="image/x-icon" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-
alpha.6/css/bootstrap.min.css" integrity="sha384-
rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ"
crossorigin="anonymous">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"
integrity="sha384-
vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn"
crossorigin="anonymous"></script>
<link rel='shortcut icon' href='/favicon.ico' />
<style>
body,html {
height: 100%;
}

.bg {
/* The image used */
background-image: url("images/bg.jpg");
/* Full height */
height: 100%;
/* Center and scale the image nicely */
background-position: center;
background-repeat: no-repeat;

background-size: cover;
}
</style>
</head>
<body class="bg">
<div class="container">
<div class="row">
<div class="col-md-6 offset-md-3" style="background: white; padding: 20px; box-shadow:
10px 10px 5px #888888; margin-top: 100px;">
<h1>Two-Factor Authentication</h1>
<p style="font-style: italic;">Enter 6-digit Authentication Code</p>
<hr>
<form action="../bitcobs/Authenticator/check.php" method="post">
<div style="text-align: center;">
<?php if ($_SESSION['failed']): ?>
<div class="alert alert-danger" role="alert">

P a g e | 41
<strong>Oh snap!</strong> Invalid Code.
</div>
<?php
$_SESSION['failed'] = false;
?>
<?php endif ?>

<img style="text-align: center;;" class="img-fluid" src="<?php echo $qrCodeUrl ?>"


alt="Verify this Google Authenticator"><br><br>
<input type="text" class="form-control" name="code" placeholder="******" style="font-size:
xx-large;width: 200px;border-radius: 0px;text-align: center;display: inline;color:
#0275d8;"><br><br>
<button type="submit" class="btnbtn-md btn-primary" style="width: 200px;border-radius:
0px;">Verify</button>

</div>

</form>
</div>
</div>
</div>
</body>
</html>

Login Module :

<?php
require 'header.php';
if(isset($_SESSION['id'])){
header('location:market.php');
}
if(isset($_POST['submit'])){
$con=db();
if(empty($_POST['email'])||empty($_POST['pass'])){
$msg="Please fill all fields carefully...";
}
else{
$email=stripslashes($_POST['email']);
$pass=stripslashes($_POST['pass']);
$passhash=hash('sha256',$pass.$email);
$q="SELECT * from users where email='$email'";
$r=mysqli_query($con,$q);
if($a=mysqli_fetch_array($r)){
if(($a['password']==$passhash) && (!userBlocked($email,$passhash))){
//Successfully logged-in
$id=$a['id'];
$status=1;
$_SESSION['id']=$id;
insertLog($id,$status,$con);
$q1="DELETE FROM login_log where c_id='$id' AND status='0'";
$r1=mysqli_query($con,$q1);
header('location:googleauth.php');
}elseif(userBlocked($email,$passhash)){
$msg="Account Blocked temporarily due to suspicious
activiy!";

P a g e | 42
}
else{
//Login unsuccessfull
$status=0;
$id=getId($email,$passhash);
insertLog($id,$status,$con);
$msg="Error logging in!!";
}
}
else{
$msg="Error logging in!!";
}

?>
<!-- NAVBAR ENDED -->

<!-- SHOWCASE AREA -->


<body>
<div class="container">
<div class="content mx-auto" style="margin-top:4rem;">
<h3 class="text-center mb-5">Sign in to BitCobs</h3>
<div class="row">
<div class="col-sm-12 col-md-8 mx-auto">
<div class="card shadow mb-3">
<div class="card-body text-secondary text-center">
<?php if(isset($msg)) { ?>
<div class="alert alert-danger"><?=$msg ?></div>
<?php } ?>
<div class="row">
<div class="col-sm-12 col-md-6 border-right " id="bitcoin">
<h5 class="text-center pt-2">Bitcobsa exchange Made in India</h5>
<i class="fab fa-bitcoin pb-3" style="font-size:5rem; color:#2a6f87;"></i>
<p class="font-weight-normal">Bitcobs make technology easier and helpful for those who are
paying higher fees to the banks and payment gateways.</p>
</div>
<div class="col-sm-12 col-md-6" id="sideright">
<h3 class="pb-2">Sign in</h3>
<form method="POST"action="">
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text"><i class="far fa-envelope-open"></i></span>

</div>
<input type="email" class="form-control" placeholder="Enter Email" id="email"name="email"
autocomplete="off"
required>
<div class="invalid-feedback">
Invalid email
</div>
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-key"></i></span>

</div>

P a g e | 43
<input name="pass"type="password" class="form-control" placeholder="Password"
id="pass" autocomplete="off"
required>
<div class="invalid-feedback">
Invalid password
</div>
</div>
<div class="ginger">

<div class="form-group form-check text-left">


<input type="checkbox" class="form-check-input" id="exampleCheck1">
<label class="form-check-label" for="exampleCheck1">Check me out</label>
</div>
<input name="submit"type="submit"value="Log In" class="btnbtn-block text-white"
style="background:#2a6f87">

</form>
</div>
<div class="auth">
<div>
<a href="./forgotpassword.html">Forgot Password?</a>

<a href="#">privacy policy</a>

</div>
<div class="mt-2"><a href="#">Don't have an account?</a></div>
<!--<button type="button" class="btnbtn-secondary" data-toggle="tooltip" data-
placement="top" title="Tooltip on top">
Tooltip on top
</button> -->
</div>
</div>

</div>

</div>
</div>
</div>
</div>
<!-- ROW ENDED -->

</div>
</div>

</section>

<!-- SHOW CASE AREA ENDED -->

<script src="./js/jquery.min.js"></script>

<script src="./js/bootstrap.min.js"></script>

P a g e | 44
<script src="./js/main.js"></script>
</body>

</html>

Twofactor :

<?php
include('header.php');
require 'auth.php';
require "./Authenticator/Authenticator.php";
if(isset($_POST['code'])){
$id=$_SESSION['id'];
$con=db();
$q="SELECT * from googleauth where c_id='$id'";
$r=mysqli_query($con,$q);
if($a=mysqli_fetch_array($r,MYSQLI_ASSOC)){
$secret=$a['seckey'];
}
$Authenticator = new Authenticator();
$checkResult = $Authenticator->verifyCode($secret, $_POST['code'], 2); // 2 = 2*30sec clock
tolerance
if($checkResult){
header('location:market.php');
}else{
$_SESSION['failed'] = true;
}
}
?>
<div class="container">
<div class="row">
<div class="col-md-6 offset-md-3" style="background: linear-gradient(to right, #073b5e,
#4ca1af) !important; padding: 20px; box-shadow: 10px 10px 5px #888888; margin-top:
100px;">
<h1>Time-Based Authentication</h1>
<p style="font-style: italic;">A Google Authenticator kinda Authentication</p>
<hr>
<form action="" method="post">
<div style="text-align: center;">
<?php if ($_SESSION['failed']): ?>
<div class="alert alert-danger" role="alert">
<strong>Oh snap!</strong> Invalid Code.
</div>
<?php
$_SESSION['failed'] = false;
?>
<?php endif ?>
<input type="text" class="form-control" name="code" placeholder="******" style="font-size:
xx-large;width: 200px;border-radius: 0px;text-align: center;display: inline;color:
#0275d8;"><br><br>
<button type="submit" class="btnbtn-md btn-primary" style="width: 200px;border-radius:
0px;">Verify</button>

</div>

</form>
</div>
</div>

P a g e | 45
</div>
</html>

Functions :

<?php
session_start();
//database connection
function db(){
static $con;
if($con==NULL){
$con=mysqli_connect("localhost","db_username","xxxxxxx","db_name");
}
return $con;
}

//check if user already exists


function userExists($email,$con){
$q1="SELECT * from users where email='$email'";
$r1=mysqli_query($con,$q1);
if(mysqli_num_rows($r1)==1){
return true;
}else{
return false;
}
}

//Insert login log


function insertLog($id,$status,$con){
$ip=$_SERVER['REMOTE_ADDR'];
date_default_timezone_set('Asia/Kolkata');
$date=date('Y-m-d H:i:s');
$q2="Insert into login_log (c_id,ip_address,time,status)VALUES('$id','$ip','$date',$status)";
$r2=mysqli_query($con,$q2);
if($r2){
return true;
}else{
return false;
}
}

//Returns Id of user
function getId($email,$pass){
$con=db();
$q3="SELECT * from users where email='$email'";
$r3=mysqli_query($con,$q3);
if($arr=mysqli_fetch_array($r3)){
$id=$arr['id'];
return $id;
}
}

//Check Whether user's account is blocked or not


function userBlocked($email,$password){
$con=db();
$id=getId($email,$password);
$q4="SELECT COUNT(*) FROM login_log where time >= DATE_SUB(NOW(),INTERVAL
1 HOUR) AND status=0 AND c_id='$id'";
$r4=mysqli_query($con,$q4);

P a g e | 46
if($a=mysqli_fetch_array($r4)){
if($a[0]==3){
return true;
}
else{
return false;
}
}
}

//Get all coin name


function coinNames() {
$con=db();
$query = "SELECT * FROM coins WHERE NOT(coin_code= 'INR')";
$result = mysqli_query($con,$query);
return $result;
}

//Funds
function funds ($cust_id) {
$con = db();
$query = "select c.coin_name, c.coin_code, c.coin_logo,b.balance, a.address FROM
coins c, balances b, address a WHERE c.coin_id = b.coin_id AND c.coin_id = a.coin_id AND
b.coin_id=a.coin_id AND b.c_id = a.c_id AND b.c_id='$cust_id' AND a.c_id='$cust_id'";
$result = mysqli_query($con,$query);
return $result;
}
//INR balance
function inr($cust_id) {
$con = db();
$query = mysqli_query($con,"SELECT balance FROM balances WHERE c_id =
'$_SESSION[id]' AND coin_id = '3'");
$row = mysqli_fetch_array($query,MYSQLI_ASSOC);
return $row;
}

//register user
function registerUser($fname,$lname,$email,$pass,$mob,$con){
if(userExists($email,$con)==true){
$msg="already exists";
echo json_encode(array("msg"=>$msg));
}
else{
$fname=stripslashes($_POST['fname']);
$lname=stripslashes($_POST['lname']);
$email=stripslashes($_POST['email']);
$pass=stripslashes($_POST['pass']);
$mob=stripslashes($_POST['mob']);
$passhash=hash('sha256',$pass.$email);
$q="INSERT into users (fname,lname,email,password,mobile) VALUES
('$fname','$lname','$email','$passhash','$mob')";
$r=mysqli_query($con,$q);
if($r){
echo json_encode(array("msg"=>"registered"));
}
else
echo json_encode(array("msg"=>"error"));
}
die();
}

P a g e | 47
//get coin id by coin_code
function coin_id($coin_code) {
$con = db();
$query = mysqli_query($con, "SELECT coin_id FROM coins WHERE coin_code =
'$coin_code'");
$result = mysqli_fetch_array($query);
$name = $result['coin_id'];
return $name;
}

?>

Buy module:

<?php
include('../functions.php');
if(!empty($_POST['rate']) && !empty($_POST['amount']) && !empty($_POST['first_pair']) &&
!empty($_POST['second_pair'])) {
$con = db();
$cust_id = $_SESSION['id'];
$rate = mysqli_real_escape_string($con, $_POST['rate']);
$rate = abs($rate);
$amount = mysqli_real_escape_string($con, $_POST['amount']);
$amount = abs($amount);
$total = $rate * $amount;
$first_pair = mysqli_real_escape_string($con, $_POST['first_pair']);
$second_pair = mysqli_real_escape_string($con, $_POST['second_pair']);
$first_pair = coin_id($first_pair);
$second_pair = coin_id($second_pair);
// echo $rate. " " . $amount;
$result = mysqli_query($con,"SELECT balance FROM balances WHERE c_id='$cust_id' AND
coin_id = '$first_pair'");
$res1 = mysqli_fetch_array($result);
$curr_balance = $res1['balance'];
if($curr_balance>= $amount) { //Check if user has sufficient balance
$res1 = mysqli_query($con,"SELECT * FROM opencls WHERE status='0' AND c_id2 IS
NULL AND coin_id1 = '$first_pair' AND coin_id2 = '$second_pair' AND rate='$rate'");
if($res1row = mysqli_fetch_array($res1, MYSQLI_ASSOC)) { //fetch rates from the table
if($res1row['rate']==$rate) {
if($res1row['amount'] == $amount) { // if amount of maker and taker are equal
$curr_balance = $curr_balance - $total;
$trn_date = date("Y-m-d H:i:s");
$query1 = "UPDATE opencls set c_id2='$cust_id', status = '1', trn_date = '$trn_date'
WHERE rate='$rate' AND c_id IS NULL AND $first_pair= '$first_pair' AND second_pair =
'$second_pair'";
$query2 = "UPDATE balances set balance = '$curr_balance' WHERE c_id =
'$cust_id' AND coin_id = '$first_pair'";
if(mysqli_query($con,$query1) &&mysqli_query($con,$query2)) { //Deduct balance
and confirm order
$msg = "Order executed successfully";
}
}
elseif($amount>$res1row['amount']) { //if amount of taker is greater than maker
$team2amount = $res1row['amount'];
$curr_balance = $curr_balance - $amount;
$trn_date = date("Y-m-d H:i:s");

P a g e | 48
$query1 = "UPDATE opencls set c_id2='$cust_id', status = '1', amount =
'$team2amount', trn_date = '$trn_date' WHERE rate='$rate' AND c_id2 IS NULL AND
$first_pair= '$first_pair' AND second_pair = '$second_pair'";
$query2 = "UPDATE users set current_bal = '$curr_balance' WHERE id =
'$cust_id'";
if(mysqli_query($con,$query1) &&mysqli_query($con,$query2)) {
$msg = "Partial order executed";
}
$restamount = $amount-$team2amount;
$trn_date = date("Y-m-d H:i:s");
if(mysqli_query($con,"INSERT INTO curr_order (game_id, uteam1, rate, amount, status,
trn_date) VALUES ('$id', '$cust_id', '$rate', '$restamount', '0', '$trn_date')"))
$msg = $msg . "and some are pending";
}
elseif($amount<$res1row['amount']) {
$team2amount = $res1row['amount'];
$curr_balance = $curr_balance - $amount;
$trn_date = date("Y-m-d H:i:s");
$query1 = "UPDATE curr_order set uteam1='$cust_id', status = '1', amount =
'$amount', trn_date = '$trn_date' WHERE rate='$rate' AND uteam1 IS NULL AND
game_id='$id'";
$query2 = "UPDATE users set current_bal = '$curr_balance' WHERE id =
'$cust_id'";
$query3 = mysqli_query($con,"SELECT uteam2 FROM curr_order WHERE
rate='$rate' AND uteam1 IS NULL AND game_id='$id'");
$uteam2id = mysqli_fetch_array($query3);
if(mysqli_query($con,$query2) &&mysqli_query($con,$query1)) {
$msg = "Partial order executed";
}
$uteam2 = $uteam2id['uteam2'] ;
$restamount = $team2amount-$amount;
date_default_timezone_set('Asia/Kolkata');
$trn_date = date("Y-m-d H:i:s");
if(mysqli_query($con,"INSERT INTO curr_order (game_id, uteam2, rate, amount, status,
trn_date) VALUES ('$id', '$uteam2', '$rate', '$restamount', '0', '$trn_date')"))
$msg = $msg .' '. "and some are pending";
}
}
}
else {
$curr_balance = $curr_balance - $total;
$trn_date = date("Y-m-d H:i:s");
$query2 = "UPDATE balances set balance = '$curr_balance' WHERE c_id = '$cust_id'
AND coin_id = '$first_pair'";
$query1 = "INSERT INTO opncls (coin_id1, c_id1, coin_id2 , rate, amount, status,
trn_date) VALUES ('$first_pair', '$cust_id', '$second_pair', '$rate', '$amount', '0' , '$trn_date')";
if(mysqli_query($con,$query1) &&mysqli_query($con,$query2)) {
$msg = "You order is submitted in the order book.";
}
else {
$msg = mysqli_error($con);
}
}

}
}
else {
$msg = "Please fill all the form details";
}
echo $msg; ?

P a g e | 49
9. SNAPSHOTS

Home Page:

Registration Page:

P a g e | 50
KYC Verification Page:

Log In Page:

P a g e | 51
2 – Factor Authentication:

Market Dashboard:

P a g e | 52
Funds Transfer Page:

Trade History Page:

P a g e | 53
Transaction Details:

P a g e | 54
10. TESTING

Testing is a process to show the correctness of the program. Testing is needed to show
completeness, it improve the quality of the software and to provide the maintenance aid.
Some testing standards are therefore necessary reduce the testing costs and operation time.
Testing software extends throughout the coding phase and it represents the ultimate
review of configurations, design and coding. Based on the way the software reacts to these
testing, we can decide whether the configuration that has been built is study or not. All
components of an application are tested, as the failure to do so many results in a series of
bugs after the software is put to use.

Black Box Testing:

Black box testing, also called behavioral testing, focuses on the functional requirements
of software. This testing approach enables the software engineer to derive the input
conditions that will fully exercise all requirements for a program. Black box testing
attempts to find the errors like:

 Incorrect or missing functions.


 Interface errors.
 Errors in data structures or external databases access.
 Behavior or performance errors.
 Initialization and termination errors.
In Black box testing software is exercised over a full range of inputs and outputs are
observed for correctness.

White Box Testing:

White box testing is also called Glass box testing is a test case design control; structure
of the procedural design to derive test cases using White box testing method, the software
engineer can derive the test cases that guarantee that all independent paths within the
module have been exercised at least once. Exercise all logic decisions on their true or false
sides. Exercise all loops at their boundaries and within their operational bounds. Exercise
internal data structures to ensures their validity.

Software Testing Strategies:

Testing involves

P a g e | 55
 Unit testing
 Integration testing
 Acceptance testing.

The first level of test is Unit Testing. The purpose of unit testing is to ensure that each
program is fully tested.
The second step is Integration Testing. In this individual program units or program are
integrated and tested as a complete system to ensure that the software requirements are
met.

Acceptance Testing involves planning and the execution of various types of tests in order
to demonstrate that the implemented software system satisfies the requirements. Finally
our projects meets the requirements after going through all the levels of testing.

The testing begin by making sure that every button on every screen works. You also
Need to ensure that you can enter simple text into each field without crashing the
Software. You don’t have to try out all the different combination of clicks and characters,
Or edge conditions, because that’s what your testers do and they’re really good at that.
The goal here is this : don’t let other people touch your work if it’s going to crash as soon
as they enter their own name into the username field. If the feature is designed to be
accessed by way of an API, you need to run tests to make sure that the basic API functi-
onality works before submitting it for more intensive testing. If your basic functionality
testing detects something that doesn’t work, that’s fine. Just tell them that it doesn’t
work, that you’re aware of it, and that they shouldn’t bother trying it. You can fix it later,
just don’t leave any surprises in there.

Testing Documentation:

Testing documents are prepared at different stages-

Before Testing:

Testing starts with test cases generation. Following documents are needed for reference-

SRS Document- Functional Requirements document.

Test Policy Document- This describes how far testing should take place before releasing the
product.

Test Strategy Document- This mentions detail aspects of test team, responsibility matrix
and rights responsibility of test manager and test engineer.

Traceability Matrix Document- This is SDLC document, which is related to requirements


come, they are added to this matrix. These matrices help testers know the source of

P a g e | 56
requirement. They can be traced forward and backward.

While Being Tested:

The following documents may be required while testing is started and is being done-

Test Case Document- This document contains list of tests required to be conducted. It
includes Unit test plan, Integration test plan, System test plan and Acceptance test plan.

Test description- This document is a detailed description of all test cases and procedures to
execute them.

Test case report- This document contains test case report as a result of the test.

Test logs- This document contains test logs for every test case report.

After Testing:

The following documents may be generated after testing -

Test Summary-This test summary is collective analysis of all test reports and logs. It
summarizes and concludes if the software is ready to be launched. The software is released
under version control system if it is ready to launch.

Testing vs. Quality Control, Quality Assurance and Audit :

We need to understand that software testing is different from software quality assurance,
software quality control and software auditing:

Software quality assurance-These are software development process monitoring means, by


which it is assured that all the measures are taken as per the standards of organization. This
monitoring is done to make sure that proper software development methods were followed.

Software quality control-This is a system to maintain the quality of software product. It may
include functional and non- functional aspects of software product, which enhance the
goodwill of the organization. This system makes sure that the customer is receiving quality
product certified as ‘fit for use’.

Software audit-This is a review of procedure used by the organization to develop the


software.A team of auditors, independent of development team examines the software
process, procedure, requirements and other aspects of SDLC. The purpose of software audit
is to check that software and its development process, both confirm standards, rules and
regulations.

P a g e | 57
Software life cycle

Software Testing Process –

Agile or Waterfall, Scrum or RUP, traditional or exploratory, there is a fundamental process


to Software testing. Let’s take a look at the components that make up the whole.

1: Test Strategy and Test Plan

Every Project needs a Test Strategy and a Test Plan. These artefacts describe the scope for
testing for a project :

 The systems that need to be tested, and any specific configurations.


 Features and functions that are the focus of the project.
 Non- functional requirements.
 Test approach- traditional, exploratory, automation, etc- or a mix.
 Key processes to follow- for defects resolution, defects triage.
 Tools- for logging defects, for test case scripting, for traceability.
 Documentation to refer, and to produce as output.
 Test environment requirements and setup.
 Risks, dependencies and contingencies.
 Test Schedule

P a g e | 58
 Approval workflows
 Entry / Exit criteria.

2: Test Design

Now that you have a strategy and a plan, the next step is to dive into creating a test suite. A
test suite is a collection of test cases that are necessary to validate the system being built,
against its original requirements.

Test design as a process is an amalgamation of the Test Manager’s experience of similar


projects over the years, testers knowledge of the system/ functionality being tested and
prevailing practices in testing at any given point. For instance, if you work for a company in
the early stages of a new product development, your focus will be on uncovering major bugs
with the alpha/beta versions of your software, and less on making the software completely
bug-proof.

The product may not yet have hit the critical “star” or “cash cow” stages of its existence-it’s
still a question mark. And you probably have investors backing you, or another product of
your own that is subsidizing this new initiative until it can break even. Here, you’re trying to
make significant strides more like giant leaps with your product before you’re happy to
unwrap it in front of customers. Therefore, you’re less worried about superficial aspects like
look and feel, and more worried about Fundamental functionality that sets your product apart
from your competitors.

3: Test Execution

You can execute tests in many different ways- as single, waterfall SIT(System integration
Test) and UAT (User Acceptance Test) phases; as part of Agile sprints; supplemented with
exploratory tests, or with test-driven development. Ultimately, you need to do adequate
amount of software testing to ensure your system is (relatively) bug-free.

Let’s set methodology aside for a second, and focus on how you can clock adequate testing.
Let’s go back to the example of building a mobile app that can be supported across operating
systems, OS versions, devices. The most important question that will guide your test efforts is
what is my Test environment?

You need to understand your test environment requirements clearly to be able to decide your
testing Strategy. For instance, does your app depend on integration with a core system back
end to display information and notifications to customers? If yes, your test environment needs
to provide back end integration to support meaningful functional tests.

Can you commission such an end-to-end environment to be built and ready for your sprints to
begin?
Depending on how your IT organization is set up, maybe not. This is where the question of
agile
Vs a more flexible approach comes into picture. Could you have foreseen this necessity way
before
the sprints began? Probably not.

P a g e | 59
Given how Agile projects are run, you may only have a couple of weeks between initiating a
project and starting delivery sprints, which time isn’t enough to commission an end-to-end
test environment if one doesn’t already exist. If everything goes fine, you’ll have a test
environment
to your liking, configured to support your project, with all enablers built to specifications. If
not
then your test strategy will be different.

In this example, we’re talking about doing front-end tests with dummy back end to support
in-
Sprint testing, and wait until an integrated test environment is ready. It is common practice to
Schedule integration tests just after delivery sprints and before release. Your team can then
run a dedicated System Integration Test, focusing on how the app components work with the
back end to deliver the required functionality. So while app- specific bugs will primarily be
reported during the sprints, functional end-to-end bugs will crop up during the integration
test.
You can follow this up with a UAT cycle to put finishing touches in terms of look and feel,
copy etc. How your team execute test cycles depends on the enabling infrastructure, project
and team structure in your organization.

4: Test Closure

Right-so you have done the planning necessary, executed tests and now want to green-light
your product for release. You need to consider the exit criteria for signaling completion of the
test cycle and readiness for a release. Let’s look at the components of exit criteria in general:

 100% requirements coverage: all business and technical requirements have to be


covered by testing.
 Minimum % pass rate: targeting 90% of all test cases to be passed is best practice.
 All critical defects to be fixed: self-explanatory. They are critical for a reason.

P a g e | 60
11.COST AND TIME ESTIMATION

COCOMO Model:

Specific Instructional Objectives :

At the end of this lesson the student would be able to:


• Differentiate among organic, semidetached and embedded software projects.
• Explain basic COCOMO.
• Differentiate between basic COCOMO model and intermediate COCOMO model.
• Explain the complete COCOMO model.

Organic, Semidetached and Embedded software projects Boehm postulated that any software
development project can be classified into one of the following three categories based on the
development complexity: organic, semidetached, and embedded. In order to classify a
product into the identified categories, Boehm not only considered the characteristics of the
product but also those of the development team and development environment. Roughly
speaking, these three product classes correspond to application, utility and system programs,
respectively. Normally, data processing programs are considered to be application programs.
Compilers, linkers, etc., are utility programs. Operating systems and real-time system
programs, etc. are system programs. System programs interact directly with the hardware and
typically involve meeting timing constraints and concurrent processing.

Boehm’s [1981] definition of organic, semidetached, and embedded systems are elaborated
below.
Organic: A development project can be considered of organic type, if the project deals with
developing a well understood application program, the size of the development team is
reasonably small, and the team members are experienced in developing similar types of
projects.
Semidetached: A development project can be considered of semidetached type, if the
development consists of a mixture of experienced and inexperienced staff. Team members
may have limited experience on related systems but may be unfamiliar with some aspects of
the system being developed.
Embedded: A development project is considered to be of embedded type, if the software
being developed is strongly coupled to complex hardware, or if the stringent regulations on
the operational procedures exist.

COCOMO (Constructive Cost Estimation Model) was proposed by Boehm [1981].


According to Boehm, software cost estimation should be done through three stages: Basic
COCOMO, Intermediate COCOMO, and Complete COCOMO.

Basic COCOMO Model:

The basic COCOMO model gives an approximate estimate of the project parameters. The
basic COCOMO estimation model is given by the following expressions:
Effort = a1 х (KLOC)a2 PM
Tdev = b1 x (Effort)b2 Months
Where,

P a g e | 61
• KLOC is the estimated size of the software product expressed in Kilo Lines of Code,
• a1, a2, b1, b2 are constants for each category of software products,
• Tdev is the estimated time to develop the software, expressed in months,
• Effort is the total effort required to develop the software product, expressed in person
months (PMs).
The effort estimation is expressed in units of person-months (PM). It is the area under the
person-month plot (as shown in fig. 11.3). It should be carefully noted that an effort of 100
PM does not imply that 100 persons should work for 1 month nor does it imply that 1 person
should be employed for 100 months, but it denotes the area under the person-month curve (as
shown in fig. 11.3).

According to Boehm, every line of source text should be calculated as one LOC irrespective
of the actual number of instructions on that line. Thus, if a single instruction spans several
lines (say n lines), it is considered to be nLOC. The values of a1, a2, b1, b2 for different
categories of products (i.e. organic, semidetached, and embedded) as given by Boehm [1981]
are summarized below. He derived the above expressions by examining historical data
collected from a large number of actual projects.Estimation of development effort for the
three classes of software products, the formulas for estimating the effort based on the code
size are shown below:

Organic : Effort = 2.4(KLOC)1.05 PM


Semi-detached : Effort = 3.0(KLOC)1.12 PM
Embedded : Effort = 3.6(KLOC)1.20 PM
Estimation of development time
For the three classes of software products, the formulas for estimating the development time
based on the effort are given below:
Organic :Tdev = 2.5(Effort)0.38 Months
Semi-detached :Tdev = 2.5(Effort)0.35 Months
Embedded :Tdev = 2.5(Effort)0.32 Months

some insight into the basic COCOMO model can be obtained by plotting the estimated
characteristics for different software sizes. Fig. 11.4 shows a plot of estimated effort versus
product size. we can observe that the effort is somewhat superlinear in the size of the
software product. Thus, the effort required to develop a product increases very rapidly with
project size.

Effort versus product size

The development time versus the product size in KLOC is plotted , it can be observed that the
development time is a sublinear function of the size of the product, i.e. when the size of the
product increases by two times, the time to develop the product does not double but rises
moderately. This can be explained by the fact that for larger products, a larger number of
activities which can be carried out concurrently can be identified. The parallel activities can
be carried out simultaneously by the engineers. This reduces the time to complete the project.
Further it can be observed that the development time is roughly the same for all the three
categories of products. For example, a 60 KLOC program can be developed in approximately
18 months, regardless of whether it is of organic, semidetached, or embedded type.

From the effort estimation, the project cost can be obtained by multiplying the required effort
by the manpower cost per month. But, implicit in this project cost computation is the

P a g e | 62
assumption that the entire project cost is incurred on account of the manpower cost alone. In
addition to manpower cost, a project would incur costs due to hardware and software required
for the project and the company overheads for administration, office space, etc.

It is important to note that the effort and the duration estimations obtained using the
COCOMO model are called as nominal effort estimate and nominal duration estimate. The
term nominal implies that if anyone tries to complete the project in a time shorter than the
estimated duration, then the cost will increase drastically. But, if anyone completes the
project over a longer period of time than the estimated, then there is almost no decrease in the
estimated cost value.

Example:
Assume that the size of an organic type software product has been estimated to be 32,000
lines of source code. Assume that the average salary of software engineers be Rs. 15,000/-
per month. Determine the effort required to develop the software product and the nominal
development time.
From the basic COCOMO estimation formula for organic software:
Effort = 2.4 х (32)1.05 = 91 PM
Nominal development time = 2.5 х (91)0.38 = 14 months
Version 2 CSE IIT, Kharagpur
Cost required to develop the product = 14 х 15,000
= Rs. 210,000/-

Intermediate COCOMO model:

The basic COCOMO model assumes that effort and development time are functions of the
product size alone. However, a host of other project parameters besides the product size
affect the effort required to develop the product as well as the development time. Therefore,
in order to obtain an accurate estimation of the effort and project duration, the effect of all
relevant parameters must be taken into account. The intermediate COCOMO model
recognizes this fact and refines the initial estimate obtained using the basic COCOMO
expressions by using a set of 15 cost drivers (multipliers) based on various attributes of
software development. For example, if modern programming practices are used, the initial
estimates are scaled downward by multiplication with a cost driver having a value less than 1.
If there are stringent reliability requirements on the software product, this initial estimate is
scaled upward. Boehm requires the project manager to rate these 15 different parameters for a
particular project on a scale of one to three. Then, depending on these ratings, he suggests
appropriate cost driver values which should be multiplied with the initial estimate obtained
using the basic COCOMO. In general, the cost drivers can be classified as being attributes of
the following items:
Product: The characteristics of the product that are considered include the inherent
complexity of the product, reliability requirements of the product, etc.
Computer: Characteristics of the computer that are considered include the execution speed
required, storage space required etc.
Personnel: The attributes of development personnel that are considered include the
experience level of personnel, programming capability, analysis capability, etc.
Development Environment: Development environment attributes capture the development
facilities available to the developers. An important parameter that is considered is the
sophistication of the automation (CASE) tools used for software development.

P a g e | 63
Complete COCOMO model:

A major shortcoming of both the basic and intermediate COCOMO models is that they
consider a software product as a single homogeneous entity. However, most large systems are
made up several smaller sub-systems. These sub-systems may have widely different
characteristics. For example, some sub-systems may be considered as organic type, some
semidetached, and some embedded. Not only that the inherent development complexity of the
subsystems
may be different, but also for some subsystems the reliability requirements may be high, for
some the development team might have no previous experience of similar development, and
so on. The complete COCOMO model considers these differences in characteristics of the
subsystems and estimates the effort and development time as the sum of the estimates for the
individual subsystems. The cost of each subsystem is estimated separately. This approach
reduces the margin of error in the final estimate.
The following development project can be considered as an example application of the
complete COCOMO model. A distributed Management Information System (MIS) product
for an organization having offices at several places across the country can have the following
sub-components:
• Database part
• Graphical User Interface (GUI) part
• Communication part
Of these, the communication part can be considered as embedded software. The database part
could be semi-detached software, and the GUI part organic software. The costs for these three
components can be estimated separately, and summed up to give the overall cost of the
system.

Projects benefit from following a thoughtful and deliberate process when developing
project cost estimates. It is applied to all phases of project delivery, starting with the
planning phase estimate and ending with the plans, specifications, and estimates phase.
Each phase of an estimate may require different estimating inputs, methods, techniques,
and tool.Bitcobs a cost efficient project in which hardware and software specification must
be reliable and easy to access.

The Basis of estimate describes the project. It includes underlying assumptions, notes,
And exclusions, and is required prior to the preparation of every project estimate. The
Basis of estimate document includes project information and previously developed project
scope and schedule data, from which a project cost estimate can be prepared.

Prepare a Baseline Estimates:

Baseline estimated costs for the project components are determined in current year dollars.
These components may be estimated using different techniques depending on the level of
Scope definition and the size and complexity of the project. The number and detail of
Components estimated may vary depending on the data available at the time of the estimate.

For Example, in the scoping phase, the cost estimate covers preliminary engineering (PE),

P a g e | 64
right of way (ROW), and construction (CN). As the design progresses and more detailed.
Key inputs to this activity include project scope details, historical databases, and other
Cost databases.

The baseline estimate is also dependent on the estimated project schedule. The estimated
schedule should be attached to the Basis of Estimates.

Time estimation

Now, list all of the activities you identified in the order in which they need to happen.
Estimate how much time it will take to accomplish every single activity you are going
To implement. Define the key deadline milestones. Check whether you are armed
with all the instruments and resources needed to accomplish the tasks.

Don’t forget to make allowance and find time for the following points:

 Administrative work
 Emergency cases and unpredictable situations.
 Possible issues with equipment.
 Communication with the stakeholders.
 Meetings
 Training
 Holidays, vacations and sick leaves of the key people involved.
 Obtaining needed technical resources.
 Debugging and rejections from a module.
 Code review.
 Other current tasks with high priority.

With these in mind, you will make your project estimation much more effective as
Compared to the base assumptions. You may find out all these points significantly
Extend the overall project frames.

Estimation for Project:

Now I will estimate the size, effort and schedule from the requirements or feature
list of the project. After that I will compare this estimates with the actual size,
effort and schedule. In this way I will show the reader that how the estimation work
and how you can compare it after you have completed the project.

P a g e | 65
Size for Project

I have used function points for estimating the size. Briefly project is a data acquisition
and processing software. It displays acquired data on the screen.

In function points estimation we have to take into accounts all external inputs, external
Outputs, internal logical files, external interface file and external queries.

Effort for Project

For effort estimation I used the ISBSG( International Software Bench-marking Standard
Group) method. ISBSG takes function points as inputs and number of staff to complete
The project and return the effort estimate. Since I have estimated the size of the project
and effort of the project.

P a g e | 66
12. FUTURE SCOPE
Cryptocurrencies are a subset of alternative currencies or specifically of digital currencies
which uses encryption techniques to regulate the generation of units of currency and verify
the transfer of funds, operating independently of a bank. It is a digitalasset that works as a
medium of exchange by using cryptography to secure the transaction.

See I don’t have crystal ball hat could tell what is going to happen in future. But I know one
thing that decentralization is future and cryptocurrencies have that power.I understand the
problem when the money is centralized and the problem you face.

Now, just imagine if the money is controlled by everybody and you can see where it came
from and where it go, so Blockchain gives us that power to monitor all transaction.This is
where the power of cryptocurrency comes in. The Blockchain is the technology that is serves
as the distributed ledger that forms the network. This network creates the means for
transacting, and enables transferring of value and information.

Scope of Cryptocurrency in India :

A country like India which has recently faced demonetization has developed great affection
for cryptocurrencies in the recent past. It has been nearly five years since bitcoin made its
debut in Indian Financial markets. In India, the transactions made through cryptocurrency are
on the rise despite the notifications circulated by the finance ministry. This makes it clear that
the upcoming future of bitcoin in India is dazzling. There are about 1548 cryptocurrencies
currently operational in the market available as an alternative to bitcoin.

Since bitcoin is not available in the physical form, this virtual currency can be converted into
physical form by listing it on various online exchange platforms. Taxing the cryptocurrency
another way to legalise this currency. It becomes clear that it is a risky investment option, but
there is no harm in opting for a calculated risk.

Future of Blockchain Technology:

Blockchain is the underlying technology behind all cryptocurrencies like bitcoin and
ethereum, has a potential of changing the way we work and communicate, making it
more secure, efficient, and trustworthy.

Data or transactions once written on the blockchain are open for audit and will be stored there
till the end of time. One of the best properties about blockchain is that it helps in removal of
third parties in any sort of transaction or arrangement.

P a g e | 67
Blockchain is the future of many businesses but not all. The key value proposition of
blockchain is to provide transparency and efficiency. Businesses need to do their own
homework to access whether or not they should adopt blockchain, when to adopt and what
division to adopt. For example, a local restaurant who is looking for technology to improve
table turnover is better off to use some existing non blockchain applications. There is no
value added benefit here from a blockchain solution. However, if you are Doing business
with other parties all across the globe and want to know the credential of a new trading
partner before signing a contract, you should probably look for some blockchain solutions.
There is no way a central body can build a global registry/ KYC platform / reputation book
for all businesses across the globe. But decentralized blockchain solutions can. It heads back
the control, data, and decision making to value creaters.

Many of the businesses can improve efficiency by adopting blockchain, especially in


Finance, supply chain, healthcare and gaming. But there is no one size fits all answer To
blockchain adoption. We have seen mainstream players (e.g. IBM in hyperledger & JPM’s
Quorum) tapped blockchain / DLT and the positive outcome from these Projects. I think it’s
just a matter of time for blockchain to take off in mainstream Adoption and I’m pretty
optimistic about the future of blockchain.

P a g e | 68
13. CONCLUSION

Bitcobs is a secure ,reliable and advanced digital Cryptocurrency trading platform developed
for international and national customers and built on blockchain technology. This
tradingplatform provides innovative and more streamlined approach, while also providing
instant trade execution.

We are committed to being a driving force in the blockchain revolution by increasing


adoption of this technology around the world. We will make advance new, innovative
blockchain projects that could potentially transform the way goods, services and operations
are managed globally.

P a g e | 69
14.BIBLIOGRAPHY

 www.github.com
 www.stackoverflow.com
 www.medium.com
 www.reddit.com
 www.bitcoin.org
 www.php.net/manual
 www.developers.android.com

P a g e | 70

Вам также может понравиться