Vite Code Review


Vite is a decentralized dApp platform that builds on ideas originated in Ethereum, Nano and EOS. They are currently in testnet stage, mainnet launch is scheduled to Q32019. You can try the testnet out for yourself by building a node, using a desktop wallet or iOS wallet. Let’s see what they’ve got codewise. Last publicly available code review was done when repository was in its initial stages, a lot has changed since then.

Vite’s got a very tight roadmap that they follow rather strictly.

Not everything is open source yet though, e.g. cross-chain gateways are unavailable for reviews. A lot of projects are, though: protocol node, wallets, explorer etc. I’ll focus on go-vite that is a sole implementation of Vite network protocol, critical part of the project. It’s got a lot of code.

A dense history of meaningful commits. Development speed is high (in fact, one of the highest I’ve seen in the industry). Commit messages could use some uniformity though.

Unlike some other projects, Vite is not a fork of go-ethereum (or any other repository). Apart from some shared utility, the code is mostly original. They even reimplemented the EVM (which is warranted by switch from pay for gas model to gas quota model).

Branches are not well-maintained. Issues are not used at all. It’s doesn’t look clean and will hamper transition from initial tight-knit dev team to open source community. Change to more consistent and controlled branch/issue management may result in development speed loss initially but it pays off in the end.

I didn’t find any stub code. Some large parts of whitepaper are not fully implemented yet (i.e. full support of smart contracts) but all the parts necessary for a functional distributed network are working.

Code’s not always clean, and almost always undertested. At least critical parts of node software such as consensus should be tested very thoroughly. As of now it has debug logs instead of proper unit or integration tests for some cases, or not even that. Also, no automatic linter or CI on github.

Consensus is DPoS, reimplemented in go. It’s not easy to read: i.e. how is filterRand different from filterRandV2?

A few words about smart contracts on Vite. Vite borrows Nano’s block lattice structure for balances and account state and it follow that changes to account state are committed separately. It’s not felt deeply when all you do is asset transfer but for smart contracts it’s a significant change. They are no longer atomic transactions of Ethereum: asynchrony is forced on Vite’s DApps in form of message exchange between different contracts. They market it as an improvement; in my opinion it’s a concession to the chosen scalability solution. Asynchronous logic is a lot harder to develop safely. Atomic synchronous transactions are a lot simpler to reason about. All that said, it’s a sensible tradeoff between scalability and decentralization.

Smart contracts are functional on Vite’s testnet.Tutorials and documentation of their take on asynchronous EVM are currently placeholders: you’ll have to look in the code.

Overall pros:

Indisputably great development speed, original codebase, good documentation. Strong contender in EOS/Tron/Loom niche.


Undertested, somewhat unclean code, DPOS consensus.

Поделись этим :

(Средний рейтинг: 0 из 5)

Регистрация  /  Войти

Оставьте ответ