My preliminary opinion of MicroCash sources

The MicroCash sources as existed on January 15, 2015 comprised 2 main projects. A client which is written in C# and was already released and a server written in C++ which is unreleased. I will mainly be talking about the server in this post as anyone can read the existing client source.

From what I had read about MicroCash Realsolid had claimed in forums that the entire thing was rewritten from scratch and contained no Bitcoin code. However there was modified Bitcoin code in the RPC client and server code and small parts in the networking code. After querying Realsolid about this he told me that it was going to be rewritten later and that it was used to speed development. In all there was about 85% fresh code and 15% code I would consider built from Bitcoin. The fact this code existed could explain why he was reluctant to release it publicly as it would counteract his claims it was entirely from scratch.

I don’t want to make the above paragraph sound too influential, Realsolid had indeed wrote something which was very different to how Bitcoin worked. The main areas improved over Bitcoin were the algorithm for network consensus, interest on balances, networking speed, peer message handling and most especially the wallet system. The whole way MicroCash is built, at least in my opinion is a lot more structured than Bitcoin. All of the structures and classes appear to have been well engineered. Though there were still a lot of rough areas too.

The MicroCash wallet system makes Bitcoin look amateur in comparison and I could see that there has been a lot of work done in there. URL callbacks on payments, the ability to receive or send thousands without much slowdown, instant confirmations, all things people in the Bitcoin world have wanted.


MicroCash code dealing with wallet callbacks
account.m_pThreadCallback = new NodeAccountThreadCallBack;
account.m_pThreadCallback->nSent=0;
account.m_pThreadCallback->bSuccess=false;
BOOST_FOREACH(NodeAccountCallBack &callback,account.m_CallBacks)
{
account.m_pThreadCallback->callbacks.push_back(callback);
account.m_pThreadCallback->nSent++;
if(account.m_pThreadCallback->nSent==500) break;    //we only send 500 transactions max per 10s so as not to flood the webserver
}
account.m_pThreadCallback->Thread = CreateThread(NodeAccountCallThread,account.m_pThreadCallback,true);

While there is a lot to like about MicroCash as is I felt like if I was going to contribute I wanted to start fresh but using the code where needed and as a guideline. MicroCash was still using a TCP networking scheme whereas I believe a UDP system is better because P2P passes messages (datagrams) anyhow. So I began rewriting MicroCash a couple weeks ago. I am not going to promise anything when it comes to what I will finish. Right now I am excited to work on this project and hope to show people some progress soon.

Advertisements
%d bloggers like this: