Guides

Building Blocks: What makes a good EVM package?

A mental shortcut for thinking about EVM packages is to compare them to a package manager such as NPM. Package managers serve as convenient repositories for code that you can easily reuse and share…

Testing real-world contract upgrades

Deploying to production can be a stressful experience, especially if you don’t have a proper suite of tests to ensure that what you built will run smoothly.

EVM package deployment with ZeppelinOS—Part III

Now that you’ve created your first EVM package, let’s go through the steps you would take to link it to your project as if you were linking directly from NPM. These commands you already know, so I’ll…

EVM package deployment with ZeppelinOS—Part II

In this section, we’ll make sure the contract we’ve deployed to our local network works by testing directly against it in Truffle Console. Once we’re happy it works, we’ll publish to the mainnet and…

EVM package deployment with ZeppelinOS—Part I

If you’re familiar with Node.js, then you will be familiar with NPM (Node Package Manager). You will also know that the ability to npm install existing code in your project makes your life as a…

Toward a secure code ecosystem

This week started off with the finding of malicious code injected into a dependency of a popular open source npm package. The attacker found an inactive library, volunteered to help with the project,…

The transparent proxy pattern

Much has been discussed around proxy patterns and how to best achieve upgradeability in Ethereum smart contracts. The underlying idea is quite simple: instead of interacting with your smart contract…

Getting started with OpenZeppelin-eth

These are great times for smart contract development. The pieces for Ethereum 2.0 are coming together, and new tools and practices are blooming.

Deconstructing a Solidity Contract — Part VI: The Metadata Hash

In the last article, we noticed that the runtime bytecode generated by the Solidity compiler appends a strange structure after the function bodies block. You can see this in the deconstruction…

Deconstructing a Solidity Contract — Part V: Function Bodies

The function body is precisely what the function wrappers detour to, after unpacking the incoming calldata. By the time a function body is executed, the function’s arguments should be sitting…

Building Blocks: What makes a good EVM package?

A mental shortcut for thinking about EVM packages is to compare them to a package manager such as…

Read More

Testing real-world contract upgrades

Deploying to production can be a stressful experience, especially if you don’t have a proper suite…

Read More

EVM package deployment with ZeppelinOS—Part III

Now that you’ve created your first EVM package, let’s go through the steps you would take to link…

Read More

EVM package deployment with ZeppelinOS—Part II

In this section, we’ll make sure the contract we’ve deployed to our local network works by testing…

Read More

EVM package deployment with ZeppelinOS—Part I

If you’re familiar with Node.js, then you will be familiar with NPM (Node Package Manager). You…

Read More

Toward a secure code ecosystem

This week started off with the finding of malicious code injected into a dependency of a popular…

Read More

The transparent proxy pattern

Much has been discussed around proxy patterns and how to best achieve upgradeability in Ethereum…

Read More

Getting started with OpenZeppelin-eth

These are great times for smart contract development. The pieces for Ethereum 2.0 are coming…

Read More

Deconstructing a Solidity Contract — Part VI: The Metadata Hash

In the last article, we noticed that the runtime bytecode generated by the Solidity compiler…

Read More

Deconstructing a Solidity Contract — Part V: Function Bodies

The function body is precisely what the function wrappers detour to, after unpacking the incoming…

Read More