# DAO Governance

If we talk about defination of DAO, or decentralized autonomous organization, then it's a type of entity structured from the ground up without a central authority. Coin holders have the power to vote on initiatives and decisions for the organization.

## How Proposals Get Discussed in HootChain?

HootChain is like a club where members (holders) can vote on important decisions. But with a global club, how do you make sure everyone's on the same page about what's being voted on? That's where **governance system synchronization** comes in!

### **The Role of Masternodes:**

Masternodes act as the network's custodians, holding a significant amount of HOOT and performing essential functions. In the context of governance system synchronization, they serve as reliable repositories of governance objects, which encompass proposals and related information.

#### **Synchronization Stages:**

The synchronization process occurs in two distinct stages:

1. **Initial Request (Object Sync):** New nodes joining the network initiate this stage by sending a `govsync` message to masternodes. This message, containing a hash of all zeros, acts as a request for the core governance objects themselves.
2. **Follow-Up Requests (Vote Sync):** Once the initial objects are received, the syncing node enters the vote sync stage. It sends specific `govsync` messages containing the hash of each governance object to request the corresponding votes cast by other participants.

### **Masternode Response:**

Upon receiving a `govsync` message, masternodes transmit relevant data back to the requesting node:

* **For Object Sync:**
  * A `ssc` message (Sync Status Count) for `govobj` objects, indicating the number of governance objects to be sent.
  * An `inv` message containing information about both `govobj` (governance objects) and `govobjvote` (governance object votes) objects.
* **For Vote Sync:**
  * A `ssc` message (Sync Status Count) for `govobjvote` objects, specifying the number of votes to be sent.
  * An `inv` message containing information about the specific `govobjvote` objects requested.

### **Requesting Objects and Votes:**

After receiving this information (counts and inventories), the syncing node can utilize `getdata` messages to request individual `govobj` and `govobjvote` objects from masternodes.

To prevent excessive network strain, a limitation exists on the frequency with which new nodes can request the initial object sync. Frequent requests will result in the node being banned.
