We have way too much fun building smart contracts on Ethereum…

Over the years we’ve developed dozens of smart contracts for our clients. Many have required us to fork mainnet in order to test. Doing so enables us to simulate having the same state as mainnet on our local development network. We can then interact with deployed protocols and test complex interactions locally.

Up until recently we had been forking mainnet from Infura. Infura is a solid service and we appreciate all that they (and Consensys) do for the ecosystem. …

There are many different ways to build distributed governance systems on Ethereum. One of the most common approaches is for constituents to use tokens to represent their votes. The more tokens you have, the more votes you’re able to cast.

Not all distributed token-based voting applications are the same, but most follow similar conventions. The workflow generally looks something like this:

  • A constituent submits a proposal
  • Other constituents can then vote in favor of or against the proposal
  • Once the proposal reaches a predefined threshold, the vote passes or fails and appropriate corresponding actions are taken

Sounds easy enough, right?


With Solidity being a relatively new language it has some limitations. To address this Solidity makes it possible to interweave your Solidity statements with its own version of inline assembly. This gives developers a way to build smart contracts that require more fine-grained control.

Writing manual assembly can be difficult due to the fact that the EVM is a stack machine. This makes it hard to address the correct stack slot and provide arguments to opcodes at the correct point on the stack.


As we know, the Solidity programming language supports multiple inheritance. This is very powerful yet it can also be confusing: the more complexity you introduce to your distributed applications (dApps) through multiple inheritance, the greater your application’s attack surface is. Not only that, if you have a big complicated dApp, it can be difficult to track all of the relationships between your smart contracts. It’s therefore important to thoroughly document how your dApp works and the interrelationships between its smart contracts. Inheritance trees are an effective way to do this.

What are inheritance trees

Inheritance trees when used in the context of contract-oriented programming…


It has almost been a year now since CryptoKitties was released. The blockchain based virtual game hit the Ethereum mainnet and took the crypto community by storm in late November 2017.

Its popularity grew rapidly after launch and caused an all-time high in transactions. The massive influx in transactions congested the network, slowed down processing times, and raised the costs of gas to the highest levels we’ve seen yet in Ethereum’s history.

In the midst of all of the excitement, a team of two engineers based in Syracuse, NY saw an opportunity to innovate.

KittyHats, dApps as platforms, and tokens owning tokens

Dan Viau and Jordan Messina were…


Good unit tests are critical when it comes to smart contract development. In fact, given smart contracts are immutable and often responsible for managing large sums of money, one could argue that developing good unit tests for smart contracts is more important than traditional web and mobile applications.

Over the last two months we’ve been extremely fortunate to work closely with a financial services company that’s developing an innovative platform for tokenizing securities in a regulatory compliant manner. Their soon-to-be released platform will introduce the ability to transition billions of dollars of securities to the blockchain.

In support of their…

Last week we were fortunate to attend Untraceable’s Blockchain Futurist Conference in Toronto. It was an awesome event. We met a lot of great people from the community who are working on some really exciting projects.

The conference acted as a barometer of sorts. It gave us a sense of where the industry is today and where everything is going.

Here are our main takeaways from the conference:

Bullish turnout in spite of bear market

Last week the crypto markets nosedived. BTC and ETH reached their lowest prices all year. Not to mention, the alt coin market took it on…


OpenZeppelin is a “battle-tested” open source framework comprised of reusable Ethereum smart contracts. The framework helps smart contract developers reduce the risk of vulnerabilities in their distributed applications (dapps) by using standard, tested, community-reviewed code. Today, its smart contracts power over $4.5 billion worth of digital assets. We recently shared lessons learned from contributing to the project.

The core development principles and strategies that OpenZeppelin is based on include: security in depth, simple and modular code, clarity-driven naming conventions, comprehensive unit testing, pre-and-post-condition sanity checks, code consistency, and regular audits.


The following provides visibility into how OpenZeppelin’s smart contracts are…

Building secure smart contracts is really, really hard. The industry has been riddled with security breaches over the years and it is becoming increasingly evident that in order for blockchain technology to realize its full potential the security issues must be addressed.

OpenZeppelin is an incredible open source project that is taking these issues head on.

OpenZeppelin is a “battle-tested” open source framework comprised of reusable Ethereum smart contracts. The framework helps smart contract developers reduce the risk of vulnerabilities in their distributed applications (dapps) by using standard, tested, community-reviewed code. Today, its smart contracts power over $4.5 …

When it comes to deploying smart contracts on the Ethereum blockchain, the importance of fallback functions is heightened due to their immutability. There’s no going back after a smart contract is deployed.

So, what do fallback functions do exactly?

Fallback functions in Solidity are executed when a function identifier does not match any of the available functions in a smart contract or if there was no data supplied at all. They are unnamed, they can’t accept arguments, they can’t return anything, and there can only ever be one fallback function in a smart contract. …

Doug Crescenzi

We build smart contracts and distributed applications @ Upstate Interactive http://upstateinteractive.io - Founder @ Hack Upstate http://hackupstate.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store