Introduction to Jenesis

Fetch.ai
4 min readMar 14, 2023

--

In October of 2022, we initially launched our latest development tool, Jenesis. A few upgrades later, we are excited to provide you with a more formal introduction! Jenesis is a key piece in the larger Fetch.ai ecosystem that has been in the works for quite some time. Where CosmPy brought seamless integration of the blockchain into Python applications, Jenesis does the same for smart contracts by building on top of the essential tools of CosmPy.

In simple terms, Jenesis is a tool designed for developers to create and manage decentralized applications more efficiently on the permissionless Fetch.ai mainnet. Additionally, Jenesis can help build on other blockchains in the Cosmos Ecosystem that utilize the WASM-based smart contract language known as “Cosm-Wasm,” this includes Juno Network, Osmosis, Secret Network, Stargaze Zone, etc. We also hope to see Jenesis help meet the ever-growing demand for Python tooling in the Cosmos ecosystem alongside CosmPy.

Jenesis can streamline the process of creating applications and smart contracts by providing templates for developers, eliminating the need to write everything from scratch. The tool also allows users to create profiles to test across multiple environments (mainnet, testnet, local). Still, ensuring that the mainnet you’re attempting to launch on is permissionless is important, so you don’t run into any issues down the line. A detailed list of key features is provided below, but in summary, the tool helps developers bring their concepts to launched products with greater ease.

Key features of Jenesis:

  • Choose from a growing suite of contract templates to start from, allowing you to skip the boilerplate code and get straight to the contract logic.
  • It uses the latest Cosmwasm compiling and optimizing docker images so you can get up and running without even installing Rust.
  • Easily manage your project environments (development, testing, production) with configurable profiles that keep track of the target networks (local node, testnet, mainnet) and contract deployments.
  • Interactive shell and scripting support let you interact with your contracts in various profiles.

Now, if you are a developer or this sounds interesting for you to try, be sure to check out our beginner tutorial below, which includes a video walkthrough for those who appreciate multiple ways to follow along.

How do I get Jenesis?

Install Jenesis on a MacOS or Linux system equipped with Python 3.8 or higher (Windows support is not yet available, but coming soon):

pip install jenesis

How it works

This example shows how to deploy a smart contract to the Fetch.ai testnet and interact with it in just a few minutes.

Step 1: Create a new Jenesis project

jenesis new my_project
cd my_project

Step 2: Download a simple contract template starter and name it my_contract.

jenesis add contract starter my_contract

Step 3: Compile the contract and generate the schema files.

jenesis compile

Step 4: Open up a Jenesis shell.

jenesis shell

Step 5: Create a local wallet and give it some funds on the testnet.

my_wallet = LocalWallet.generate()
faucet.get_wealth(my_wallet)

Step 6: Deploy the contract!

my_contract.deploy(count=1, sender=my_wallet)

Step 7: Execute a contract function that increments the counter.

my_contract.increment(sender=my_wallet)

Step 8: Query the contract to see that it worked!

my_contract.get_count()

Now that you’re done with this simple example demonstrating how easy it is to get up and running with smart contracts using Jenesis. From here, you can edit the contracts, download more complex templates, and lots more. Follow these posts for more tutorials on how to use Jenesis in the future, and if you have any feature requests, be sure to send them our way on the Jenesis GitHub repo.

FAQ

Q: What version of Python do you need installed to run Jenesis?

A: Python versions 3.8, 3.9, and 3.10 are currently supported. Support for 3.11 will come as soon as CosmPy adds support for it.

Q: What operating systems can I run Jenesis on?

A: Currently, Linux and MacOS are supported, but Windows support is coming soon.

Q: Do I need to know Rust to use Jenesis?

A: No, you can download, compile, configure, and deploy contracts as described above without knowing any Rust at all. However, changing the template contracts will require at least some basic knowledge of Rust.

Q: Do I need to know Python to use Jenesis?

A: Very little Python knowledge is required to use Jenesis, as seen in the example in this article, but some Python knowledge will help you get the most out of Jenesis, especially when writing scripts that interact with your contracts.

Q. Can I use Jenesis on Fetch.ai mainnet?

A. Yes, just initialize your project with jenesis init --network fetchai-mainnet or jenesis new --network fetchai-mainnet for creating a new project.

Q. Can I use Jenesis on other blockchains?

A. Yes, as long as they are based on Cosmos-SDK and support CosmWasm smart contracts. Simply enter the data for the desired blockchain into the network configuration of your jenesis.toml file.

--

--