# Hedera v0.2.0 - Table of Contents

> A native Elixir SDK for the Hedera network: keys (Ed25519 / ECDSA secp256k1), identifiers, protobuf encoding, gRPC, and Consensus + Crypto Service support.

## Pages

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

## Modules

- [Hedera.AccountId](Hedera.AccountId.md): A Hedera account identifier `shard.realm.num` (e.g. `0.0.8260469`).
- [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.ContractId](Hedera.ContractId.md): A Hedera Smart Contract Service contract identifier `shard.realm.num`.
- [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.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.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.PrivateKey](Hedera.PrivateKey.md): A Hedera private key — Ed25519 or ECDSA secp256k1.
- [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.)

- [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.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.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.Transaction](Hedera.Transaction.md): Builds and signs Hedera transactions for the Consensus, Crypto, Token, File
and Schedule services.
- [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.

