As we’re wrapping up EthDenver 2018, the #gratitude hashtag falls short to say thanks to all the awesome people who contributed to make it an unforgettable event. From the organisers to the sponsors, including the judges and the amazing speakers, everyone gave the best of themselves. But it would have been for naught weren’t it for the hackers, who were the heart of the gathering, and did an unbelievable job hacking away for 36 straight hours to build fantastic projects.
Since it would take an entire book to recollect and review all the great projects that were brought to life during the hackathon, we at Zeppelin wanted to give a special shout out to the projects who ended up winning the three prizes we awarded, for usage of OpenZeppelin, and contributions to OpenZeppelin and zeppelin_os.
Best usage of OpenZeppelin: DecentPost
DecentPost is a full dapp that connects Senders, Couriers, and Receivers to decentralise the shipment of packages.
DecentPost is a protocol for decentralized postal services and apps, with Proof of Delivery, bonded shipping, and bounty slashing. DecentPost is designed to incentivize Senders, Couriers, and Receivers to transact in trustless shipping arrangements by structuring economic incentives on chain.
Built by Cailen McQuattie and Joshua Kelly, the application has little to envy from production-ready projects built by entire teams over several weeks. The protocol makes clever use of OpenZeppelin implementation of ERC721 (non-fungible assets) to represent the packages. These are created by senders, transferred to the courier (who places a bond for its transfer), and ultimately delivered to the receivers. Designated receivers only can unlock the sender’s bounty for the courier, with the option to offline sign a proof of delivery, which can be redeemed by the courier later. The contract even enforces delivery dates, and contemplates chains of couriers as future development.
Even though the sleep-deprived marathon took its toll on the pair, the usability was great, and the application felt very polished from an end user’s perspective. We are confident that this project has the potential to become a great blockchain-based product, and are very happy that the team decided to base their implementation on OpenZeppelin.
Best contribution to OpenZeppelin: Espresso
Even though we received several great contributions to the OpenZeppelin set of Solidity code, the one that stood out was not a smart contract but a tool. Espresso is a testing framework for smart contracts, with parallelisation, hot-reload, and backwards compatible with truffle test.
Espresso is a combination of many tools already being used in development and testing, namely parts of Truffle and Mocha. It relies on the nifty mocha-parallel-tests library for parallelizing the running of test files, and the testing RPC is created using Ganache.
class=”graf graf–p graf-after–blockquote”>Paul Fletcher-Hill and Feridun Mert Celebi targeted a known pain point on Ethereum development, and came out 36 hours later with a fantastic tool, bound to improve the developer experience not just on OpenZeppelin, but on any Solidity project.
The team used OpenZeppelin’s extensive test suite as their guinea pig for their tool, and managed to cut running times to a half, not to mention the development speed increase of having hot reload and tests auto-run.
We are eager to switch OpenZeppelin to this new testing framework as it matures, and encourage you as a Solidity dev to stay up to date with the project and give it a try.
Oh, and it has an option to have a nyan cat as a progress bar. What more could you ask?
Best contribution to zeppelin_os: securETH
The securETH team has an interesting background: while Roman Pavlovskyi is a developer from Waterloo used to agile practices, Bryant Eisenbach and Rex Hygate have backgrounds on development of flight control systems, were security and auditing are paramount. They decided to bring their practices on security to the universe of smart contract development, and thus securETH was born.
Their plan is to leverage the OWASP security model, which defines risk as the combination of likelihood and impact. The way to achieve this goal is twofold: on one side, they have already submitted an EIP to formally compile and standardise smart contract development security guidelines.
On the other, they built a static analysis tool to track the visibility and impact of every function in a smart contract, by detecting whether it performed external calls, modified the contract state, or managed potentially valuable assets by firing transfer operations.
We believe that automated code analysis is key in helping secure development of smart contracts, and our roadmap for zeppelin_os contemplates work on tools that facilitate this process. As such, we are happy to have recognised the trio for their work in the realm of security.
The decision on the three winners was a difficult one, as we had several teams that approached us, having either worked with Zeppelin projects or directly contributed to them. We want to make use of this space to highlight a few who didn’t make it to the top in each category, but were nonetheless awesome projects.
Kevin Weiler implemented a variant of the OpenZeppelin crowdsale contract for ERC721 tokens. The entire hackathon made it clear that non-fungible assets is the current hot topic in the development space, and expanding the crowdsales vertical in the library to cover them is a great contribution.
The Taiga Market team built a dapp for users to create new non-fungible tokens representing digital assets, and sell them in a marketplace. They created a variant of OpenZeppelin’s ERC721 contract that allows defining categories of fungible assets within the same token, which is great expansion of the standard for supporting multiple copies of the same digital asset.
Relevant is a dapp for a reputation-based social news reader, backed by a bonded curve token, a concept popularised for curation markets by Simon de la Rouviere. They leveraged their previous implementations of these contracts, and set up a clear dapp for an end user to work with bonded curves. As the concept matures, we acknowledge that it would be an excellent addition to OpenZeppelin’s set of contracts.
QuickETH looks to provide a way for merchants to accept crypto payments from users paying with credit cards. It achieves this by having an intermediary accept the credit card payment, who in turn issues a unique transferrable 721 token. This token has a value in ETH tied to it, and a revocation window during which the issuer can revoke it, in the event of a chargeback. In other words, QuickETH implements an ERC721-compatible tradeable Ether timelock contract.
The Liquid Democracy team built an implementation of a liquid yes-no voting contract, where users can delegate their votes to representatives, with the option to remove their support during a vote if they feel their representative is no longer aligned with their interests. If expanded to voting with multiple options, this could become an interesting option for zeppelin_os’ decentralised governance system for managing Kernel versions.
After we all recover from the exhausting yet fruitful weekend, we have much work to do to make sure all the effort made by all the teams is actively put to good use. First and foremost, we will stay in touch with the teams that showed interest in contributing to both OpenZeppelin and zeppelin_os, reviewing their work and integrating it into the platform as it progresses.
Also, the event made it clear that standards are a must in the development of new interoperable applications, and providing open-source secure implementations is key to jumpstarting new projects that rely on them. We were glad to be part of a discussion among several teams on finalising the ERC721 standard, and will be providing the corresponding implementation from OpenZeppelin as soon as a consensus is reached. And, as always, we will be on the lookout for other ERCs to be integrated into the framework.
Additionally, the feedback generated from all the teams was invaluable in terms of identifying needs and pain points in smart contract development. We were able to witness hundreds of coders, from new to the platform to experienced ones, trying to make the best out of the current tools, thus providing a most comprehensive snapshot of the state of the art in Ethereum development. We will use this feedback to guide the development of both OpenZeppelin and zeppelin_os, and ensure that we are doing our best to fulfill the needs of the developers community.
And finally, we will take the lessons learned from this hackathon, and start working towards making EthGlobal an even more global set of Ethereum events. See you soon!