Developer ToolsTutorial

Vyper Translation site

Vyper is a Pythonic smart contract programming language created in 2017 as a readable and safe alternative to Solidity for writing EVM smart contracts.


A smart contract is a program that is stored on the blockchain and executes an agreement when certain conditions are met. It can be created using a programming language like Vyper, which executes on the Ethereum Virtual Machine (EVM), a decentralized computer with millions of executable projects. Vyper is a Python-based language and Vyper smart contracts are saved with .vy extensions. This article will look at how to build secure smart contracts using Vyper.


Your Go-To Source for the Latest News and Tools in the Blockchain Sector -


What is Vyper?

Vyper is a cutting-edge, Python-inspired language designed for creating smart contracts on the Ethereum Virtual Machine. As the second most favored language after Solidity, Vyper stands out for its modern approach and strong typing, ensuring each data type is exclusive and cannot be substituted with another.


Advantages of Vyper Smart Contracts

Vyper stands out for the following reasons:

  1. Security: Vyper prioritizes security, making it possible and natural to build secure smart contracts. By reducing complexity and potential vulnerabilities, it enhances the overall safety of the blockchain ecosystem.
  2. Simplicity: The language and compiler implementation of Vyper are designed with simplicity in mind. Its clean and straightforward syntax makes it easier for developers to write and maintain smart contracts, reducing the chances of introducing errors.
  3. Auditability: Vyper code is highly human-readable, promoting transparency and ease of auditing. This readability ensures that smart contract functionalities are clear, reducing the likelihood of writing misleading or ambiguous code.

Key Features of Vyper:

  • Bounds and Overflow Checking: Vyper automatically checks for array accesses and arithmetic operations, preventing out-of-bounds errors and integer overflow vulnerabilities.
  • Restricted Features: Vyper restricts certain complex features, such as recursion and inheritance, which could potentially lead to unintended behaviors. This helps developers focus on writing secure and predictable code.
  • Gas Efficiency: Vyper is designed to produce gas-efficient code, reducing transaction costs on the Ethereum network and enhancing the scalability of decentralized applications.
  • Formal Verification: Vyper supports formal verification, enabling rigorous mathematical proofs to verify the correctness of smart contracts, providing an additional layer of security.
  • Enhanced Testing: Vyper supports extensive testing with Python libraries, making it easier for developers to write comprehensive test cases for their smart contracts.


How to implement a smart contract on the blockchain using Vyper

Step 1: Install Vyper

Download Python 3.6 or higher versions from Python’s official website.

The pip package manager is essential to install Vyper using the following command:

pip install vyper


Step 2: Write the code

Let’s build a smart contract to store and display a user’s address.

Note: You will need to register with MetaMask to interact with Ethereum.

Vyper code to create a smart contract

Create a folder, vyper_contract, and a file, contract.vy, inside the folder. Contract.vy is the Vyper code file to create the necessary Vyper smart contract.

The corresponding Vyper code is as follows:

# @version ^0.3.1

address: public(String[100])

def __init__(addr: String[100]):
    self.address = addr

def getAddress() -> String[100]:
    return self.address

Code source

The first line is the version pragma. It informs the Vyper compiler to use version 0.3.1 to compile the Vyper smart contract. address is the state variable. As the name suggests, it stores the address of the user in the form of a string. An @external is used to create an external function which can be invoked from the outside. The __init__ function is the constructor of the Vyper smart contract. It comes into play when the contract is deployed.

The @view informs Vyper that the getAddress function does not change the state of the blockchain. It returns the address state variable which holds the address of the user.


Step 3: Compile the Vyper smart contract

This step checks to make sure the contract works as desired.

vyper <filename>.vy, or in this case, vyper contract.vy, is the command to compile the contract.

The output is a hexadecimal string that is the bytecode of the contract.

  • Compile the contract remotely using Remix IDE. In the IDE, create a new file called contract.vy.
  • Include the same Vyper code mentioned above in this remote file.
  • Install the Vyper plugin in the Remix IDE. Click on the socket icon in the sidebar and type “vyper” to search for the same.
  • Click Activate on the item that appears.
  • Click on the Vyper icon and press the Compile contract.vy button.


Step 4: Deploy the contract

Click the Ethereum icon in the sidebar.

From the ENVIRONMENT dropdown, select Injected Web3. A small UI beneath will change to the Ropsten Testnet you are connected to.

Click on Deploy and input a word beside the Deploy button. This word is the user’s address - the desired input.

Clicking the Deploy button will make the MetaMask UI appear.

Click Confirm.

The Vyper smart contract will be deployed to the Ropsten Testnet.


Step 5: Interact with the Deployed Smart Contract

In this step, you will interact with the smart contract deployed in the previous step. Open the Remix browser IDE and click on "CONTRACT AT 0x26..." dropdown. You will find functions and state variables listed, including "getAddress" and "address." Select "getAddress."

The function will return the word passed to the constructor during deployment in step 4. This action is executed by the "getAddress" function in the contract.

Congratulations! You have successfully tested and deployed a Vyper smart contract capable of storing and displaying user addresses. Feel free to experiment with the provided code and try different variables.

In this article, we explored building a smart contract using Vyper, a Pythonic language. We also touched on the features of smart contracts, which share similarities with blockchain technology.

As Web 3.0 continues to shape the future of web technologies, blockchain technology remains at its core. With growing trust in blockchain, smart contracts, known for their security, transparency, speed, and cost-efficiency, are poised to become mainstream soon.

Relevant Navigation