# Hedera v0.8.0 - Table of Contents

> A native Elixir SDK for the Hedera network: Ed25519 / ECDSA secp256k1 keys, gRPC over HTTP/2, and the Consensus, Crypto (incl. accounts), Token (HTS), File, Schedule and Smart Contract services — plus EIP-1559 Ethereum transactions and free/paid queries.

## Pages

- [Hedera (hedera_ex)](readme.md)
- [Changelog](changelog.md)
- [LICENSE](license.md)

- Guides
  - [Getting started](getting_started.md)
  - [Transactions](transactions.md)
  - [Queries](queries.md)
  - [Ethereum (EIP-1559) transactions](ethereum.md)
  - [Cryptography](cryptography.md)

## Modules

- Client &amp; transactions
  - [Hedera.Client](Hedera.Client.md): High-level entry point: holds the operator identity and the network's node
address book, builds and submits Consensus Service transactions, retries
across nodes on transient failures, and fetches receipts.
  - [Hedera.Receipt](Hedera.Receipt.md): A parsed Hedera `TransactionReceipt` — the consensus outcome of a transaction.
For Consensus Service submits this carries the topic's new sequence number and
running hash; for Token Service it carries the new `token_id` (on create) and
the token's `new_total_supply` (on mint/burn).

  - [Hedera.Transaction](Hedera.Transaction.md): Builds and signs Hedera transactions for the Consensus, Crypto, Token, File
and Schedule services.

- Keys &amp; cryptography
  - [Hedera.Crypto.Keccak](Hedera.Crypto.Keccak.md): Pure-Elixir Keccak-256 (the pre-NIST padding used by Ethereum and Hedera for
ECDSA secp256k1 signing — distinct from SHA3-256, which uses a different
domain-separation byte). No NIF, no external dependency.

  - [Hedera.Crypto.Secp256k1](Hedera.Crypto.Secp256k1.md): secp256k1 helpers for Hedera's ECDSA signature convention: signatures are the
64-byte raw `r ‖ s` form with `s` normalized to the lower half of the curve
order (low-S, as required by Hedera/Ethereum), and public keys are the 33-byte
compressed form on the wire. OpenSSL (via OTP `:crypto`) produces DER
signatures and uncompressed points, which these functions convert.

  - [Hedera.Ethereum](Hedera.Ethereum.md): EIP-1559 (type-2) Ethereum transaction assembly + signing, for Hedera's
`EthereumTransaction` (Hedera runs the EVM; a signed Ethereum tx is relayed and
executed against its EVM address).
  - [Hedera.PrivateKey](Hedera.PrivateKey.md): A Hedera private key — Ed25519 or ECDSA secp256k1.
  - [Hedera.PublicKey](Hedera.PublicKey.md): A Hedera public key — Ed25519 (32-byte point) or ECDSA secp256k1 (stored as
the uncompressed point for crypto operations, serialized as the 33-byte
compressed form for the Hedera wire protocol).

  - [Hedera.Rlp](Hedera.Rlp.md): Minimal RLP (Recursive Length Prefix) encoder — Ethereum's serialization, used
here to assemble EIP-1559 (type-2) transactions for Hedera's `EthereumTransaction`.

- Identifiers
  - [Hedera.AccountId](Hedera.AccountId.md): A Hedera account identifier `shard.realm.num` (e.g. `0.0.8260469`).
  - [Hedera.ContractId](Hedera.ContractId.md): A Hedera Smart Contract Service contract identifier `shard.realm.num`.
  - [Hedera.Duration](Hedera.Duration.md): A Hedera `Duration` in whole seconds (e.g. a transaction's valid window).
  - [Hedera.FileId](Hedera.FileId.md): A Hedera File Service file identifier `shard.realm.num`.
  - [Hedera.Id](Hedera.Id.md): Shared implementation for Hedera entity identifiers of the form
`shard.realm.num` — `Hedera.AccountId`, `ContractId`, `FileId`, `ScheduleId`,
`TokenId`, and `TopicId`.
  - [Hedera.ScheduleId](Hedera.ScheduleId.md): A Hedera Schedule Service schedule identifier `shard.realm.num`.
  - [Hedera.Timestamp](Hedera.Timestamp.md): A Hedera consensus timestamp: whole `seconds` plus `nanos`.
  - [Hedera.TokenId](Hedera.TokenId.md): A Hedera Token Service token identifier `shard.realm.num`.
  - [Hedera.TopicId](Hedera.TopicId.md): A Hedera Consensus Service topic identifier `shard.realm.num`.
  - [Hedera.TransactionId](Hedera.TransactionId.md): A Hedera transaction identifier: the paying `account_id` plus a
`valid_start` timestamp. The valid-start must be slightly in the past when the
transaction reaches the network, so `generate/1` backdates it a few seconds.

- Wire &amp; network
  - [Hedera.Grpc](Hedera.Grpc.md): A minimal gRPC unary client over HTTP/2 (via Mint), speaking the cleartext
(h2c) protocol Hedera consensus nodes serve on port 50211. Handles the 5-byte
gRPC length-prefixed framing and the `grpc-status` trailer; enough for the
single-request/single-response calls this SDK makes.

  - [Hedera.MirrorNode](Hedera.MirrorNode.md): Thin client for the public Hedera **mirror node** REST API — the read side of
the network (consensus results, topic messages). Complements the gRPC client,
which handles writes and receipts.

  - [Hedera.Network](Hedera.Network.md): Known Hedera network nodes (cleartext gRPC endpoints).
  - [Hedera.Proto](Hedera.Proto.md): Minimal protobuf (proto3) wire-format encoder — varints, tags, and
length-delimited fields. Enough to build the small set of Hedera messages the
SDK needs, with no codegen dependency. (A future milestone may switch to
protoc-generated modules from the canonical Hedera `.proto` files.)

