Cryptocurrency Code Review: POA

in #ethereum7 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: 22/03/2018

  • EDIT 23/03/2018 Feedback from Linsay Alcindor , want to say I really appreciate the feedback, it’s always good to see more data, so I want to add this all at the start so that you as reader keep it in mind throughout the article.
    *I’m a little disappointed in your work here. Me: :’(
    *I find it interesting that you left out their second layer Conesensus Identity at Stake making this more secure/decentralized than Ethereum and Bitcoin. Both Ethereum and Bitcoin have 3 pools which control 51% of their network. Talk about centralized.
    *Also their onchain governance where Validators can add/remove other Validators that way there is no control from a centralized organization like you stated in your document above. The Master of Ceremony provides 12 initial keys which go to the first 12 Validators. After this point Validators control the network by raising ballots onchain for voting.
    *I’m also surprised that you didn’t take a look at one of their biggest projects, building an Open Source block explorer for the entire Ethereum ecosystem. They just won a Grant from Web3 Foundation for this endeavor but yet you keep this out.

So please do keep these in mind, they were not covered by the scope of the below document and I really appreciate the opportunity to add them here. Thank you Linsay Alcindor

** Original article follows

“POA Network is an open Ethereum sidechain with Proof of Authority consensus, reached by independent validators. We are building a public network for smart contracts that combines speed, security, and cost efficiency.”

Now before I even begin this review, I have to discuss PoA. PoA (not POA) is Proof of Authority. PoA was a consensus mechanism developed by Ethereum for their Rinkeby network, this was developed as a centralized protection mechanism, since only authorized nodes could decide if other nodes were allowed to join. This is a centralized model. In a decentralized model (like Ethereum or Bitcoin) no one can stop you from participating and mining, in a centralized model, another entity has the authority to decide over your participation. POA is PoA and thus centralized, this is not a decentralized solution.

So if we look at that opening statement of POA, they are essentially saying they are doing nothing, because they took Ethereum, put it in PoA mode (something that takes roughly 10 minutes to do with Puppeth) and called it their mainnet.

So centralized plagiarism. Let’s review.

They have a very busy github. At least that is promising. Their dApp for proof of physical address is busy, their token-wizard is busy, their dApp for voting is busy, bridge-ui not so busy, poa-parity-bridge-contracts less busy, and so forth.

So you will notice something interesting here, these guys are dApp developers, they build lot’s of dApps. I want to see their blockchain work, that’s what I’m looking for.

Let’s start with parity-bridge, this is the bridging prototype built by Parity, there are changes that PoA have implemented here, so let’s have a look.

First 10% is just setup files, then we have

They added a variable running.

Ok, this is the start of something but nothing yet, at least they are adding some error handling, and it’s decent at least, not super read friendly, I mean let’s look at this line

Russian nesting dolls anyone? Anyway, it’s irrelevant, so let’s move on. Rest is a lot of smart contract code (What else do you expect from dApp developers?) and config setup for the bridges.

And then lastly the jsTests implemented. So again, these guys are really good dApp developers, and they know their solidity. But I’m not seeing much other substance here. Anyway, done with parity-bridge, let’s move on to hbbft, their Honey Badger of BFT Protocols.

So, I’m going through the code, and it’s the standard boiler plate stuff, p2p, node, listeners, and I’m looking for the actual agreement messages for the BFT, and then I get excited because I find it;

And it’s a todo, the one bit that needed substance here, and it’s not done. The rest is pretty standard boiler plate. Here is the BFT agreement protocol

Moving on. Let’s talk bridges quick shall we. Cross-chain is obviously a big buzzword right now and we are all running after it like cave people, 2 years ago all you had to say was “Blockchain”, now all you do is add “Sharding, TPS, Cross-Chain” and the money comes flooding in. Anyway, cross-chain. Let’s say I have my own blockchain, and I want to be able to have a user transfer their native ETH to my Blockchain BRC20 ETH, here is all I have to do, I create a smart contract on Ethereum that triggers a Log Event as soon as ETH arrives into it. I have a web socket listener sitting on one of my blockchain nodes waiting for events, when I receive the event, I disburse an equal amount of BRC20 ETH to the same address (if you control the private key on one, you control it on all Ethereum forks). Done, that’s cross chain. So why aren’t we doing it like that? Well, the keyword there was my server, so you are trusting me to transfer these goods for you. What if I disappear? Guess what, nothing you can do. So instead, we need to decentralize these chains, for example we need a bridging mechanism that is in itself decentralized, where multiple nodes are listening to events and then they reach consensus on the event and forward it to the next Blockchain. Something by the way, that Aion is doing amazingly well. So how was the bridge mechanism in the above parity-bridge implemented? You guessed it, a smart contract that receives funds and listens for events with web3. More centralization from the company that brought you the centralized Ethereum.

Let’s move on to their blockchain

430 commits behind parity master. So they have done nothing to the blockchain. So we can move on.

So the blockchain substance has left me hungry still, so let’s look at their flagship products, their dApps, let’s start with

Can we talk about that last line quickly? Decentralized, open source, free. Free and open source I agree with 100%, but how is a website running on AWS decentralized? Can we please stop throwing these words around like they mean nothing?

The website code is good though, but it’s difficult to mess up website code. I’m not particularly seeing any advanced patterns, no dumb/smart components, no redux, so these guys haven’t been in the game that long, but there is nothing wrong here.

And the rest is just dApps. Now let’s quickly talk about their flagship the token creator, do you guys have any idea how easy it is to make a token? Few minutes, hours if you want to start getting fancy, does this really need to be even easier?

And can anyone tell me what the POA token is actually used for? PoA doesn’t need to pay gas, this can be completely free, in fact, it should be completely free, because otherwise you are just constantly paying those hand selected “independent” validators. There is no reason for their tokens to exist.

Conclusion: These guys are really good solidity developers, and they are really good dApp developers, they have good website and javascript skills and they are talented at it. Essentially, they wanted to build faster dApps and they didn’t want to wait for Ethereum to bring out scaling or PoS so they saw an opportunity when Ethereum built PoA and they decided to launch a company.

I don’t think they need their own mainnet, I don’t think they need to be their own company, and I definitely don’t think they need their own token, I think they are dApp developers, building dApps. Good dApps, but still just dApps.

I say this often, invest into what you think you will use, will you use Ethereum? Sure you will, so buy some, will you use Bitcoin? Probably, so buy some, what are you going to do with PoA tokens?

Sort:  

Coins mentioned in post:

CoinPrice (USD)📈 24h📉 7d
AIONAion2.086$-3.4%-19.37%
BFTBnkToTheFuture0.183$5.15%-15.26%
BTCBitcoin7548.560$0.55%-9.11%
ETHEthereum604.082$0.61%-14.21%
POAPOA Network0.381$-1.21%-28.47%