- updated test suite with 2 tests for Ahmed to fill in
- nodes build a blockchain locally and export it to a file to be verified
- 90% with all of v0.2 - still have testing and debugging
- new simulator
- simulator can pass input to nodes
- nodes run a thread to listen for input from standard input
- comms is finally complete
- all nodes run a TCP server and establish connections with all other nodes
- all nodes can send to and receive from all other nodes
- TCP connections are now handled by a list of sockets
- major cleanup
- setup a TCP server as the listening half of each node's communication abilities
- created a new branch for
comms
- it's taking longer than expected but is still very important - made the decision to use
Boost::Asio
as a networking library to make comms simpler
- TV interview
- nodes now have a map from the IDs of all other nodes to their contact information
- each node can now create its own socket on a unique port
- function to close socket
- first test case - create a socket
- TCP socket initialization, each node creates a socket
- global node list part 2 (finished), all nodes can read from the folder
- global node list part 1, all nodes publish a file to a folder
- modified
interactivesystemtest.cpp
to include searching the chain - updated the Makefile to build multiple targets
- we can now run nodes as their own programs
- added a simulation which creates many node processes
Finished with v0.1! Beginning work on v0.2.
- perceptual image hashing finished, needs debugging
- removed
main.cpp
,tests/interactive_system_test.cpp
is now used as file for testing - integrated image hashing with other functions
- updated Makefile
- refactored code
- restructured files and folders
- added
doge.jpeg
,mars.jpeg
, andcolor.jpeg
for testing - added
num_blocks
field for blockchain object - adjusted CLI output
Almost completed v0.1! Light debugging of hashing necessary before done.
- finished the first version of perceptual image hashing (rough)
- added pseudocode framework for image hashing, still needs to be implemented
- chose an image I/O library
- added a framework for a full system test, can't actually test anything until image hashing is ready
- added a global list of nodes so nodes are aware of all others
- installed lightweight unit testing framework (open source on Github)
- removed
using namespace std
from all files, addedstd::
prefixes main.cpp
can now handle variable numbers of blocks, each with their own unique string data- created
blockchain::display(void)
function to output the blockchain (visually) to CLI - added more/cleaned comments
- adjusted CLI output
Made client more user-friendly.
- created
blockchain.h
andblockchain.cpp
for data structure - created
block.h
andblock.cpp
for block objects main.cpp
creates 1 genesis block and 3 extra blocks for testing purposes- created dummy
node
class - created
comm
files - created Makefile for outputting
a.out
, withmake clean
command to deletea.out
Project currently uses SHA-256 algorithm for hashing during block mining (found online: http://www.zedwood.com/article/cpp-sha256-function). Current TestChain is proof-of-work (PoW), not sure how to make it proof-of-stake (PoS), or if even necessary. Current TestChain is only able to handle strings as block data, will need to upgrade this to other forms of media (specifically videos). "Nodes" will eventually be the primary actors in the network, acting as individual computers on the network. Comm library will abstract away all communication details. Need to change namespace as this can cause problems for larger projects - basically delete using namespace std
.