> For the complete documentation index, see [llms.txt](https://chainedx.gitbook.io/chainedx-protocol/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://chainedx.gitbook.io/chainedx-protocol/7.-appendix-a-batch-message-announcements.md).

# 7. Appendix A : Batch Message Announcements

&#x20;A Batch Announcement is an extension of the Broadcast Announcement, and has the same set of data. It exists to allow the “batching” of all Announcement Message Types. Batch Announcements allow the publication of more than one message Announcement with a single on-chain Announcement. These Batch Messages introduce a new service role called a Batch Announcer, which collects message Announcements and batches them together. They have some trade-offs versus other Message Types, but allow substantial scaling increases and cost reductions.

<figure><img src="/files/h0IiXxCuWqbmjbB2Kuar" alt=""><figcaption><p><mark style="color:yellow;"><strong>Figure 9: Batch Message Structure</strong></mark></p></figcaption></figure>

A Batch Announcement has a different Message Type than a Broadcast Announcement, but otherwise has the same structure. However, the URI for a Batch Announcement always refers to a Batch Message file, the content of which has a specific file format, and is an ordered list of other Announcements. Each of the included Announcements has its complete set of Announcement metadata, including Message Type, Social Identity source, content URI, content Hash, and any type-specific Metadata (for example, a Reply Announcement would also have a referent message ID). Each Announcement also contains the Social Identity smart contract address of the sender and a signature of the URI content, replacing the signature that would have been used when posting to the blockchain. The Announcements included in the Batch Message file are not broadcast directly to the blockchain. However, since each message in the Batch Message file has a Hash, Social Identity, and signature, and the Batch Announcement has a Hash of the Batch Message file, authenticity still traces from each individual user message back to the chain, using techniques such as EIP -1271,\[40] BLS12-377,\[41] or other similar approaches.

<figure><img src="/files/8kVtbK8IF5ZDLTJPD3OO" alt=""><figcaption><p><mark style="color:yellow;"><strong>Figure 10: Example Batch Process</strong></mark></p></figcaption></figure>

This approach has a number of trade-offs. Benefits include lower cost and better scaling while maintaining authenticity. Drawbacks include increased complexity and the off-chain nature of messages referenced by Batch Messages. Increased complexity comes from the additional indirection used by Batch Messages. However, as volume increases, most clients will use dedicated content indexing services, which should have no issue with indexing Batch Messages. Potential latency comes from Batch Announcers only periodically posting Batch Announcements. The off-chain nature of referenced messages can be mitigated by Indexers and other blockchain watchers replicating or caching Batch Message files. While a file can be removed, the existence of the Batch Message is listed on the chain, providing evidence that a file previously existed and allowing any file copy to be verified for authenticity against the listed Hash. Batch Messages are another example of the flexibility and extensibility of the protocol. It is also possible to extend Announcement types further to support sidechain or other Layer 2 blockchain solutions. Users have the option to publish Announcements directly or through an Announcement service. Batch Announcements work in cooperation with, not as a replacement for, other Message Types, while providing orders-of-magnitude scaling increases and cost reductions.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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://chainedx.gitbook.io/chainedx-protocol/7.-appendix-a-batch-message-announcements.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.
