# incubator-resilientdb-ResContract **Repository Path**: mirrors_apache/incubator-resilientdb-ResContract ## Basic Information - **Project Name**: incubator-resilientdb-ResContract - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-23 - **Last Updated**: 2025-09-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # # 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. # # 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 ✨](#features-) - [Prerequisites](#prerequisites) - [Installation 🛠️](#installation-️) - [Usage](#usage) - [Commands](#commands) - [create Command](#create-command) - [compile Command](#compile-command) - [deploy Command](#deploy-command) - [add_address Command](#add_address-command) - [list-deployments Command](#list-deployments-command) - [clear-registry Command](#clear-registry-command) - [Configuration ⚙️](#configuration-️) - [Setting the ResDB_Home Variable](#setting-the-resdb_home-variable) - [Option 1: Set `ResDB_Home` Environment Variable](#option-1-set-resdb_home-environment-variable) - [Option 2: Use a `config.yaml` File](#option-2-use-a-configyaml-file) - [Contributing](#contributing) - [License](#license) ## 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](https://nodejs.org/en/download/) - **npm**: Comes with Node.js. Ensure it's up-to-date. - **Solidity Compiler (`solc`)**: Required to compile smart contracts. ### Installing `solc` #### Linux (Ubuntu/Debian) ```bash sudo add-apt-repository ppa:ethereum/ethereum sudo apt-get update sudo apt-get install -y solc ``` #### macOS ```bash brew update brew upgrade brew tap ethereum/ethereum brew install solidity ``` ## Installation 🛠️ Install the ResContract CLI globally using npm: ```bash 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:** ```bash 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`:** ```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. ```bash rescontract [options] ``` ### Commands #### create Command Initializes a new account using ResilientDB's smart contract tools. **Usage:** ```bash rescontract create --config ``` - `--config, -c`: Path to the configuration file. **Example:** ```bash rescontract create --config ~/resilientdb/config/service.config ``` #### compile Command Compiles a Solidity smart contract into a JSON file using `solc`. **Usage:** ```bash rescontract compile --sol --output ``` - `--sol, -s`: Path to the Solidity smart contract file. - `--output, -o`: Name of the resulting JSON file. **Example:** ```bash rescontract compile --sol contracts/MyToken.sol --output build/MyToken.json ``` #### deploy Command Deploys the smart contract to the blockchain. **Usage:** ```bash rescontract deploy --config --contract \ --name --arguments "" --owner
``` - `--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:** ```bash 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:** ```bash rescontract add_address --config --external-address
``` - `--config, -c`: Path to the configuration file. - `--external-address, -e`: External address to add to the system. **Example:** ```bash rescontract add_address --config ~/resilientdb/config/service.config \ --external-address 0xExternalAddress ``` #### list-deployments Command Lists all deployed contracts tracked in the registry. **Usage:** ```bash rescontract list-deployments ``` **Example:** ```bash 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:** ```bash rescontract clear-registry ``` **Example:** ```bash 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](LICENSE) file for details.