Clone this repo:
  1. b96216b Add deprecation notice and update links by Bismanpal-Singh · 4 days ago main
  2. 9617638 Fix typo in ResContract CLI description by Bismanpal-Singh · 4 days ago
  3. aef82c4 Update README with deprecation notice and links by Bismanpal-Singh · 4 days ago
  4. ceea79f Merge pull request #9 from Bismanpal-Singh/main by Bismanpal-Singh · 3 months ago
  5. cf772c4 Updated Reame by Bismanpal Singh · 3 months ago
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#  http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

DEPRECATION NOTICE

This repository is deprecated. Active development now continues in the ResilientDB Monorepo.

The ResContract CLI can be found at ecosystem/smart-contract/rescontract.

ResContract CLI 🚀

The ResContract CLI is a command-line tool for creating, deploying, and managing smart contracts within the ResilientDB ecosystem. It provides a streamlined interface for developers and students to interact with smart contracts efficiently.

Table of Contents

Features ✨

  • Create Smart Contracts: Generate new smart contract templates.
  • Compile Contracts: Compile Solidity contracts to JSON.
  • Deploy Smart Contracts: Deploy contracts to the blockchain with automatic registry tracking.
  • Address Management: Add external addresses to the system.
  • Deployment Registry: Track and manage deployed contracts with built-in registry commands.

Prerequisites

Before installing and using the ResContract CLI, ensure you have the following prerequisites installed on your system:

  • Node.js (version >= 14): Download and install Node.js
  • npm: Comes with Node.js. Ensure it's up-to-date.
  • Solidity Compiler (solc): Required to compile smart contracts.

Installing solc

Linux (Ubuntu/Debian)

sudo add-apt-repository ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install -y solc

macOS

brew update
brew upgrade
brew tap ethereum/ethereum
brew install solidity

Installation 🛠️

Install the ResContract CLI globally using npm:

npm install -g rescontract-cli

Configuration ⚙️

Setting the ResDB_Home Variable

Before using the ResContract CLI, you must set the ResDB_Home environment variable or provide the path to your ResilientDB installation in a config.yaml file. The CLI will not prompt you for this path and will exit with an error if it's not set.

Option 1: Set ResDB_Home Environment Variable

Set the ResDB_Home environment variable to point to the directory where ResilientDB is installed.

Linux/macOS:

export ResDB_Home=/path/to/resilientdb

Add the above line to your .bashrc or .zshrc file to make it persistent.

Option 2: Use a config.yaml File

Update the config.yaml file in the same directory where you run the rescontract command or in your home directory.

Example config.yaml:

ResDB_Home: /path/to/resilientdb

Ensure the ResDB_Home path is correct.

Note: The CLI checks for config.yaml in the current directory first, then in your home directory.

Usage

After installation, you can use the rescontract command in your terminal.

rescontract <command> [options]

Commands

create Command

Initializes a new account using ResilientDB's smart contract tools.

Usage:

rescontract create --config <path_to_config>
  • --config, -c: Path to the configuration file.

Example:

rescontract create --config ~/resilientdb/config/service.config

compile Command

Compiles a Solidity smart contract into a JSON file using solc.

Usage:

rescontract compile --sol <inputFile.sol> --output <outputFile.json>
  • --sol, -s: Path to the Solidity smart contract file.
  • --output, -o: Name of the resulting JSON file.

Example:

rescontract compile --sol contracts/MyToken.sol --output build/MyToken.json

deploy Command

Deploys the smart contract to the blockchain.

Usage:

rescontract deploy --config <service.config> --contract <contract.json> \
--name <tokenName> --arguments "<parameters>" --owner <address>
  • --config, -c: Client configuration path.
  • --contract, -p: Path to the contract JSON file.
  • --name, -n: Name of the contract.
  • --arguments, -a: Parameters to create the contract object (enclosed in quotes).
  • --owner, -m: Contract owner's address.

Example:

rescontract deploy --config ~/resilientdb/config/service.config \
--contract build/MyToken.json --name MyToken \
--arguments "1000000" --owner 0xYourAddress

add_address Command

Adds an external address to the system for contract interactions.

Usage:

rescontract add_address --config <path> --external-address <address>
  • --config, -c: Path to the configuration file.
  • --external-address, -e: External address to add to the system.

Example:

rescontract add_address --config ~/resilientdb/config/service.config \
--external-address 0xExternalAddress

list-deployments Command

Lists all deployed contracts tracked in the registry.

Usage:

rescontract list-deployments

Example:

rescontract list-deployments

This command displays all deployed contracts with their owner addresses, contract names, and contract addresses.

clear-registry Command

Clears the deployed contracts registry.

Usage:

rescontract clear-registry

Example:

rescontract clear-registry

Warning: This command permanently removes all deployment tracking information.

Deployment Registry 📋

The ResContract CLI automatically tracks all deployed contracts in a registry file located at ~/.rescontract_deployed_contracts.json. This registry provides several benefits:

  • Duplicate Prevention: Prevents deploying the same contract with the same owner and name
  • Contract Tracking: Maintains a record of all deployed contracts with their addresses
  • Easy Management: Use list-deployments to view all contracts and clear-registry to reset

The registry stores the following information for each deployment:

  • Owner address
  • Contract name
  • Contract address
  • Deployment timestamp

License

This project is licensed under the MIT License - see the LICENSE file for details.