Cryptocurrency Code Review: High Performance Blockchain (HPB)
Disclaimer: These reviews are done as is from what is on display in the master branch of the repo’s made available. This review is not a comment on the overall project, scope, or success thereof. This was done as an educational review by me and any comments in the article are simply my opinion. It should not be used as any comment or advice on the project as a whole.
HPB (High-Performance Blockchain) is a new kind of block chain hardware and software architecture, which includes a chip acceleration engine and the blockchain platform, aiming to realize the performance extension of distributed applications.
The great thing here, is the chip acceleration, now first I have to admit, I have no idea how they are going to do this, tcp/ip, cpu’s, and ram are already as optimized as we can get them, and blockchain as it stands is generalized software, meaning it needs to fulfull a variety of functions, from calculations, to data transfer, to storing data. So it’s difficult to specialize that, unlike for example a PoW calculation which because it’s the exact same sequence of events you can do a lot of optimization by removing the generalized functions.
In their repository they have BOE (Blockchain Offload Engine) and TOE (TCP Offload Engine), the real value is in these two, this is their hardware sets, unfortunately, I don’t know AutoCad nor do I own AutoCad, so I can’t actually look at or investigate either of these two. If there is another friendly engineer out there that has AutoCad installed and they would be so kind as to have a look I would greatly appreciate it.
What I can look at though is their ghpb-testnet, although, they don’t need it, if they manage their chip acceleration, then every blockchain out there can use it and that will be their real value, so I don’t even know why they are doing their own blockchain. They have the opportunity here to purely focus on the chip so I actually don’t understand why they are splitting their attention. You will know that normally I don’t like all these ICO’s that just clone go-ethereum and then rename it, but if there ever was a case for a company to do it, it’s these guys. Don’t waste time trying to build blockchain software, leave that to the current big boys, instead, bring these amazing chips to us!
But, we are here to review some code, so let’s review. ghpb-testnet
First thing we notice, they did indeed take go-ethereum and are working off of it. Not a lot of commits, decent amount of contributors. I’m curious, why aren’t people forking projects anymore? It keeps commit history in tact, it makes it easier to do merges in the future, and personally, I think it is just polite. I’m not saying it’s the intention, but when I see these projects that copied go-ethereum and removed all the credit, I get a little bit annoyed, there is nothing inherently wrong with doing it, I just feel it’s a bit rude. I mean, we are going to find out you are using the copy? Are you actually trying to hide it?
But this is good news, we like go-ethereum a lot, in fact it is kind of the standard from which I judge other code bases, so it makes it easier to see what is going on here.
So first, let’s jump into consensus
We have something new! Prometheus, let’s look
For sealing, Prometheus has this concept of a unique random, for the most part this is a SHA256 of the network interface  hardware address. This is used in combination with the signer identifier to create a signerHash, this random prefix is added to the header.
This seems a bit redundant, and I’m not sure what extra value this is really adding, originally I thought it’s a nice mechanism since it helps to uniquely identify a given round (each round has it’s own random number) which is nice because we don’t have any time concepts. But we already achieve this by pointing to the previous block, so I don’t actually thinks this does much except add a bit more overhead, I would actually like to hear why they used this, I think I might be missing something here.
Unfortunately, other than that, Prometheus is just Clique and Clique is just PoA, so right now HPB is go-ethereum running in PoA.
Let’s go through the commits and see what changes have been made;
We start with mostly formatting and styling changes, then they remove all the PoW code (I’m actually really happy to see this, the one thing that get’s me is we have a lot of projects forking go-ethereum, but none of them are cleaning up the code they don’t use, the DAO code is in there, the Byzantium code is in there, the PoW code is in there, if you guys really care about speed and optimization then we should all fork from a base that doesn’t have this in it, I will gladly do this and keep a maintained copy if that will help the community, just let me know)
Nice new metrics engine added for some more detailed system feedback.
And that’s unfortunately all we have.
Conclusion: So not a lot of substance on the blockchain side of things, some nice additions and they are trying to optimize the code base by removing PoW, Prometheus is just Clique which is just PoA, so another PoA code base.
But again, I don’t even think they should be building their own blockchain, I think they should exclusively focus on the hardware, so are these guys going to bring us a new revolutionary blockchain? No, I don’t think so, do they have a real chance at bringing a new kind of chip acceleration that improves all other blockchains? Yes, I really think they have a shot if they stop caring about trying to make their own blockchain.