# ERC884

## Overview

The `ERC884` contract is an implementation of the ERC884 token standard, adhering to regulations set forth by the Delaware State Senate Bill No. 69.&#x20;

This standard is particularly relevant for tokenized shares in accordance with Delaware corporate law. It includes provisions for verified shareholder addresses and unique shareholder identification.

## Methods

## <mark style="color:blue;">`mint`</mark>

Mints tokens to a verified address.

### Parameters

| **Parameter** | **Type**  | **Description**                       |
| ------------- | --------- | ------------------------------------- |
| `_to`         | `address` | Address to receive the minted tokens. |
| `_amount`     | `uint256` | Amount of tokens to mint.             |

## <mark style="color:blue;">`holderCount`</mark>

Returns the number of unique addresses that own tokens.

### Returns

| **Return** | **Type** | **Description**                 |
| ---------- | -------- | ------------------------------- |
| -          | `uint`   | Number of unique token holders. |

## <mark style="color:blue;">`holderAt`</mark>

Retrieves the address of a token holder by index.

### Parameters

| **Parameter** | **Type**  | **Description**                 |
| ------------- | --------- | ------------------------------- |
| `index`       | `uint256` | Zero-based index of the holder. |

### Returns

| **Return** | **Type**  | **Description**              |
| ---------- | --------- | ---------------------------- |
| -          | `address` | Address of the token holder. |

## <mark style="color:blue;">`addVerified`</mark>

Adds a verified address along with an associated hash.

### Parameters

| **Parameter** | **Type**  | **Description**                                  |
| ------------- | --------- | ------------------------------------------------ |
| `addr`        | `address` | Address to be verified.                          |
| `hash`        | `bytes32` | Cryptographic hash of the address holder's info. |

## <mark style="color:blue;">`removeVerified`</mark>

Removes a verified address and its associated hash.

### Parameters

| **Parameter** | **Type**  | **Description**                 |
| ------------- | --------- | ------------------------------- |
| `addr`        | `address` | Verified address to be removed. |

## <mark style="color:blue;">`updateVerified`</mark>

Updates the hash for a verified address.

### Parameters

| **Parameter** | **Type**  | **Description**             |
| ------------- | --------- | --------------------------- |
| `addr`        | `address` | Verified address to update. |
| `hash`        | `bytes32` | New cryptographic hash.     |

## <mark style="color:blue;">`cancelAndReissue`</mark>

Cancels an original address and reissues tokens to a replacement address.

### Parameters

| **Parameter** | **Type**  | **Description**                     |
| ------------- | --------- | ----------------------------------- |
| `original`    | `address` | Address to be superseded.           |
| `replacement` | `address` | Address that replaces the original. |

## <mark style="color:blue;">`transfer`</mark>

Transfers tokens to a verified address.

### Parameters

| **Parameter** | **Type**  | **Description**               |
| ------------- | --------- | ----------------------------- |
| `to`          | `address` | Recipient address.            |
| `value`       | `uint256` | Amount of tokens to transfer. |

### Returns

| **Return** | **Type** | **Description**                             |
| ---------- | -------- | ------------------------------------------- |
| `success`  | `bool`   | Returns true if the transfer is successful. |

## <mark style="color:blue;">`transferFrom`</mark>

Allows a spender to transfer tokens from one address to another.

### Parameters

| **Parameter** | **Type**  | **Description**                  |
| ------------- | --------- | -------------------------------- |
| `from`        | `address` | Address to transfer tokens from. |
| `to`          | `address` | Address to transfer tokens to.   |
| `value`       | `uint256` | Amount of tokens to transfer.    |

### Returns

| **Return** | **Type** | **Description**                             |
| ---------- | -------- | ------------------------------------------- |
| `success`  | `bool`   | Returns true if the transfer is successful. |
