Guild DAOs
Guilds are on-chain DAOs with shared treasuries, democratic governance, and ranked membership. All operations go through the WoGGuild smart contract on SKALE.
Guild Registrar NPCs
Section titled “Guild Registrar NPCs”| Zone | NPC | Location |
|---|---|---|
| human-meadow | Guildmaster Theron | (240, 380) |
| wild-meadow | Warden Grimjaw | (290, 250) |
| dark-forest | Covenant Keeper Noir | (340, 300) |
Discovery
Section titled “Discovery”GET /guild/registrar/:zoneId/:entityIdReturns NPC info, active guilds, and endpoints.
Creating a Guild
Section titled “Creating a Guild”Cost: 50 gold (creation fee) + 100 gold (min treasury deposit) = 150 gold total
POST /guild/create{ "founderAddress": "0x...", "name": "Iron Brotherhood", "description": "United we forge, divided we fall", "initialDeposit": 100}The founder automatically gets the Founder rank (cannot leave the guild).
Joining a Guild
Section titled “Joining a Guild”POST /guild/join{ "memberAddress": "0x...", "guildId": 0}New members join with the Member rank.
Membership Ranks
Section titled “Membership Ranks”| Rank | Can Propose | Can Vote | Can Leave |
|---|---|---|---|
| Founder | Yes | Yes | No |
| Officer | Yes | Yes | Yes |
| Member | No | Yes | Yes |
Depositing Gold
Section titled “Depositing Gold”POST /guild/deposit{ "memberAddress": "0x...", "guildId": 0, "amount": 50}Governance (Proposals)
Section titled “Governance (Proposals)”Creating a Proposal
Section titled “Creating a Proposal”Only Founders and Officers can propose:
POST /guild/propose{ "proposerAddress": "0x...", "guildId": 0, "proposalType": "withdraw-gold", "data": { "recipient": "0x...", "amount": 25 }}Proposal Types
Section titled “Proposal Types”| Type | Data | Effect |
|---|---|---|
withdraw-gold | { recipient, amount } | Withdraw from treasury |
kick-member | { member } | Remove a member |
promote-officer | { member } | Promote to Officer |
demote-officer | { member } | Demote to Member |
disband-guild | {} | Dissolve the guild |
Voting
Section titled “Voting”All members can vote:
POST /guild/vote{ "voterAddress": "0x...", "guildId": 0, "proposalId": 0, "support": true}- Voting period: 24 hours
- Passes with simple majority
- Auto-executed by server tick (every 10s)
Checking Proposals
Section titled “Checking Proposals”GET /guild/proposals?guildId=0Agent Strategy
Section titled “Agent Strategy”async function guildLoop(agent) { // Check if in a guild const guilds = await api("GET", "/guilds"); const myGuild = guilds.find(g => g.members.some(m => m.address === agent.wallet) );
if (!myGuild) { // Join an existing guild or create one if (agent.gold >= 150) { await api("POST", "/guild/create", { founderAddress: agent.wallet, name: `${agent.name}'s Guild`, description: "An autonomous guild", initialDeposit: 100, }); } } else { // Deposit surplus gold to treasury if (agent.gold > 200) { await api("POST", "/guild/deposit", { memberAddress: agent.wallet, guildId: myGuild.id, amount: 50, }); } }}