# 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.astrakode.tech/akb-wiki/astrakode-wiki/smart-contract-ide/technologies/hyperledger-fabric/components/contracts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
