basic fundamentals of block chain
- or -
Post a project like this$$
- Posted:
- Proposals: 1
- Remote
- #1752755
- Expired
Description
Experience Level: Intermediate
General
Read input from AT LEAST the three provided data files, one file per process. We will run your program on the provided data files, and then also on our own data files that have the same format, but not necessarily the same number of records.
Each process maintains a copy of the shared ledger implemented as a blockchain. Each time the blockchain is updated it is multicast to all other peers. Process zero is responsible for writing the updated BlockchainLedger.xml file to disk. We will use only three processes, but your system design should—in theory—work for any number of peers with minor modifications.
Each process reads in a data file to create new records. A new record is placed in an unverified block. The block is multicast to all the processes in the blockchain group which begin competing with one another to solve the "work" puzzle. One process solves a puzzle to verify the block, prepends the verified block to the blockchain, and multicasts the new blockchain to all other processes in the group. All other processes abandon the attempt to verify that block.
Every record in the shared ledger is considered cannonical. It is ~impossible to insert a counterfeit block (record) into the blockchain.
We will use simple medical records in files, but the data is not really of concern to us. We could use the same system for a complete audit trail of business transactions, to support a digital currency, or to keep track of banking records.
Ordinarily many records would comprise a single block; for simplicity we will use a single record for each block.
Your system must run from some version of the provided run scripts. Adapt as needed for other operating systems.
Ports and servers
Because we will have multiple participating processes running on the same machine we will need flexibilty to avoid port conflicts. For each process:
Port 4710+process number receives unverified blocks and public keys. (4710, 4711, 4712)
Port 4820+process number receives updated blockchains (4820, 4821, 4822)
Initialization
Using the start script, start your servers in the oder P0, P1, P2
When P2 starts, it also triggers the multicast of public keys
All processes start with the same initial one-block (dummy entry) form of the blockchain.
After all public keys have been established read the data file for this process.
Create unverified blocks from the data and using XML as the external data format, multicast each unverified block in turn to all other processes.
Creating a new record and multicasting the unverified block
Any process can accept local input (in our case from a file) which is then put in an unverified block. The block is updated with a universally unique ID, a version of that UUID signed by the creating process, the ID of the creating process, and the current timestamp [and optionally an SHA-256 hash of the input data is placed in the DataHash field for auditing purposes—see below under DataHash].
Read input from AT LEAST the three provided data files, one file per process. We will run your program on the provided data files, and then also on our own data files that have the same format, but not necessarily the same number of records.
Each process maintains a copy of the shared ledger implemented as a blockchain. Each time the blockchain is updated it is multicast to all other peers. Process zero is responsible for writing the updated BlockchainLedger.xml file to disk. We will use only three processes, but your system design should—in theory—work for any number of peers with minor modifications.
Each process reads in a data file to create new records. A new record is placed in an unverified block. The block is multicast to all the processes in the blockchain group which begin competing with one another to solve the "work" puzzle. One process solves a puzzle to verify the block, prepends the verified block to the blockchain, and multicasts the new blockchain to all other processes in the group. All other processes abandon the attempt to verify that block.
Every record in the shared ledger is considered cannonical. It is ~impossible to insert a counterfeit block (record) into the blockchain.
We will use simple medical records in files, but the data is not really of concern to us. We could use the same system for a complete audit trail of business transactions, to support a digital currency, or to keep track of banking records.
Ordinarily many records would comprise a single block; for simplicity we will use a single record for each block.
Your system must run from some version of the provided run scripts. Adapt as needed for other operating systems.
Ports and servers
Because we will have multiple participating processes running on the same machine we will need flexibilty to avoid port conflicts. For each process:
Port 4710+process number receives unverified blocks and public keys. (4710, 4711, 4712)
Port 4820+process number receives updated blockchains (4820, 4821, 4822)
Initialization
Using the start script, start your servers in the oder P0, P1, P2
When P2 starts, it also triggers the multicast of public keys
All processes start with the same initial one-block (dummy entry) form of the blockchain.
After all public keys have been established read the data file for this process.
Create unverified blocks from the data and using XML as the external data format, multicast each unverified block in turn to all other processes.
Creating a new record and multicasting the unverified block
Any process can accept local input (in our case from a file) which is then put in an unverified block. The block is updated with a universally unique ID, a version of that UUID signed by the creating process, the ID of the creating process, and the current timestamp [and optionally an SHA-256 hash of the input data is placed in the DataHash field for auditing purposes—see below under DataHash].
Tracy W.
0% (0)Projects Completed
-
Freelancers worked with
-
Projects awarded
0%
Last project
24 Apr 2024
United States
New Proposal
Login to your account and send a proposal now to get this project.
Log inClarification Board Ask a Question
-
There are no clarification messages.
We collect cookies to enable the proper functioning and security of our website, and to enhance your experience. By clicking on 'Accept All Cookies', you consent to the use of these cookies. You can change your 'Cookies Settings' at any time. For more information, please read ourCookie Policy
Cookie Settings
Accept All Cookies