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: 02/03/2018
The plan was to review Arcblock code, sadly, they don’t have anything available, so instead let’s do a quick review on their smart contract. They didn’t have a smart contract for their ICO so nothing to review there, instead we will have a look at their token contract.
ArcBlockToken has the usual boiler plate, normally you would pass these arguments as constructor variables when you deploy, but they decided to hardcode into their contract. Very version 1 implementation.
The token inherits from PausableToken
PausableToken is a standard token and inherits from Pausable. Transfers, approvals, increasing and decreasing approval amounts can only happen while the token isn’t paused. Why did they do it this way instead of just implementing Pausable in their standardToken? I have no idea, seems like redundant code to me.
Here they could have just implemented Pausable and not had to create another interface, but so be it. StandardToken is a direct copy from OpenZeppelin’s StandardToken, so nothing interesting here and then just more boilerplate.
Conclusion: Nothing of interest, not particularly good code. I guess maybe since they will be launching their own mainnet they just didn’t care? I don’t like seeing contracts with global pauses, they could just stop all circulating tokens whenever they wanted to, this should at least be controlled in some logical measure (voting consensus for example, that’s why token governance exists), it’s basically a centralization mechanic.
Not impressed by the pointless extra interface, not impressed by the hardcoded constructor values, and everything else is just copy paste.
I’m writing this one down to they just didn’t really bother to learn Ethereum, that’s maybe why they didn’t do a smart contract ICO either?
Let’s hope the mainnet code shows more passion than this, whomever built this wasn’t proud of their work.