# Zodiac Modules

Zodiac modules are a smart contract built to pass specific transactions to a Gnosis Safe. The Buy and List modules below were built to specify functions around Buying and Listing as standalone actions. These modules could be deployed to add buy and list functions to any Gnosis Safe.

The only contract launched by the Ship factory upon creation is the Ship Module.

### Ship Module

[Github Link](https://github.com/SZNS/szns-pool-sc/blob/main/src/zodiac/modules/ShipModule.sol)

The Ship Module does all of the work for crowdfunding, coordinating the NFT strategy, and providing different functions based on states of Ship development. All other contracts defined in this repo are included in this contract to save gas and provide an efficient experience when launching Ships on Sail.

### Buy Module

[Github Link](https://github.com/SZNS/szns-pool-sc/blob/main/src/zodiac/modules/BuyModule.sol)

The Buy Module allows for a Captain to buy NFTs on behalf of the Ship once the ETH Goal is reached. This purchasing can only occur during the Fundraising Period.

### List Module

[Github Link](https://github.com/SZNS/szns-pool-sc/blob/main/src/zodiac/modules/ListModule.sol)

The list module calls transactions associated with NFT listing. In order to satisfy OpenSea API policies, listing takes a two step process:

1. Send NFT to Ship Module from Ship SAFE
2. Commit transaction to list via the List Module

These two transactions occur simultaneously for the user, but do add some complexity for listing on OpenSea.


---

# Agent Instructions: 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://docs.sail.fun/sail-protocol/smart-contracts/zodiac-modules.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.
