> For the complete documentation index, see [llms.txt](https://docs.astrakode.tech/akb-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.astrakode.tech/akb-wiki/astrakode-wiki/smart-contract-ide/technologies/hyperledger-fabric/components/contracts.md).

# Contracts

## Introduction

Define Smart Contracts for this Project. Multiple contracts can be defined for each project; whenever this is done, contracts are generally related and often depend on each other in some way (f.e. they need to be deployed together, or they import one another).

## Configuration

Define the Name of this Contract. A contract's name is used to name and differentiate contracts. It is advised that the name be specific and descriptive enough to be able to infer the contract's purpose and distinguish it from other contracts. Furthermore, the name will be utilized in the code as keyword to name the contract.

<figure><img src="/files/9wRttpB0NmNI0r4p8q1c" alt=""><figcaption></figcaption></figure>

The [NsMetaData](/akb-wiki/astrakode-wiki/smart-contract-ide/technologies/ethereum/components/natural-language-metadata.md) property allows the addition of Natural Language (text) Metadata to a Contract in order to better describe it.

An **Abstract Contract** is a contract that contains at least one function without any implementation. Such a contract is used as a base contract to be imported by other contracts. Generally an abstract contract contains both implemented as well as abstract functions. Derived contracts will implement the abstract functions and use the existing functions as and when required.&#x20;

Select a Constructor for this contract among the defined functions. A constructor is a function that is invoked only once when the contract is deployed.

<figure><img src="/files/zU2UXvLomX7Q0QQHYmtg" alt=""><figcaption></figcaption></figure>
