Cryptocurrency Code Review: Kadena

in #blockchain6 years ago

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.

Review Date: 23/03/2018

Kadena has 3 products;

  1. Enterprise blockchain (running in Scalable BFT, 8k TPS with sub 100ms latency in production testing)
  2. Public Blockchain (PoW with pining paying for throughput and provisioning)
  3. Pact (their new smart contract language, strong focus on financial systems)

So right now they don’t have anything available on 1 or 2, I don’t know if this means it doesn’t exists or if it is simply not available in their repo. So I can’t comment much on their blockchain infrastructure. So instead let’s look at Pact

From their more inactive repo’s we can see a few interesting things however. We see snap-server (fast http server library) which they will probably use for API and maybe even P2P integration. We see masala (standalone EVM in haskell). These guys are definitely haskell developers by the way. We see bencoding (serialization and deserialization of data used by bittorrent protocol).

I quickly want to talk about that, you know everytime in Blockchain people talk about P2P, this is Peer 2 Peer, this refers to the method in which nodes communicate with one another, in a classical sense we talk P2S (Peer 2 Server), you go to www.google.com and a server respond to you with the information, when you talk Peer 2 Peer you are asking the person next to you to please give you something, but he might not have it, so he asks the 3 people he knows are close and awake, one of them happens to have it, so he gives you their details and you get it directly from them. That’s Peer 2 Peer, we have been using Peer 2 Peer for a very long time, the torrent protocol, old message boards, even Thor.

The thing I actually love about blockchain technology is that none of it is new, we are just putting all the pieces together, P2P from here, replication from there, immutable concatenated lists from way over there, and we have a blockchain. So it makes sense, that different types of blockchains can exists that leverage different components, we see for example some blockchains don’t use P2P but instead message brokers like Kafka or ZeroMQ which in themselves are decentralized and actually really help increase throughput, we see big data processors like Spark that could work fantastic for transaction processing, we are still busy trying to reinvent these fantastic products which already exists. Let’s look at JVM, it’s existed for years, but instead we built EVM, when value transfer could just as easily have existed in JVM.

Sorry, I had a techspasm.

Ok, so first off I want to give my sincere thanks to Kadena for the following

They were working on a project, they saw it wasn’t working, and they pivoted to something else, too many companies keep grinding away at their current broken architecture instead of making the smart move and starting over (state channels, plasma, I’m looking at you). This is fundamentally a very good thing to see, because it means they aren’t afraid to throw away a lot of hard work and instead apply it in a better way. So thanks guys, this is a pleasure to see.

Looking at pact-todomvc, this is purely a demo, so I don’t expect them to have it production ready, but what I don’t like here is that I’m not seeing any error handling, it takes 2 seconds to fill in that catch for the promise, but let’s not judge just yet, afterall, this is only a demo. The rest is fairly standard vue.js boiler plate for the todomvc application, so let’s move on.

I won’t review this, but it’s fantastic to see, if you want developer adoption, you have to give them access to your tools via the tools they already use. I love Atom, it’s my favorite editor, so Kadena taking the time to provide integration into Atom, very high quality. So far I’m really liking these guys.

Javascript wrappers for their Pact language, these guys are smart, they know what they are doing, their Pact language was definitely inspired by Haskell. This is something that worried me, because not a lot of developers know Haskell. Let’s look at the top languages as surveyed by stackoverflow for 20180

Do you see Haskell on that list? What you do see by a large margin is Javascript though, so how do you get the majority of developers out there to use your language? Javascript, Ethereum has web3.js and Kadena has their pact-lang-api.js, again they care about their developers, this is very good to see.

The pact code is good, not much to comment on it actually.

So, let’s talk about the bad,

Initial commit was Nov 25 2014 by Chris Copeland, it looks like he stopped working for them around Jun 28 2015. Until Jan 5, 2018 Pact was almost exclusively developed by Stuart Popejoy

It’s first commit was November 13, 2016. These guys are methodical, they care immensely about getting it right, and they don’t care how long it takes.

Conclusion: This team is developer focused, and they are code quality focused. Both are fantastic to see, high caliber code wrapped in neat accessible wrappers for modern developers.

I’m reminded of this diagram

So right now, they are great, and presumably cheap, since they are definitely not fast. Over a years worth of development is a long time for what they have built, but they built it with very high standards. So how much will they need to raise to get to a place where they can keep this quality and compete in this fast paced market?

First mover advantage is a massive thing, and right now they are very slow to this game. They are the tortoise, and I really don’t think the hare is going to be taking a nap anytime soon.

No metrics currently available, so the score right now is low

Coin Marketplace

STEEM 0.20
TRX 0.13
JST 0.030
BTC 65733.39
ETH 3506.40
USDT 1.00
SBD 2.51