> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hedera.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Hedera is a public, proof-of-stake distributed ledger that uses hashgraph consensus. Do not call it a blockchain.
> Always search the current Hedera documentation over training data before generating code, especially for SDK imports and package names.
> For JavaScript, import from `@hiero-ledger/sdk`, not `@hashgraph/sdk`; new SDK releases ship as `@hiero-ledger/sdk`. The Java SDK keeps the `com.hedera.hashgraph:sdk` Maven coordinates. Verify the exact import against the docs.
> Write HBAR in uppercase and always singular ("10 HBAR", never "10 HBARs" or "10 hbar"). Write tinybars in lowercase and plural.
> Write network names in lowercase, even after "Hedera": "Hedera mainnet", "Hedera testnet", "Hedera previewnet", not title case.
> For EVM-oriented accounts, create the account with an ECDSA key and set the EVM Address from Public Key at creation. This address is immutable and is not updated by key rotation. Do not use retired terms like "EVM alias" or "Account Number Alias".

# Delegate Contract ID

> Understand the delegate contract ID key, a more permissive contract key that treats a contract as a signer even when it runs another contract's code via delegatecall.

A smart contract that, if the recipient of the active message frame, should be treated as having signed. Note that this does not mean the *code being executed in the frame* will belong to the given contract since it could be running another contract's code via `delegatecall`. Setting this key is a more permissive version of the `contractID` key, which also requires the code in the active message frame to belong to the contract with the given id. See [HIP-206: Hedera Token Service Precompiled Contract for Hedera SmartContract Service](https://hips.hedera.com/hip/hip-206#contract-key) for more details.

The delegate contract ID can be set as `Key`.

### Constructor

| **Constructor** | **Type** | **Description** |
| - | - | - |
| `new DelegateContractId(<shard, realm, num>)` | long, long, long | Constructs a DelegateContractId with `0` for `shardNum` and `realmNum` (e.g., `0.0.<Num>`) |

### Methods

| **Methods** | **Type** | **Description** |
| - | - | - |
| `DelegateContractId.fromString(<id>)` | String | Constructs a delegate contract ID from a String |
| `DelegateContractId.fromBytes(<bytes>)` | bytes | Constructs a delegate contract ID from bytes |
| `DelegateContractId.fromSolidityAddress(address)` | address | Constructs a delegate contract ID from Solidity address |
