# What is XDAO? (/evm)
[**XDAO**](https://www.xdao.app/) is a unique tool for creating Digital Autonomous Organizations (DAO) in just a few clicks and co-managing crypto assets.
## What does the XDAO constructor consist of? [#what-does-the-xdao-constructor-consist-of]
At its core is an advanced ['Multisig' wallet](https://academy.binance.com/en/articles/what-is-a-multisig-wallet): this is a DAO assembled from modules.
A full IDO and Crowdfunding cycle, as well as an accelerator platform for organizations: fundraising and private sales of shares in a company (DAO).
## What problem does XDAO solve? [#what-problem-does-xdao-solve]
In XDAO, a group of people can easily create a Digital Autonomous Organization, deposit crypto assets, manage them through voting, sell DAO shares, and interact directly with DeFi protocols.
Simply put, XDAO is a fully customizable tool that can be used to manage a treasury. It is also a multisig wallet and an investment platform. DAOs on XDAO can be companies of any size.
## Who can use XDAO? [#who-can-use-xdao]
* Venture funds;
* Trust management;
* Public funds;
* Startups;
* DeFi projects;
* Groups of freelancers;
* NFT collectors;
* GameFi guilds.
## What can be implemented with XDAO? [#what-can-be-implemented-with-xdao]
* Full or partial management of a DeFi project's treasury;
* Managing and distributing capital (salaries, marketing, etc.) in any organization on the blockchain;
* Using a prize pool or grants through a DAO;
* Investing shared assets in DeFi;
* Buying NFTs and collectively participating in GameFi;
* Charity;
* Joint participation in any allocations, IDOs, Crowdfunding;
* Managing family assets and much more.
## What do you need to know before creating a DAO? [#what-do-you-need-to-know-before-creating-a-dao]
Before creating a DAO, it's important to understand how decentralized finance and decentralized applications work, and to know how to use a MetaMask wallet.
To improve your Web3 knowledge, we recommend:
The ["How to DeFi"](https://www.coingecko.com/en/candy/rewards/how-to-defi-bundle) book by Coingecko.
The free [Web3 basics course](https://learn.metamask.io/en-US) by MetaMask.
# Airdrop (/ton/airdrop)
XDAO TON distributes part of the **\$DAO** token to users who supported the XDAO ecosystem on TON through their activity — the token itself is issued on the **Solana** network. The **Airdrop** page in the Mini App shows whether you're eligible for a token share and lets you register the Solana wallet to receive it.
## Who is eligible for the airdrop [#who-is-eligible-for-the-airdrop]
Eligibility for the airdrop is determined automatically — based on your Telegram account and your activity in XDAO TON: farming participation, creating or joining an on-chain DAO as a GP, donations, and other types of contribution. If your account is in the snapshot, the Airdrop page shows:
* your \$DAO points total (from farming and the referral program);
* the number of DAOs where you're a GP;
* the number of donations;
* one or more **tiers** (badges) — for example, Gold, VIP, DAO Creator, Notcoin, and Farm — depending on the type of your contribution.
Airdrop eligibility is tied to the Telegram account you farmed with in XDAO — not to the wallet currently connected. If the account isn't found in the snapshot, the Airdrop page will report that it isn't part of the distribution.
## Tasks for participation (Profile page) [#tasks-for-participation-profile-page]
The Mini App's home screen (also the **Profile** page) has a checklist for airdrop readiness:
* **Connect Telegram** — link your Telegram account to your wallet;
* **Be GP in DAO** — become a GP in at least one on-chain DAO;
* **Be DAO Creator** — optionally create your own DAO;
* **Select DAO for Airdrop** — choose which DAO to link your airdrop slot to (each DAO has a limited number of reserved slots);
* Subscribe to the project's channel.
## Registering a Solana wallet (Airdrop page) [#registering-a-solana-wallet-airdrop-page]
The \$DAO token itself will be distributed on the Solana network, so you need to specify the Solana address it should be sent to. Claiming isn't open yet — this page only registers the destination address.
Open **Airdrop** in the Mini App's bottom navigation.
Paste your Solana address into the **Your Solana wallet** field. The format (base58, 32 bytes) is validated right in the input field.
Click **Connect & Sign with TON** (or **Sign with TON & Add Wallet**, if a TON wallet is already connected) and confirm the signature in your wallet. The signature (**TON Proof**) proves you own the TON wallet the airdrop is tied to — so no one can register someone else's Solana address against your share.
After signing, the address is shown as **Solana wallet added & verified** — you can copy it or replace it with the **Change Wallet** button.
Your airdrop share is tied to the specific TON wallet you used in XDAO. If you sign in to the Mini App with a different TON wallet, the Airdrop page will warn about the mismatch — disconnect the current wallet via the header menu and connect the one you farmed with.
## If you've lost access to your wallet or Telegram account [#if-youve-lost-access-to-your-wallet-or-telegram-account]
If you can no longer sign a transaction with the TON wallet you farmed with, the Airdrop page has a **No access to your TON wallet?** form: enter a new TON address and the reason, accept the declaration that you own the account, and submit the request. It's reviewed manually within 30 days, and the status and countdown persist across app sessions.
Conversely, if you've lost access to the Telegram account you farmed with but still have access to the TON wallet, the **No access to your Telegram account?** form works in reverse: you sign the request with that same TON wallet (TON Proof), confirming your right to transfer the allocation to your current Telegram account.
Neither request changes anything instantly — both are submitted for manual review by moderators.
# XDAO TON (/ton)
[**XDAO TON**](https://ton.xdao.app) is the XDAO version for the TON blockchain, available right inside Telegram as a Mini App (bot [@xdao\_ton\_bot](https://t.me/xdao_ton_bot)). It brings the XDAO idea — creating and co-managing DAOs — into the TON ecosystem: with jettons, wallet connections via TonConnect (Tonkeeper and others), and votes that execute directly in the DAO smart contract.
## What is a DAO [#what-is-a-dao]
**DAO** (Digital Autonomous Organization) is a shared treasury and a set of rules encoded in a smart contract. Instead of trusting one person to manage the assets, a group of people — holders of the **GP** token (Governance Participant) — make decisions together through proposals. Any DAO action — a fund transfer, a change to the member list, installing a new module — executes automatically, and only once a proposal reaches the required share of votes — **general consensus**.
## What you can do in XDAO TON [#what-you-can-do-in-xdao-ton]
* **Create a DAO** — in a few steps right in the Mini App: name, token symbol, and GP distribution among members (equal or proportional).
* **Manage a DAO through proposals** — GPs create proposals (fund transfers, adding or removing GPs, installing a plugin, and more) and vote on them with their GP tokens; once a proposal reaches general consensus, it executes on-chain.
* **Raise funding through Crowdfunding** — a public raise in exchange for LP tokens (jetton), with a soft cap / hard cap, a campaign period, and an optional whitelist.
* **Distribute assets to members** — via Distribution (payout rounds) and Mass Payout — a module for bulk payouts to multiple recipients.
* **Take part in the Airdrop** — claim your share of the \$DAO token by registering a Solana wallet to receive it.
* **Hold and transfer NFTs** — a DAO can receive, hold, and send NFTs from its balance.
## Who XDAO TON is for [#who-xdao-ton-is-for]
* Teams and communities building DAOs in the TON ecosystem;
* Projects raising funding through crowdfunding and sharing equity via LP tokens;
* Groups that co-manage a treasury — TON, jettons, NFTs;
* Telegram users who need a DAO tool without leaving the messenger.
## Where to start [#where-to-start]
Open the Mini App, connect a wallet, and go through onboarding.
Deploy your first DAO in a few steps.
DAO, GP, LP token, general consensus, and other XDAO TON terms.
Looking for the integration API — ready-to-sign `ton://transfer/...` deeplinks for contributions and LP claims, and the data models? See the [API](/ton/api) section.
# Audits (/evm/architecture/audits)
XDAO smart contracts have undergone an independent security audit. The audit reports are public, and anyone can review them.
We care about the security of our contracts, so we audit all smart contracts, including modules.
## Upgradeability [#upgradeability]
The factory and the core DAO contracts carry no proxy and cannot be upgraded: once deployed, their code is fixed. Several peripheral modules, among them the launchpad, vesting, Merkle distributor, subscription and document modules, are deployed behind upgradeable proxies. Their proxy addresses are published in the repository's OpenZeppelin manifests and the admin role can be read on-chain; that role is held by the project and is moving under a timelocked multisig.
On TON and on Solana the contracts and programs are upgradeable, and the upgrade authority is held by a multisig rather than by a single key.
Audit reports are available on GitHub:
* [Pessimistic Audit](https://github.com/xdao-app/xdao-contracts/blob/master/audits/pessimistic/pessimistic.pdf);
* [Hacken Audit](https://github.com/xdao-app/xdao-contracts/blob/master/audits/hacken/hacken.pdf).
# Glossary (/evm/architecture/glossary)
Terms and abbreviations used in XDAO documentation.
| Term | Definition |
| ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Absolute majority voting** | A quorum requires 50% + 1 vote. |
| **Approve** | Permission granted to a smart contract or Dapp to interact with a specified amount of tokens on the DAO's balance. |
| **AUM** (Assets Under Management) | All assets managed by the DAO. |
| **Burn LP** | Destruction of LP tokens by their holder; in exchange, the holder receives a proportional share of the DAO's assets. Available when managers have enabled LP Burning. |
| **Consensus** | The principle by which any action permitted under the DAO's rules is carried out only after a vote is created and a quorum is reached. |
| **Crowdfunding** | Public sale of LP tokens: any address, or addresses from a whitelist, can participate. |
| **Custom** | A DAO mode where members can hold different amounts of GT and, accordingly, different voting power. |
| **DAO** (Digital Autonomous Organization) | A digital autonomous organization: a form of organization where members' activity is based on rules set in smart contracts, and decisions are executed only when consensus is reached. |
| **DEX** (Decentralized Exchange) | A decentralized exchange. |
| **Dividends** | Distribution of DAO funds among holders of LP, GT, or any other selected tokens. |
| **Gas** | The network fee charged for processing a transaction on the blockchain. |
| **GT** (Governance Token) | A token that grants the right to create and participate in votes. It has no price, cannot be sent via a regular transfer, and can only be issued or transferred through a DAO vote. The GT address is the same as the DAO address. |
| **Hybrid voting** | Members vote off-chain with a unique signature, while the result is processed on-chain. This significantly reduces gas costs without compromising security. |
| **Launchpad** | A platform for publicly launching a token sale. In XDAO, it is implemented through Crowdfunding. |
| **LP** (Liquidity Provider Token) | An investment token following the ERC-20 standard, backed by the DAO's assets. The price of one LP = DAO AUM / number of LP tokens in circulation. When burned, the holder receives a proportional share of the AUM. |
| **Manager** | A GT holder who can create votes and participate in managing the DAO. |
| **Member** | A holder of GT in this DAO. |
| **Minting** | The creation of new tokens: GT for members, or LP when raising funds. |
| **Module** | A special smart contract that adds extra functionality to a DAO. |
| **Multisig** | A DAO mode in which all managers hold one GT each and have equal voting power. |
| **Off-chain voting** | A vote whose result is not recorded on the blockchain and is not executed automatically; typically used for community polls. |
| **On-chain voting** | A vote that is recorded on the blockchain; the result is executed automatically once a quorum is reached. Requires gas costs. |
| **Permitted address** | An address or smart contract permitted to perform operations on behalf of the DAO without a vote. |
| **Private Offer** | A targeted sale of LP tokens to a specific buyer at a pre-agreed price. |
| **Private Exit Offer** | A targeted offer, created by DAO managers, that lets an LP holder exit the DAO: burn their LP and receive pre-defined assets. |
| **Proposal** | An off-chain poll of the DAO community based on holding a selected token (GT, LP, or any other). |
| **Quorum** | The minimum share of GT that holders must support for a vote to be considered legitimate and for the decision to be executed. |
| **Total Sale Amount** | The total sale amount in Crowdfunding, including the fee — specified by the project during setup. |
| **Treasury** | All funds and assets on the DAO's balance. |
| **Vesting** | The gradual unlocking of purchased tokens according to a set schedule. |
| **Voting power** | A member's share of voting weight, proportional to the amount of GT they hold. |
| **WalletConnect** | The protocol through which a DAO or wallet connects to external DeFi applications (Dapps). |
| **Whitelist** | A list of addresses permitted to participate in a token sale. |
# GT (Governance Token) (/evm/architecture/gt-governance-token)
## What is GT? [#what-is-gt]
A non-transferable ERC-20 standard token. The GT address is the same as the DAO address — it is one and the same smart contract.
## The role of GT tokens in a DAO [#the-role-of-gt-tokens-in-a-dao]
At the very moment a DAO is created, governance (GT) tokens must be distributed among the DAO's members.
**Any wallet holding GT has access to the DAO and can create and vote on any proposals**. The quorum determines how many tokens are needed to activate any vote in the DAO. If all issued GT equals 100%, then **achieving a 51% quorum will require 51% of the GT**, distributed among the DAO's members.
Governance tokens cannot be sent to another wallet via a direct transfer. If tokens still need to be transferred — for example, if a member decides to leave the project — they must initiate a vote to transfer GT from their wallet to another.
So, the GT token is what makes you a DAO member. How does it differ from the LP token, and do you need to create an LP? That's covered in the [LP Token](/evm/architecture/lp-token-liquidity-provider-token) section.
# Hybrid Voting (/evm/architecture/hybrid-voting)
Voting is the way DAO managers make decisions: a decision is considered adopted once a quorum has been reached.
In XDAO, votes created by DAO managers last three days. If a vote is not adopted, it will be rejected once the three days have elapsed.
XDAO lets you manage a DAO far more economically and efficiently thanks to its hybrid voting model.
Off-chain DAO voting is shown in the diagram below.
Off-chain voting with on-chain execution is designed to achieve the ideal balance between transaction speed and cost. This is what we call the hybrid voting mechanism.
With fully on-chain voting, every action is recorded on the blockchain: creating the vote, each member's signature, and executing the decision in the DAO. An average non-urgent transaction on Ethereum takes about 3 minutes, and confirmation from the network must be awaited at every step.
Let's compare how much time voting takes under both approaches (the example uses a DAO with two members):
| Stage | On-chain voting | Hybrid voting |
| ---------------------------------------------- | ------------------ | ----------------- |
| Creating the vote | \~3 min | 0 min (off-chain) |
| Each member's signature | \~3 min per member | 0 min (off-chain) |
| Recording the final decision on the blockchain | \~3 min | \~3 min |
The difference becomes especially noticeable as the number of members grows:
* **A DAO with 2 members:** on-chain — roughly 12–15 minutes, hybrid — about 3 minutes.
* **A DAO with 200 members:** on-chain — around 10 hours, hybrid — the same \~3 minutes (assuming everyone votes at once).
On-chain voting can be sped up by raising the gas price, but that makes it very expensive. The hybrid mechanism removes this trade-off: votes are collected off-chain, and only the DAO's final action is recorded on the blockchain. This preserves the balance between transparency and fast, cheap voting.
# LP (Liquidity Provider Token) (/evm/architecture/lp-token-liquidity-provider-token)
## What is the LP token [#what-is-the-lp-token]
The LP token is a token following the ERC-20 standard.
## The role of the LP token in a DAO [#the-role-of-the-lp-token-in-a-dao]
The LP token has a special status in a DAO: it reflects a member's financial stake in the organization. Any treasury top-up is best carried out by minting LP tokens — through crowdfunding or a private offer.
To better understand their role, compare DAO LP tokens with the ones issued on DEXs. LP tokens make it possible to track individual contributions to the treasury: the amount of LP held is proportional to one's share of liquidity in the DAO treasury.
The price of one LP token is calculated using a simple formula:
**`Total funds in the DAO treasury / Number of LP tokens in circulation = Value of 1 LP token`**
Because LP tokens are tightly bound to the formula, be very careful and do NOT increase the liquidity providers' share by transferring funds directly to the DAO account without buying LP.
In terms of technical characteristics, LP tokens are almost no different from other tokens on the same network. Like any ERC-20 token, they can be transferred, exchanged, and paired with another token on a DEX.
But, unlike LP tokens on an exchange, holding LP in XDAO does NOT give the liquidity provider full control over it: only holders of governance tokens (GT) manage the funds. That said, you can burn all or part of your LP tokens — unless the DAO has disabled LP Burning.
The link between LP tokens and a proportional share of the DAO's AUM (assets under management) is most often needed in at least three cases:
1. Determining a liquidity provider's share in this DAO;
2. Determining how much liquidity is returned to liquidity providers from the DAO's AUM after LPs decide to burn their LP tokens;
3. Determining how much a liquidity provider should receive during dividend distribution.
A DAO can list its LP token on an exchange or set up staking for it. It's important to understand: as long as the LP token is not traded on an exchange, it remains fully backed by the DAO treasury.
## LP token use case [#lp-token-use-case]
We cover how to use the LP token in detail in the "Use Cases" section. In short, LP tokens are needed to efficiently raise funds for the DAO — both from members and from external investors. LP tokens are tightly bound to the formula, so be very careful **not to increase investors' share by transferring funds directly to the DAO account without buying LP.**
You can sell LP tokens through a private sale, through crowdfunding, or through an exchange.
**During an LP token sale — whether private or through DAO Crowdfunding — it is forbidden to generate profit or contribute additional funds by transferring them directly to the DAO address.** Otherwise, LP holders' shares will be diluted, and some investors will be able to get back more money than they invested by burning LP tokens. Only after fundraising has ended and all private offers or crowdfunding sales are closed can the DAO begin generating profit.
## Does your DAO need an LP token [#does-your-dao-need-an-lp-token]
If the DAO is going to raise funds, it is always recommended to create an LP token. But always be careful and be sure to follow the formula: **`Total funds in the DAO treasury / Number of LP tokens in circulation = Value of 1 LP token`**. If your treasury management arrangements differ, you can use the DAO simply as a multisig wallet.
# My DAOs (/evm/architecture/my-daos)
"My DAOs" is your personal section that brings together all the organizations you are a member of.
You can be a member of several DAOs at the same time. As soon as GT tokens arrive at your address, features become available to you that are not accessible in DAOs where you do not hold GT.
All the organizations you belong to are displayed after clicking "My DAOs".
# Smart Contracts (/evm/architecture/smart-contracts)
XDAO's core smart contracts and the DAOs they create are verified on their networks' block explorers.
The addresses below cover the most popular networks — this is not the full list. The contracts are deployed on [more than 40 blockchains](/evm/architecture/supported-blockchains), and on some of them an address differs from the one shown here.
## Core Contracts [#core-contracts]
Factory is the contract that deploys (creates) new DAOs.
`0x72cc6E4DE47f673062c41C67505188144a0a3D84`
[Ethereum](https://etherscan.io/address/0x72cc6E4DE47f673062c41C67505188144a0a3D84#code), [BSC](https://bscscan.com/address/0x72cc6E4DE47f673062c41C67505188144a0a3D84#code), [Polygon](https://polygonscan.com/address/0x72cc6E4DE47f673062c41C67505188144a0a3D84#code), [Avalanche](https://snowtrace.io/address/0x72cc6e4de47f673062c41c67505188144a0a3d84), [Celo](https://explorer.celo.org/address/0x72cc6E4DE47f673062c41C67505188144a0a3D84/transactions), [Metis](https://andromeda-explorer.metis.io/address/0x72cc6E4DE47f673062c41C67505188144a0a3D84/transactions), [Aurora](https://aurorascan.dev/address/0x72cc6e4de47f673062c41c67505188144a0a3d84), [Optimism](https://optimistic.etherscan.io/address/0x72cc6e4de47f673062c41c67505188144a0a3d84#code), [Boba](https://blockexplorer.boba.network/address/0x72cc6E4DE47f673062c41C67505188144a0a3D84/transactions), [Moonbeam](https://moonscan.io/address/0x72cc6e4de47f673062c41c67505188144a0a3d84#code), [Moonriver](https://moonriver.moonscan.io/address/0x72cc6e4de47f673062c41c67505188144a0a3d84#code), [Astar](https://blockscout.com/astar/address/0x72cc6E4DE47f673062c41C67505188144a0a3D84/contracts), [Shiden](https://shiden.subscan.io/account/0x72cc6E4DE47f673062c41C67505188144a0a3D84), [Fuse](https://explorer.fuse.io/address/0x72cc6E4DE47f673062c41C67505188144a0a3D84/transactions), [XDC](https://explorer.xinfin.network/address/xdc72cc6E4DE47f673062c41C67505188144a0a3D84), [BitTorrent](https://scan.bt.io/#/contract/0x72cc6e4de47f673062c41c67505188144a0a3d84/transactions), [Oasis](https://explorer.emerald.oasis.dev/address/0x72cc6E4DE47f673062c41C67505188144a0a3D84/transactions), [CoinEx](https://www.coinex.net/address/0x72cc6E4DE47f673062c41C67505188144a0a3D84), [Cube](https://www.cubescan.network/en-us/address/0x72cc6e4de47f673062c41c67505188144a0a3d84?tab=Transactions), [Ontology](https://explorer.ont.io/contract/other/0x72cc6E4DE47f673062c41C67505188144a0a3D84/10/1) and [Telos](https://www.teloscan.io/address/0x72cc6E4DE47f673062c41C67505188144a0a3D84/#contract) Network.
Shop is the contract for issuing LP tokens and arranging private offers to sell DAO shares.
`0xCA49EcF7e7bb9bBc9D1d295384663F6BA5c0e366`
[Ethereum](https://etherscan.io/address/0xCA49EcF7e7bb9bBc9D1d295384663F6BA5c0e366#code), [BSC](https://bscscan.com/address/0xCA49EcF7e7bb9bBc9D1d295384663F6BA5c0e366#code), [Polygon](https://polygonscan.com/address/0xCA49EcF7e7bb9bBc9D1d295384663F6BA5c0e366#code), [Avalanche](https://snowtrace.io/address/0xca49ecf7e7bb9bbc9d1d295384663f6ba5c0e366), [Celo](https://explorer.celo.org/address/0xCA49EcF7e7bb9bBc9D1d295384663F6BA5c0e366/transactions), [Metis](https://andromeda-explorer.metis.io/address/0xCA49EcF7e7bb9bBc9D1d295384663F6BA5c0e366/transactions), [Aurora](https://aurorascan.dev/address/0xca49ecf7e7bb9bbc9d1d295384663f6ba5c0e366), [Optimism](https://optimistic.etherscan.io/address/0xCA49EcF7e7bb9bBc9D1d295384663F6BA5c0e366#code), [Boba](https://blockexplorer.boba.network/address/0xCA49EcF7e7bb9bBc9D1d295384663F6BA5c0e366/transactions), [Moonbeam](https://moonscan.io/address/0xca49ecf7e7bb9bbc9d1d295384663f6ba5c0e366#code), [Moonriver](https://moonriver.moonscan.io/address/0xca49ecf7e7bb9bbc9d1d295384663f6ba5c0e366#code), [Astar](https://blockscout.com/astar/address/0xCA49EcF7e7bb9bBc9D1d295384663F6BA5c0e366/contracts), [Shiden](https://shiden.subscan.io/account/0xCA49EcF7e7bb9bBc9D1d295384663F6BA5c0e366), [Fuse](https://explorer.fuse.io/address/0xCA49EcF7e7bb9bBc9D1d295384663F6BA5c0e366/transactions), [XDC](https://explorer.xinfin.network/address/xdcCA49EcF7e7bb9bBc9D1d295384663F6BA5c0e366), [BitTorrent](https://scan.bt.io/#/contract/0xca49ecf7e7bb9bbc9d1d295384663f6ba5c0e366), [Oasis](https://explorer.emerald.oasis.dev/address/0xCA49EcF7e7bb9bBc9D1d295384663F6BA5c0e366/transactions), [CoinEx](https://www.coinex.net/address/0xCA49EcF7e7bb9bBc9D1d295384663F6BA5c0e366), [Cube](https://www.cubescan.network/en-us/address/0xca49ecf7e7bb9bbc9d1d295384663f6ba5c0e366?tab=Transactions), [Ontology](https://explorer.ont.io/contract/other/0xca49ecf7e7bb9bbc9d1d295384663f6ba5c0e366/10/1) and [Telos](https://www.teloscan.io/address/0xCA49EcF7e7bb9bBc9D1d295384663F6BA5c0e366/#contract) Network.
DAO Viewer is an auxiliary contract for reading DAO data: it aggregates information for the interface.
`0x3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad`
[Ethereum](https://etherscan.io/address/0x3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad#code), [BSC](https://bscscan.com/address/0x3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad#code), [Polygon](https://polygonscan.com/address/0x3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad#code), [Avalanche](https://snowtrace.io/address/0x3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad#code), [Celo](https://explorer.celo.org/address/0x3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad/contracts), [Metis](https://andromeda-explorer.metis.io/address/0x3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad/contracts), [Aurora](https://aurorascan.dev/address/0x3730bdc5ddf4286a8778dcb19da638db1da981ad#code), [Optimism](https://optimistic.etherscan.io/address/0x3730bdc5ddf4286a8778dcb19da638db1da981ad#code), [Boba](https://bobascan.com/address/0x3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad#code), [Moonbeam](https://moonscan.io/address/0x3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad#code), [Moonriver](https://moonriver.moonscan.io/address/0x3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad#code), [Astar](https://blockscout.com/astar/address/0x3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad/contracts#address-tabs), [Shiden](https://shiden.subscan.io/account/0x3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad), [Fuse](https://explorer.fuse.io/address/0x3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad/contracts), [XDC](https://explorer.xinfin.network/address/xdc3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad), [BitTorrent](https://scan.bt.io/#/contract/0x3730bdc5ddf4286a8778dcb19da638db1da981ad), [Oasis](https://explorer.emerald.oasis.dev/address/0x3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad/contracts), [CoinEx](https://www.coinex.net/address/0x3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad#code), [Cube](https://www.cubescan.network/en-us/address/0x3730bdc5ddf4286a8778dcb19da638db1da981ad?tab=Contract), [Telos](https://www.teloscan.io/address/0x3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad/#contract) and [Ontology ](https://explorer.ont.io/contract/other/0x3730Bdc5DDF4286A8778dcB19dA638db1Da981Ad/10/1)Network.
Advanced Viewer is an extended contract for reading data across multiple DAOs at once.
`0xc71cfdb9BF2a1e168f91dc0A995eDE87dF2817bd`
[BSC](https://bscscan.com/address/0xc71cfdb9BF2a1e168f91dc0A995eDE87dF2817bd#code) and [Polygon](https://polygonscan.com/address/0xc71cfdb9BF2a1e168f91dc0A995eDE87dF2817bd#code).
## Modules [#modules]
Additional smart contracts that extend a DAO's capabilities.
Private Exit is a module that allows a member to leave the DAO under pre-agreed terms: burn LP and receive the agreed assets.
`0xB42DD79C056d4b511c07c29d4c35403b47bE29B9`
[Ethereum](https://etherscan.io/address/0xB42DD79C056d4b511c07c29d4c35403b47bE29B9#code), [Polygon](https://polygonscan.com/address/0xB42DD79C056d4b511c07c29d4c35403b47bE29B9#code), [Avalanche](https://snowtrace.io/address/0xb42dd79c056d4b511c07c29d4c35403b47be29b9#code), [Moonbeam](https://moonscan.io/address/0xB42DD79C056d4b511c07c29d4c35403b47bE29B9#code), [Moonriver](https://moonriver.moonscan.io/address/0xb42dd79c056d4b511c07c29d4c35403b47be29b9#code), [Fuse](https://explorer.fuse.io/address/0xB42DD79C056d4b511c07c29d4c35403b47bE29B9/contracts), [CoinEx](https://www.coinex.net/address/0xB42DD79C056d4b511c07c29d4c35403b47bE29B9#code) and [XDC Network](https://explorer.xinfin.network/address/xdcB42DD79C056d4b511c07c29d4c35403b47bE29B9).
`0xc20146148cCFFCC035cEA2Fb8b17D74Fbc7DB38C`
[BSC](https://bscscan.com/address/0xc20146148ccffcc035cea2fb8b17d74fbc7db38c#code) and [Aurora](https://aurorascan.dev/address/0xc20146148cCFFCC035cEA2Fb8b17D74Fbc7DB38C#code).
`0xe642859C00BeD165bD6e36a60Dc94F9b5184D01f`
[BitTorrent](https://scan.bt.io/#/contract/0xe642859c00bed165bd6e36a60dc94f9b5184d01f), [Oasis](https://explorer.emerald.oasis.dev/address/0xe642859C00BeD165bD6e36a60Dc94F9b5184D01f/contracts), [Telos](https://www.teloscan.io/address/0xe642859C00BeD165bD6e36a60Dc94F9b5184D01f/#contract) and [Cube](https://www.cubescan.network/en-us/address/0xe642859c00bed165bd6e36a60dc94f9b5184d01f?tab=Contract).
Dividends is a module for distributing DAO funds among holders of LP, GT, or another selected token.
`0x0f87Cb6929eb8010950d73094eC3BEcDeA8EAc67`
[Ethereum](https://etherscan.io/address/0x0f87Cb6929eb8010950d73094eC3BEcDeA8EAc67#code), [Polygon](https://polygonscan.com/address/0x0f87Cb6929eb8010950d73094eC3BEcDeA8EAc67#code), [Avalanche](https://snowtrace.io/address/0x0f87Cb6929eb8010950d73094eC3BEcDeA8EAc67#code), [Moonbeam](https://moonscan.io/address/0x0f87Cb6929eb8010950d73094eC3BEcDeA8EAc67#code), [Moonriver](https://moonriver.moonscan.io/address/0x0f87Cb6929eb8010950d73094eC3BEcDeA8EAc67#code), [Fuse](https://explorer.fuse.io/address/0x0f87Cb6929eb8010950d73094eC3BEcDeA8EAc67/contracts), [CoinEx](https://www.coinex.net/address/0x0f87Cb6929eb8010950d73094eC3BEcDeA8EAc67#code) and [XDC Network](https://explorer.xinfin.network/address/xdc0f87Cb6929eb8010950d73094eC3BEcDeA8EAc67).
`0x41185246595EAdE95ec0acF9aDF6417fE7a94F39`
[BSC ](https://bscscan.com/address/0x41185246595EAdE95ec0acF9aDF6417fE7a94F39#code)and [Aurora](https://aurorascan.dev/address/0x41185246595eade95ec0acf9adf6417fe7a94f39#code).
`0xB42DD79C056d4b511c07c29d4c35403b47bE29B9`
[BitTorrent](https://scan.bt.io/#/contract/0xb42dd79c056d4b511c07c29d4c35403b47be29b9), [Oasis](https://explorer.emerald.oasis.dev/address/0xB42DD79C056d4b511c07c29d4c35403b47bE29B9/contracts), [Telos](https://www.teloscan.io/address/0xB42DD79C056d4b511c07c29d4c35403b47bE29B9/#contract) and [Cube](https://www.cubescan.network/en-us/address/0xb42dd79c056d4b511c07c29d4c35403b47be29b9?tab=Contract).
Crowdfunding is a module for the public sale of LP tokens to raise funds for a DAO.
`0x711E14eBC41A8f1595433FA4409a50BC9838Fc03`
[Ethereum](https://etherscan.io/address/0x711E14eBC41A8f1595433FA4409a50BC9838Fc03#code)
`0x97330364E1a9209214ef5107a04798170D351b68`
[BNB](https://bscscan.com/address/0x97330364E1a9209214ef5107a04798170D351b68#code)
`0x8AC7D4cEA044fB0d0153c28d145aE350bA25f1bA`
[Polygon](https://polygonscan.com/address/0x8AC7D4cEA044fB0d0153c28d145aE350bA25f1bA#code)
`0x0cf784bba0FFA0a7006f3Ee7e4357E643a07F6e7`
[Arbitrum](https://arbiscan.io/address/0x0cf784bba0ffa0a7006f3ee7e4357e643a07f6e7#code)
`0xaB5836182cc9970695faa74A0890Cd7099955d5a`
[Optimism](https://optimistic.etherscan.io/address/0xaB5836182cc9970695faa74A0890Cd7099955d5a#code)
Payroll is a module for regular payments (for example, salaries) on behalf of a DAO.
`0x7A8F181eB94594A6f47EEee5AA23ed6D8DC7563b`
[Polygon](https://polygonscan.com/address/0x7A8F181eB94594A6f47EEee5AA23ed6D8DC7563b#code), [Moonbeam](https://moonscan.io/address/0x7A8F181eB94594A6f47EEee5AA23ed6D8DC7563b#code), [Moonriver](https://moonriver.moonscan.io/address/0x7a8f181eb94594a6f47eeee5aa23ed6d8dc7563b#code), [Oasis](https://explorer.emerald.oasis.dev/address/0x7A8F181eB94594A6f47EEee5AA23ed6D8DC7563b/contracts) and [CoinEx](https://www.coinex.net/address/0x7A8F181eB94594A6f47EEee5AA23ed6D8DC7563b).
`0xC16f359d9b1114Fee86CF9Ca7F5cb0bF75d0fA5f`
[BSC](https://bscscan.com/address/0xC16f359d9b1114Fee86CF9Ca7F5cb0bF75d0fA5f#code), [Avalanche](https://snowtrace.io/address/0xc16f359d9b1114fee86cf9ca7f5cb0bf75d0fa5f#code), [Aurora](https://aurorascan.dev/address/0xC16f359d9b1114Fee86CF9Ca7F5cb0bF75d0fA5f) and [Fuse](https://explorer.fuse.io/address/0xC16f359d9b1114Fee86CF9Ca7F5cb0bF75d0fA5f/contracts).
`0x31B407eE1960d6DaC4273Bf57c5FC1CCdF53469d`
[BitTorrent](https://scan.bt.io/#/contract/0x31b407ee1960d6dac4273bf57c5fc1ccdf53469d), [Telos](https://www.teloscan.io/address/0x31B407eE1960d6DaC4273Bf57c5FC1CCdF53469d/#contract) and [Cube](https://www.cubescan.network/en-us/address/0x31b407ee1960d6dac4273bf57c5fc1ccdf53469d?tab=Contract).
`0x0bB30688b39e707194F6a007FCAE63839B21CcdA`
[XDC Network](https://explorer.xinfin.network/address/xdc0bB30688b39e707194F6a007FCAE63839B21CcdA).
# Supported Blockchains (/evm/architecture/supported-blockchains)
Our flexible architecture allows us to continuously add new EVM-compatible blockchains.
XDAO's smart contracts are deployed on **more than 40 blockchains**. The networks you can pick in the app today:
Ethereum, BNB Chain, Polygon, Polygon zkEVM, Arbitrum, Arbitrum Nova, Optimism, Base, Blast, Linea, Scroll, Mantle, Manta, Mode, opBNB, Avalanche, Aurora, Celo, Moonbeam, Moonriver, Astar, Shiden, Fuse, BitTorrent, Bitgert, Boba, CoinEx, Core, Fantom, Godwoken, Kaia (formerly Klaytn), Metis, Neon EVM, Oasis, Oasis Sapphire, OKC, Ontology, SKALE, Telos, XDC and ZetaChain.
A few of the networks we deployed to have since stopped running or rebranded. Those were the networks' own decisions — the contracts were deployed and verified there all the same. Networks that no longer run are not offered in the app.
Before creating a DAO, you can also test our platform on Sepolia.
# Launch of Crowdfunding: Step-by-Step Tutorial (/evm/use-cases/launch-of-crowdfunding-step-by-step-tutorial)
Follow the step-by-step instructions below to launch Crowdfunding. Additional details are collected in the blocks beneath it:
You only create the LP token once per DAO. If you're planning several crowdfunding rounds, it will already be set up for the next one.
A 1% fee is charged on each crowdfunding transaction.
Let's consider an example where a project needs to raise 1,000,000 dollars, meaning the DAO balance must hold 1,000,000 USDT. Since XDAO charges a 1% crowdfunding fee, the project needs to set the total sale amount a bit higher than planned. The total sale amount is calculated using the formula: Amount received by the DAO / (1 - Crowdfunding Fee) -> 1,000,000 / (1 - 0.01) -> 1,000,000 / 0.99 -> 1,010,101 USDT, the amount the project should specify as the Total Sale Amount.
# Trust Management (/evm/use-cases/mutual-fund)
In the simplest model, working with a DAO is built around a repeating cycle:
* Fundraising. LP Burning is off. The offer is activated;
* Earning in the DAO. LP Burning is off. The offer is deactivated;
* Profit distribution. LP Burning is on. The offer is deactivated;
* Repeat.
## Step 1 [#step-1]
Create a DAO. Add your public address. Issue 10 GT to your address. Set the quorum at 51%.
🔷 [See how to create a DAO](/evm/guides-for-gt/create-a-dao).
## Step 2 [#step-2]
Create an LP token.
🔷 [See how to create an LP token](/evm/guides-for-gt/dao-page/manage/investment-activity-management/create-lp-token).
## Step 3 (first fundraising round) [#step-3-first-fundraising-round]
The first round can be run through both a private offer and crowdfunding, or through either method on its own.
*How is a private offer different from a crowdfunding offer?*\
**A private offer** makes it possible for a specific user to buy only a certain amount of LP tokens.
**Crowdfunding** makes it possible to set up a mass sale of LP tokens, either publicly or to specific individuals.
Private round — create a private offer for a specific member. Set the price in the chosen asset and the number of LP tokens they will redeem at that price (there are no restrictions here). After the purchase, the offer is deactivated automatically, and the proceeds from the LP sale go to the DAO's account.
Crowdfunding — create an offer for many members. Set the price per 1 LP. Your DAO will receive the proceeds from the LP sale into its account.
Let's consider a specific example:\
You sold 10 LP to one member in a private round for 200 USDT. 1 LP = 20 USDT. The DAO earned 200 USDT in the private round.
You also sold 1 LP each to 10 members in the public round via crowdfunding, at a price of 20 USDT. The DAO earned 200 USDT in the public round via crowdfunding.
DAO AUM (assets under management) 200 + 200 = 400 USDT — by analogy with traditional finance, this is called a **unit**.
In total, the DAO distributed 20 LP. The member with 10 LP holds 50% of the DAO's monetary share. The member with 1 LP holds 5% of the DAO's monetary share.
🔷 [See how to create a private offer](/evm/guides-for-gt/dao-page/manage/investment-activity-management/create-private-offer).
🔷 [See how to create crowdfunding](/evm/guides-for-gt/dao-page/manage/investment-activity-management/create-crowdfunding).
After a successfully completed round, you must deactivate (disable) all LP token purchase offers!
[See how to disable a private offer](/evm/guides-for-gt/dao-page/manage/investment-activity-management/manage-private-offers).
## Step 4 (DAO earning) [#step-4-dao-earning]
Use the "Connect" tab and make your first purchases on DEX / NFT marketplaces or use farming — invest on behalf of the DAO and vote. You can also use a launchpad or any other platform. The main requirement for investing on behalf of the DAO is the ability to connect via WalletConnect.
Through its actions, the DAO managed to earn +100 USDT.
DAO AUM 400 + 100 = 500 USDT.
How will the profit now be distributed among the members?
The member with a 50% share, 200 USDT -> **250 USDT**.
The member with a 5% share, 20 USDT -> **25 USDT**.
🔷 [See how to connect to XDAO Connect](/evm/guides-for-gt/dao-page/manage/advanced/connect).
## Step 5 (exiting the DAO) [#step-5-exiting-the-dao]
At this stage, the DAO does not earn money and does not invite new members, but gives current members time to exit. Let's imagine that no one wanted to leave the DAO this time. The shares remain unchanged.
## Step 6 (second fundraising round) [#step-6-second-fundraising-round]
Now it's important to determine the value of the LP token in order to raise funds again without devaluing the shares of contributors from the first round.
Use the following formula:
$$
price_{LP} = \frac{\sum_{i \in Assets}{balance_i \cdot price_i}}{totalsupply_{LP}}
$$
Or, put simply:\
LP Price = DAO AUM / LP Total Supply.
In our example:
500/20 = \$25 (you can also slightly raise the LP price this time so that previous members get a small profit at this stage).
Create another public offer via crowdfunding. Set the price per 1 LP = \$25.
Another 10 people bought your token, 1 LP each, and the DAO received +\$250 into its treasury.
Total DAO AUM is 500 + 250 = \$750.
The shares are distributed as follows:\
In total, the DAO distributed 30 LP. The member with 10 LP holds 33.3% of the DAO's monetary share. The member with 1 LP holds 3.33% of the DAO's monetary share.
The money is distributed as follows:
The member with a 33.3% share, 250 USDT -> **250 USDT**.
The member from the first round with a 3.33% share, 25 USDT -> **25 USDT**.
The member from the second round with a 3.33% share, 25 USDT -> **25 USDT**.
After a successfully completed round, you must deactivate (disable) all LP token purchase offers!
[See how to disable a private offer](/evm/guides-for-gt/dao-page/manage/investment-activity-management/manage-private-offers).
## Step 7 (earning in the DAO) [#step-7-earning-in-the-dao]
Step 7 fully repeats Step 4. Let's assume the DAO managed to earn x2 at this stage. DAO AUM = $750 + $750 = \$1,500.
The member with a 33.3% share, 250 USDT -> **500 USDT**.
The member with a 3.33% share, 25 USDT -> **50 USDT**.
## Step 8 (Exiting the DAO) [#step-8-exiting-the-dao]
After successful deals, some of the partners decided to exit.
Let's say 5 people with 1 LP each decided to burn their tokens and exit. 25 LP remain in circulation. DAO AUM = \$1,250.
The members' shares and earnings were distributed as follows:
The member with 10 LP, 40% share, 500 USDT -> **500 USDT**.
The member with 1 LP, 4% share, 50 USDT -> **50 USDT**.
**This cycle can then be repeated for an unlimited number of rounds. The main rule to follow is — raise funds, then earn.**
Tip #1\
How to distribute profit among contributors?
The LP token is exactly this profit distribution mechanism. Contributors earn for as long as they hold LP tokens. To lock in their profit, they burn their share. This burning can be manually activated on predetermined dates.
Tip #2\
How to keep your contributors safe?\
**Don't forget** to activate LP token burning, and don't freeze this rule.
You can also choose specific days for members when the burn function will be active. The burn function must be turned on and off manually.
# My First DAO (/evm/use-cases/my-first-dao)
XDAO is your gateway into the world of decentralized finance. Why? Because it has everything you need to co-manage, create, and build together!
Below is the simplest DAO concept that can be implemented on XDAO. This is a brief summary of everything you can learn from our DAO creator's guide.
## Step 1 [#step-1]
Create a DAO for 2 people. Add your public address and your friend's address. Issue 1 GT to each address. Set the quorum at 51%. Now decisions can only be made if everyone participates in the vote.
🔷 [See how to create a DAO](/evm/guides-for-gt/create-a-dao).
## Step 2 [#step-2]
Create an LP token.
🔷 [See how to create an LP token](/evm/guides-for-gt/dao-page/manage/investment-activity-management/create-lp-token).
## Step 3 [#step-3]
Create a private offer for you and your friend. Set the LP token price at \$1,000 for each member.
🔷 [See how to create a private offer](/evm/guides-for-gt/dao-page/manage/investment-activity-management/create-private-offer).
## Step 4 [#step-4]
After the purchase, the offers will be deactivated automatically, and your DAO will receive a total of \$2,000. Now you and your friend are not only DAO members, but also its investors. Each of you holds 50% of the total DAO share.
🔷 [See how to redeem an LP token](/evm/users-guide/private-offer).
## Step 5 [#step-5]
Use "Connect" and make your first purchases on DEX / NFT marketplaces or use farming — invest on behalf of the DAO and vote.
🔷 [See how to connect to XDAO Connect](/evm/guides-for-gt/dao-page/manage/advanced/connect).
Congratulations, you've created your own digital autonomous organization! 😎
# Burn LP (/evm/users-guide/burn-lp)
If the LP Burning feature is enabled in the DAO, you can withdraw your share from the DAO. To burn LP tokens of a DAO using Burn LP:
Click Burn LP on the Activity page of the DAO.
Click Approve to allow the smart contract to interact with the tokens in your wallet.
Select the tokens you want to receive in exchange for your LP, in proportion to your share.
Click Burn LP to burn the LP tokens from your wallet and receive funds from the DAO into your wallet.
**How is this different from Private Exit Offer?** Here you exit **on your own**, burning your LP share once the managers have enabled burning. In [Private Exit Offer](/evm/users-guide/private-exit-offer) the exit happens through the manager's **address-specific offer** with pre-defined assets.
# Crowdfunding (/evm/users-guide/crowdfunding)
To purchase LP tokens of a DAO using Crowdfunding:
Click Crowdfunding on the Activity page of the DAO.
Click Buy LP.
Click Approve to allow the smart contract to interact with the tokens in your wallet.
Click Buy LP and confirm the purchase of LP tokens in your wallet.
See also: how a manager sets up a sale — [Create Crowdfunding](/evm/guides-for-gt/dao-page/manage/investment-activity-management/create-crowdfunding).
# User's Guide (/evm/users-guide)
This section is for DAO members: investors and LP token holders. It describes how to enter a DAO by buying a share, exit it, and manage your wallet. Actions performed by DAO managers (creating offers, issuing tokens) are described in the [Guides for GT](/evm/guides-for-gt/create-a-dao) section.
## Four ways to work with LP tokens [#four-ways-to-work-with-lp-tokens]
They are easy to confuse — so tell them apart by two traits: **is it an entry or an exit** and **is the deal public or address-specific**.
Buy LP tokens in an open sale: any address can participate (or addresses from a whitelist).
Buy LP tokens through a manager's personal offer — at a price and quantity agreed in advance.
Exit the DAO through a manager's offer: burn LP and receive pre-defined assets.
Burn your LP share and receive a proportional part of the DAO's assets — when the managers have enabled LP Burning.
## Wallet [#wallet]
Your DAOs, wallet tokens, and transaction history.
# My Account (/evm/users-guide/my-account)
To access My Account:
Click on the wallet address in the upper right corner.
Click My Account.
On this page you will see the My DAOs tab — these are the DAOs in which you have GT.
In the Wallet info tab you will see the My wallet section with information about the tokens in your wallet and the Transaction History section with the history of transactions in your wallet.
# Private Exit Offer (/evm/users-guide/private-exit-offer)
To burn LP tokens of a DAO using Private Exit Offer:
Click Private Exit Offer on the Activity page of the DAO.
Click on the offer that was created by the DAO managers for your wallet.
Click Approve to allow the smart contract to interact with the tokens in your wallet.
Click Burn LP to burn the LP tokens from your wallet and receive funds from the DAO into your wallet.
**How is this different from Burn LP?** Here you exit through the manager's **address-specific offer** with pre-defined assets. In [Burn LP](/evm/users-guide/burn-lp) you exit **on your own**, burning your share in proportion to the DAO's assets.
See also, how a manager creates an offer: [Create Private Exit Offer](/evm/guides-for-gt/dao-page/manage/investment-activity-management/create-private-exit-offer).
# Private Offer (/evm/users-guide/private-offer)
To purchase LP tokens of a DAO using Private Offer:
Click Private Offer on the Activity page of the DAO.
Click on the offer that was created by the DAO managers for your wallet.
Click Approve to allow the smart contract to interact with the tokens in your wallet.
Click Buy Offer and confirm the purchase of LP tokens in your wallet.
See also: how a manager creates an offer — [Create Private Offer](/evm/guides-for-gt/dao-page/manage/investment-activity-management/create-private-offer).
# Contact Us (/evm/xdao-info/contact-us)
For any inquiries, email us at [hello@xdao.app](mailto:hello@xdao.app). We will respond as soon as possible.
If you have questions about the platform, reach out to us in one of our chats:
📲 **Telegram, international chat**: [**https://t.me/xdao\_eng**](https://t.me/xdao_eng)
📲 **Telegram, CIS chat**: [**https://t.me/xdao\_cis**](https://t.me/xdao_cis)
📲 **Discord**: [**https://discord.gg/xdaoapp**](https://discord.gg/xdaoapp)
# Resolving Errors (/evm/xdao-info/resolving-errors)
## Common errors [#common-errors]
### Too big delay between timestamps [#too-big-delay-between-timestamps]
You have 30 seconds to sign a vote. This error can occur in two cases:
You didn't sign the vote in time. Create a new vote and sign it within 30 seconds. Also make sure you don't have a MetaMask window open.
The time on your device is out of sync with the network. Check the time settings on your device and the error will be resolved.
## How to report an error [#how-to-report-an-error]
We are constantly updating the XDAO app and adding new features. If you found a bug:
Click on your wallet address in the upper right corner.
Click the bug icon "Bug Report".
Fill out the XDAO V3 bug report form — your message will reach the team.
# Audits (/ton/architecture/audits)
The XDAO smart contracts have passed independent security audits: **CertiK** and **Quantstamp**.
* CertiK report: [skynet.certik.com/projects/xdao](https://skynet.certik.com/projects/xdao#code-security) — the **Code Security** section of the project page on CertiK Skynet, where the PDF report opens.
* Quantstamp certificate: [certificate.quantstamp.com/full/xdao](https://certificate.quantstamp.com/full/xdao/2670863d-2e1c-42e6-a15c-5572dd4fef85/index.html).
The CertiK PDF report has no permanent direct address: the file is served through a temporary signed link that is created when you open the report and stays valid for a few minutes. Link to the Skynet project page rather than to a copied file address — a copied link will stop working.
This page is limited to what is confirmed in the product itself and by the auditors. If you need the exact audit scope (which contracts and versions were reviewed, the report date), check the official links above rather than copies from third-party sources.
# Glossary (/ton/architecture/glossary)
Terms and abbreviations used in the XDAO TON documentation.
| Term | Definition |
| ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Airdrop** | A dedicated page in the XDAO TON Mini App for mass token distribution to holders. |
| **Crowdfunding Module** | A plugin installed in the DAO by vote that deploys an LP Manager — once installed, the DAO can launch crowdfunding campaigns. |
| **DAO** (Digital Autonomous Organization) | A DAO on TON is governed by GP token holders, and any DAO action is executed only after a vote reaches general consensus. |
| **Deeplink `ton://…`** | A TON transaction ready to sign, represented as a `ton://transfer/...` URI. Opening it in a TON wallet (for example, Tonkeeper) lets the user confirm and sign it. |
| **Distribution round** | A reward-distribution mode for LP holders via the Mass Payout Plugin (Mode A): a snapshot of LP token holders is taken, each holder's share of the rewards is calculated, and holders then claim their portion themselves. |
| **General consensus** (consensus threshold) | The minimum share of GP votes required for a proposal to be approved and executed on-chain. The counterpart of **quorum** in the EVM version of XDAO. |
| **GP** (Governance Participant) | A holder of the DAO's governance token. GPs create proposals and vote on them; voting weight is proportional to the amount of GP held in the wallet. |
| **Jetton** | The fungible token standard on TON — the counterpart of ERC-20 on EVM networks. The DAO's GP token and LP token are both implemented as jettons. |
| **LP Manager** | A DAO smart-contract plugin that issues LP tokens to crowdfunding participants, tracks contributions, and processes refunds if a campaign fails. |
| **LP token** (jetton) | A jetton that crowdfunding participants receive in proportion to their contribution. It carries no voting rights, but entitles the holder to distributions (Mass Payout) and, in a successful campaign, a share of the funds raised. |
| **Mass Payout** | A DAO plugin and feature for distributing funds among LP token holders: it includes a Distribution round (Mode A) and a Push round (Mode B). |
| **NFT** | A DAO on TON can hold and send NFTs from its balance — only via a proposal (Send DAO NFT). |
| **Plugin / Sub-Wallet** | Modular smart contracts installed in the DAO by vote (Install Plugin, Create Sub-Wallet) that extend the DAO with additional functionality — crowdfunding, Mass Payouts — or create a separate Sub-Wallet to segregate funds. |
| **Proposal** | A formal action on behalf of the DAO: created by a GP member, put to a vote among the other GPs, and executed on-chain once general consensus is reached. |
| **Push round** | A distribution mode via the Mass Payout Plugin (Mode B): the DAO specifies the list of addresses and amounts itself, and the plugin sends the payouts directly — recipients don't need to claim them. |
| **Refund** | The return of a contribution to a crowdfunding participant if the campaign's soft cap was not reached by the end date. Processed automatically by the LP Manager, on the participant's request. |
| **Soft cap / Hard cap** | The minimum (soft cap) and maximum (hard cap) amount to be raised in a crowdfunding campaign. If the soft cap isn't reached by the end of the campaign, participants receive a refund; the hard cap limits the upper amount that can be raised. |
| **TonConnect** | An open standard for connecting TON wallets (Tonkeeper and others) to applications. XDAO TON uses it to authenticate users and sign all on-chain actions. |
| **Whitelist** | A list of addresses permitted to participate in a restricted-access crowdfunding campaign. Managed via dedicated proposals (Add to Whitelist / Remove from Whitelist). |
# GP and the governance model (/ton/architecture/governance-and-gp)
A DAO in XDAO TON is governed by **GP** (Governance Participant) holders. The GP token grants the right to create proposals and vote on them; all DAO activity — fund transfers, changes to the member roster, plugin installation — is executed only after a vote reaches **general consensus**.
## What is GP [#what-is-gp]
The GP token is implemented as a jetton bound to the DAO — the TON counterpart of the non-transferable GT (Governance Token) in the EVM version of XDAO.
* Holding GP means being a DAO member: you can create proposals and vote on any of them.
* Voting weight is proportional to the amount of GP held in the wallet.
* By default, GP tokens **cannot** be moved with a regular transfer — they can only be issued (minted) or burned through a vote. Via a separate proposal (**Change GP Transfer Status**), a DAO can allow or once again prohibit direct GP transfers between wallets.
GP grants voting rights, not a right to distributions. A share of the funds raised and dividends is handled by a separate token — the **LP token** (jetton). For more, see [LP tokens and jettons](/ton/architecture/lp-and-jettons).
## Initial GP distribution when creating a DAO [#initial-gp-distribution-when-creating-a-dao]
When creating a DAO (Create DAO), the managers choose one of two modes for distributing GP among members:
* **Equal** — all specified wallets receive the same amount of GP and, accordingly, equal voting weight.
* **Proportional** — each wallet is assigned its own amount of GP, meaning members can have different voting weights.
## Managing the GP roster [#managing-the-gp-roster]
The GP roster and rights change only through proposals (see [Voting and proposals](/ton/architecture/voting)):
| Proposal | What it does |
| ----------------------------- | --------------------------------------------------------------------------------------------------------- |
| **Add GP** | Issues (mints) GP to a new or existing DAO member. |
| **Remove GP** | Burns the selected member's GP — they lose voting rights for the corresponding amount. |
| **Transfer GP Tokens** | Transfers GP from one wallet to another within the DAO — for example, when rebalancing governance shares. |
| **Change GP Transfer Status** | Enables or disables direct GP token transfers between wallets. |
| **Change General Consensus** | Changes the voting threshold (general consensus) required to approve proposals. |
## General consensus [#general-consensus]
**General consensus** is the minimum share of GP votes (as a percentage of the total GP issued) that must be reached for a proposal to be approved and executed on-chain. It is the direct counterpart of **quorum** in the EVM version of XDAO.
The threshold is set as a percentage from 0 to 100% and is changed via the **Change General Consensus** proposal, which also specifies the voting duration (2, 3, 4 days, or a custom period).
Be careful when raising general consensus: too high a threshold can make the DAO unmanageable — it will become harder to reach the required percentage of votes for future decisions.
# LP tokens and jettons (/ton/architecture/lp-and-jettons)
In XDAO TON, an LP token is a **jetton** — TON's fungible token standard (the counterpart of ERC-20 on EVM networks). LP tokens are given to DAO crowdfunding participants in proportion to their contribution.
The LP token carries no voting rights — unlike [GP](/ton/architecture/governance-and-gp), which governs the DAO. The LP token reflects a participant's financial stake: the right to dividends (Mass Payout) and, if the campaign fails, the right to a refund.
## LP Manager [#lp-manager]
**LP Manager** is a smart-contract plugin installed in the DAO by vote (see [Plugins and modules](/ton/architecture/plugins-and-modules)) that handles the entire LP token lifecycle:
* issues (mints) LP tokens to participants who contributed funds to an active crowdfunding campaign;
* tracks contributors and their shares;
* processes **refunds** if the campaign's soft cap was not reached by the end date;
* manages the gradual unlock of LP through a separate vesting contract when vesting is enabled;
* processes the claim of the DAO's management fee in LP tokens after a campaign successfully completes.
Each installed LP Manager has its own jetton master for that DAO's LP token — meaning a DAO can have multiple LP Managers (and, accordingly, multiple different LP tokens), for example for different campaigns or fundraising tracks.
## How a participant receives LP tokens [#how-a-participant-receives-lp-tokens]
The participant contributes TON or a jetton to an active crowdfunding campaign — via a `ton://transfer/...` deeplink (see [TON wallets and TonConnect](/ton/architecture/wallets-and-tonconnect)).
If the campaign completes successfully (the soft cap is reached), the participant claims their LP tokens — they are credited to the participant's wallet by the LP Manager.
If vesting is enabled for the campaign, part of the LP unlocks immediately (TGE), while the rest unlocks linearly over the vesting period after the cliff period; the unvested portion can be claimed as it unlocks.
If the campaign's soft cap isn't reached by the end date, no LP tokens are issued — instead of claiming LP, participants request a **refund** and get their contribution back.
## Why DAOs need LP tokens [#why-daos-need-lp-tokens]
As in the EVM version of XDAO, LP tokens are the primary tool for raising funds in a DAO: they let you track each crowdfunding participant's contribution transparently, without affecting the GP holders' roster or voting weight. In XDAO, DAO governance (voting, GP) and the investment side (LP, crowdfunding) are deliberately kept separate.
# Plugins and modules (/ton/architecture/plugins-and-modules)
A DAO in XDAO TON is built modularly: the base DAO contract holds the GP token and executes proposals, while additional capabilities — crowdfunding, Mass Payouts, separate wallets — are attached as **plugins** and **Sub-Wallets**. Installing any plugin or Sub-Wallet happens only through a proposal and a GP vote, like any other DAO action.
## Sub-Wallet [#sub-wallet]
A **Sub-Wallet** is a separate wallet controlled by the DAO, used to segregate funds by purpose (for example, keeping the proceeds of one crowdfunding campaign separate from the main treasury). It is created via the **Create Sub-Wallet** proposal; each Sub-Wallet has its own sequence number and name.
## Crowdfunding Module [#crowdfunding-module]
The **Crowdfunding Module** gives the DAO the ability to raise funds from the community. Technically, it consists of the **LP Manager** plugin (see [LP tokens and jettons](/ton/architecture/lp-and-jettons)), which issues LP tokens to campaign participants.
Before the module can be installed, the DAO must go through a one-time contract upgrade — it unlocks crowdfunding support and leaves the DAO ready for LP Manager installation.
**DAO contract upgrade** — a one-time update that enables crowdfunding support (the **Enable Crowdfunding Support** proposal).
**Installing the Crowdfunding Module** — deploys an LP Manager in the DAO (the **Install Crowdfunding Module** proposal).
**Creating a Sub-Wallet** to receive campaign funds (the **Create Sub-Wallet** proposal).
**Launching a campaign** — creating the first crowdfunding campaign (the **Crowdfunding** proposal), after which the DAO can raise funds from the community.
## Mass Payout Plugin [#mass-payout-plugin]
The **Mass Payout Plugin** gives the DAO the ability to distribute funds (dividends) among LP token holders. Payouts are made in TON or jettons, and entitlement is verified using Merkle proofs, which keeps claiming gas-efficient for LP holders.
The plugin supports two distribution modes:
* **Distribution round** (Mode A) — the DAO creates a round, a snapshot of LP token holders is taken and each holder's share is calculated; holders then claim their portion themselves within a configurable period.
* **Push round** (Mode B) — the DAO specifies the list of addresses and amounts itself, and the plugin sends the payouts directly, with no claiming required from recipients.
**Enable distribution support** — the same one-time DAO upgrade used for crowdfunding (the **Enable Crowdfunding Support** proposal).
**Install the Mass Payout Plugin** (the **Install Mass Payout Plugin** proposal).
**Set up the LP holder base** — a Distribution round requires an installed Crowdfunding Module with LP token holders.
**Create a round** — a Distribution round or Push round (the **Create Distribution Round** proposal).
Installing any plugin or Sub-Wallet is a separate proposal: it must be supported by GPs, and it is executed only once general consensus is reached (see [Voting and proposals](/ton/architecture/voting)).
# Smart contracts (/ton/architecture/smart-contracts)
A DAO in XDAO TON isn't a single contract but a set of linked smart contracts on TON: a base DAO contract plus a set of pluggable modules.
The public addresses of XDAO TON's core contracts (Factory, DAO master, etc.) are being finalized at the time of writing and will be published separately, similar to the EVM version's addresses in [Smart contracts (EVM)](/evm/architecture/smart-contracts). The structure of DAO components is described below, not specific addresses — do not rely on unconfirmed addresses from third-party sources.
## What a DAO consists of [#what-a-dao-consists-of]
### DAO master [#dao-master]
The DAO's main contract. It also acts as the jetton master for the DAO's **GP token** — that is, it manages GP issuance (minting) and burning, holds the current **general consensus** threshold, and executes proposals on-chain once they've gathered the required share of votes.
### Plugins and Sub-Wallets [#plugins-and-sub-wallets]
The DAO keeps a list of installed plugins — each one is installed by a separate proposal (see [Plugins and modules](/ton/architecture/plugins-and-modules)):
* **LP Manager** (Crowdfunding Module) — one or more per DAO; each issues its own LP token (jetton) and runs crowdfunding campaigns.
* **Mass Payout Plugin** — distributes funds among LP token holders (distribution rounds and push rounds).
* **Sub-Wallet** — a separate DAO wallet for segregating funds by purpose.
### Crowdfunding campaign contracts [#crowdfunding-campaign-contracts]
When an LP Manager launches a campaign, a separate set of contracts is deployed for that campaign:
* **Crowdfunding master** — the contract for a specific campaign: its parameters (soft cap, hard cap, timing, whitelist), state (active / successful / failed / emergency withdrawn), and aggregated contributor data.
* **Helper** — a personal contract for each campaign participant, through which the contribution, LP claim, and refund all flow.
* **VestingVault** — the vesting contract for a specific participant's LP tokens, if vesting is enabled for the campaign (TGE unlock, cliff period, linear unlock).
## How the components connect [#how-the-components-connect]
DAO master holds the list of plugins → LP Manager holds the address of its LP jetton master and the list of campaigns → each campaign has its own Crowdfunding master → each campaign participant has their own Helper (and, with vesting, their own VestingVault). The technical models for these objects (`Dao`, `Plugin`, `CrowdfundingCampaign`, `ParticipantVesting`, etc.) are documented in [API → Models](/ton/api/models).
# Voting and proposals (/ton/architecture/voting)
Any DAO action in XDAO TON — a fund transfer, a change to the GP roster, installing a plugin, launching a crowdfunding campaign — is carried out through a **proposal**: a member creates a proposal, GPs vote on it, and once **general consensus** is reached, it is executed on-chain.
## How to create a proposal [#how-to-create-a-proposal]
Open your DAO and go to the **Votes** tab.
Click **Create Proposal**.
Select a proposal type from the list — the available types depend on the DAO's current state (for example, some crowdfunding proposal types only appear after the DAO upgrade — see [Plugins and modules](/ton/architecture/plugins-and-modules)).
Fill in the form fields (recipient address, amount, name, description, etc. — the set of fields depends on the proposal type) and set the voting duration: **2, 3, 4 days**, or a custom period.
Sign the proposal-creation transaction in your connected TON wallet (see [TON wallets and TonConnect](/ton/architecture/wallets-and-tonconnect)).
Once created, the proposal becomes visible to all GPs on the **Votes** tab. Each GP votes with weight proportional to the amount of GP in their wallet. When the share of "for" votes reaches the overall **general consensus** threshold, the proposal is automatically executed on-chain.
If the general consensus threshold isn't reached by the end of the voting period, the proposal is marked **Rejected** and is not executed.
## Proposal statuses [#proposal-statuses]
* **Active** — voting is in progress.
* **Executed** — the general consensus threshold was reached, and the action was executed on-chain.
* **Rejected** — the voting period ended without reaching the threshold.
* **Mine** — a filter for proposals you personally created (not a separate execution status).
## Overview of proposal types [#overview-of-proposal-types]
### Governance [#governance]
| Proposal | What it does |
| ----------------------------- | ---------------------------------------------- |
| **Add GP** | Issues GP to a new or existing member. |
| **Remove GP** | Burns the selected member's GP. |
| **Transfer GP Tokens** | Transfers GP between wallets within the DAO. |
| **Change GP Transfer Status** | Enables/disables direct GP token transfers. |
| **Change General Consensus** | Changes the DAO's voting threshold. |
| **Redesign DAO** | Changes the DAO's name, logo, or token symbol. |
### Treasury and assets [#treasury-and-assets]
| Proposal | What it does |
| ---------------------------- | ---------------------------------------------------------------------------- |
| **Send DAO Funds** | Sends TON or a jetton from the DAO balance to any address. |
| **Send DAO NFT** | Sends an NFT from the DAO balance to any address. |
| **Swap DAO Funds (STON.fi)** | Swaps treasury assets via the STON.fi DEX. |
| **Collect Fees** | Collects protocol fees from the fee contract (administrative function). |
| **Custom Proposal** | An arbitrary on-chain action on behalf of the DAO (administrative function). |
### Crowdfunding [#crowdfunding]
| Proposal | What it does |
| -------------------------------------------- | --------------------------------------------------------------------------------------- |
| **Enable Crowdfunding Support** | A one-time upgrade of the DAO contracts that unlocks access to the Crowdfunding Module. |
| **Install Crowdfunding Module** | Deploys an LP Manager in the DAO. |
| **Create Sub-Wallet** | Creates a Sub-Wallet — a separate DAO wallet, for example to receive campaign funds. |
| **Crowdfunding** | Launches a new fundraising campaign. |
| **Add to Whitelist / Remove from Whitelist** | Adds or removes addresses from the campaign whitelist. |
| **Early Finish Crowdfunding** | Ends the campaign early and sends the funds raised to the target address. |
| **Claim DAO Management Fee** | Claims the DAO's fee LP tokens after a campaign successfully completes. |
### Plugins and Mass Payouts [#plugins-and-mass-payouts]
| Proposal | What it does |
| ------------------------------ | ----------------------------------------------------------------------------------- |
| **Install Mass Payout Plugin** | Installs the Mass Payout Plugin for LP holders. |
| **Create Distribution Round** | Creates a distribution round (Mode A: LP holder snapshot + claim via Merkle proof). |
| **Close Distribution Round** | Closes an active distribution round. |
| **Withdraw Mass Payout Funds** | Withdraws remaining funds from the Mass Payout Plugin. |
The full list of proposal types and available form fields depends on the DAO's status (regular DAO / DAO with crowdfunding enabled) and may expand as the product evolves.
# TON wallets and TonConnect (/ton/architecture/wallets-and-tonconnect)
XDAO TON is a Telegram Mini App running on TON, so any action (creating a DAO, voting, contributing to crowdfunding, claiming LP) requires a connected TON wallet. The connection is made through **TonConnect**.
## What is TonConnect [#what-is-tonconnect]
**TonConnect** is an open standard for connecting TON wallets to applications. It lets an application request a wallet connection and then send ready-made transactions for signing, without ever having access to the user's private keys. XDAO TON supports any TonConnect-compatible wallet, including **Tonkeeper**.
## Connecting a wallet [#connecting-a-wallet]
In the XDAO TON Mini App, click **Connect Wallet**.
A TonConnect modal opens with a list of supported wallets (for example, Tonkeeper).
Select a wallet — the wallet app opens automatically (or offers a QR code for the desktop flow).
Confirm the connection in the wallet. Your address is then linked to your XDAO TON session, and you can vote, create proposals, participate in crowdfunding, and so on.
You can disconnect your wallet at any time — from the app's profile.
## Signing actions [#signing-actions]
Any on-chain action in XDAO TON — voting, creating a proposal, contributing to a campaign, claiming LP, a refund — is issued as a transaction that must be signed in the connected wallet. XDAO TON builds this transaction automatically; the user only needs to confirm it in the wallet app.
## Deeplinks `ton://transfer/...` [#deeplinks-tontransfer]
Certain actions (for example, contributing to a campaign or claiming LP) can be represented as a ready-to-sign **deeplink** — a URI of the form `ton://transfer/{address}?amount={amount}&bin={data}`. Opening such a link in a TON wallet (Tonkeeper and others) immediately prompts the user to sign the required transaction, with no additional assembly needed.
A technical reference on deeplinks for integrators (campaign contribution, initial LP claim, vested LP claim) is available in [API → Crowdfunding](/ton/api/crowdfunding).
# Connecting a Wallet (/ton/getting-started/connect-wallet)
To create DAOs, vote, and sign any transactions in XDAO TON, you need to connect a TON wallet via **TonConnect** — the standard wallet-connection protocol in the TON ecosystem. All TonConnect-compatible wallets are supported, for example, Tonkeeper.
The connection itself isn't a blockchain transaction but a cryptographic signature (**TON Proof**) with which your wallet confirms the address belongs to you. It's free and requires no gas.
On the connection screen — part of onboarding on first sign-in, and available later via the Mini App's header — click **Connect Wallet**.
The Mini App will open the standard TonConnect window with a list of available wallets. Choose your wallet — for example, Tonkeeper — and confirm the connection in its interface (in the wallet app itself, or via QR code if it's installed on another device).
Your wallet will ask you to sign a sign-in request (TON Proof). Confirm the signature — XDAO TON will verify it and authorize you in the app.
Once connected, a shortened version of your wallet address appears in the Mini App's header — confirming that sign-in succeeded.
## Managing the connection [#managing-the-connection]
Click the wallet address in the top-right corner of the Mini App to open the **Connected Wallet** window:
* the full address is shown, and clicking it copies the address to the clipboard;
* the **Disconnect Wallet** button disconnects the current wallet — for example, to connect a different one;
* if no wallet is connected, the same button offers **Connect to TON**.
If you disconnect your wallet and connect a different one, you're effectively signing in to the app under a different address — access to your DAOs and to some features (for example, Airdrop) is determined by the specific TON wallet you're connected with.
# Getting Started (/ton/getting-started)
Working with XDAO TON starts right inside Telegram — no separate app or website needed.
Open the [**@xdao\_ton\_bot**](https://t.me/xdao_ton_bot) bot in Telegram and launch the Mini App from its menu.
On first launch, the Mini App shows a short onboarding flow: what a DAO is and why it matters, plus how creating a DAO and distributing GP among members looks in just a few taps. Onboarding also explains why you should create a DAO as early as possible — the number of DAOs is limited, and the cost of creating each subsequent DAO gradually increases.
Onboarding will prompt you to connect a TON wallet — without it you can't sign votes and transactions on your own behalf. More details — [Connecting a Wallet](/ton/getting-started/connect-wallet).
After connecting your wallet, you create your first DAO, or pick up where you left off if you've already used XDAO TON. From there, the Mini App opens the list of your DAOs.
TonConnect, Tonkeeper, and other TON wallets.
The DAO list, DAO page tabs, and the profile section.
# Navigating the Mini App (/ton/getting-started/mini-app)
After signing in to XDAO TON, you land in the Mini App with a persistent bottom navigation bar and several screens.
## Bottom navigation [#bottom-navigation]
* **Home** — the home screen, also the **Profile** page (see below).
* **DAOs** — the list of your DAOs.
* **Crowdfunding** — appears if you have active contributions to crowdfunding campaigns, and is highlighted when any of them are active.
* **Votes** — the list of proposals across your DAOs; highlighted when there are active votes.
* **Airdrop** — appears once the airdrop section is available to your account. More details — [Airdrop](/ton/airdrop).
## DAO list [#dao-list]
The **DAOs** tab shows your DAOs and lets you find new ones:
* a search bar — by DAO name, address, or token symbol;
* an **All / Mine / LP Holder** filter — all DAOs, only ones you created, or only ones where you hold an LP token;
* a **Create** button — go to creating a new DAO, see [Creating a DAO](/ton/guides-for-managers/create-a-dao);
* each DAO's card shows its name and the number of active votes;
* DAOs still being deployed on-chain appear in a separate **Pending DAOs** block.
## DAO page [#dao-page]
Opening a DAO from the list takes you to its page with a horizontal tab bar. The set of tabs depends on the DAO's status and on whether you hold its GP token — among them:
* **Overview** — summary information about the DAO;
* **Votes** — active and past proposals (visible to GP token holders);
* **DAO Balance** — the DAO's TON and jetton balances, plus any NFTs it holds;
* **Settings** — the DAO's list of GP token holders and their voting weight, plus LP token holders;
* **Plugins** — the DAO's installed modules (LP Manager, Mass Payout, and more);
* **Crowdfunding** — appears once crowdfunding support is enabled for the DAO;
* **Distributions** — appears if the Mass Payout Plugin is installed in the DAO.
A detailed breakdown of each tab is in the [DAO page](/ton/guides-for-managers/dao-page) section.
## Profile (Home) [#profile-home]
The Mini App's home screen doubles as a profile: it shows your Telegram account link status, the airdrop task checklist (see [Airdrop](/ton/airdrop)), a banner link to the guide for launching your first crowdfunding campaign, and links to the project's social media and smart contract audit reports.
# Guides for Managers (/ton/guides-for-managers)
This section is for managers: holders of a DAO's GP token (Governance Participant) created in the XDAO TON Mini App. GPs are the ones who create the DAO, configure general consensus, and manage the treasury, members, crowdfunding, and other modules.
In XDAO TON, almost every DAO action is a **proposal**: a manager creates a proposal, GPs vote with their GP tokens, and once general consensus is reached, the decision is executed on-chain in the DAO's smart contract.
Deploy a DAO in the Mini App: name, token symbol, GPs, and general consensus — in a few steps.
What you see on the DAO page and what each tab shows — Overview, Tokens, Votes, DAO Balance, NFT, Settings.
All manager actions run through proposals: treasury, GPs, crowdfunding, distribution, advanced settings.
# Contact Us (/ton/info/contact-us)
For any questions, write to us at [hello@xdao.app](mailto:hello@xdao.app). We'll get back to you as soon as possible.
If you have questions about XDAO TON — the Mini App, DAOs, Crowdfunding, or other platform features — reach out to us in one of our chats:
📲 **Telegram, international chat**: [**https://t.me/xdao\_eng**](https://t.me/xdao_eng)
📲 **Telegram, CIS chat**: [**https://t.me/xdao\_cis**](https://t.me/xdao_cis)
📲 **Discord**: [**https://discord.gg/xdaoapp**](https://discord.gg/xdaoapp)
# Resolving Errors (/ton/info/resolving-errors)
## Common errors [#common-errors]
### Wallet won't connect [#wallet-wont-connect]
XDAO TON connects to a wallet via TonConnect (Tonkeeper and other TonConnect-compatible wallets) and confirms sign-in with a cryptographic signature (TON Proof). If the connection fails or the session drops:
Make sure a TonConnect-compatible wallet (e.g. Tonkeeper) is installed on your device and you're signed in to it.
Click your wallet address in the top-right corner of the Mini App and choose **Connect to TON**.
Confirm the signature request in your wallet. If the wallet window closed on its own or you didn't confirm in time, retry the connection.
If you switched the active address directly inside the wallet app, XDAO TON detects this and logs you out for security — reconnect with the address you want to use.
If nothing helps, close the Mini App completely and reopen it via the @xdao\_ton\_bot bot — this resets the local connection state.
### Transaction doesn't go through [#transaction-doesnt-go-through]
Any action in a DAO — voting, contributing to crowdfunding, claiming LP, and so on — is a transaction that needs to be confirmed in your wallet. It can fail to go through for several reasons:
**You cancelled or didn't confirm the transaction in your wallet.** The app will show something like "You cancelled the transaction in your wallet." Just repeat the action and confirm the transaction in your wallet without closing the window.
**The transaction was rejected by the network/smart contract.** This usually means something changed between signing and execution: insufficient balance, or the object (proposal, campaign) has already closed or changed status. Check your balance and the current state of the DAO/proposal/campaign, then try again.
**The `ton://transfer` deeplink for a contribution or LP claim is stale.** These links are generated for a specific amount and campaign state at request time. If your wallet refuses to sign the link, or the amount/address looks wrong, go back to the Crowdfunding page and request a fresh link.
### Not enough TON for gas [#not-enough-ton-for-gas]
Every transaction on TON — voting, creating a proposal, contributing to crowdfunding, claiming LP or an NFT — requires a small reserve of TON on top of the operation's own amount: this is gas (the network fee) and the execution fee for the smart contract to carry out the action. If this reserve is insufficient, XDAO TON will show an error such as "Insufficient TON for gas" or "Insufficient TON balance" up front and won't let you send the transaction.
This rule also applies to jetton operations: even when you're sending or contributing a jetton rather than TON, your wallet balance still needs a small reserve of TON specifically — it's used to pay gas.
What to do:
Top up the TON balance on your wallet — with a margin above the operation's amount.
Try the action again. Any unspent portion of the TON reserved for gas is usually returned to your wallet after the transaction executes successfully.
### Proposal doesn't execute until general consensus [#proposal-doesnt-execute-until-general-consensus]
Every DAO action in XDAO TON goes through a proposal: a GP creates it, GPs vote on it, and only once **general consensus** is reached — the vote threshold set in the DAO's settings (shown on the Overview tab as Consensus, in %) — does the proposal execute on-chain automatically.
If general consensus isn't reached by the time voting ends, the proposal gets a Rejected status and **does not execute** — no funds are sent, and no other action takes place. Votes cast for it don't carry over to a new proposal.
What to do if your proposal is "stuck" and not executing:
Open the proposal on the Votes tab and check its status and how many votes it has relative to the current Consensus.
If the voting period hasn't ended yet, ask the other GPs to vote — the proposal will execute automatically as soon as general consensus is reached.
If the period has ended and the proposal is now Rejected, create a new proposal (Create Proposal) with the same action.
If general consensus in your DAO is set too high, reaching it can be difficult even with active GP participation. You can change the threshold with a Change General Consensus proposal — but raise it with caution: too high a threshold can block decision-making in the future.
### Crowdfunding contribution not counted / campaign didn't reach soft cap [#crowdfunding-contribution-not-counted--campaign-didnt-reach-soft-cap]
If a crowdfunding campaign doesn't reach its soft cap by the end date, it's considered unsuccessful and no LP tokens are issued for it. In this case, everyone who contributed funds can claim a full refund — the LP Manager processes the refund automatically, and the action is available from the campaign page.
## How to report an error [#how-to-report-an-error]
We're constantly updating XDAO TON and adding new features. If you've run into an error that isn't listed above:
Click the "?" question icon next to your wallet address in the top-right corner of the Mini App.
The Help window opens — on most pages it shows a contextual FAQ for the current section (DAO, Crowdfunding, Votes, etc.).
If it doesn't answer your question, write to our support: [t.me/xdao\_eng](https://t.me/xdao_eng), or check out the [Contact Us](/ton/info/contact-us) page.
# XDAO TON Airdrop: claiming your share (/ton/use-cases/airdrop-campaign)
This scenario isn't about actions inside a DAO — it's about how an individual XDAO TON user claims their share of the **\$DAO** airdrop token. Unlike crowdfunding and distributions, there are no proposals or voting here: eligibility for a share is determined automatically from account activity, and all the user needs to do is prepare their account and register a destination address.
## What the XDAO TON airdrop is [#what-the-xdao-ton-airdrop-is]
XDAO TON distributes a portion of the $DAO token to users whose activity supported the XDAO ecosystem on TON — through farming, creating or joining an on-chain DAO as a GP, donations, and other forms of contribution. The $DAO token itself, however, isn't issued on TON — it's issued on the **Solana** network. That's why the key action for the user in this scenario is linking a Solana address to their TON account.
Airdrop eligibility is tied to the specific Telegram account and TON wallet you used in XDAO TON — not to any wallet you happen to have now.
## Step 1. Prepare your account (Profile page) [#step-1-prepare-your-account-profile-page]
The Mini App's home screen (Profile) has an airdrop-readiness checklist:
* **Connect Telegram** — link your Telegram account to your wallet;
* **Be GP in DAO** — become a GP in at least one on-chain DAO;
* **Be DAO Creator** — optionally, create your own DAO (see [creating a DAO](/ton/guides-for-managers/create-a-dao));
* **Select DAO for Airdrop** — choose which DAO to link your airdrop slot to;
* subscribe to the project's channel.
## Step 2. Check your share (Airdrop page) [#step-2-check-your-share-airdrop-page]
Open **Airdrop** in the Mini App's bottom navigation. If your account is in the snapshot, the page shows your \$DAO points total (from farming and the referral program), the number of DAOs where you're a GP, your number of donations, and one or more tiers (badges) — for example, Gold, VIP, DAO Creator, Notcoin, and Farm — depending on the type of contribution.
## Step 3. Register your Solana wallet [#step-3-register-your-solana-wallet]
On the **Airdrop** page, paste your Solana address into the **Your Solana wallet** field. The format (base58, 32 bytes) is validated right in the input field.
Click **Connect & Sign with TON** (or **Sign with TON & Add Wallet** if a TON wallet is already connected) and confirm the signature in your wallet. This signature (**TON Proof**) proves you own the exact TON wallet the airdrop is linked to — so you can't register someone else's Solana address against your share.
After signing, the address is shown as **Solana wallet added & verified**; you can copy it or replace it with the **Change Wallet** button.
Claiming isn't open yet — the Airdrop page only registers your destination Solana address for later. The actual \$DAO token claim happens later, as a separate stage.
## If you've lost access to your account or wallet [#if-youve-lost-access-to-your-account-or-wallet]
If you can no longer sign a transaction with the TON wallet you farmed with, the Airdrop page has a **No access to your TON wallet?** form — enter your new TON address and the reason; the request is reviewed manually (typically within 30 days). Conversely, if you've lost access to your Telegram account but still have access to your TON wallet, the **No access to your Telegram account?** form works the mirror way: you sign the request with the same TON wallet, confirming your right to move your share to your current Telegram account.
🔷 [More in the Airdrop section](/ton/airdrop).
# Launching Crowdfunding: from DAO upgrade to LP payout (/ton/use-cases/launch-crowdfunding)
This scenario walks a DAO through the full crowdfunding journey on XDAO TON — from the technical contract upgrade to the moment contributors hold LP tokens in their wallets. Each step below is either a proposal that GPs create and pass, or an action the contributor takes in their own wallet.
The app has a built-in step-by-step "Crowdfunding Setup Guide" (Create Proposal → Crowdfunding → Setup Guide) that shows the DAO's current status — **Upgrade Required → Module Required → Ready** — and creates the required proposals at the click of a button, in the same order described below.
## Step 1. Enable crowdfunding support [#step-1-enable-crowdfunding-support]
Before a DAO can install crowdfunding modules, its contracts need a one-time upgrade via an **Enable Crowdfunding Support** proposal. This is a one-off upgrade — if the DAO has already gone through it (for example, for Distribution), you don't need to repeat it.
🔷 [See Enable Crowdfunding Support](/ton/guides-for-managers/manage/crowdfunding/enable-crowdfunding-support).
## Step 2. Install the Crowdfunding Module [#step-2-install-the-crowdfunding-module]
The **Install Crowdfunding Module** proposal deploys the **LP Manager** in the DAO — a plugin that issues the LP token (jetton) and subsequently runs all campaigns: it accepts contributions, credits LP tokens to contributors, and processes refunds if a raise fails. The same proposal sets the LP token's name and symbol.
🔷 [See Install Crowdfunding Module](/ton/guides-for-managers/manage/crowdfunding/install-crowdfunding-module).
Accepting campaign funds also requires a separate Sub-Wallet (Create Sub-Wallet) — without one, the campaign creation form is locked. Installing the module is free: the platform fee (5% of the amount raised) is only deducted when a campaign completes successfully.
## Step 3. Create a campaign [#step-3-create-a-campaign]
Once the DAO's status is **Ready**, launch the campaign itself with a **Crowdfunding** proposal: name and description, fundraising currency (TON or a jetton), LP token price, **soft cap** (the minimum goal below which the campaign is considered unsuccessful) and **hard cap** (the fundraising ceiling), per-wallet limits, timing, and, if needed, a **whitelist** restricting who can contribute to a specific list of addresses.
🔷 [See Create Crowdfunding Campaign](/ton/guides-for-managers/manage/crowdfunding/create-crowdfunding).
If the whitelist is enabled, addresses can be added to or removed from the list after the campaign launches via separate proposals — addresses that have already contributed cannot be removed.
🔷 [See Manage Whitelist](/ton/guides-for-managers/manage/crowdfunding/manage-whitelist).
GPs vote on each of the three proposals above; once **general consensus** is reached, the proposal executes on-chain and the DAO moves to the next step.
## Step 4. Contributors contribute [#step-4-contributors-contribute]
While the campaign is active, any address (or a whitelisted address) opens it on the **Crowdfunding** tab, connects a wallet via TonConnect, and contributes TON or a jetton within the min/max per wallet. In return, once the campaign finishes, they're owed LP tokens proportional to their contribution amount.
🔷 [See Contribute to Crowdfunding](/ton/users-guide/contribute-to-crowdfunding).
## Step 5 (optional). Finish the campaign early [#step-5-optional-finish-the-campaign-early]
If the soft cap has already been reached and the end date is still far away, GPs can close the raise ahead of schedule with an **Early Finish Crowdfunding** proposal — for example, to put the raised funds to work sooner. If GPs take no action, the campaign finishes on its own: on the end date or once the hard cap is reached.
🔷 [See Early Finish Crowdfunding](/ton/guides-for-managers/manage/crowdfunding/early-finish).
## Step 6. Campaign outcome [#step-6-campaign-outcome]
What happens next depends on whether the campaign reached its soft cap.
**Campaign successful (soft cap reached).** Any contributor can finalize it with the "Finish & Send Funds" button — the raised funds go to the DAO's Destination Sub-Wallet. After that, each contributor claims their LP tokens.
🔷 [See Claim LP Tokens](/ton/users-guide/claim-lp-tokens).
**Campaign didn't reach soft cap.** No LP tokens are issued — everyone who contributed funds claims a full refund of their contribution on their own.
🔷 [See Claim Refund](/ton/users-guide/claim-refund).
If a Management Fee was set when the campaign was created, the DAO can claim it in LP tokens after a successful finish — see [Claim DAO Management Fee](/ton/guides-for-managers/manage/crowdfunding/claim-management-fee).
That completes the crowdfunding cycle: the DAO received funding into a Sub-Wallet, and contributors hold LP tokens — their share entitling them to future payouts through [Distribution](/ton/use-cases/run-distribution).
# Distributing assets via Mass Payout (/ton/use-cases/run-distribution)
This scenario walks a DAO through distributing assets to LP token holders or to an arbitrary list of addresses — from installing the **Mass Payout Plugin** to the moment the funds land in recipients' wallets.
## Step 1. Enable distribution support [#step-1-enable-distribution-support]
Like crowdfunding, distributions require a one-time upgrade to the DAO's contracts via an **Enable Crowdfunding Support** proposal. If the DAO has already gone through this upgrade before (for example, for crowdfunding), you don't need to repeat it.
🔷 [See Enable Crowdfunding Support](/ton/guides-for-managers/manage/crowdfunding/enable-crowdfunding-support).
## Step 2. Install the Mass Payout Plugin [#step-2-install-the-mass-payout-plugin]
The **Install Mass Payout Plugin** proposal deploys the module in the DAO that holds funds and runs distribution rounds — both Pull and Push.
🔷 [See Install Mass Payout Plugin](/ton/guides-for-managers/manage/distribution/install-mass-payout).
After installation, top up the plugin's balance by transferring funds to it (see [Send DAO Funds](/ton/guides-for-managers/manage/treasury/send-funds)) — both distribution modes below require this.
## Step 3. Choose a distribution mode [#step-3-choose-a-distribution-mode]
**Mode A (Pull, "Distribution by LP")** — the DAO forms a common pool for its LP token holders; the system builds a Merkle snapshot, and each holder claims their share themselves. This mode requires the DAO to have a Crowdfunding Module (LP Manager) installed with LP holders — see the [crowdfunding launch scenario](/ton/use-cases/launch-crowdfunding).
**Mode B (Push, "Payment List")** — the DAO specifies a list of addresses (up to 200) and amounts up front; the plugin sends the payments itself — no LP tokens required.
### Option A — Pull round, distribution to LP holders [#option-a--pull-round-distribution-to-lp-holders]
The **Create Distribution Round** proposal in **Distribution by LP (Pull)** mode: specify the currency (TON or a jetton), the amount to distribute, the claim window duration, and, optionally, addresses to exclude from the distribution (treasury and service addresses are excluded automatically). Before the vote, the form builds a snapshot preview — locking in LP holders and their shares at that moment.
🔷 [See Create Distribution Round](/ton/guides-for-managers/manage/distribution/create-distribution-round).
If you need to stop a round early — for example, to free up reserved funds — use a separate proposal that immediately closes claims for everyone who hasn't yet claimed their share.
🔷 [See Close Distribution Round](/ton/guides-for-managers/manage/distribution/close-distribution-round).
### Option B — Push round, distribution by list [#option-b--push-round-distribution-by-list]
The same **Create Distribution Round** proposal, but with the mode switch set to **Payment List (Push)**: fill in the table of recipients and amounts manually or via Quick Add Recipients (GP and/or LP holders), specify the currency — and once the proposal passes, the plugin sends the payments to the list on its own, with no action required from recipients.
🔷 [See Push Rounds](/ton/guides-for-managers/manage/distribution/push-rounds).
An in-progress payout can be stopped with a **Cancel Push Payout Round** proposal — payments already sent are not reversed.
## Step 4. Recipients receive their payout [#step-4-recipients-receive-their-payout]
What a recipient does next depends on the round's mode:
**Pull round.** An LP holder opens the **Distributions** tab in the DAO, finds the active round with their share (**Your Reward**), and clicks **Claim** — the app loads the Merkle proof and sends the claim request from their wallet.
🔷 [See Claim a Distribution Payout](/ton/users-guide/claim-distribution).
**Push round.** The recipient doesn't need to do anything — the Mass Payout Plugin transfers the funds to their address automatically; on the round card, this payout is marked with the **Sent** status.
Every Pull round has a claim window (Claim Duration). If a holder doesn't claim their reward before this window expires, the round moves to Expired status and claiming becomes unavailable.
## Step 5. Withdraw the remainder [#step-5-withdraw-the-remainder]
Funds on the plugin that aren't reserved for active rounds — for example, the unclaimed remainder of a closed or expired Pull round — are withdrawn by the DAO via a separate proposal to any address, including back to the treasury.
🔷 [See Withdraw Mass Payout Funds](/ton/guides-for-managers/manage/distribution/withdraw-mass-payout).
That completes the distribution cycle: the DAO's assets reached recipients — either through their own action (Pull) or an automatic payout (Push) — and any remaining balance on the plugin stays under the DAO's control for the next round.
# Claim a Distribution Payout (/ton/users-guide/claim-distribution)
Distribution (Mass Payout) is how a DAO pays out TON or jetton rewards to its LP token holders. Rounds come in two modes:
* **Mode A (Pull)** — the DAO creates a Merkle snapshot of LP holders at the moment the round launches. Each holder claims their own share during the round's active period.
* **Mode B (Push)** — the DAO sends fixed amounts directly to a list of addresses. No action is required from members.
Open the Distributions tab in your DAO. Rounds are sorted so active ones appear first; each round's status is shown on its card: Active, Fully Claimed, Expired, Sent (for Mode B), or Closed.
Find an active Mode A round you're entitled to a payout from. Such a card shows the pool, claim progress, and — if you were an LP holder at the time of the snapshot — a **Your Reward** line with the amount owed to you.
Click **Claim** on the round's card.
In the window that opens, the app loads the Merkle proof for your share and shows: your LP balance at the time of the snapshot (LP Balance), your share of the round (Share), and the resulting reward amount (Reward).
Click the **Claim … TON / jetton** button and confirm the transaction in your wallet. The app sends a claim request with the Merkle proof directly to the Mass Payout Plugin contract.
Wait for confirmation — a "Reward claimed" status will appear. The reward will arrive in your wallet.
Eligibility for a Mode A payout is determined by your LP token balance **at the time the round was created** (the snapshot). If you acquired LP tokens after the round started, you won't be entitled to that specific round — but you'll be eligible for future ones.
Every Mode A round has a claim duration. If you don't claim your reward before it expires, the round moves to Expired status and claiming becomes unavailable — unclaimed funds can be withdrawn by the DAO or directed into a new round.
**Mode B (Push)** rounds require nothing from members — the DAO sends funds directly to the addresses on its list. You can identify such a card by its "Sent" status and the Recipients field; it has no **Claim** button.
# Claim LP Tokens (/ton/users-guide/claim-lp-tokens)
When a crowdfunding campaign reaches its hard cap (or reaches the end date with the soft cap met), it becomes successful. After that, every contributor can claim their LP tokens — proportional to their contribution amount.
Open the campaign. Go to DAO → Crowdfunding tab and select the campaign you need (or find it via the My Crowdfundings list, if you've contributed to campaigns across several DAOs).
If the campaign is successful but hasn't been "finished" yet, the page will show a Campaign Ready to Finish card and a Finish & Send Funds button. Finishing is an open action: the funds raised are sent to the DAO's destination address, and the campaign moves to successful status. This action can be performed by any connected member; DAO managers usually do it right after the goal is reached.
Once finished, a **Claim LP Tokens** button appears on the page (or **Lock LP in Vesting Vault**, if the DAO has enabled vesting for this campaign — see below). Click it.
Swipe the slider to confirm, and sign the transaction in your wallet. The app sends a `request_claim_lp_tokens` request to your personal Helper contract for this campaign.
Wait for confirmation. LP tokens (jetton) will arrive in your wallet — in full immediately, if vesting isn't enabled.
## If the campaign has vesting enabled [#if-the-campaign-has-vesting-enabled]
A DAO can configure a campaign so that LP tokens are issued gradually, through a **Vesting Vault**, rather than all at once:
* A portion of the tokens (the **TGE unlock**, as a percentage) becomes available immediately after claiming.
* The remaining tokens stay locked until the end of the **cliff period**.
* After the cliff, tokens unlock linearly until the end of the **vesting period** — the amount available to claim grows gradually.
In this case, the **Claim LP Tokens** button is replaced with **Lock LP in Vesting Vault** — instead of handing you tokens directly, it locks them in your personal Vesting Vault. The campaign page then shows an LP Vesting card with the current phase (Cliff Period / Vesting / Fully Vested), a vesting progress bar, and the amount available to claim right now.
When the LP Vesting card shows a Claimable now amount, click the **Claim … LP** button.
Confirm the transaction — the app sends `claim_vested` to your Vesting Vault address and transfers the currently available LP tokens to your wallet.
Repeat this as new portions of tokens unlock — the card updates automatically. Once the full amount has been claimed, the card shows the "All LP tokens claimed" status.
A DAO may trigger an emergency release of the entire vesting schedule — in that case, the card will show that all LP tokens were unlocked early by a DAO decision.
LP tokens are only issued for successful campaigns. If a campaign didn't reach its soft cap, claiming is unavailable — use [Claim Refund](/ton/users-guide/claim-refund) instead.
# Claim Refund (/ton/users-guide/claim-refund)
If the amount raised hasn't reached the soft cap (the minimum fundraising amount) by the campaign's end date, the campaign is considered unsuccessful. LP tokens are not issued in this case — every contributor can claim their contribution back in full.
Open the campaign. Go to DAO → Crowdfunding tab and select a campaign that didn't reach its goal (Campaign Did Not Reach Goal status), or find it via the My Crowdfundings list.
If you contributed and haven't claimed a refund yet, a **Claim Refund** button will appear on the page. Click it.
Swipe the slider to confirm, and sign the transaction in your wallet. The app sends a refund request to your personal Helper contract for this campaign.
Wait for confirmation. The amount you contributed (TON or jetton, depending on the campaign's currency) will be returned to your wallet.
A refund can only be claimed once per campaign — after confirmation, the status changes to "Refund Claimed." If you didn't contribute to this campaign, the **Claim Refund** button won't appear.
The **Claim Refund** button is only available for unsuccessful campaigns. If a campaign reached its goal instead, claim your LP tokens: [Claim LP Tokens](/ton/users-guide/claim-lp-tokens).
# Contribute to Crowdfunding (/ton/users-guide/contribute-to-crowdfunding)
Crowdfunding is a DAO's public fundraise: any member (or only whitelisted addresses, if the DAO has enabled a whitelist) can contribute TON or a jetton to a campaign and receive LP tokens in return — their share in the DAO. LP tokens are not issued immediately — once the campaign finishes successfully, you'll need to claim them in a separate action (see [Claim LP Tokens](/ton/users-guide/claim-lp-tokens)).
Open the campaign. Go to DAO → Crowdfunding tab and select an active campaign from the list, or follow a campaign link shared by the DAO manager. The campaign page shows the amount raised against the goal, the start and end dates, and the fundraising currency (native TON or a specific jetton, e.g. USDT).
Connect your wallet via TonConnect, if it isn't connected yet.
If the campaign has a whitelist enabled and your address isn't on it, the contribution form will show a warning — contributing will be unavailable until the DAO managers add your address.
Enter the contribution amount in the input field. The app shows the minimum and maximum per wallet (min/max per wallet) and won't let you enter an amount outside these bounds or greater than what remains until the hard cap. Use the 25% / 50% / 75% / Max buttons to quickly fill in a share of the remaining limit.
If you've contributed to this campaign before, the max per wallet limit accounts for the amount you've already contributed.
Click **Contribute**. A summary will open: the pool (campaign), your contribution amount, and the approximate number of LP tokens you'll receive for that amount.
Swipe the slider to confirm, and sign the transaction in your wallet. The app sends a `ton://transfer` — a native TON transfer to the campaign address, or a jetton transfer from your jetton wallet if the campaign is collecting a jetton.
Wait for confirmation. The app polls the campaign status and will show the result as soon as your contribution appears in the raised amount. This usually takes a few seconds.
Contributing does not issue LP tokens automatically. Wait for the campaign to reach its goal (or reach the end date with the soft cap met) and become successful — then claim your LP tokens separately: [Claim LP Tokens](/ton/users-guide/claim-lp-tokens).
If the campaign hasn't reached its soft cap (the minimum fundraising amount) by the end date, it's considered unsuccessful. In this case LP tokens are not issued — instead, you claim a full refund of your contribution: [Claim Refund](/ton/users-guide/claim-refund).
# User's Guide (/ton/users-guide)
This section is for DAO members on XDAO TON: those who contribute TON or jettons to crowdfunding campaigns and receive LP tokens, and those who hold GP tokens and vote on proposals. Actions performed by DAO managers (creating campaigns, issuing tokens, configuring Distribution) are described in the [Guides for Managers](/ton/guides-for-managers) section.
All actions below are performed in the XDAO Telegram Mini App and require a connected TON wallet (TonConnect — Tonkeeper and others). Every action ends with signing a transaction in the wallet: the app assembles a ready-made message, and you confirm it by swiping the slider.
## Crowdfunding: entry and exit [#crowdfunding-entry-and-exit]
Connect your wallet, choose an amount, and contribute to a DAO's crowdfunding campaign.
Claim your LP tokens once a campaign has finished successfully.
Get your contribution back if a campaign did not reach its soft cap.
## After the campaign: payouts [#after-the-campaign-payouts]
Claim your share from a Distribution (Mass Payout) round as an LP token holder.
## DAO governance [#dao-governance]
If you hold GP tokens — vote on proposals and take part in reaching general consensus.
LP tokens and GP tokens are different things. **LP tokens** are what you receive as a crowdfunding contributor — they entitle you to future payouts (Distribution) but carry no voting rights. **GP tokens** are the DAO's governance tokens: only holders can create proposals and vote.
# Vote on Proposals (/ton/users-guide/vote-on-proposals)
A DAO on XDAO TON is governed through proposals: any on-chain DAO action — from a funds transfer to launching a crowdfunding campaign — is first submitted as a proposal, then GP (Governance Participant) token holders vote on it, and once **general consensus** (the vote threshold set by the DAO) is reached, the proposal is executed on-chain automatically. Only GP token holders can vote — LP tokens carry no voting rights.
Open the Votes tab in your DAO. Here you'll see all of the DAO's proposals — Active, Rejected, and Executed. Use search and filters to find a specific proposal or show only active ones.
A proposal's card shows its title, the current approval percentage, the general consensus threshold that needs to be reached, and how much time is left until voting ends. Click the card to open its details.
The proposal page shows the details of the specific action (e.g. who to send how much to, which address to add as a GP, what the crowdfunding campaign parameters are) and the voting status: how much approval percentage has been reached and how much more is needed for general consensus.
If your wallet doesn't hold this DAO's GP tokens, the app will show: "Only GP token holders can vote on this on-chain proposal" — you won't be able to vote, but the proposal's details will remain visible.
If the proposal is active and you haven't voted yet — click the **Vote** button. The app will show a preview: the approval percentage voting will reach once your GP token weight is counted, along with a progress bar showing this change.
Swipe the slider to confirm, and sign the transaction in your wallet — your vote and GP token weight are added to the proposal on-chain.
You can only vote on a proposal once — after that, the page status changes to "You have voted," and your GP token weight is already counted in the overall approval percentage.
As soon as the approval percentage reaches the general consensus threshold, the proposal is executed on-chain automatically — no separate "execute" action is required from members.
If voting ends without reaching general consensus, the proposal moves to Rejected status and is not executed.
# Crowdfunding (/ton/api/crowdfunding)
Campaign-scoped helpers for crowdfunding integrators. The DAO bearer token must be issued for the DAO that owns the campaign in the path.
## Contribution deeplink [#contribution-deeplink]
Returns a ready-to-sign `ton://transfer/...` URI that contributes the given `amount` to the specified crowdfunding campaign.
Auth: the DAO bearer token's `dao_address` must match the DAO that owns the campaign. Mismatches return 403.
Whitelist: for jetton campaigns `investor_address` is checked against the campaign whitelist — non-whitelisted investors get 403 `not_whitelisted`. For native campaigns the check happens on-chain and a non-whitelisted contribution bounces back to the sender.
## LP claim deeplink [#lp-claim-deeplink]
Returns a ready-to-sign `ton://transfer/...` URI for the \*\*initial\*\* LP claim. This is the `request_claim_lp_tokens` message the investor sends to their per-campaign Helper contract once the campaign is `successful`.
Auth: the DAO bearer token's `dao_address` must match the DAO that owns the campaign. Mismatches return 403.
## Vested LP claim deeplink [#vested-lp-claim-deeplink]
Returns a ready-to-sign `ton://transfer/...` URI for the `claim_vested` message the investor sends to their per-campaign VestingVault to release the currently vested-but-unclaimed LP.
Auth: the DAO bearer token's `dao_address` must match the DAO that owns the campaign. Mismatches return 403.
# DAO (/ton/api/dao)
Read-only, DAO-scoped endpoints for a TON DAO's data — details, holders, proposals and their votes, crowdfunding campaigns, and LP masters. Every result is scoped to the single DAO in the request path; a wallet's activity in other DAOs is never included. Requests are authorized with a DAO bearer token (JWT) that must be issued for that DAO — see [Tokens](/ton/guides-for-managers/dao-page/tokens).
## DAO details [#dao-details]
Returns the DAO's on-chain identity and configuration: owner address, jetton (GP token) address and metadata, success percentage, total supply, installed plugins, and crowdfunding status.
Auth: the DAO bearer token's `dao_address` must match the DAO in the path. Mismatches return 403.
## DAO holders [#dao-holders]
Paginated list of the DAO's GP-token holders — each entry a holder address and its balance. Page through the list with `limit` and `offset`.
Auth: the DAO bearer token's `dao_address` must match the DAO in the path. Mismatches return 403.
## DAO proposals [#dao-proposals]
Paginated list of the DAO's proposals, each with its status and metadata. Page through the list with `limit` and `offset`.
Auth: the DAO bearer token's `dao_address` must match the DAO in the path. Mismatches return 403.
## Proposal votes [#proposal-votes]
Paginated list of the votes cast on a single proposal. The proposal is identified by `proposal_address` within the DAO; page through the votes with `limit` and `offset`.
Auth: the DAO bearer token's `dao_address` must match the DAO in the path. Mismatches return 403.
## DAO crowdfunding campaigns [#dao-crowdfunding-campaigns]
Paginated list of the DAO's crowdfunding campaigns, optionally filtered by `status`. Page through the list with `limit` and `offset`.
Auth: the DAO bearer token's `dao_address` must match the DAO in the path. Mismatches return 403.
## DAO LP masters with LP holders [#dao-lp-masters-with-lp-holders]
The DAO's LP jetton masters, each with a paginated list of its LP holders. Page the masters with `masters_limit` / `masters_offset`, and the holders within each master with `holders_limit` / `holders_offset`.
Auth: the DAO bearer token's `dao_address` must match the DAO in the path. Mismatches return 403.
# API (/ton/api)
This section documents the **XDAO TON API** (`https://ton.xdao.app`) — for integrators and developers embedding XDAO TON DAOs, crowdfunding and LP tokens into their own applications.
The API exposes read-only, DAO-scoped data endpoints (DAO details, holders, proposals and their votes, crowdfunding campaigns, LP masters) and returns ready-to-sign `ton://transfer/...` deeplinks for contributing to a campaign and claiming LP, alongside the data models its endpoints return. Requests are authorized with a DAO bearer token (JWT), which must be issued for the DAO specified in the request path. You can issue and view these tokens on the **API Tokens** tab of the DAO page (see [Tokens](/ton/guides-for-managers/dao-page/tokens)).
Read-only DAO data: details, holders, proposals, votes, campaigns, LP masters.
Campaign endpoints: deeplinks for contributing and claiming LP.
Data models returned by the API.
If you're not a developer and just want to create a campaign or contribute — start with the [Guides for Managers](/ton/guides-for-managers) or [User's Guide](/ton/users-guide) section.
# Models (/ton/api/models)
## The Plugin object [#the-plugin-object]
```json
{
"Plugin": {
"type": "object",
"required": [
"address",
"type"
],
"properties": {
"address": {
"type": "string"
},
"type": {
"type": "string"
},
"lp_manager_index": {
"type": "integer",
"nullable": true,
"description": "LP Manager index (v6.1+), null for other plugin types."
},
"lp_jetton_master_address": {
"type": "string",
"nullable": true,
"description": "LP token jetton master address (only for LP Manager)."
},
"lp_token_name": {
"type": "string",
"nullable": true
},
"lp_token_symbol": {
"type": "string",
"nullable": true
},
"lp_token_image": {
"type": "string",
"nullable": true
},
"subaccount_index": {
"type": "integer",
"nullable": true
},
"subaccount_name": {
"type": "string",
"nullable": true
}
}
}
}
```
## The Holder object [#the-holder-object]
```json
{
"Holder": {
"type": "object",
"required": [
"jetton_wallet_address",
"owner_address",
"balance"
],
"properties": {
"jetton_wallet_address": {
"type": "string"
},
"owner_address": {
"type": "string"
},
"balance": {
"type": "string"
}
}
}
}
```
## The Dao object [#the-dao-object]
```json
{
"Dao": {
"type": "object",
"required": [
"address",
"owner_address",
"name",
"jetton_address",
"jetton_metadata",
"success_percentage",
"total_supply",
"plugins",
"date_create",
"crowdfunding_status"
],
"properties": {
"address": {
"type": "string"
},
"owner_address": {
"type": "string"
},
"name": {
"type": "string"
},
"jetton_address": {
"type": "string"
},
"jetton_metadata": {
"type": "object",
"additionalProperties": true
},
"success_percentage": {
"type": "number"
},
"total_supply": {
"type": "string"
},
"date_create": {
"type": "string"
},
"plugins": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Plugin"
}
},
"crowdfunding_status": {
"type": "string",
"enum": [
"legacy",
"enabled",
"ready"
]
}
}
},
"Plugin": {
"type": "object",
"required": [
"address",
"type"
],
"properties": {
"address": {
"type": "string"
},
"type": {
"type": "string"
},
"lp_manager_index": {
"type": "integer",
"nullable": true,
"description": "LP Manager index (v6.1+), null for other plugin types."
},
"lp_jetton_master_address": {
"type": "string",
"nullable": true,
"description": "LP token jetton master address (only for LP Manager)."
},
"lp_token_name": {
"type": "string",
"nullable": true
},
"lp_token_symbol": {
"type": "string",
"nullable": true
},
"lp_token_image": {
"type": "string",
"nullable": true
},
"subaccount_index": {
"type": "integer",
"nullable": true
},
"subaccount_name": {
"type": "string",
"nullable": true
}
}
}
}
```
## The Vote object [#the-vote-object]
```json
{
"Vote": {
"type": "object",
"required": [
"proposal_address",
"voter_address",
"amount",
"date_create"
],
"properties": {
"proposal_address": {
"type": "string"
},
"voter_address": {
"type": "string"
},
"amount": {
"type": "string"
},
"date_create": {
"type": "string"
}
}
}
}
```
## The ProposalStatus object [#the-proposalstatus-object]
```json
{
"ProposalStatus": {
"type": "string",
"enum": [
"active",
"rejected",
"executed",
"mine",
"unknown"
]
}
}
```
## The Proposal object [#the-proposal-object]
```json
{
"Proposal": {
"type": "object",
"required": [
"proposal_id",
"address",
"dao_address",
"jetton_master_address",
"initiated_by_address",
"success_amount",
"current_amount",
"total_supply",
"success_percentage",
"date_start",
"date_expire",
"type",
"data",
"status",
"raw_data",
"dao"
],
"properties": {
"proposal_id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
},
"is_user_voted": {
"type": "boolean"
},
"description": {
"type": "string"
},
"address": {
"type": "string"
},
"dao_address": {
"type": "string",
"deprecated": true
},
"jetton_master_address": {
"type": "string"
},
"initiated_by_address": {
"type": "string"
},
"success_amount": {
"type": "string"
},
"current_amount": {
"type": "string"
},
"total_supply": {
"type": "string"
},
"success_percentage": {
"type": "number"
},
"date_start": {
"type": "string"
},
"date_expire": {
"type": "string"
},
"type": {
"type": "string"
},
"data": {
"type": "object",
"additionalProperties": true
},
"status": {
"$ref": "#/components/schemas/ProposalStatus"
},
"raw_data": {
"type": "string"
},
"dao": {
"$ref": "#/components/schemas/Dao"
}
}
},
"ProposalStatus": {
"type": "string",
"enum": [
"active",
"rejected",
"executed",
"mine",
"unknown"
]
},
"Dao": {
"type": "object",
"required": [
"address",
"owner_address",
"name",
"jetton_address",
"jetton_metadata",
"success_percentage",
"total_supply",
"plugins",
"date_create",
"crowdfunding_status"
],
"properties": {
"address": {
"type": "string"
},
"owner_address": {
"type": "string"
},
"name": {
"type": "string"
},
"jetton_address": {
"type": "string"
},
"jetton_metadata": {
"type": "object",
"additionalProperties": true
},
"success_percentage": {
"type": "number"
},
"total_supply": {
"type": "string"
},
"date_create": {
"type": "string"
},
"plugins": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Plugin"
}
},
"crowdfunding_status": {
"type": "string",
"enum": [
"legacy",
"enabled",
"ready"
]
}
}
},
"Plugin": {
"type": "object",
"required": [
"address",
"type"
],
"properties": {
"address": {
"type": "string"
},
"type": {
"type": "string"
},
"lp_manager_index": {
"type": "integer",
"nullable": true,
"description": "LP Manager index (v6.1+), null for other plugin types."
},
"lp_jetton_master_address": {
"type": "string",
"nullable": true,
"description": "LP token jetton master address (only for LP Manager)."
},
"lp_token_name": {
"type": "string",
"nullable": true
},
"lp_token_symbol": {
"type": "string",
"nullable": true
},
"lp_token_image": {
"type": "string",
"nullable": true
},
"subaccount_index": {
"type": "integer",
"nullable": true
},
"subaccount_name": {
"type": "string",
"nullable": true
}
}
}
}
```
## The CampaignStatus object [#the-campaignstatus-object]
```json
{
"CampaignStatus": {
"type": "string",
"enum": [
"active",
"successful",
"failed",
"emergency_withdrawn"
]
}
}
```
## The CrowdfundingContributor object [#the-crowdfundingcontributor-object]
```json
{
"CrowdfundingContributor": {
"type": "object",
"required": [
"address",
"amount"
],
"properties": {
"address": {
"type": "string"
},
"amount": {
"type": "string"
}
}
}
}
```
## The CrowdfundingParticipant object [#the-crowdfundingparticipant-object]
```json
{
"CrowdfundingParticipant": {
"type": "object",
"required": [
"address",
"masterAddress",
"ownerAddress",
"amount"
],
"properties": {
"address": {
"type": "string"
},
"masterAddress": {
"type": "string"
},
"ownerAddress": {
"type": "string"
},
"amount": {
"type": "string"
},
"isClaimed": {
"type": "boolean"
},
"isRefunded": {
"type": "boolean"
},
"claimedAt": {
"type": "string",
"format": "date-time"
},
"refundedAt": {
"type": "string",
"format": "date-time"
},
"dateCreate": {
"type": "string",
"format": "date-time"
}
}
}
}
```
## The CrowdfundingCampaign object [#the-crowdfundingcampaign-object]
```json
{
"CrowdfundingCampaign": {
"type": "object",
"required": [
"address",
"daoAddress",
"status"
],
"properties": {
"address": {
"type": "string"
},
"daoAddress": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"daoName": {
"type": "string"
},
"isNative": {
"type": "boolean"
},
"jettonSymbol": {
"type": "string",
"nullable": true
},
"jettonDecimals": {
"type": "integer",
"nullable": true
},
"jettonImage": {
"type": "string",
"nullable": true
},
"jettonMasterAddress": {
"type": "string"
},
"lpManagerAddress": {
"type": "string"
},
"lpJettonMasterAddress": {
"type": "string"
},
"destinationAddress": {
"type": "string"
},
"feeManagerAddress": {
"type": "string"
},
"minTotalAmount": {
"type": "string"
},
"maxTotalAmount": {
"type": "string"
},
"minAmountPerUser": {
"type": "string"
},
"maxAmountPerUser": {
"type": "string"
},
"startTime": {
"type": "string",
"format": "date-time"
},
"endTime": {
"type": "string",
"format": "date-time"
},
"lpPrice": {
"type": "string"
},
"managementFee": {
"type": "integer"
},
"status": {
"$ref": "#/components/schemas/CampaignStatus"
},
"paused": {
"type": "boolean"
},
"totalAmount": {
"type": "string"
},
"totalClaimed": {
"type": "string"
},
"totalRefunded": {
"type": "string"
},
"isEmergencyWithdrawn": {
"type": "boolean"
},
"hasWhitelist": {
"type": "boolean"
},
"whitelist": {
"type": "array",
"items": {
"type": "string"
}
},
"contributors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CrowdfundingContributor"
}
},
"participantsCount": {
"type": "integer"
},
"progressPercentage": {
"type": "number",
"format": "float"
},
"updatedAt": {
"type": "string",
"format": "date-time"
},
"finishedAt": {
"type": "string",
"format": "date-time"
},
"dao": {
"$ref": "#/components/schemas/Dao"
},
"userHelper": {
"$ref": "#/components/schemas/CrowdfundingParticipant"
},
"daoFeeClaimed": {
"type": "boolean"
},
"daoFeeClaimedAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"daoFeeAmount": {
"type": "string"
}
}
},
"CampaignStatus": {
"type": "string",
"enum": [
"active",
"successful",
"failed",
"emergency_withdrawn"
]
},
"CrowdfundingContributor": {
"type": "object",
"required": [
"address",
"amount"
],
"properties": {
"address": {
"type": "string"
},
"amount": {
"type": "string"
}
}
},
"Dao": {
"type": "object",
"required": [
"address",
"owner_address",
"name",
"jetton_address",
"jetton_metadata",
"success_percentage",
"total_supply",
"plugins",
"date_create",
"crowdfunding_status"
],
"properties": {
"address": {
"type": "string"
},
"owner_address": {
"type": "string"
},
"name": {
"type": "string"
},
"jetton_address": {
"type": "string"
},
"jetton_metadata": {
"type": "object",
"additionalProperties": true
},
"success_percentage": {
"type": "number"
},
"total_supply": {
"type": "string"
},
"date_create": {
"type": "string"
},
"plugins": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Plugin"
}
},
"crowdfunding_status": {
"type": "string",
"enum": [
"legacy",
"enabled",
"ready"
]
}
}
},
"Plugin": {
"type": "object",
"required": [
"address",
"type"
],
"properties": {
"address": {
"type": "string"
},
"type": {
"type": "string"
},
"lp_manager_index": {
"type": "integer",
"nullable": true,
"description": "LP Manager index (v6.1+), null for other plugin types."
},
"lp_jetton_master_address": {
"type": "string",
"nullable": true,
"description": "LP token jetton master address (only for LP Manager)."
},
"lp_token_name": {
"type": "string",
"nullable": true
},
"lp_token_symbol": {
"type": "string",
"nullable": true
},
"lp_token_image": {
"type": "string",
"nullable": true
},
"subaccount_index": {
"type": "integer",
"nullable": true
},
"subaccount_name": {
"type": "string",
"nullable": true
}
}
},
"CrowdfundingParticipant": {
"type": "object",
"required": [
"address",
"masterAddress",
"ownerAddress",
"amount"
],
"properties": {
"address": {
"type": "string"
},
"masterAddress": {
"type": "string"
},
"ownerAddress": {
"type": "string"
},
"amount": {
"type": "string"
},
"isClaimed": {
"type": "boolean"
},
"isRefunded": {
"type": "boolean"
},
"claimedAt": {
"type": "string",
"format": "date-time"
},
"refundedAt": {
"type": "string",
"format": "date-time"
},
"dateCreate": {
"type": "string",
"format": "date-time"
}
}
}
}
```
## The CrowdfundingLpHolder object [#the-crowdfundinglpholder-object]
```json
{
"CrowdfundingLpHolder": {
"type": "object",
"required": [
"lpJettonWalletAddress",
"ownerAddress",
"balance"
],
"properties": {
"lpJettonWalletAddress": {
"type": "string"
},
"ownerAddress": {
"type": "string"
},
"balance": {
"type": "string"
}
}
}
}
```
## The DaoLpMasterWithLpHolders object [#the-daolpmasterwithlpholders-object]
```json
{
"DaoLpMasterWithLpHolders": {
"type": "object",
"required": [
"lpJettonMasterAddress",
"campaignAddresses",
"holdersTotal",
"holders"
],
"properties": {
"lpJettonMasterAddress": {
"type": "string"
},
"campaignAddresses": {
"type": "array",
"items": {
"type": "string"
}
},
"holdersTotal": {
"type": "integer",
"format": "int64"
},
"holders": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CrowdfundingLpHolder"
}
}
}
},
"CrowdfundingLpHolder": {
"type": "object",
"required": [
"lpJettonWalletAddress",
"ownerAddress",
"balance"
],
"properties": {
"lpJettonWalletAddress": {
"type": "string"
},
"ownerAddress": {
"type": "string"
},
"balance": {
"type": "string"
}
}
}
}
```
## The DaoHoldersList object [#the-daoholderslist-object]
```json
{
"DaoHoldersList": {
"type": "object",
"required": [
"total",
"items"
],
"properties": {
"total": {
"type": "integer",
"format": "int64"
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Holder"
}
}
}
},
"Holder": {
"type": "object",
"required": [
"jetton_wallet_address",
"owner_address",
"balance"
],
"properties": {
"jetton_wallet_address": {
"type": "string"
},
"owner_address": {
"type": "string"
},
"balance": {
"type": "string"
}
}
}
}
```
## The ProposalList object [#the-proposallist-object]
```json
{
"ProposalList": {
"type": "object",
"required": [
"total",
"items"
],
"properties": {
"total": {
"type": "integer",
"format": "int64"
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Proposal"
}
}
}
},
"Proposal": {
"type": "object",
"required": [
"proposal_id",
"address",
"dao_address",
"jetton_master_address",
"initiated_by_address",
"success_amount",
"current_amount",
"total_supply",
"success_percentage",
"date_start",
"date_expire",
"type",
"data",
"status",
"raw_data",
"dao"
],
"properties": {
"proposal_id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
},
"is_user_voted": {
"type": "boolean"
},
"description": {
"type": "string"
},
"address": {
"type": "string"
},
"dao_address": {
"type": "string",
"deprecated": true
},
"jetton_master_address": {
"type": "string"
},
"initiated_by_address": {
"type": "string"
},
"success_amount": {
"type": "string"
},
"current_amount": {
"type": "string"
},
"total_supply": {
"type": "string"
},
"success_percentage": {
"type": "number"
},
"date_start": {
"type": "string"
},
"date_expire": {
"type": "string"
},
"type": {
"type": "string"
},
"data": {
"type": "object",
"additionalProperties": true
},
"status": {
"$ref": "#/components/schemas/ProposalStatus"
},
"raw_data": {
"type": "string"
},
"dao": {
"$ref": "#/components/schemas/Dao"
}
}
},
"ProposalStatus": {
"type": "string",
"enum": [
"active",
"rejected",
"executed",
"mine",
"unknown"
]
},
"Dao": {
"type": "object",
"required": [
"address",
"owner_address",
"name",
"jetton_address",
"jetton_metadata",
"success_percentage",
"total_supply",
"plugins",
"date_create",
"crowdfunding_status"
],
"properties": {
"address": {
"type": "string"
},
"owner_address": {
"type": "string"
},
"name": {
"type": "string"
},
"jetton_address": {
"type": "string"
},
"jetton_metadata": {
"type": "object",
"additionalProperties": true
},
"success_percentage": {
"type": "number"
},
"total_supply": {
"type": "string"
},
"date_create": {
"type": "string"
},
"plugins": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Plugin"
}
},
"crowdfunding_status": {
"type": "string",
"enum": [
"legacy",
"enabled",
"ready"
]
}
}
},
"Plugin": {
"type": "object",
"required": [
"address",
"type"
],
"properties": {
"address": {
"type": "string"
},
"type": {
"type": "string"
},
"lp_manager_index": {
"type": "integer",
"nullable": true,
"description": "LP Manager index (v6.1+), null for other plugin types."
},
"lp_jetton_master_address": {
"type": "string",
"nullable": true,
"description": "LP token jetton master address (only for LP Manager)."
},
"lp_token_name": {
"type": "string",
"nullable": true
},
"lp_token_symbol": {
"type": "string",
"nullable": true
},
"lp_token_image": {
"type": "string",
"nullable": true
},
"subaccount_index": {
"type": "integer",
"nullable": true
},
"subaccount_name": {
"type": "string",
"nullable": true
}
}
}
}
```
## The ProposalVotesList object [#the-proposalvoteslist-object]
```json
{
"ProposalVotesList": {
"type": "object",
"required": [
"total",
"items"
],
"properties": {
"total": {
"type": "integer",
"format": "int64"
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Vote"
}
}
}
},
"Vote": {
"type": "object",
"required": [
"proposal_address",
"voter_address",
"amount",
"date_create"
],
"properties": {
"proposal_address": {
"type": "string"
},
"voter_address": {
"type": "string"
},
"amount": {
"type": "string"
},
"date_create": {
"type": "string"
}
}
}
}
```
## The CrowdfundingCampaignList object [#the-crowdfundingcampaignlist-object]
```json
{
"CrowdfundingCampaignList": {
"type": "object",
"required": [
"total",
"items"
],
"properties": {
"total": {
"type": "integer",
"format": "int64"
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CrowdfundingCampaign"
}
}
}
},
"CrowdfundingCampaign": {
"type": "object",
"required": [
"address",
"daoAddress",
"status"
],
"properties": {
"address": {
"type": "string"
},
"daoAddress": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"daoName": {
"type": "string"
},
"isNative": {
"type": "boolean"
},
"jettonSymbol": {
"type": "string",
"nullable": true
},
"jettonDecimals": {
"type": "integer",
"nullable": true
},
"jettonImage": {
"type": "string",
"nullable": true
},
"jettonMasterAddress": {
"type": "string"
},
"lpManagerAddress": {
"type": "string"
},
"lpJettonMasterAddress": {
"type": "string"
},
"destinationAddress": {
"type": "string"
},
"feeManagerAddress": {
"type": "string"
},
"minTotalAmount": {
"type": "string"
},
"maxTotalAmount": {
"type": "string"
},
"minAmountPerUser": {
"type": "string"
},
"maxAmountPerUser": {
"type": "string"
},
"startTime": {
"type": "string",
"format": "date-time"
},
"endTime": {
"type": "string",
"format": "date-time"
},
"lpPrice": {
"type": "string"
},
"managementFee": {
"type": "integer"
},
"status": {
"$ref": "#/components/schemas/CampaignStatus"
},
"paused": {
"type": "boolean"
},
"totalAmount": {
"type": "string"
},
"totalClaimed": {
"type": "string"
},
"totalRefunded": {
"type": "string"
},
"isEmergencyWithdrawn": {
"type": "boolean"
},
"hasWhitelist": {
"type": "boolean"
},
"whitelist": {
"type": "array",
"items": {
"type": "string"
}
},
"contributors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CrowdfundingContributor"
}
},
"participantsCount": {
"type": "integer"
},
"progressPercentage": {
"type": "number",
"format": "float"
},
"updatedAt": {
"type": "string",
"format": "date-time"
},
"finishedAt": {
"type": "string",
"format": "date-time"
},
"dao": {
"$ref": "#/components/schemas/Dao"
},
"userHelper": {
"$ref": "#/components/schemas/CrowdfundingParticipant"
},
"daoFeeClaimed": {
"type": "boolean"
},
"daoFeeClaimedAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"daoFeeAmount": {
"type": "string"
}
}
},
"CampaignStatus": {
"type": "string",
"enum": [
"active",
"successful",
"failed",
"emergency_withdrawn"
]
},
"CrowdfundingContributor": {
"type": "object",
"required": [
"address",
"amount"
],
"properties": {
"address": {
"type": "string"
},
"amount": {
"type": "string"
}
}
},
"Dao": {
"type": "object",
"required": [
"address",
"owner_address",
"name",
"jetton_address",
"jetton_metadata",
"success_percentage",
"total_supply",
"plugins",
"date_create",
"crowdfunding_status"
],
"properties": {
"address": {
"type": "string"
},
"owner_address": {
"type": "string"
},
"name": {
"type": "string"
},
"jetton_address": {
"type": "string"
},
"jetton_metadata": {
"type": "object",
"additionalProperties": true
},
"success_percentage": {
"type": "number"
},
"total_supply": {
"type": "string"
},
"date_create": {
"type": "string"
},
"plugins": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Plugin"
}
},
"crowdfunding_status": {
"type": "string",
"enum": [
"legacy",
"enabled",
"ready"
]
}
}
},
"Plugin": {
"type": "object",
"required": [
"address",
"type"
],
"properties": {
"address": {
"type": "string"
},
"type": {
"type": "string"
},
"lp_manager_index": {
"type": "integer",
"nullable": true,
"description": "LP Manager index (v6.1+), null for other plugin types."
},
"lp_jetton_master_address": {
"type": "string",
"nullable": true,
"description": "LP token jetton master address (only for LP Manager)."
},
"lp_token_name": {
"type": "string",
"nullable": true
},
"lp_token_symbol": {
"type": "string",
"nullable": true
},
"lp_token_image": {
"type": "string",
"nullable": true
},
"subaccount_index": {
"type": "integer",
"nullable": true
},
"subaccount_name": {
"type": "string",
"nullable": true
}
}
},
"CrowdfundingParticipant": {
"type": "object",
"required": [
"address",
"masterAddress",
"ownerAddress",
"amount"
],
"properties": {
"address": {
"type": "string"
},
"masterAddress": {
"type": "string"
},
"ownerAddress": {
"type": "string"
},
"amount": {
"type": "string"
},
"isClaimed": {
"type": "boolean"
},
"isRefunded": {
"type": "boolean"
},
"claimedAt": {
"type": "string",
"format": "date-time"
},
"refundedAt": {
"type": "string",
"format": "date-time"
},
"dateCreate": {
"type": "string",
"format": "date-time"
}
}
}
}
```
## The DaoLpMasterWithLpHoldersList object [#the-daolpmasterwithlpholderslist-object]
```json
{
"DaoLpMasterWithLpHoldersList": {
"type": "object",
"required": [
"total",
"items"
],
"properties": {
"total": {
"type": "integer",
"format": "int64"
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DaoLpMasterWithLpHolders"
}
}
}
},
"DaoLpMasterWithLpHolders": {
"type": "object",
"required": [
"lpJettonMasterAddress",
"campaignAddresses",
"holdersTotal",
"holders"
],
"properties": {
"lpJettonMasterAddress": {
"type": "string"
},
"campaignAddresses": {
"type": "array",
"items": {
"type": "string"
}
},
"holdersTotal": {
"type": "integer",
"format": "int64"
},
"holders": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CrowdfundingLpHolder"
}
}
}
},
"CrowdfundingLpHolder": {
"type": "object",
"required": [
"lpJettonWalletAddress",
"ownerAddress",
"balance"
],
"properties": {
"lpJettonWalletAddress": {
"type": "string"
},
"ownerAddress": {
"type": "string"
},
"balance": {
"type": "string"
}
}
}
}
```
## The ContributionLink object [#the-contributionlink-object]
```json
{
"ContributionLink": {
"type": "object",
"required": [
"isNative",
"campaignAddress",
"tonTransfer",
"details",
"warnings"
],
"properties": {
"isNative": {
"type": "boolean",
"description": "`true` for native TON campaigns, `false` for jetton campaigns."
},
"campaignAddress": {
"type": "string",
"description": "Address that the `ton://transfer/` URI sends the message to (bounceable\nmainnet form). For jetton campaigns this is the *investor's* jetton\nwallet, **not** the campaign master.\n"
},
"tonTransfer": {
"type": "object",
"required": [
"uri"
],
"properties": {
"uri": {
"type": "string",
"description": "Ready-to-sign `ton://transfer/{to}?amount={nanoton}&bin={base64url}`\nURI. Open it in a TON wallet (Tonkeeper et al.) to sign — no further\nmanipulation should be necessary.\n"
}
}
},
"details": {
"type": "object",
"description": "Same payload as `tonTransfer.uri`, but pre-decoded for clients that\nprefer to construct the transaction themselves (e.g. TonConnect).\n",
"required": [
"to",
"valueNanoton",
"bodyBocBase64Url"
],
"properties": {
"to": {
"type": "string",
"description": "Destination address (bounceable mainnet)."
},
"valueNanoton": {
"type": "string",
"description": "Message value in nanoTON as a decimal string."
},
"bodyBocBase64Url": {
"type": "string",
"description": "Message body BoC, base64url-encoded (no padding)."
}
}
},
"miniAppLink": {
"type": "string",
"description": "Optional Telegram Mini-App deeplink that opens this campaign in the\nXDAO bot — bonus convenience for integrators.\n"
},
"warnings": {
"type": "array",
"description": "Non-fatal signals. The transaction is still served. Known values:\n- `whitelist_enforced_on_chain` — campaign has a whitelist; on-chain\n `throw` will reject contributors not on it.\n- `amount_exceeds_remaining_hardcap` — `amount > hardCap - totalAmount`.\n",
"items": {
"type": "string"
}
}
}
}
}
```
## The ClaimLink object [#the-claimlink-object]
```json
{
"ClaimLink": {
"type": "object",
"description": "Ready-to-sign deeplink for an LP claim. \n",
"required": [
"kind",
"campaignAddress",
"tonTransfer",
"details",
"warnings"
],
"properties": {
"kind": {
"type": "string",
"description": "Which claim this link performs.",
"enum": [
"initial",
"vesting"
]
},
"campaignAddress": {
"type": "string",
"description": "Bounceable mainnet form of the crowdfunding master address."
},
"tonTransfer": {
"type": "object",
"required": [
"uri"
],
"properties": {
"uri": {
"type": "string",
"description": "Ready-to-sign `ton://transfer/{to}?amount={nanoton}&bin={base64url}`\nURI. For `kind=initial` `to` is the Helper; for `kind=vesting` the\nVestingVault.\n"
}
}
},
"details": {
"type": "object",
"description": "Same payload as `tonTransfer.uri`, pre-decoded for clients that prefer\nto construct the transaction themselves (e.g. TonConnect).\n",
"required": [
"to",
"valueNanoton",
"bodyBocBase64Url"
],
"properties": {
"to": {
"type": "string",
"description": "Destination address (bounceable mainnet) — Helper or VestingVault."
},
"valueNanoton": {
"type": "string",
"description": "Message value in nanoTON as a decimal string."
},
"bodyBocBase64Url": {
"type": "string",
"description": "Message body BoC, base64url-encoded (no padding)."
}
}
},
"vesting": {
"type": "object",
"description": "Present only for `kind=vesting`. An **estimate** of the claimable LP and\nthe current vesting phase; the exact amount is computed on-chain by the\nvault at execution time.\n",
"required": [
"phase",
"claimableAmount",
"vestedAmount",
"totalLpAmount",
"claimedLpAmount"
],
"properties": {
"phase": {
"type": "string",
"description": "Vesting phase at the time of the request.",
"enum": [
"not_started",
"cliff",
"vesting",
"fully_vested",
"emergency"
]
},
"claimableAmount": {
"type": "string",
"description": "Estimated claimable LP (vested minus already claimed), smallest units."
},
"vestedAmount": {
"type": "string",
"description": "Estimated total vested LP so far, smallest units."
},
"totalLpAmount": {
"type": "string",
"description": "Total LP allocated to the investor, smallest units."
},
"claimedLpAmount": {
"type": "string",
"description": "LP already claimed, smallest units."
},
"vestingEnd": {
"type": "string",
"format": "date-time",
"description": "Computed end = vestingStart + vestingDuration."
}
}
},
"warnings": {
"type": "array",
"description": "Non-fatal signals. The transaction is still served. Known values:\n- `nothing_claimable_now` — estimated claimable amount is 0 (e.g. before\n TGE or between linear ticks). Signing it will fail the vault's\n `nothing_to_claim` guard.\n",
"items": {
"type": "string"
}
}
}
}
}
```
## The ParticipantVesting object [#the-participantvesting-object]
```json
{
"ParticipantVesting": {
"type": "object",
"required": [
"vaultAddress",
"totalLpAmount",
"claimedLpAmount",
"isInitialized",
"isEmergencyReleased"
],
"properties": {
"vaultAddress": {
"type": "string"
},
"totalLpAmount": {
"type": "string",
"description": "Total LP locked into the vesting vault."
},
"claimedLpAmount": {
"type": "string",
"description": "LP already claimed out of the vesting vault."
},
"vestingStart": {
"type": "string",
"format": "date-time"
},
"cliffDuration": {
"type": "integer",
"description": "Cliff duration in seconds."
},
"vestingDuration": {
"type": "integer",
"description": "Linear vesting duration in seconds."
},
"tgeUnlockBps": {
"type": "integer",
"description": "TGE unlock in basis points (1/100 of a percent)."
},
"vestingEnd": {
"type": "string",
"format": "date-time",
"description": "Computed end = vestingStart + cliffDuration + vestingDuration."
},
"isInitialized": {
"type": "boolean"
},
"isEmergencyReleased": {
"type": "boolean"
}
}
}
}
```
## The DaoParticipantCampaign object [#the-daoparticipantcampaign-object]
```json
{
"DaoParticipantCampaign": {
"type": "object",
"required": [
"campaignAddress",
"helperAddress",
"amount",
"lpBalance",
"isClaimed",
"isRefunded"
],
"properties": {
"campaignAddress": {
"type": "string",
"description": "Crowdfunding master address."
},
"helperAddress": {
"type": "string",
"description": "Per-user helper contract address."
},
"campaignName": {
"type": "string"
},
"isNative": {
"type": "boolean",
"description": "True for native TON campaigns, false for jetton campaigns."
},
"jettonSymbol": {
"type": "string",
"description": "Collection-currency jetton symbol (jetton campaigns)."
},
"amount": {
"type": "string",
"description": "Invested amount in collection currency."
},
"lpBalance": {
"type": "string",
"description": "LP held in the wallet for this campaign (0 if none)."
},
"isClaimed": {
"type": "boolean"
},
"isRefunded": {
"type": "boolean"
},
"claimedAt": {
"type": "string",
"format": "date-time"
},
"refundedAt": {
"type": "string",
"format": "date-time"
},
"dateCreate": {
"type": "string",
"format": "date-time"
},
"vesting": {
"$ref": "#/components/schemas/ParticipantVesting"
}
}
},
"ParticipantVesting": {
"type": "object",
"required": [
"vaultAddress",
"totalLpAmount",
"claimedLpAmount",
"isInitialized",
"isEmergencyReleased"
],
"properties": {
"vaultAddress": {
"type": "string"
},
"totalLpAmount": {
"type": "string",
"description": "Total LP locked into the vesting vault."
},
"claimedLpAmount": {
"type": "string",
"description": "LP already claimed out of the vesting vault."
},
"vestingStart": {
"type": "string",
"format": "date-time"
},
"cliffDuration": {
"type": "integer",
"description": "Cliff duration in seconds."
},
"vestingDuration": {
"type": "integer",
"description": "Linear vesting duration in seconds."
},
"tgeUnlockBps": {
"type": "integer",
"description": "TGE unlock in basis points (1/100 of a percent)."
},
"vestingEnd": {
"type": "string",
"format": "date-time",
"description": "Computed end = vestingStart + cliffDuration + vestingDuration."
},
"isInitialized": {
"type": "boolean"
},
"isEmergencyReleased": {
"type": "boolean"
}
}
}
}
```
## The DaoParticipantStatus object [#the-daoparticipantstatus-object]
```json
{
"DaoParticipantStatus": {
"type": "object",
"required": [
"daoAddress",
"ownerAddress",
"campaigns",
"totalInvested",
"totalLpHeld",
"totalLpVesting",
"activeCount"
],
"properties": {
"daoAddress": {
"type": "string"
},
"ownerAddress": {
"type": "string"
},
"campaigns": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DaoParticipantCampaign"
}
},
"totalInvested": {
"type": "string",
"description": "Sum of invested amounts across this DAO's campaigns."
},
"totalLpHeld": {
"type": "string",
"description": "Sum of LP held in the wallet across this DAO's campaigns."
},
"totalLpVesting": {
"type": "string",
"description": "Sum of LP still locked in vesting vaults."
},
"activeCount": {
"type": "integer",
"description": "Campaigns not yet claimed nor refunded."
}
}
},
"DaoParticipantCampaign": {
"type": "object",
"required": [
"campaignAddress",
"helperAddress",
"amount",
"lpBalance",
"isClaimed",
"isRefunded"
],
"properties": {
"campaignAddress": {
"type": "string",
"description": "Crowdfunding master address."
},
"helperAddress": {
"type": "string",
"description": "Per-user helper contract address."
},
"campaignName": {
"type": "string"
},
"isNative": {
"type": "boolean",
"description": "True for native TON campaigns, false for jetton campaigns."
},
"jettonSymbol": {
"type": "string",
"description": "Collection-currency jetton symbol (jetton campaigns)."
},
"amount": {
"type": "string",
"description": "Invested amount in collection currency."
},
"lpBalance": {
"type": "string",
"description": "LP held in the wallet for this campaign (0 if none)."
},
"isClaimed": {
"type": "boolean"
},
"isRefunded": {
"type": "boolean"
},
"claimedAt": {
"type": "string",
"format": "date-time"
},
"refundedAt": {
"type": "string",
"format": "date-time"
},
"dateCreate": {
"type": "string",
"format": "date-time"
},
"vesting": {
"$ref": "#/components/schemas/ParticipantVesting"
}
}
},
"ParticipantVesting": {
"type": "object",
"required": [
"vaultAddress",
"totalLpAmount",
"claimedLpAmount",
"isInitialized",
"isEmergencyReleased"
],
"properties": {
"vaultAddress": {
"type": "string"
},
"totalLpAmount": {
"type": "string",
"description": "Total LP locked into the vesting vault."
},
"claimedLpAmount": {
"type": "string",
"description": "LP already claimed out of the vesting vault."
},
"vestingStart": {
"type": "string",
"format": "date-time"
},
"cliffDuration": {
"type": "integer",
"description": "Cliff duration in seconds."
},
"vestingDuration": {
"type": "integer",
"description": "Linear vesting duration in seconds."
},
"tgeUnlockBps": {
"type": "integer",
"description": "TGE unlock in basis points (1/100 of a percent)."
},
"vestingEnd": {
"type": "string",
"format": "date-time",
"description": "Computed end = vestingStart + cliffDuration + vestingDuration."
},
"isInitialized": {
"type": "boolean"
},
"isEmergencyReleased": {
"type": "boolean"
}
}
}
}
```
## The Error object [#the-error-object]
```json
{
"Error": {
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "string"
}
}
}
}
```
# How to choose the right quorum? (/evm/guides-for-gt/create-a-dao/how-to-choose-the-right-quorum)
Quorum is the minimum share of GT held by DAO members required for a vote to be considered legitimate. According to [Robert's Rules of Order](https://en.wikipedia.org/wiki/Robert%27s_Rules_of_Order), "a quorum is a safeguard against completely unrepresentative action on behalf of an organization by an unduly small number of persons."
For a proposal to be accepted, a set voting threshold must be met (for example, a 60% quorum means the proposal must be supported by holders of 60% of GT). Once the threshold is reached, the decision is approved; if the quorum threshold is not reached, the proposal is rejected.
Imagine a group of 3 DAO members. Each holds 10 GT tokens, so the votes are distributed equally — 33.3% per member.
If you want the quorum to be reached when two members vote, the quorum threshold should be set between 34% and 66.6%.
# Create a DAO (/evm/guides-for-gt/create-a-dao)
In XDAO, creating a DAO means deploying a smart contract that is jointly managed by its members. Management is carried out through Governance Tokens (GT): they have no price, but it is exactly these tokens that grant voting rights, and their quantity determines each member's voting power.
To create a DAO, click the "Create a DAO" button in the sidebar menu.
Make sure you are connected to the correct blockchain, and that your personal wallet is connected to the same network.
Enter the name of the DAO and its token symbol — this is essentially the governance token, GT.
After the DAO is created, you will not be able to change the name or token symbol: this data is written to the blockchain at creation and cannot be changed afterward.
Choose the mode in which you will add partner addresses:
* Multisig — all DAO members hold 1 GT and have equal voting power. If a DAO has 5 members, each has 20% of the votes;
* Custom — DAO members can hold different amounts of GT, with voting power proportional to their holdings.
After adding all partners, you will be able to check the voting power of each member.
Set up the quorum — the number of votes required for a decision to be executed.
In Multisig mode, you choose how many signatures are enough to activate a vote. For example, DAO members decide that 3 out of 5 votes are enough for consensus. Then the DAO quorum will be 60% and will remain 60% even if the number of members changes. The quorum can be changed at any time after the DAO is created.
In Custom mode, each member's voting power can differ depending on their role in the DAO — take this into account when choosing the quorum value. For example, in a DAO of 2 members, the first holds 2 GT and the second holds 1 GT, and the quorum is set at 52%. This means the first member can perform all actions on behalf of the DAO alone: the quorum is met immediately, and the second member's vote is not required.
Click "Create a DAO" and submit the transaction to the blockchain. If the transaction succeeds, a green push notification will appear in the top-right corner, and you will be automatically taken to the DAO page. The list of your DAOs is displayed in the top-left corner, under My DAOs.
If a red push notification appears in the top-right corner while creating the DAO, try again.
Creating a DAO will require funds for gas to register it on the blockchain. The exact cost of creation cannot be calculated in advance, so you can fill in the fields with any data, check the required amount, and then reject the transaction.
# Activity (/evm/guides-for-gt/dao-page/activity)
The Activity page displays activity in the DAO. Here you can see:
* The quorum, number of votes, and members in the DAO;
* Information about the LP token, as well as operations that can be performed with the LP token: Crowdfunding, Private Offers, Private Exit Offers, and Burn LP;
* DAO Voting List — a list of votes held in the DAO, as well as statistics on the number of votes created (available by subscription);
* DAO Members — information about the quorum and DAO members, as well as a voting power chart (available by subscription);
* DAO Community — a list of votes (proposals) for the community;
* A list of LP token holders, as well as a share distribution chart (available by subscription).
# DAO Page (/evm/guides-for-gt/dao-page)
After successfully creating a DAO, you will see your DAO's page.
On your DAO's main page, you will see:
Your DAO's name.
The DAO name is registered on the blockchain, so it cannot be changed.
Your DAO's smart contract address.
The DAO's smart contract address is the same as the GT smart contract address. Only GT holders can access DAO management.
A widget displaying certain information about your DAO.
Choose your widget carefully, as it's the first thing your investors and the DAO community will see.
The available tabs to choose from: Manage, Activity, Info.
The Manage tab is available only to DAO members — GT holders.
# Info (/evm/guides-for-gt/dao-page/info)
The Info page displays the DAO's internal settings and information about the DAO wallet:
* DAO Wallet — the DAO balance, as well as 30-day AUM (Assets Under Management) history, an asset chart, and detailed information about the selected token in the DAO balance (available by subscription);
If the DAO balance is not displayed, please check the balance information in the explorer.
* Transaction History — the DAO's transaction history;
* DAO Features — the status of the DAO's internal settings: GT Minting, GT Burning, LP Minting, and LP Burning;
* DAO Permitted Addresses — a section listing the addresses of managers and modules that have the Permitted function activated.
# Widget (/evm/guides-for-gt/dao-page/widget)
Widgets make your DAO's main page more visual. 5 widgets are available. You can select and change the widget on the [Change Widget](/evm/guides-for-gt/dao-page/manage/dao-customization/change-widget) page.
## Free widgets [#free-widgets]
**Voting List** — displays the last 3 votes in your DAO.
**Proposal List** — displays the last 3 proposals in your DAO.
**Balance** — displays the assets in your DAO.
## Subscription widgets 🔥 [#subscription-widgets-]
**AUM History** — AUM history in your DAO over 30 days.
**Voting Created Bar Chart** — history of the number of votes created over a selected period (7 days, 6 weeks, or 6 months).
You can also choose the **empty** option — then the DAO page will have no widget, for a more concise design.
# How to choose general consensus? (/ton/guides-for-managers/create-a-dao/general-consensus)
General consensus is the minimum share of GP votes a proposal must gather to be considered accepted and executed on-chain. Until the threshold is reached, the proposal stays active (or is rejected once the voting period expires); as soon as the threshold is crossed, the decision is executed automatically.
How you configure it depends on the mode chosen when the DAO was created:
* **Equal** — every GP has the same voting weight, so general consensus is set as "how many out of how many" — for example, "2 of 3" means at least 2 out of 3 GPs must vote "for." By default the app suggests a simple majority, but the value can be shifted either way — from a minimum of 1 GP up to a unanimous decision by all GPs.
* **Proportional** — GPs have different voting weight proportional to their GP token holdings, so general consensus is set directly as a percentage of the DAO's total GP token supply (51% by default) — with a slider in 5% steps or by entering an exact number.
On the DAO page (Overview tab), general consensus is always shown as a percentage — even if you set it as "X of Y" when creating an Equal DAO.
Picture a DAO with 3 GPs holding equal amounts of tokens — 33.3% of the vote each. If you want a decision to pass with the votes of any two out of the three members, the general consensus threshold must be higher than 33.3% but no higher than 66.6% — for example, 51% or 60%. A threshold that's too low (below a single GP's share) would let any one member push through any decision alone; one that's too high (close to 100%) can block the DAO if even a single GP is unavailable to vote.
General consensus isn't set in stone: it can be changed later with a [Change General Consensus](/ton/guides-for-managers/manage/governance/change-general-consensus) proposal — but that proposal itself must also reach the current general consensus to take effect.
# Create a DAO (/ton/guides-for-managers/create-a-dao)
Creating a DAO in XDAO TON deploys a smart contract that its members — GPs (Governance Participants) — jointly manage. A DAO's GP token has no price, but it's what grants voting rights, and the amount held in a wallet determines a member's voting weight.
Open the XDAO TON Mini App in Telegram (bot `@xdao_ton_bot`) and connect a TonConnect wallet (for example, Tonkeeper). In the side menu, click **Create DAO**.
Enter a **DAO name** and **DAO token symbol** — the symbol of your DAO's own GP token (jetton).
Unlike the EVM version of XDAO, a TON DAO's name and symbol aren't frozen forever: they can be changed later with a [Redesign DAO](/ton/guides-for-managers/manage/advanced/redesign-dao) proposal.
Optionally, upload a DAO avatar right away — a logo or any other image.
Choose a GP distribution mode — the **Equal** or **Proportional** tab:
* **Equal** — add GP wallet addresses. Each receives 1 GP token, so every member's voting weight is equal.
* **Proportional** — add wallet addresses and specify a GP token amount for each ("Update GP distribution"); voting weight is proportional to the token amount.
Your own wallet is added to the list first by default.
If your address isn't included in the GP list, the app will warn you in a separate window before creating the DAO — after deployment you won't be able to manage that DAO as a GP.
Set the **general consensus** — the minimum share of GP votes required for a proposal to be executed. In Equal mode this is a GP count, "X of Y"; in Proportional mode it's a percentage of the total GP token supply (51% by default). For more, see the guide ["How to choose general consensus?"](/ton/guides-for-managers/create-a-dao/general-consensus).
Click **Create**, review all GP addresses in the confirmation window, and confirm the transaction in your wallet.
Creating a DAO costs a network fee (gas) in TON; the app shows the exact amount before you confirm the transaction. There's also a **Multiple DAOs** mode — deploy up to 255 identically configured DAOs in a single transaction (not available for all wallet versions).
After a successful creation, a **DAO created** screen appears and you land on the new DAO's page. If the transaction fails, the app shows **DAO creation failed** with an option to try again.
# DAO Balance (/ton/guides-for-managers/dao-page/balance)
DAO Balance is the DAO's treasury. The tab shows the balance of every DAO "wallet" as separate expandable cards:
* **Main Treasury** — the DAO's primary wallet, always present, open by default;
* **Sub-Wallets** — Sub-Wallet modules installed in the DAO (each with its own name);
* **Mass Payout Plugin** — its wallets, if installed in the DAO.
Collapsed, a card shows the account name, its shortened address, and the total value in USD. Expanding a card shows:
* buttons to copy the address and open it in a TON explorer;
* the TON balance;
* the balance of each jetton on that account (with a verified-token badge if the jetton is verified);
* the number of NFTs on the account — with a link (the "eye" icon) to that specific account's [NFT collection](/ton/guides-for-managers/dao-page/nft).
For GP token holders, actions are available at the bottom of the tab:
* **Send** — create a proposal to send funds from the DAO's balance;
* **Swap** — create a proposal to swap DAO assets;
* **Receive QR** — show the Main Treasury address as a QR code to receive TON or a jetton into the DAO's balance (no proposal is needed to receive funds).
Sending and swapping DAO funds always go through a proposal: the transaction executes only once GPs reach the required general consensus. For more on specific treasury actions, see the [Treasury](/ton/guides-for-managers/manage/treasury) section.
# DAO page (/ton/guides-for-managers/dao-page)
After creating a DAO or opening one from the **My DAOs** list, you land on that DAO's page.
At the top of the page:
* the DAO's avatar and name (for GPs, tapping opens the [Redesign DAO](/ton/guides-for-managers/manage/advanced/redesign-dao) proposal);
* the DAO smart contract's shortened address — tap to copy, with buttons alongside to show a QR code, share a link to the DAO in the Mini App, and open the address in a TON explorer;
* three stats: **Consensus** (the current general consensus, visible to GPs only), **GPs** (member count), and **Votes** (proposal count) — tapping each takes you to the corresponding tab or to the Change General Consensus proposal.
Below that are the DAO's own tabs. The main ones, available to GP token holders, are covered in this section:
Key information about the DAO: address, general consensus, members, description, socials, Telegram chat binding.
DAO tokens for integrations with the XDAO TON API — issuing, rotating, and revoking bearer tokens.
The DAO's list of proposals (votes): active, executed, rejected.
The DAO treasury: TON, jetton balances, and NFTs across all of the DAO's wallets.
The NFT collection owned by the DAO, and sending NFTs.
The DAO's list of GP members and LP token holders.
Which tabs appear depends on the DAO's settings: the **Tokens** tab is only available when Developer mode is enabled (a toggle on the Plugins tab), and the **Crowdfunding**, **Plugins**, **Legal**, and **Distributions** tabs appear depending on which modules are installed and the DAO's status — they aren't covered in this section of the guide.
# NFT (/ton/guides-for-managers/dao-page/nft)
The DAO's NFTs aren't collected in a separate permanent navigation tab — the collection opens from the [DAO Balance](/ton/guides-for-managers/dao-page/balance) tab: in any account's **NFTs** row (Main Treasury, Sub-Wallet, or Mass Payout Plugin), click the "eye" icon to see that account's NFTs.
The **NFT collection** page shows the total number of NFTs on the account and a list of cards: cover image, name, and collection. Tapping a card expands it and shows:
* the NFT's description (if any);
* the NFT address — shortened, with a copy button and a link to a TON explorer;
* a **Send NFT** button (visible to GP token holders only).
Open DAO Balance, find the account you need, and click the "eye" icon in the NFTs row.
In the collection list, find the NFT you need and expand its card.
Click **Send NFT** — this opens the proposal to send that NFT from the DAO's balance.
Like any other DAO asset operation, sending an NFT executes only once the proposal reaches general consensus. For more, see [Send DAO NFT](/ton/guides-for-managers/manage/treasury/send-nft).
If an account has no NFTs, the collection page shows an empty state — "No NFTs found for this DAO."
# Overview (/ton/guides-for-managers/dao-page/overview)
Overview is the DAO page's starting tab. It brings together general information about the DAO and its public profile.
* **DAO card** — avatar (for GPs, clicking the avatar or the name opens the Redesign DAO proposal), name, online status, the Main Treasury DAO address (tap to copy, show a QR code, share a link to the DAO in the Mini App, and open it in a TON explorer), and three stats: **Consensus** (tapping, for GPs, opens the Change General Consensus proposal), **GPs** (tapping goes to the [Settings](/ton/guides-for-managers/dao-page/settings) tab), and **Votes** (tapping goes to the [Votes](/ton/guides-for-managers/dao-page/votes) tab).
* **Guide banners** (visible to GPs only) — links to step-by-step in-app instructions: setting up crowdfunding and, if the DAO has the Mass Payout Plugin installed, a guide to Mass Payouts.
* **Description** — the DAO's description. GPs can edit it via the settings icon next to the name.
* **Socials** — the DAO's email and social links (Telegram, YouTube, Discord, X/Twitter); also editable by GPs through the same settings window.
* **DAO Telegram chat block** — binding a group chat to the DAO. A bound chat lets you:
* vote and manage the DAO right from the chat;
* receive notifications about DAO changes in the chat;
* sign the charter and formalize the DAO's legal status;
* record members' internal agreements;
* give voting results legal force.
Binding requires confirmation in a separate window, which also includes instructions on how to do it.
Some blocks on Overview — managing members, general consensus, the description, and socials — are available only to holders of this DAO's GP token.
# Settings (/ton/guides-for-managers/dao-page/settings)
Settings is the DAO's list of members: GP token holders and, in a separate section, LP token holders.
**GP token holders** — for each GP it shows: a shortened address (tap to copy), the GP token amount, voting weight as a percentage, and a link to open the address in a TON explorer. GP token holders get a delete button next to each row:
Click the delete icon next to the GP address you want to remove from the DAO.
Confirm the action in the "Are you sure you want to create a proposal to remove this GP from the DAO?" window.
This opens the **Remove GP** proposal — it will execute and remove the GP from the DAO only once the other GPs reach general consensus.
To add a new member, click **Add more** at the bottom of the list — this opens the **Add GP** proposal.
**LP token holders** — an expandable block below the GP list. It shows the LP tokens (jettons) issued through this DAO's LP Manager as part of crowdfunding campaigns: for each LP jetton — address, number of holders, and their LP balance. Lists load page by page via the **Load more LP masters** / **Load more holders** buttons.
Changing the GP membership — like any other DAO action — is done through a proposal and takes effect only once general consensus is reached. For more on working with GPs, see [GP Management](/ton/guides-for-managers/manage/governance); for the threshold itself, see the guide ["How to choose general consensus?"](/ton/guides-for-managers/create-a-dao/general-consensus).
# Tokens (/ton/guides-for-managers/dao-page/tokens)
The Tokens tab isn't about the DAO's GP or LP tokens — it's about **DAO tokens** (bearer tokens, JWT) for integrations with the [XDAO TON API](/ton/api). Such a token authorizes external requests to the API on behalf of a specific DAO — for example, for your own backend or bot working with that DAO.
The tab is visible only to GP token holders, and only when **Developer mode** is enabled — the toggle is on the Plugins tab; enabling it opens the Tokens tab right away.
Click **Create Token**. Enter an optional token name (for example, "CI integration") and choose a lifetime (TTL): 1, 7, 14, or 31 days, or **Never** (no expiration).
The token value is shown once, right after creation — copy and save it.
The token value can't be viewed again — if you lose it, revoke the token and create a new one.
Manage existing tokens in the list: each shows its status (**active** / **revoked** / **expired**), who created it and when, its expiration, and its last-used date.
* **Rotate** — issue a new token to replace the current one (the old one is revoked immediately), with a new TTL.
* **Revoke** — revoke the token immediately.
A DAO can have at most 5 active tokens at a time, and at most one non-expiring (Never) token. For the full API reference, see the [XDAO TON API](/ton/api) section.
# Votes (/ton/guides-for-managers/dao-page/votes)
Votes is the list of every proposal (vote) ever created in the DAO. The tab is visible only to holders of this DAO's GP token.
At the top: a search field for proposal title and description, a status filter (**All proposals**, **Active**, **Executed**, **Rejected**), and a button to create a new proposal — it opens the list of available proposal types (GP management, treasury, crowdfunding, etc.; see the [Manage](/ton/guides-for-managers/manage) section).
Proposals that were just submitted and haven't yet been confirmed on-chain are shown in a separate block at the top with a pending status, until the network processes the transaction.
Each proposal in the list shows:
* its title and status badge;
* the DAO name and proposal number (#id);
* the required **Consensus** — the general consensus threshold for this proposal, as a percentage;
* the time remaining until voting closes (**Ends: …**), or an **expired** mark if the deadline has passed;
* the current share of supporting votes (the sum of "for" votes relative to the total GP token supply) — with a checkmark if general consensus has already been reached;
* a **Details** link to the proposal's page (or **You voted**, if you've already voted).
A proposal executes automatically as soon as enough "for" votes are gathered to cross the DAO's general consensus — there's no need to wait for the voting period to end.
If the DAO has no proposals yet, the tab shows a hint: you can create one to pitch an idea, get community approval, allocate resources, or make a transparent decision.
# Manage (/ton/guides-for-managers/manage)
The Manage section is a set of actions GPs (Governance Participants, holders of GP tokens) use to manage a DAO: from membership and general consensus to the treasury, crowdfunding, and LP distribution.
XDAO TON has no direct transactions that bypass the DAO — every change is submitted as a **proposal**: one of the GPs creates a proposal of the required type, the other GPs vote on it in the Votes tab, and as soon as **general consensus** is reached, the proposal is executed on-chain automatically.
The flow is the same for every section below: open the DAO → Votes tab → the **+** icon (Create Proposal) → select the DAO and proposal type → Create → fill in the form fields → Create. The sections below describe which proposal type to choose and which fields to fill in for a specific task.
Add and remove GPs, transfer GP tokens between wallets, and change the DAO's general consensus.
Send TON and jettons from the DAO balance, swap assets, and collect fees.
Launch and manage DAO crowdfunding campaigns: whitelist, early finish, DAO fee.
Distribute funds to LP holders through distribution rounds, Mass Payout, and Push Rounds.
Install plugins and Sub-Wallets, and update DAO parameters.
# Manage (/evm/guides-for-gt/dao-page/manage)
The Manage page allows GT holders to manage the DAO. You can add the most frequently used votes to favorites — where available — and they will appear on the main Manage page of your DAO.
Most of XDAO's functionality is free, but new unique subscription-based features will be introduced gradually — they are marked with the 🔥 icon.
## DAO Customization [#dao-customization]
Verify your DAO through social media and get a blue checkmark.
Upload a logo or any other image.
Upload an image to customize your DAO page.
Add a description and links for your DAO.
Show the most important information about your DAO using widgets.
Show or hide analytics for your DAO.
## GT management [#gt-management]
Mint GT for a new or existing DAO member.
Burn all or part of a DAO member's GT.
Transfer all or part of the GT from one member to another.
Change the decision-making mechanics.
Allow a wallet to manage the DAO without voting.
Revoke a wallet's rights to manage the DAO without voting.
## Investment activity management [#investment-activity-management]
Raise investment using LP tokens.
Sell LP tokens at a special price to a specific buyer.
Create new or disable existing private offers.
Allow a wallet to burn LP tokens under special terms.
Create new or disable existing private exit offers.
Launch a public sale of LP tokens (launchpad) in your DAO.
Distribute funds among holders of LP, GT, or any other tokens.
## Asset management [#asset-management]
Transfer any token from the DAO balance.
Send a coin (the network's native currency — ETH, BNB, etc.) from the DAO balance.
Allow a selected Dapp to interact with tokens on the DAO balance.
Automate recurring payments.
Hide scam tokens from the DAO balance.
## DAO Community [#dao-community]
Create an off-chain vote for your DAO community.
## Advanced [#advanced]
Allow a module to manage your DAO.
Revoke a module's rights to manage your DAO.
Execute any custom transaction on behalf of the DAO.
Interact with any DeFi project via WalletConnect.
## DAO features [#dao-features]
Permanently disable GT issuance (GT Minting).
Permanently disable GT Burning (GT Burning).
Manage LP token issuance (Mint LP): enable, disable, or freeze.
Manage LP token burning (Burn LP): enable, disable, or freeze.
# Advanced (/ton/guides-for-managers/manage/advanced)
A DAO in XDAO TON is built modularly: the base DAO contract (treasury + GP jetton) can be extended with additional smart contracts — **plugins**. The Advanced section brings together actions that change the DAO's structure itself, rather than its balance or membership:
* installing a new plugin (module) in the DAO;
* creating an additional **Sub-Wallet**;
* changing the DAO's public data — its name, GP token symbol, or logo.
Like any other DAO action, installing a plugin, creating a Sub-Wallet, and redesigning the configuration are carried out through a **proposal**: a member creates a proposal, GPs vote, and once **general consensus** is reached, the change is executed on-chain automatically.
Install the LP Manager plugin in the DAO — a module that issues LP tokens to crowdfunding campaign contributors.
Create an additional Sub-Wallet controlled by the DAO, for separate fund accounting.
Change the DAO's name, GP token symbol, or logo.
# Install Crowdfunding Module (/ton/guides-for-managers/manage/advanced/install-plugin)
XDAO TON is built on a modular principle: additional smart contracts — plugins that extend its capabilities — can be attached to the base DAO contract. A proposal of type **Install Plugin** (`install_plugin`) is the general mechanism for installing such a plugin in a DAO.
Currently, this proposal type installs a single plugin — the **Crowdfunding Module**: it deploys an **LP Manager** contract in the DAO, which issues **LP tokens** (jetton) to crowdfunding campaign contributors and stores the fundraising rules.
Use Install Plugin when:
* you want to launch crowdfunding in your DAO for the first time and haven't installed an LP Manager yet;
* you want to issue a separate LP token for a new, parallel campaign — the proposal can be created repeatedly, deploying a new LP Manager each time.
Install Plugin is only available after the DAO has already gone through a one-time **Upgrade** — a proposal that enables crowdfunding support (`enable_crowdfunding_support`). Until the upgrade is carried out, the Install Plugin type will not appear in the list of available proposals.
To install the Crowdfunding Module:
Open your DAO, go to the Votes tab, and click Create Proposal.
From the list of proposal types, select **Install Crowdfunding Module**.
Fill in the parameters of the future LP token that will back the crowdfunding campaign:
* **LP Token Name** — the LP token's name (required, up to 64 characters; defaults to "DAO Name LP Token");
* **LP Token Symbol** — the LP token's symbol (ticker) (required, up to 16 characters, uppercase Latin letters, digits, and hyphens only; defaults to "SYMBOL-DAO-LP");
* the LP token's avatar — optional; you can upload an image, otherwise the default TON logo is used;
* the LP token's description — optional, up to 256 characters.
The proposal's own title and description are pre-filled by default and usually don't need to be changed.
Set the Voting Duration — the period during which GPs can vote (2 days by default).
Click Create Proposal to submit the proposal for voting.
GPs vote on the proposal. Once general consensus is reached, the proposal is executed on-chain: a new LP Manager contract is deployed and appears on the DAO page's Plugins tab with the type "LP Manager".
The XDAO platform fee — 5% of the amount raised in a crowdfunding campaign — is only charged when a campaign completes successfully, not when the plugin is installed.
Once the LP Manager is installed, you can launch crowdfunding campaigns — see [Enable Crowdfunding Support](/ton/guides-for-managers/manage/crowdfunding/enable-crowdfunding-support) and [Create Crowdfunding Campaign](/ton/guides-for-managers/manage/crowdfunding/create-crowdfunding).
# Create Sub-Wallet (/ton/guides-for-managers/manage/advanced/install-subaccount)
A **Sub-Wallet** is another kind of plugin in XDAO TON's modular architecture: a named wallet controlled by the DAO, but separate from the main treasury contract. The Sub-Wallet's name is stored on-chain, and the wallet itself is managed exclusively through DAO votes — just like the main treasury.
A Sub-Wallet is used when you need to split DAO funds by purpose without mixing them in a single balance, for example:
* to allocate a dedicated wallet for a specific crowdfunding campaign — that's where contributors' funds will go;
* to set aside a budget for marketing, payouts, or another DAO expense category.
To create a Sub-Wallet:
Open your DAO, go to the Votes tab, and click Create Proposal.
From the list of proposal types, select **Create Sub-Wallet**.
Specify the **Sub-Wallet Name** — the new Sub-Wallet's name (required, up to 64 characters). It will be recorded on-chain together with an automatically assigned sequence number.
The proposal's own title and description are pre-filled by default and usually don't need to be changed.
Set the Voting Duration — the period during which GPs can vote (2 days by default).
Click Create Proposal to submit the proposal for voting.
GPs vote on the proposal. Once general consensus is reached, the proposal is executed on-chain: a new Sub-Wallet contract is deployed and appears on the DAO page's Plugins tab as "Sub-Wallet N" with the name you specified.
Each **Create Sub-Wallet** proposal deploys exactly one new Sub-Wallet. To get several Sub-Wallets — for example, a separate wallet for each crowdfunding campaign — create this proposal again for each one.
A Sub-Wallet is often used as the recipient of crowdfunding campaign funds — see [Create Crowdfunding Campaign](/ton/guides-for-managers/manage/crowdfunding/create-crowdfunding) and [Install Crowdfunding Module](/ton/guides-for-managers/manage/advanced/install-plugin) for details.
# Redesign DAO (/ton/guides-for-managers/manage/advanced/redesign-dao)
Redesign DAO lets GPs change the DAO's public data — its name, GP token symbol (ticker), and logo — without recreating the DAO itself. Changes are applied selectively: you mark which fields need updating, and the rest stay unchanged.
Use Redesign DAO to:
* fix a typo or update the DAO's name;
* change the GP token symbol;
* replace the DAO's logo (avatar).
To change the DAO's configuration:
Open your DAO. You can launch Redesign DAO in two ways: click Create Proposal on the Votes tab and select the **Redesign DAO** type, or click the Redesign DAO button directly on the Overview tab.
Check the boxes for what you want to change: DAO name, Token symbol, and/or Avatar. You need to select at least one item — otherwise the proposal won't be created.
An input field will appear next to the DAO's current value for each item you checked:
* **New DAO name** — the DAO's new name;
* **New token symbol** — the new GP token symbol;
* **Avatar** — the new logo image (uploaded the same way as in other forms with an avatar).
Review the proposal's title and description, edit them if needed, and set the Voting Duration — the period during which GPs can vote (2 days by default).
Click Create Proposal to submit the proposal for voting.
GPs vote on the proposal. Once general consensus is reached, the proposal is executed on-chain: the DAO's metadata is updated, and the new name, symbol, and/or logo appear on the DAO page and everywhere else in the interface that displays them.
Redesign DAO doesn't change the DAO's description — that's edited separately, outside this proposal. Only the DAO's name, GP token symbol, and logo change.
# Close Distribution Round (/ton/guides-for-managers/manage/distribution/close-distribution-round)
Close Distribution Round stops an active Pull distribution round early: LP holders lose the ability to claim their reward, even if the original claim window hasn't expired yet.
Use this proposal if you need to free up the plugin's reserved funds ahead of schedule, or if the round was created with incorrect parameters.
To close a round:
Create a proposal (Create Proposal) of type **Close Distribution Round**.
If the DAO has several Mass Payout Plugins installed, choose the one you want.
Select the round to close from the list of that plugin's active rounds. The form shows its parameters: the pool amount (Pool Amount), the amount already claimed (Claimed), the number of claims (Claims, x of y holders), and the claim window end date (Claim Ends).
Specify the Voting Duration and click Create Proposal.
GPs vote on the proposal. Once general consensus is reached, the round closes immediately.
Closing a round is irreversible. After closing, holders can no longer claim their reward, even if they were previously entitled to it. Unclaimed funds remain on the Mass Payout Plugin — withdraw them with a separate [Withdraw Mass Payout Funds](/ton/guides-for-managers/manage/distribution/withdraw-mass-payout) proposal, or use them for a new round. A closed round cannot be reopened — create a new round for a new distribution.
This action only closes Pull rounds ("Distribution by LP"). Push rounds ("Payment List") are stopped differently — see [Push Rounds](/ton/guides-for-managers/manage/distribution/push-rounds).
# Create Distribution Round (/ton/guides-for-managers/manage/distribution/create-distribution-round)
A distribution round is a round that distributes rewards to LP token holders in proportion to their share (**Pull** mode, "Distribution by LP", Mode A). The DAO specifies the total reward amount, and the system calculates each holder's share and lets them claim it themselves.
To send fixed amounts to your own list of addresses without tying it to LP, use the other mode — see [Push Rounds](/ton/guides-for-managers/manage/distribution/push-rounds).
Before creating a Pull round, the DAO must have the Mass Payout Plugin installed and funded (see [Install Mass Payout Plugin](/ton/guides-for-managers/manage/distribution/install-mass-payout)), as well as a Crowdfunding Module (LP Manager) installed with LP token holders.
To create a distribution round:
Open the DAO → the **Distributions** tab → Create, or create a proposal directly (Create Proposal) and select the **Create Distribution Round** type.
At the top of the form, select **Distribution by LP (Pull)** mode — the other mode, **Payment List (Push)**, is described separately.
Specify the round name (Round Name, optional, up to 32 characters), the **proposal name**, and the **description**.
If the DAO has several Mass Payout Plugins installed, choose the one you want. If there are several LP tokens (Crowdfunding Module), choose the LP token whose holders will receive the distribution; if there's only one, it's selected automatically.
Choose the reward currency: **TON** or **jetton** (from the supported presets, e.g. USDT). Then specify the distribution amount (Distribution Amount) — the total pool to be split among holders.
The form shows the plugin's current balance and how much of it is actually available: part of the balance may be reserved for other active rounds. If the amount isn't sufficient, a warning appears with a button for quickly sending funds to the plugin.
Set the claim window (Claim Duration) — the period during which holders can claim their share. Once it expires, unclaimed funds remain on the plugin and are withdrawn via a separate proposal — see [Withdraw Mass Payout Funds](/ton/guides-for-managers/manage/distribution/withdraw-mass-payout).
If needed, exclude additional addresses from the distribution (Exclude Addresses). The DAO's service contracts (the DAO itself, the LP Manager, Mass Payout Plugins) are excluded automatically — you don't need to list them. The treasury and Sub-Wallet, however, can be left as regular recipients. Addresses to exclude can be added manually or selected from the list of holders after the first preview; the share of excluded addresses is redistributed among the remaining holders in proportion to their balance.
Specify the Voting Duration.
Click **Preview Distribution** to build the snapshot. The system fixes the list of LP holders and their balances at that moment (a Merkle snapshot) and shows: the number of holders, the total LP supply in circulation, the Merkle tree root, and a table with each holder's share and reward amount. Changes to LP balances after the snapshot no longer affect the distribution.
Click Create Proposal. GPs vote on the proposal; once general consensus is reached, the round becomes active (Active), and LP holders can claim their reward.
Claim is a separate action taken by the LP holder themselves: on the Distributions tab, they open the active round and click **Claim**, confirming the transaction with their wallet. No additional DAO vote is required for this.
The pool amount is fixed when the round is created. To distribute more, create a new round — an existing one cannot be increased.
# Distribution (LP payout) (/ton/guides-for-managers/manage/distribution)
Distribution is the mechanism by which a DAO distributes its assets (TON or jettons) to a large number of recipients. Distribution is organized into **rounds** (distribution rounds) and is carried out by a separate **Mass Payout Plugin**, which the DAO installs as a module.
There are two distribution modes:
* **Distribution by LP / Pull (Mode A)** — the DAO forms a shared reward pool for the holders of its LP tokens. The system builds a snapshot of holders and their shares (a Merkle snapshot), and each holder then claims their portion from their wallet themselves — no additional voting is required for this.
* **Payment List / Push (Mode B)** — the DAO specifies a ready-made list of recipients and amounts (up to 200 addresses). Once the round passes voting, the Mass Payout Plugin sends the payments out to the list itself — recipients don't need to claim anything.
Like any DAO action on XDAO TON, installing the plugin and every step of a distribution is a separate **proposal**: it is created by a GP holder, voted on by GPs, and executed on-chain only once the required general consensus is reached.
## Where to find it in the app [#where-to-find-it-in-the-app]
Distributions are shown on the DAO page, under the **Distributions** tab: there you can see all rounds, their status (**Active**, **Fully Claimed** / **Sent**, **Expired**, **Closed** / **Cancelled**), and, if you're an LP holder, a **Claim** button for active Pull rounds where you're owed a reward.
## Setup order [#setup-order]
1. **Enable distribution support** — the same one-time DAO upgrade used for crowdfunding (the Enable Crowdfunding Support proposal). Without it, the Mass Payout Plugin cannot be installed.
2. **Install the Mass Payout Plugin** — the module that will hold the funds and run the rounds.
3. **Set up LP tokens** — Pull distributions require an installed Crowdfunding Module (LP Manager) with LP holders; Push distributions don't need this.
4. **Fund the plugin** and **create the first round**.
Install the Mass Payout module — the required first step for any distribution.
Create a round that distributes rewards to LP holders in proportion to their share (Pull).
Send fixed amounts to your own list of addresses (Push), with no LP tokens involved.
Close an active Pull round early and stop accepting claims.
Withdraw funds from the plugin that aren't reserved for active rounds.
# Install Mass Payout Plugin (/ton/guides-for-managers/manage/distribution/install-mass-payout)
The **Mass Payout Plugin** is a module that a DAO installs to distribute rewards to LP token holders and send payments to a list of addresses. Without the plugin installed, you can neither create distribution rounds nor withdraw funds from a distribution.
What the plugin provides:
* creating distribution rounds with Merkle proofs (Pull) — a gas-efficient claim for each holder;
* distributions in both TON and jettons (for example, USDT);
* sending payments to a ready-made list of addresses with fixed amounts (Push), with no claim required from recipients;
* a configurable claim window, set separately for each round.
Before installing the plugin, the DAO must have distribution support enabled — the same one-time DAO contract upgrade used for crowdfunding (the Enable Crowdfunding Support proposal). If this upgrade hasn't been done yet, the plugin installation form will show a warning instead of the form fields — see [Enable Crowdfunding Support](/ton/guides-for-managers/manage/crowdfunding/enable-crowdfunding-support).
To install the Mass Payout Plugin:
Open your DAO and create a new proposal (Create Proposal).
Select the proposal type **Install Mass Payout Plugin**. If distribution support isn't enabled yet, instead of the installation form you'll see a warning and a button that immediately creates an Enable Crowdfunding Support proposal — pass and execute it first, then come back to install the plugin.
Review the proposal's name and description — they're generated automatically and can't be edited.
Specify the Voting Duration and click Create Proposal.
A DAO can install several instances of the Mass Payout Plugin. If there's more than one, you'll need to explicitly choose the plugin you want from a dropdown when creating a round, closing a round, or withdrawing funds.
GPs vote on the proposal. Once general consensus is reached, the Mass Payout Plugin is deployed in the DAO and becomes available under the Distributions tab and in the list of proposal types.
If the DAO already had a Mass Payout Plugin installed before the distribution-support upgrade, it may stop processing payouts and be marked as "out of service." In that case, install a new plugin following the steps above; if funds remain on the old plugin, contact XDAO support — they will be returned.
Once the plugin is installed, fund its balance via [Send DAO Funds](/ton/guides-for-managers/manage/treasury/send-funds) and create the first round — see [Create Distribution Round](/ton/guides-for-managers/manage/distribution/create-distribution-round) or [Push Rounds](/ton/guides-for-managers/manage/distribution/push-rounds).
# Push Rounds (/ton/guides-for-managers/manage/distribution/push-rounds)
A Push round (**Push** mode, "Payment List", Mode B) is the second distribution mode offered by the Mass Payout Plugin. Unlike a regular round ([Create Distribution Round](/ton/guides-for-managers/manage/distribution/create-distribution-round), Pull), where the DAO forms a shared pool for LP holders and each of them claims their share themselves, in a Push round the DAO specifies a ready-made list of addresses and amounts up front — and the plugin sends the payments out automatically, with no action required from recipients.
| | Distribution Round (Pull) | Push Round (Push) |
| ---------------------------------------- | -------------------------------------------------- | ------------------------------------------------------- |
| Recipients | LP holders, in proportion to their share | any list of addresses (up to 200), amounts set manually |
| Requires Crowdfunding Module / LP tokens | yes | no |
| How the recipient receives funds | themselves, via the Claim button from their wallet | does nothing — the plugin sends it automatically |
| How to stop the round | Close Distribution Round | Cancel Push Payout Round |
Push rounds are convenient for one-off payouts — salaries, bonuses, task rewards — when the recipients and amounts are known in advance and aren't tied to an LP share.
To create a Push round:
Create a proposal (Create Proposal) of type **Create Distribution Round** and switch the mode at the top of the form to **Payment List (Push)**.
Specify the round name (Round Name, e.g. "March Payroll"), the **proposal name**, and the **description**.
If the DAO has several Mass Payout Plugins installed, choose the one you want.
Choose the payment currency: **TON** or **jetton**. The form shows the plugin's current balance in the selected currency.
Even when paying out in jettons, the plugin needs a reserve of TON for gas: roughly 0.055 TON per recipient plus a 0.2 TON storage reserve. The form will warn you if the plugin doesn't have enough TON and offer a quick way to top it up.
Fill in the list of recipients. **Quick Add Recipients** lets you bulk-add GP holders and/or LP holders using separate toggles (for LP — with a choice of a specific LP token, if there's more than one) — the addresses are added to the table below, and you then need to fill in the amounts manually. Addresses can also be added manually.
In the recipients table (up to 200 rows), specify the address and amount for each recipient; extra rows can be removed with the ✕ button. The total pool amount (Total Pool Amount) is calculated automatically.
Specify the Voting Duration and click Create Proposal.
GPs vote on the proposal. Once general consensus is reached, the Mass Payout Plugin sends payments to all recipients sequentially; progress ("X of Y sent") is shown on the round's card under the Distributions tab. Once all payments are delivered, the round is marked **Sent**.
## Cancelling a Push round [#cancelling-a-push-round]
While a round hasn't been fully sent yet, it can be stopped with a separate **Cancel Push Payout Round** proposal:
Create a proposal of type **Cancel Push Payout Round**.
If there are several Mass Payout Plugins, choose the one you want, then select an active Push round from the list — the form shows the pool amount and how many payments have already been sent (X / Y).
Specify the Voting Duration and click Create Proposal. Once general consensus is reached, sending of the remaining payments stops.
Cancelling doesn't roll back payments that were already sent — they remain with the recipients. The unsent portion of the amount stays on the Mass Payout Plugin; you can withdraw it with a [Withdraw Mass Payout Funds](/ton/guides-for-managers/manage/distribution/withdraw-mass-payout) proposal.
# Withdraw Mass Payout Funds (/ton/guides-for-managers/manage/distribution/withdraw-mass-payout)
Withdraw Mass Payout Funds is a proposal by which the DAO gets back (withdraws) funds from the Mass Payout Plugin that aren't reserved for active rounds — for example, a leftover after a round has closed or expired, or TON/jettons sent to the plugin with a margin.
This is a DAO action, not an LP holder receiving their reward. A holder claims their share from an active Pull round themselves — using the **Claim** button on the Distributions tab, directly from their wallet, with no proposal involved. Withdraw Mass Payout Funds is used only to withdraw the free balance from the plugin itself.
To withdraw funds:
Create a proposal (Create Proposal) of type **Withdraw Mass Payout Funds**.
If the DAO has several Mass Payout Plugins installed, choose the one you want.
Choose the withdrawal currency: **TON** or **jetton**.
The form shows a breakdown of the plugin's balance: the total balance, the minimum storage reserve (0.2 TON), the amount reserved for active rounds (if any), and the resulting amount available for withdrawal. The **Max** button fills in the full available amount.
Specify the withdrawal amount (Amount). If it exceeds the available balance, the form will show an error — usually because funds are reserved for active rounds. To free them up, close the corresponding round (see [Close Distribution Round](/ton/guides-for-managers/manage/distribution/close-distribution-round)) or wait for its claim period to end.
Specify the recipient address (Destination Address) — your connected wallet's address is filled in by default, but it can be changed, for example to the DAO's treasury address.
Specify the Voting Duration and click Create Proposal.
GPs vote on the proposal. Once general consensus is reached, the funds leave the plugin for the specified address.
# Claim DAO Management Fee (/ton/guides-for-managers/manage/crowdfunding/claim-management-fee)
If a **Management Fee** (a DAO fee percentage) was set when [creating the campaign](/ton/guides-for-managers/manage/crowdfunding/create-crowdfunding) and the campaign completed successfully, the DAO can claim that fee in LP tokens — through the **Claim DAO Management Fee** vote (`claim_dao_management_fee`).
The fee can only be claimed after the campaign completes successfully (soft cap reached), only if the Management Fee was set above 0%, and only once per campaign.
Open a successful campaign on the **Crowdfunding** tab for which the fee hasn't been claimed yet. If the conditions are met, GPs will see a "DAO Management Fee" block showing the amount in LP tokens and a **Claim DAO Fee Tokens** button.
Click **Claim DAO Fee Tokens** — this opens a **Claim DAO Management Fee**-type vote, pre-filled with the campaign's address and its LP Manager.
Specify the Voting Duration and click Create Proposal.
GPs vote on the proposal; once **general consensus** is reached, it's executed: the fee's LP tokens are minted to the campaign's Destination Sub-Wallet — the same address the raised funds were sent to.
## Collect Fees [#collect-fees]
Separate from the fee for a specific campaign, XDAO TON has a more general **Collect Fees** vote (`collect_fees`) — it collects protocol fees accumulated on the fee manager contract of a plugin installed in the DAO (including the LP Manager). This action isn't specific to crowdfunding and is described in detail in [Treasury → Collect Fees](/ton/guides-for-managers/manage/treasury/collect-fees).
Don't confuse the two votes: **Claim DAO Management Fee** issues the fee's LP tokens from a specific successful campaign, while **Collect Fees** is the more general action of collecting a DAO plugin's protocol fees.
# Create Crowdfunding Campaign (/ton/guides-for-managers/manage/crowdfunding/create-crowdfunding)
Once the DAO has gone through the upgrade, installed the Crowdfunding Module (LP Manager), and created a Sub-Wallet to receive funds, you can launch the fundraising campaign itself — the **Crowdfunding** vote (`crowdfunding`).
Before creating a campaign, make sure the previous steps are complete: [Enable Crowdfunding Support](/ton/guides-for-managers/manage/crowdfunding/enable-crowdfunding-support), [Install Crowdfunding Module](/ton/guides-for-managers/manage/crowdfunding/install-crowdfunding-module), and a Sub-Wallet. Without a Sub-Wallet, the campaign creation form is locked.
Open your DAO's **Crowdfunding** tab and click the button to create a campaign (available to GPs), or create a **Crowdfunding**-type vote via Create Proposal.
Specify the campaign's name and description.
If the DAO has multiple LP tokens (LP Managers) installed, choose which one this campaign will use. If the only LP token has already been used in another campaign, the interface will warn you and suggest issuing a new LP token via [Install Crowdfunding Module](/ton/guides-for-managers/manage/crowdfunding/install-crowdfunding-module) — this keeps the economies of different campaigns from mixing.
Choose the **Destination Sub-Wallet** — this is where the raised funds will be credited. If no Sub-Wallet exists yet, or the existing one is already used by another campaign, the interface will suggest creating a separate one.
Choose the fundraising currency: **TON** or **jetton** (the jetton is chosen from the supported list).
Configure the LP token parameters and fundraising limits:
* **LP token price** — the price of one LP token in the fundraising currency;
* **Min cap (soft cap)** — the minimum amount at which the campaign is considered successful; if the soft cap isn't reached by the end of the term, contributors will be able to claim a refund;
* **Max cap (hard cap)** — the maximum amount to raise, at which the campaign closes automatically; must be greater than or equal to the soft cap;
* **Min / Max per wallet** — the minimum and maximum contribution per wallet; can't exceed the hard cap.
Specify the **Management Fee** — the DAO's fee as a percentage (0–100%), which the DAO can later claim in LP tokens once the campaign succeeds (see [Claim DAO Management Fee](/ton/guides-for-managers/manage/crowdfunding/claim-management-fee)). For example, at a 5% fee the DAO receives 50 LP tokens for every 1,000 LP issued to contributors.
Set the campaign's timeline using one of two methods:
* **Delayed Start = Off** (default) — the campaign starts as soon as the vote is executed; specify only the duration (2 / 7 / 14 / 30-day presets, or a custom number of days/hours/minutes);
* **Delayed Start = On** — set a specific start and end date and time for the campaign (in your local time zone).
If needed, enable **Whitelist**: only addresses on the list will then be able to contribute. Add addresses manually (by wallet address) or select from GP holders. The whitelist can be expanded even after the campaign launches — see [Manage Whitelist](/ton/guides-for-managers/manage/crowdfunding/manage-whitelist).
Specify the Voting Duration for the vote itself and click Create Proposal.
The minimum campaign duration is 5 minutes; the maximum is 1 year.
GPs vote on the proposal; once **general consensus** is reached, it's executed: the campaign is deployed on-chain and either starts immediately or waits for its scheduled start date.
## LP Vesting (advanced setting) [#lp-vesting-advanced-setting]
On newer versions of the LP Manager, campaign creation offers an optional **LP Vesting** setting — a gradual unlock of LP tokens after the campaign completes successfully, instead of an instant payout:
* **Cliff Period** — the period during which LP tokens remain locked;
* **Vesting Duration** — the total vesting term (must be longer than the cliff), over which LP tokens unlock linearly;
* **TGE Unlock** — the share of LP tokens (0–100%) available immediately after the campaign completes, even before the cliff ends.
LP tokens under vesting don't accrue dividends until the member claims them to their wallet.
# Early Finish Crowdfunding (/ton/guides-for-managers/manage/crowdfunding/early-finish)
A crowdfunding campaign can end in two ways.
**Natural completion** doesn't require a vote: as soon as the campaign's end date arrives (or the hard cap is reached), the "Finish & Send Funds" button becomes available to any user. If the soft cap was reached, the campaign is deemed successful and the funds go to the Destination Sub-Wallet; if not, the campaign is considered failed (see the refund section below).
If the soft cap has already been reached but the end date is still far off, GPs can close the raise **early** with the **Early Finish Crowdfunding** vote (`early_finish_crowdfunding`) — for example, to put the raised funds to work sooner rather than waiting for the original deadline.
Open the campaign on the **Crowdfunding** tab. If the soft cap has already been reached and the campaign is still active, you (as a GP) will see an "Early Finish Available" block with a **Propose Early Finish** button.
Click **Propose Early Finish** — this opens an **Early Finish Crowdfunding**-type vote, pre-filled with the campaign's address and its LP Manager.
Specify the Voting Duration and click Create Proposal.
Early finish is only available once the campaign has already reached its soft cap. If the minimum goal hasn't been reached yet, Early Finish can't be proposed.
GPs vote on the proposal; once **general consensus** is reached, it's executed: the campaign ends, and the raised funds are sent to the Destination Sub-Wallet — the same as with natural completion.
## If the soft cap isn't reached [#if-the-soft-cap-isnt-reached]
If the soft cap isn't reached by the end date, the campaign is deemed failed. No DAO vote is required for this — the LP Manager handles it automatically:
* every contributor who put in funds can independently claim a **full refund** of their contribution — each investor performs this action themselves from their personal Helper contract for that campaign;
* GPs and the DAO neither should nor can initiate a refund on behalf of other contributors.
# Enable Crowdfunding Support (/ton/guides-for-managers/manage/crowdfunding/enable-crowdfunding-support)
Before a DAO can install the Crowdfunding Module and launch campaigns, its contracts need a one-time upgrade. This is done through the **Enable Crowdfunding Support** vote (`enable_crowdfunding_support`).
This is a one-time upgrade. If the DAO has already gone through it, there's no need to create this vote again — go straight to [Install Crowdfunding Module](/ton/guides-for-managers/manage/crowdfunding/install-crowdfunding-module).
A DAO's crowdfunding readiness goes through three stages: **Upgrade Required** (the upgrade hasn't been performed yet) → **Module Required** (the upgrade is done, the LP Manager isn't installed yet) → **Ready** (campaigns can be created, provided a Sub-Wallet is also installed).
To perform the upgrade:
Open your DAO and create a new vote (Create Proposal), selecting the **Enable Crowdfunding Support** type.
Check the vote's title and description — they're set automatically and can't be edited, since this is a technical contract upgrade.
Specify the Voting Duration — the period during which GPs can vote.
Click Create Proposal. The vote will appear on your DAO's Votes tab.
GPs vote on the proposal; once **general consensus** is reached, it's executed: the DAO's contracts are upgraded, and the DAO's status moves to **Module Required** — at which point the [Install Crowdfunding Module](/ton/guides-for-managers/manage/crowdfunding/install-crowdfunding-module) vote becomes available.
# Crowdfunding (/ton/guides-for-managers/manage/crowdfunding)
Crowdfunding is a public fundraise into the DAO treasury from the community. Any address (or, if whitelist is enabled, only addresses on it) can contribute TON or a jetton to a campaign and receive **LP tokens** in return — a jetton that confirms the contributor's share and entitles them to the DAO's future dividends.
The entire crowdfunding mechanism — accepting contributions, issuing and distributing LP tokens, and handling refunds — is managed by the **LP Manager**: a smart contract module (plugin) that the DAO installs specifically for this purpose.
## How it works [#how-it-works]
**DAO upgrade.** A one-time update to the DAO's contracts that adds crowdfunding support (`enable_crowdfunding_support`).
**Installing the Crowdfunding Module.** The DAO installs the LP Manager — it issues the LP token and will serve all subsequent campaigns.
**Sub-Wallet.** Receiving campaign funds requires a separate Sub-Wallet — this step is outside the scope of this section; see [Advanced → Create Sub-Wallet](/ton/guides-for-managers/manage/advanced/install-subaccount).
**Launching the campaign.** The DAO creates a Crowdfunding vote with funding goals (soft cap / hard cap), a timeline, and, if needed, a whitelist.
The app includes a built-in step-by-step "Crowdfunding Setup Guide" — it shows the DAO's status (Upgrade Required → Module Required → Ready) and creates the required votes with a button, following the same order of steps.
All of the DAO's active and completed campaigns are shown on the **Crowdfunding** tab of the DAO page — along with the button to create a new campaign and filters (Active, Pending, Funded, Expired, Ending soon).
Like any DAO action on XDAO TON, each step is submitted as a separate vote (proposal): a member creates the proposal, GPs vote, and once **general consensus** is reached, it is executed on-chain.
## Sections [#sections]
A one-time upgrade of the DAO's contracts to support crowdfunding.
Install the LP Manager and configure the DAO's LP token.
Launch a campaign: soft cap / hard cap, timeline, whitelist, and other parameters.
Add and remove addresses from a campaign's whitelist.
Finish a campaign early once it has reached its soft cap.
Claim the DAO's management fee for a successful campaign.
# Install Crowdfunding Module (/ton/guides-for-managers/manage/crowdfunding/install-crowdfunding-module)
After the upgrade ([Enable Crowdfunding Support](/ton/guides-for-managers/manage/crowdfunding/enable-crowdfunding-support)), the DAO can install the Crowdfunding Module itself. The **Install Crowdfunding Module** vote (`install_plugin`) deploys the **LP Manager** in the DAO — a plugin that issues the LP token and subsequently runs campaigns: accepting contributions, crediting LP tokens to members, and handling refunds if a raise fails.
This same vote also sets the parameters of the DAO's LP token — in effect, you're installing the module and issuing a new jetton at the same time.
Open your DAO and create a new vote (Create Proposal), selecting the **Install Crowdfunding Module** type.
Specify the **LP Token Name** and **LP Token Symbol** for the new LP token. Default values are pre-filled based on the DAO's name and symbol (for example, "DAO Name LP Token" and "SYMBOL-LP"), and can be changed.
Optionally, upload an LP token avatar and add a description.
Specify the Voting Duration and click Create Proposal.
GPs vote on the proposal; once **general consensus** is reached, it's executed: the LP Manager contract with the specified LP token is deployed in the DAO, and the DAO's status moves to **Ready**.
This vote can be run more than once, creating separate LP Managers with their own LP tokens. It's recommended to issue a new LP token for each major campaign, so contributors from different raises aren't mixed into one economy.
Installing the module itself is free. The XDAO platform fee (5% of the amount raised) is charged only when a campaign completes successfully, not at installation.
**Ready** status means the DAO is technically set up to create campaigns, but receiving campaign funds still requires a separate **Sub-Wallet** — see [Advanced → Create Sub-Wallet](/ton/guides-for-managers/manage/advanced/install-subaccount). The Sub-Wallet keeps each campaign's funds separate, without mixing them into the rest of the DAO's treasury.
Once the LP Manager is installed and the Sub-Wallet is created, you can [launch your first campaign](/ton/guides-for-managers/manage/crowdfunding/create-crowdfunding).
# Manage Whitelist (/ton/guides-for-managers/manage/crowdfunding/manage-whitelist)
If Whitelist was enabled when [creating a campaign](/ton/guides-for-managers/manage/crowdfunding/create-crowdfunding), the list of allowed addresses can be changed even after launch — through two separate votes: **Add to Whitelist** (`add_to_whitelist`) and **Remove from Whitelist** (`remove_from_whitelist`). Both are executed through the corresponding campaign's LP Manager.
These votes are only available for active campaigns that have whitelist enabled. Campaigns without a whitelist won't appear in the selection list.
## Add to Whitelist [#add-to-whitelist]
Open Create Proposal and select the **Add to Whitelist** type.
Select the campaign (Crowdfunding) from the list of active campaigns with whitelist enabled.
Add addresses manually (by wallet address) or select from GP holders. The vote's title and description are generated automatically.
Specify the Voting Duration and click Create Proposal.
GPs vote on the proposal; once **general consensus** is reached, the specified addresses are added to the campaign's whitelist on-chain.
## Remove from Whitelist [#remove-from-whitelist]
Open Create Proposal and select the **Remove from Whitelist** type.
Select the campaign — the current whitelist will be displayed, along with the number of addresses and contributors.
Check the addresses to remove from the list, or add an address manually. Addresses that have already contributed to the campaign are marked as **Contributor** and can't be removed.
Specify the Voting Duration and click Create Proposal.
An address that has already contributed to the campaign can't be removed from the whitelist — this protects existing contributors from having their LP tokens and refund blocked.
GPs vote on the proposal; once **general consensus** is reached, the selected addresses are removed from the campaign's whitelist on-chain.
# Collect Fees (/ton/guides-for-managers/manage/treasury/collect-fees)
**Collect Fees** is a proposal that collects the accumulated fees from the fee manager contract linked to the DAO into the Main Treasury balance.
The **Collect Fees** proposal type is intended for administrative fee operations. In the current version of XDAO TON, it isn't visible in the **Create Proposal** type list for every account — availability depends on your account's permissions. If it doesn't appear in your list of proposal types, this operation isn't available to you.
If Collect Fees is available to your account, to create it:
Open the **Proposals** section → **Create Proposal**, select the DAO you need and the proposal type **Collect Fees**, then click **Create**.
Fill in **Proposal name** and **Description** (optional).
Choose the **Voting Duration**: 2, 3, 4 days, or Custom (days/hours/minutes).
Click **Create**.
Once created, the proposal appears on the DAO's **Votes** tab, where GP token holders vote on it with their weight. As soon as the "for" votes reach the DAO's **general consensus**, the proposal is executed on the TON network automatically — the accumulated fees are transferred from the fee manager contract to the DAO's Main Treasury.
# Custom Proposal (/ton/guides-for-managers/manage/treasury/custom-proposal)
**Custom Proposal** is a proposal with an arbitrary transaction body: instead of a ready-made form, you directly specify the JSON that will be executed on behalf of the DAO. This is the most flexible, but also the riskiest proposal type — use it only if you understand what on-chain call the specified JSON produces.
In the current version of XDAO TON, the **Custom Proposal** proposal type isn't visible in the **Create Proposal** type list for every account — availability depends on your account's permissions. If it doesn't appear in your list of proposal types, this operation isn't available to you.
If Custom Proposal is available to your account, to create it:
Open the **Proposals** section → **Create Proposal**, select the DAO you need and the proposal type **Custom Proposal**, then click **Create**.
Check the **Proposal name** and **Description** — by default they are filled in from the DAO's name and description, but can be changed.
Choose the **Voting Duration**.
In the **Custom Body (JSON)** field, specify the JSON object that will become the proposal's body, for example: `{"op": 123, "queryId": 0, "mode": 1}`. The field defaults to the template `{"op": 0, "queryId": 0}`.
Click **Create**.
Custom Proposal is executed on behalf of the DAO with exactly the parameters you specified in the JSON. Check the op code and the other fields carefully before creating it — an already-executed proposal cannot be undone.
Once created, the proposal appears on the DAO's **Votes** tab, where GP token holders vote on it with their weight. As soon as the "for" votes reach the DAO's **general consensus**, the proposal is executed on the TON network automatically — the specified transaction body is executed on behalf of the DAO with exactly the parameters you set.
# Treasury (/ton/guides-for-managers/manage/treasury)
The **Treasury** section brings together proposals that manage the DAO's assets: TON and jettons held in the Main Treasury, Sub-Wallets, and the Mass Payout Plugin, as well as the DAO's NFTs. It also includes the dedicated fee-collection operation and an arbitrary on-chain transaction.
Like any action in XDAO TON, every operation in this section is created as a proposal: you create it with the required parameters, GP token holders vote, and once the DAO's **general consensus** is reached, the proposal is executed on the TON network automatically.
Any holder of the selected DAO's GP token can create a proposal. The visibility of some operations (Collect Fees, Custom Proposal) in the proposal-type list depends on the account — see the pages below for details.
Send TON or a jetton from the DAO balance to an external address or to another account of the same DAO.
Send an NFT owned by the DAO to any address.
Swap one DAO treasury asset for another via STON.fi.
Collect accumulated fees from the DAO's fee manager contract.
Create an arbitrary on-chain transaction on behalf of the DAO.
# Send DAO Funds (/ton/guides-for-managers/manage/treasury/send-funds)
**Send DAO Funds** is a proposal that sends TON or a jetton from one of the DAO's accounts (Main Treasury, Sub-Wallet, or Mass Payout Plugin) to an external address or to another account of the same DAO.
To create a Send DAO Funds proposal:
Open the DAO you need and go to the **DAO Balance** tab, then click **Send**.
The button is only available to holders of this DAO's GP token. An alternative path is the **Proposals** section → **Create Proposal**: select the DAO and the proposal type **Send DAO Funds**.
Choose **From Account** — the source account: Main Treasury, Sub-Wallet, or Mass Payout Plugin. This choice determines which TON/jetton balances will be available to send.
Specify the recipient with the **Send to** toggle:
* **External Address** — any external TON address;
* **DAO Account** — another account of the same DAO (Main Treasury or a Sub-Wallet, other than the one already selected as From Account). This option is unavailable if the DAO has no other accounts.
In the **Select token type** block, choose the asset (TON or one of the jettons held in the From Account balance) and specify the amount. The **Max** button fills in the entire available balance.
Fill in **Description** (optional) and choose the **Voting Duration**: 2, 3, 4 days, or Custom (days/hours/minutes, minimum 1 minute).
The proposal name is generated automatically from the amount and the asset symbol (for example, "send 10 TON") and cannot be edited manually.
Click **Create**.
The amount cannot exceed the available balance of the selected account, and the recipient cannot be the same as the source account.
Once created, the proposal appears on the DAO's **Votes** tab, where GP token holders vote on it with their weight. As soon as the "for" votes reach the DAO's **general consensus**, the proposal is executed on the TON network automatically — the specified amount of TON or jetton is sent from the source account to the recipient's address.
# Send DAO NFT (/ton/guides-for-managers/manage/treasury/send-nft)
**Send DAO NFT** is a proposal that sends an NFT from the DAO's Main Treasury to any TON address.
To create a Send DAO NFT proposal:
Open the DAO you need, go to the **DAO Balance** tab, and open an account's NFT collection (click the "eye" icon in its **NFTs** row — see [NFT](/ton/guides-for-managers/dao-page/nft)). Each NFT in the list has a **Send NFT** button — it immediately opens the proposal form with that NFT already selected.
An alternative path is the **Proposals** section → **Create Proposal**: select the DAO and the proposal type **Send DAO NFT**, then choose an NFT from the **Select NFT** list (this list contains all NFTs owned by this DAO's Main Treasury; if the DAO doesn't hold any NFTs yet, the list will be empty).
Choose **From DAO** if you manage several DAOs — the current one is selected by default.
Specify the **Recipient address** — the recipient's public TON address. It must differ from the DAO's own address.
Check the **Proposal name** and **Description** — they are generated automatically based on the selected NFT and the recipient address (for example, "Transfer \ #\ to \"), but can be edited.
Choose the **Voting Duration**: 2, 3, 4 days, or Custom.
Click **Create**.
Send DAO NFT only works with NFTs held in the DAO's Main Treasury balance — NFTs on a Sub-Wallet or the Mass Payout Plugin cannot be sent with this proposal type.
Once created, the proposal appears on the DAO's **Votes** tab, where GP token holders vote on it with their weight. As soon as the "for" votes reach the DAO's **general consensus**, the proposal is executed on the TON network automatically — the NFT is transferred to the recipient's address.
# Swap (/ton/guides-for-managers/manage/treasury/swap)
**Swap** (the proposal type's full name is Swap DAO Funds (STON.fi)) exchanges one asset in the DAO's balance for another via the decentralized exchange [STON.fi](https://ston.fi) — for example, part of the TON balance for a jetton, or a jetton for a jetton, without withdrawing funds outside the DAO.
To create a Swap proposal:
Open the DAO you need and go to the **DAO Balance** tab, then click **Swap**.
The button is only available to holders of this DAO's GP token. An alternative path is the **Proposals** section → **Create Proposal**: select the DAO and the proposal type **Swap DAO Funds (STON.fi)**.
Choose **From asset** — the asset in the DAO's balance you want to exchange — and **To asset** — the asset you want to receive.
Specify the exchange amount. The **Max** button fills in the entire available balance of the From asset; for TON, a small amount is automatically reserved for network fees, so the maximum for TON will be slightly less than the full balance.
Set the **Slippage** (allowed price slippage) — one of the presets (1/3/5/7/10%) or a custom value from 1% to 100%.
Once both assets are selected and an amount is specified, an estimate of the amount to be received (**Estimated receive**) is shown below the fields, based on a live STON.fi quote. If there's no route or liquidity for the pair, the form will show a warning with a **Retry** button.
Fill in **Description** (optional) and the **Voting Duration**. The proposal name is generated automatically from the amount and the asset symbol (for example, "swap 10 TON").
Click **Create**.
The account the Swap is made from must retain a small reserve of TON on top of the amount being exchanged — it covers the network fees for executing the trade.
Once created, the proposal appears on the DAO's **Votes** tab, where GP token holders vote on it with their weight. As soon as the "for" votes reach the DAO's **general consensus**, the proposal is executed on the TON network automatically — the DAO performs the swap on STON.fi at the locked-in quote, accounting for the specified slippage, and the received asset is credited to the DAO's balance.
# Add GP (/ton/guides-for-managers/manage/governance/add-gp)
The **Add GP** proposal (`add_gp`) issues (mints) new GP tokens to one or more wallets — this is how new members are added to a DAO or the voting share of existing GPs is increased.
To add a GP:
Open the DAO → the Votes tab → click the **+** icon (Create Proposal).
Select the DAO and the **Add GP** proposal type, then click Create.
Fill in the proposal title and description, and set the voting period (2, 3, or 4 days, or a custom duration in days/hours/minutes — minimum 1 minute).
For each new GP, enter the recipient's public TON wallet address and the number of GP tokens to issue. Use the **Add wallet** button to add several recipients to the same proposal.
The address must be a regular user TON wallet: you cannot specify the DAO's own address or another DAO's address. Every address you enter is validated automatically.
Once all addresses and amounts are filled in, the form shows a preview of the resulting GP distribution — each holder's voting share (%) before and after the new tokens are issued.
Click Create to submit the proposal for a vote.
Add GP is one of the proposal types that change the DAO's voting balance. If the DAO already has active votes, creating this kind of proposal triggers a warning: all currently active votes will be stopped and their results voided.
Once GPs vote and **general consensus** is reached, the specified number of GP tokens is issued to the recipients' wallets, and they become full GPs of the DAO.
# Change General Consensus (/ton/guides-for-managers/manage/governance/change-general-consensus)
**General consensus** is the minimum share of GP votes (as a percentage) a proposal must reach to be executed. The **Change General Consensus** proposal (`change_general_consensus`) changes this value for the entire DAO.
Raising general consensus makes DAO decision-making harder — it requires support from a larger share of GPs. Lowering it, conversely, makes decision-making easier.
To change general consensus:
Open the DAO → the Votes tab → click the **+** icon (Create Proposal).
Select the DAO and the **Change General Consensus** proposal type, then click Create.
Fill in the proposal title and description, and set the voting period (2, 3, or 4 days, or a custom duration in days/hours/minutes — minimum 1 minute).
The form shows the DAO's current general consensus (in %). Set the new value with the slider (5% steps) or enter a number manually in the field below — the new value must differ from the current one.
Click Create to submit the proposal for a vote.
Change General Consensus is one of the proposal types that change the DAO's voting rules. If the DAO already has active votes, creating this kind of proposal triggers a warning: all currently active votes will be stopped and their results voided.
Once GPs vote and the current **general consensus** is reached, the new value takes effect and applies to all subsequent DAO proposals.
# Change GP Transfer Status (/ton/guides-for-managers/manage/governance/change-gp-transfer-status)
The **Change GP Transfer Status** proposal (`change_gp_transfer_status`) toggles the DAO's status between **Transferable** and **Non-transferable** — this determines whether GP tokens can be moved with a regular jetton transfer in addition to being transferred via the [Transfer GP Tokens](/ton/guides-for-managers/manage/governance/transfer-gp-tokens) proposal.
To change the GP transfer status:
Open the DAO → the Votes tab → click the **+** icon (Create Proposal).
Select the DAO and the **Change GP Transfer Status** proposal type, then click Create.
Fill in the proposal title and description, and set the voting period (2, 3, or 4 days, or a custom duration in days/hours/minutes — minimum 1 minute).
The form shows the DAO's current status (Transferable or Non-transferable) and prompts you to choose a **New status** — the new value must differ from the current one.
Click Create to submit the proposal for a vote.
Once GPs vote and **general consensus** is reached, the DAO's status changes, and any further movement of GP tokens is governed by the new status.
# GP Management (/ton/guides-for-managers/manage/governance)
A GP (Governance Participant) is a holder of a GP token: a jetton issued for a specific DAO that grants the right to create proposals and vote on them. GP tokens have no price and, by default, cannot be moved with a regular jetton transfer — only through a DAO proposal (or if direct transfer is enabled for the DAO, see Change GP Transfer Status).
The sum of GP tokens held by all of a DAO's members makes up 100% of the votes. **General consensus** is the minimum share of votes required for a proposal to be executed.
Issue GP tokens to a new or existing DAO member.
Burn all of a selected member's GP tokens and remove them from the DAO.
Transfer GP tokens from one DAO member to another.
Allow or disallow direct transfer of GP tokens via a regular transfer.
Change the vote threshold required to execute proposals.
# Remove GP (/ton/guides-for-managers/manage/governance/remove-gp)
The **Remove GP** proposal (`remove_gp`) burns all of a selected member's GP tokens and removes them from the DAO's GPs.
Remove GP always burns the selected member's **entire** GP token balance, not part of it. To reduce a member's share without removing them entirely, use [Transfer GP Tokens](/ton/guides-for-managers/manage/governance/transfer-gp-tokens) — this lets you move part of their tokens to another GP.
To remove a GP from the DAO:
Open the DAO → the Votes tab → click the **+** icon (Create Proposal).
Select the DAO and the **Remove GP** proposal type, then click Create.
Fill in the proposal title and description, and set the voting period (2, 3, or 4 days, or a custom duration in days/hours/minutes — minimum 1 minute).
From the dropdown, select the GP to remove — the list is populated from the DAO's current GP token holders.
The form shows a preview of the resulting GP distribution: how the voting share (%) of the remaining members will change once the selected GP's tokens are burned.
Click Create to submit the proposal for a vote.
Remove GP is one of the proposal types that change the DAO's voting balance. If the DAO already has active votes, creating this kind of proposal triggers a warning: all currently active votes will be stopped and their results voided.
Once GPs vote and **general consensus** is reached, the removed member's GP tokens are burned, and they disappear from the DAO's list of holders.
# Transfer GP Tokens (/ton/guides-for-managers/manage/governance/transfer-gp-tokens)
The **Transfer GP Tokens** proposal (`transfer_gp_tokens`) moves GP tokens from one member's wallet to another member's wallet within the DAO — that is, it changes the voting balance between existing GPs without issuing new tokens or burning any.
By default, GP tokens cannot be moved with a regular jetton transfer — only through this proposal (Transfer GP Tokens) or if direct transfer is enabled for the DAO, see [Change GP Transfer Status](/ton/guides-for-managers/manage/governance/change-gp-transfer-status).
To transfer GP tokens:
Open the DAO → the Votes tab → click the **+** icon (Create Proposal).
Select the DAO and the **Transfer GP Tokens** proposal type, then click Create.
Fill in the proposal title and description, and set the voting period (2, 3, or 4 days, or a custom duration in days/hours/minutes — minimum 1 minute).
In the **From wallet address** field, select the sender — chosen from the DAO's current GP holders; once selected, the form fills in their available balance.
In the **To wallet address** field, select the recipient — also chosen from the DAO's current GP holders. The recipient must already be an existing GP; to add a new member, use [Add GP](/ton/guides-for-managers/manage/governance/add-gp).
Specify the number of GP tokens to transfer — no more than the sender's balance (the **Max** button fills in the entire available balance).
Click Create to submit the proposal for a vote.
Transfer GP Tokens is one of the proposal types that change the DAO's voting balance. If the DAO already has active votes, creating this kind of proposal triggers a warning: all currently active votes will be stopped and their results voided.
Once GPs vote and **general consensus** is reached, the specified number of GP tokens moves from the sender to the recipient.
# Add Permitted (/evm/guides-for-gt/dao-page/manage/advanced/add-permitted)
Add Permitted lets you use any smart contract as a module, and allows the specified address to perform any operations on behalf of the DAO without a vote.
A Permitted address acts on behalf of the DAO without voting or confirmations. Only add addresses and smart contracts to Permitted that you fully trust: you are effectively granting them the right to manage the DAO's assets.
To add an address to Permitted:
Click Add Permitted on the Manage page of your DAO.
Specify the user's public address or a smart contract address.
Click Create voting. Once the vote is created and activated, the Permitted address will appear in the DAO Permitted Addresses section on the Info page of your DAO.
# Connect (/evm/guides-for-gt/dao-page/manage/advanced/connect)
With Connect, you can connect on behalf of the DAO to any DeFi protocol that supports WalletConnect.
The connection takes place on two sides: you perform some steps on the third-party Dapp's side, and some on xdao.app. This is noted for each step below.
To connect to a third-party Dapp:
**On xdao.app.** Click Connect on the Manage page of your DAO.
When you open Connect, you'll see a list of popular DeFi projects you can connect your DAO to. Your options for connecting the DAO are not limited to this list. You can open any Dapp that supports WalletConnect yourself and connect to it.
**On the third-party Dapp's side.** Go to the website of the Dapp project you need.
**On the third-party Dapp's side.** Click Connect wallet and select the WalletConnect button.
**On the third-party Dapp's side.** Below the QR code, copy the URI by clicking Copy to clipboard.
**On xdao.app.** Return to xdao.app and paste the URI into the designated field.
**On xdao.app.** If you see the message "You are connected now", you have successfully connected to the Dapp. You can also verify that the address connected to the Dapp is the DAO's address.
**On xdao.app.** When you're done working with the Dapp, click Disconnect.
The DAO can interact with any Dapp that supports WalletConnect, except those that require a signature. The DAO is a smart contract, meaning it has no private key, so it cannot produce a signature. As a result, interaction with certain Dapps is currently not possible.
# Custom Transaction (/evm/guides-for-gt/dao-page/manage/advanced/custom-transaction)
Custom Transaction lets you create any custom transaction. Custom Transaction is mainly used when XDAO modules interact with your DAO. You can also interact with your own smart contracts on behalf of the DAO.
A custom transaction is executed on behalf of the DAO with exactly the parameters you specify. Carefully check the recipient address (Target Address), amount (Value), and call data (Data): an already executed transaction cannot be undone.
To create a Custom Transaction:
Click Custom Transaction on the Manage page of your DAO.
Specify the Target Address.
Specify the Value.
Specify the Data.
Click Create voting. Once the vote is created and activated, the custom transaction will be executed on behalf of the DAO.
# Advanced (/evm/guides-for-gt/dao-page/manage/advanced)
A vote to add an address to Permitted:
A vote to remove an address from Permitted:
A vote to create a custom transaction:
A feature for connecting the DAO to a third-party Dapp:
# Remove Permitted (/evm/guides-for-gt/dao-page/manage/advanced/remove-permitted)
Remove Permitted removes a previously added address from the Permitted list. After the vote, this address will no longer be able to perform operations on behalf of the DAO without a vote.
To remove an address from Permitted:
Click Remove Permitted on the Manage page of your DAO.
Specify the user's public address or the smart contract address that was previously added to Permitted.
Click Create voting. Once the vote is created and activated, the Permitted address will be removed.
# Approve Token (/evm/guides-for-gt/dao-page/manage/asset-management/approve-token)
Approve Token is a vote by which the DAO allows third-party platforms (such as a DEX) to interact with its tokens.
To make an Approve Token:
Click Approve Token on the Manage page in your DAO.
Select a token from the list or specify its smart contract that you want to allow to interact with the DAO balance.
Specify the number of tokens. This is exactly the number of tokens the third-party smart contract will be able to interact with. If you specify a small number, you can always do Approve again.
Specify the Spender Address — a third-party smart contract, DEX, etc.
Click Create voting to create a vote. Once the voting is activated, the specified Spender Address will be able to interact with the selected token.
# Hide Tokens (/evm/guides-for-gt/dao-page/manage/asset-management/hide-tokens)
Hide Tokens is a feature that lets you remove unwanted or scam tokens from the DAO's list of assets. Hiding is done by signing a message in your wallet and does not require a vote or a transaction.
To hide scam tokens from your DAO's balance:
Click Hide Tokens on the Manage page in your DAO.
Check the box next to the tokens you want to hide.
Click Update. After you sign the message in your wallet, the selected tokens will be hidden from your DAO's balance.
Hidden tokens are not displayed among the DAO's assets and are not included in the AUM calculation, but you can always make them visible again.
# Asset Management (/evm/guides-for-gt/dao-page/manage/asset-management)
Voting to send a token:
Voting to send a coin:
Voting to allow a third-party smart contract to interact with a token on the DAO:
Voting to pay salaries:
Voting to hide scam tokens:
# Pay Salaries (/evm/guides-for-gt/dao-page/manage/asset-management/pay-salaries)
To pay salaries to employees or make other recurring payments:
Click Pay Salaries on the Manage page in your DAO, then Add New Payroll.
Select a token from the list or specify its smart contract — a token that is on the DAO balance and in which the payment is made.
Specify the payment amount (Amount) and the accrual period: hour, day, week, month, or year. The Amount Per Month value is calculated automatically.
Specify the recipient's public address. This can be the address of a software, cold, or exchange wallet, as well as a DAO address.
Specify the payroll start date (Start Payroll Date) and end date (End Payroll Date). The date can be any date, including one in the past — for example, if an employee has successfully completed their probation period and needs to be paid retroactively. You can also choose the option with no end date (No End Date) — in that case, the payment can be disabled on the Pay Salaries page.
Click Approve to allow the Payroll smart contract to interact with the selected token on the DAO.
Click Create Payroll to create a vote on setting up the salary. Once the vote is activated, the employee will start receiving regular payments.
If an employee's salary changes, you must Claim the accrued funds before changing the amount.
The salary accrual algorithm: the amount of funds paid per second, multiplied by the number of seconds since the last Claim. This means the salary can be claimed at any time and an unlimited number of times.
Any user can perform the Claim. This is especially useful if the recipient has no funds for gas, or if an exchange wallet is specified as the recipient: in that case, a DAO member or any other wallet can Claim on their behalf. Either way, the funds will be sent to the Payroll recipient.
# Send "Coin" (/evm/guides-for-gt/dao-page/manage/asset-management/send-coin)
"Coin" is the native coin of the blockchain used to pay transaction fees. For example, on the Ethereum network this is ETH, and the vote is called Send ETH, while on the BNB network it is BNB, and the vote is Send BNB, and so on.
To send a Coin from the DAO balance:
Click Send "Coin" on the Manage page in your DAO.
Specify the recipient's public address.
Specify the number of coins to be sent.
Click Create voting to create a vote to send the coin. Once the voting is activated, the coin will be sent.
# Send Token (/evm/guides-for-gt/dao-page/manage/asset-management/send-token)
Send Token is a vote by which the DAO sends tokens (ERC-20 and others) from its balance to any specified address.
To send tokens from the DAO balance:
Click Send Token on the Manage page in your DAO.
Select a token from the list or specify its smart contract that you will be sending from the DAO balance.
Specify the number of tokens to be sent.
Specify the recipient's public address.
Click Create voting to create a vote to send the token. Once the voting is activated, the selected token will be sent.
# Create Proposal (/evm/guides-for-gt/dao-page/manage/dao-community/create-proposal)
A proposal is needed so that DAO managers can hold an off-chain poll based on ownership of a specific token. This can be a GT, LP, or any other token.
To create a proposal:
Click Create Proposal on the Manage page in your DAO.
Specify the title and description of the vote.
Choose the voting option: Single Choice — only one answer option can be selected, or Multiple Choice — several answer options can be selected.
Specify the answer options.
Specify the Voting Token Address — holders of this token will be able to take part in the proposal. This can be a GT, LP, or any other token. The vote weight will depend on the number of tokens in the user's balance.
Specify the start and end dates of the vote.
Click Create Proposal. After the vote is created and activated, the proposal will be displayed in the DAO community section on the Activity page in your DAO.
# DAO Community (/evm/guides-for-gt/dao-page/manage/dao-community)
Voting to create an off-chain vote for the community:
# Change Avatar (/evm/guides-for-gt/dao-page/manage/dao-customization/change-avatar)
To upload an avatar and make your DAO more vivid and recognizable:
Click Change Avatar on the Manage page in your DAO.
Upload the avatar image for your DAO.
Click Upload and sign the message in your wallet.
We recommend using an image with a 1:1 aspect ratio (512 x 512). Maximum size 2 MB.
# Change Banner (/evm/guides-for-gt/dao-page/manage/dao-customization/change-banner)
This feature is only available after upgrading your DAO.
To upload a banner image and make your DAO more vivid and recognizable:
Click Change Banner on the Manage page in your DAO.
Upload the banner image for your DAO.
Click Upload and sign the message in your wallet.
We recommend using an image with a 5:1 aspect ratio (2560 x 512). Maximum size 2 MB.
# Change Widget (/evm/guides-for-gt/dao-page/manage/dao-customization/change-widget)
Widgets make your DAO's home page more visual. 5 widgets are available.
## Free widgets [#free-widgets]
**Voting List** — displays the latest 3 votes in your DAO.
**Proposal List** — displays the latest 3 proposals in your DAO.
**Balance** — displays the assets in your DAO.
## Subscription widgets 🔥 [#subscription-widgets-]
**AUM History** — the AUM history of your DAO over 30 days.
**Voting Created Bar Chart** — the history of the number of votes over the selected period (7 days, 6 weeks, or 6 months).
You can also choose the **empty** option — then the DAO page will have no widget, for a more minimal design.
## How to choose a widget [#how-to-choose-a-widget]
Click Change Widget on the Manage page in your DAO.
Choose the widget that will be displayed on the DAO's home page.
Click Update and sign the message in your wallet.
# Edit DAO Analytics (/evm/guides-for-gt/dao-page/manage/dao-customization/edit-dao-analytics)
This feature is only available after upgrading your DAO.
You can hide unnecessary analytics cards. They will not be displayed on your DAO page.
To hide unnecessary analytics cards:
Click Edit DAO Analytics on the Manage page in your DAO.
Choose the analytics cards that will not be displayed on your DAO page. 4 analytics cards are currently available: Voting Analytics, AUM & Assets Analytics, Voting Power Chart, and Financial Shares Chart.
Click Update and sign the message in your wallet.
# Edit DAO Profile (/evm/guides-for-gt/dao-page/manage/dao-customization/edit-dao-profile)
To add project links and description and personalize your DAO:
Click Edit DAO Profile on the Manage page in your DAO.
Here you can specify a contact email, links to the website, Telegram, Twitter, Medium, and Discord, as well as a free-form project description.
Click Update and sign the message in your wallet.
To remove the "DAO's social links were not verified" notice, complete Verify DAO.
# DAO Customization (/evm/guides-for-gt/dao-page/manage/dao-customization)
A feature for verifying your DAO through social networks and getting a distinctive blue badge:
A feature for changing the DAO avatar:
A feature for changing the DAO banner:
A feature for adding the DAO's description and links:
A feature for adding DAO widgets:
A feature for adding DAO analytics:
# Verify DAO (/evm/guides-for-gt/dao-page/manage/dao-customization/verify-dao)
This feature is only available after upgrading your DAO.
After upgrading your DAO, its verification will become available.
To get a blue checkmark on your DAO page and be included in our lists of top DAOs in the future:
Click Verify DAO on the Manage page in your DAO.
Specify: the DAO's email, the founder's or key member's email, the founder's/member's Telegram contact, a link to Twitter, a link to Discord, a link to Telegram, a link to the website; send a public message from the Twitter account to confirm verification.
After successfully filling out the form, our team will contact you to complete the verification procedure.
As soon as you successfully complete verification, the "DAO's social links were not verified" notice will disappear.
# Forbid to Add Members (/evm/guides-for-gt/dao-page/manage/dao-features/forbid-to-add-members)
GT Minting is the ability to add new members to a DAO. Since you cannot transfer GT tokens to anyone without a vote, disabling and freezing this feature will block the ability to mint GT tokens permanently. Adding a new member will then only be possible by redistributing existing GT in their favor.
To permanently disable GT Minting:
Click Forbid to Add Members on the Manage page in your DAO.
Click Create voting and create a vote. Once it is activated, GT Minting will be disabled permanently.
Disabling and freezing GT Minting permanently forbids increasing the current number of GT. If you plan to invite new DAO members through GT Minting rather than redistribution, do not freeze this feature.
# Forbid to Remove Members (/evm/guides-for-gt/dao-page/manage/dao-features/forbid-to-remove-members)
GT Burning lets managing members leave the DAO. Since the only way for managing members to leave the DAO is to get rid of GT tokens, disabling and freezing this feature will block the ability to burn GT tokens permanently. Leaving the organization will then only be possible by redistributing your GT in favor of another member.
To permanently disable GT Burning:
Click Forbid to Remove Members on the Manage page in your DAO.
Click Create voting and create a vote. Once it is activated, GT Burning will be disabled permanently.
Disabling and freezing GT Burning permanently forbids decreasing the current number of GT. If you plan to remove DAO members through GT Burning rather than redistribution, do not freeze this feature.
# DAO Features (/evm/guides-for-gt/dao-page/manage/dao-features)
This section brings together the votes that change the rules for issuing and burning DAO tokens.
GT grants the right to govern, so its minting and burning can only ever be forbidden permanently (Forbid) — this protects the composition of managers from unexpected changes. LP reflects a share in the assets, and its minting and burning can be flexibly enabled, disabled, and frozen depending on the DAO's strategy.
Vote to change the GT Minting status:
Vote to change the GT Burning status:
Votes to change the LP Minting status:
Votes to change the LP Burning status:
# Add Manager (/evm/guides-for-gt/dao-page/manage/gt-management/add-manager)
DAOs often have a member whom the rest of the members fully trust and are willing to give full access to managing the DAO. In XDAO, we call such members Managers.
A Manager doesn't need permission to carry out any operations: any vote they create is immediately available for activation. Make sure the Manager you choose won't harm the DAO or move all its funds to their own wallet.
To grant a member Manager rights in the DAO:
Copy the public address of the member you want to grant Manager rights to.
Only DAO members who hold GT can become a Manager.
Click Add Manager on the Manage page in your DAO.
Enter the public address of the member you want to appoint as Manager.
After the vote is created and activated, a Manager will be appointed in the DAO. The Manager will appear in the DAO Permitted Addresses section on the Info page in your DAO.
# Add Member (/evm/guides-for-gt/dao-page/manage/gt-management/add-member)
Adding a new member to the DAO is, in essence, a regular vote.
Before creating the vote, make sure GT Minting is enabled, otherwise the transaction will be rejected. GT Minting is always enabled by default.
Click Add Member on the Manage page in your DAO.
To add a member, enter their public address and the amount of GT.
After the vote is created and activated, the specified amount of GT will be sent to the new DAO member, and they will appear in the DAO members section on the Activity page in your DAO.
You can also add GT to an existing DAO member to increase the voting power of a specific person or your own. The procedure is the same.
# Change Members' Power (/evm/guides-for-gt/dao-page/manage/gt-management/change-members-power)
Governance Tokens (GT) cannot be sent to another wallet via a regular transfer — this is done to prevent manipulation of voting.
Whenever you try to send a governance token using transfer or transferFrom, you will get the error message: `GT: transfer is prohibited`.
Instead, a member can simply transfer their GT to someone through a vote.
Click Change Members' Power on the Manage page in your DAO.
To transfer GT from one member to another, enter the public addresses of the sender and recipient members, as well as the amount of GT.
After the vote is created and activated, the specified amount of GT will be moved to the recipient.
This option is especially useful if GT Minting is disabled and frozen in your DAO — in that case members cannot add a new person by simply minting new tokens; or if GT Burning is disabled and frozen — in that case a member cannot leave the DAO by burning tokens.
The form accepts any sender address and checks whether the specified DAO member has enough GT.
If there isn't enough GT, the error "Not enough GT in this wallet" is shown.
# Change Quorum (/evm/guides-for-gt/dao-page/manage/gt-management/change-quorum)
Quorum is the share of votes (GT) required for a DAO decision to be adopted. It can be changed at any time after the DAO is created. To learn how to choose the right value, see the section [How to choose the right quorum?](/evm/guides-for-gt/create-a-dao/how-to-choose-the-right-quorum).
To change the quorum:
Click Change Quorum on the Manage page in your DAO.
Enter the new quorum number or use the range slider.
After the vote is created and activated, the new quorum will be adopted in the DAO.
# GT Management (/evm/guides-for-gt/dao-page/manage/gt-management)
Governance Tokens (GT) together make up a quorum of 100%. GT is strictly tied to the wallets of DAO members. They have no price, but they are the means by which voting takes place.
Vote to mint GT:
Vote to burn GT:
Vote to move GT between holders:
Vote to change the quorum:
Vote to add a Manager to the DAO:
Vote to remove a Manager from the DAO:
# Remove Manager (/evm/guides-for-gt/dao-page/manage/gt-management/remove-manager)
To revoke a member's Manager rights in the DAO:
Copy the public address of the member whose Manager rights you want to revoke, in the DAO Permitted Addresses section on the Info page in your DAO.
Click Remove Manager on the Manage page in your DAO.
Enter the public address of the member whose Manager rights you want to revoke.
After the vote is created and activated, the Manager will be removed from the DAO Permitted Addresses section on the Info page in your DAO.
# Remove Member (/evm/guides-for-gt/dao-page/manage/gt-management/remove-member)
Any member can leave the DAO through a vote, and can also create a vote to exclude another member from the DAO.
For this, the GT Burning feature must be enabled. If this requirement is met, go to the Remove Member vote on the Manage page in your DAO.
Copy the public address of the member whose GT tokens you want to take away, in the DAO Members section on the Activity page in your DAO.
Click Remove Member on the Manage page in your DAO.
To exclude a member, enter their public address and the amount of GT.
After the vote is created and activated, the specified amount of GT will be burned from the DAO member, and they will be removed from the DAO Members section on the Activity page in your DAO.
You can burn GT partially (to reduce the voting power of a specific person or your own) or completely, which effectively means excluding that person (or you) from the DAO.
# Create Crowdfunding (/evm/guides-for-gt/dao-page/manage/investment-activity-management/create-crowdfunding)
Crowdfunding is a public sale: any address can participate in it, or, if a whitelist is set, only addresses from it. This is what distinguishes Crowdfunding from an address-specific Private Offer, available to one particular buyer.
To raise funds for the DAO, launch a Crowdfunding:
Click Create Crowdfunding on the Manage page in your DAO.
Click Start Sale.
[If your DAO does not yet have an LP token, create it.](/evm/guides-for-gt/dao-page/manage/investment-activity-management/create-lp-token)
Specify the Title and Description for your Crowdfunding.
Then, click Next Step and sign the message in your wallet.
Set up the Crowdfunding settings:
* Currency — select a token from the list or specify its smart contract, which you will accept as payment;
* Selling Token — select a token from the list or specify its smart contract, which you will sell to investors, for example an LP token;
* Rate — specify the price of the token being sold;
* Total Sale Amount — specify the maximum amount to be raised.
If needed, you can specify a Time limit — the date and time when the Crowdfunding will end.
Specify Min and Max buy for one address — the minimum and maximum allocation for one address. If needed, you can specify a Whitelist — then only addresses from this list will be able to participate in the Crowdfunding, and you can also set a personal allocation for them.
If needed, specify Vesting for the tokens being sold. Vesting is the gradual unlocking of purchased tokens: the investor does not receive them all at once, but in portions over a set period. Select the start and end date and time of the Vesting.
After setting all the necessary Crowdfunding parameters, click Create voting. Once the vote is activated, the Crowdfunding will be launched.
See also: [how a member buys LP tokens](/evm/users-guide/crowdfunding).
# Create LP Token (/evm/guides-for-gt/dao-page/manage/investment-activity-management/create-lp-token)
To start the fundraising process, the DAO must first issue Liquidity Provider (LP) tokens.
Before creating an LP token, read the section:
To create an LP Token:
Click Create LP Token on the Manage page in your DAO.
Enter the name and symbol of the LP Token.
After creating the vote and activating it, you will create a smart contract for your LP token for the DAO.
The LP token is a standard ERC-20 token with 18 decimal places.
Once the LP Token is created, you will not be able to change the name or symbol of the LP token, since at the moment the LP is created this data is registered on the blockchain and cannot be changed.
All DAOs on XDAO can have only one LP token. It is not possible to create more than one LP token in a DAO.
# Create Private Exit Offer (/evm/guides-for-gt/dao-page/manage/investment-activity-management/create-private-exit-offer)
A Private Exit Offer allows you to burn LP tokens at a special price and receive in exchange a pre-agreed share of the DAO's assets. An offer can be activated only once.
To create a private exit offer:
Click Create Private Exit Offer on the Manage page in your DAO.
Click Add module, and then Create voting, to create a vote to connect your DAO to the Private Exit module. Once the vote is activated, you will be able to proceed to the next step.
Connecting Private Exit to your DAO is only required the first time you interact with a Private Exit Offer.
Specify the public address of the recipient of the private exit offer.
Specify the number of LP tokens that will be burned from the recipient's address if they agree to the offer.
Select the tokens and specify their amount, which are held on the DAO's balance and will be sent to the recipient.
After creating the vote and activating it, you will form a private exit offer for the specific recipient.
Created Private Exit Offers are displayed on the Activity page in your DAO. Let's look at an example of using a Private Exit Offer.
A group of investors agreed to lock up funds for six months and invest them in various DeFi protocols. Early exit is possible, but only with a 50% penalty on the deposit and without receiving any profit. One of the investors needed an early exit, so the DAO manager created a Private Exit Offer. It specified all of the investor's LP tokens, and the type and amount of tokens being sent. The investor, on the DAO page, in the Connections tab and Private Exit module, will see their early exit offer and burn their LP tokens.
Parameters such as the number of LP tokens burned, the type of token sent, and its amount, can be set in any form.
See also: [how the recipient accepts the exit offer](/evm/users-guide/private-exit-offer).
# Create Private Offer (/evm/guides-for-gt/dao-page/manage/investment-activity-management/create-private-offer)
A Private Offer allows you to sell LP tokens to a chosen address at a special price. An offer can be activated only once.
To launch a private offer to sell LP Tokens:
Click Create Private Offer on the Manage page in your DAO.
Select a token from the list or specify its smart contract, for which you will be selling your LPs.
Specify the price of your 1 LP token.
Specify the public address of the buyer of the private offer.
Specify the number of LP tokens you are selling to the buyer.
After creating the vote and activating it, you will form a private offer for the specific buyer.
Created Private Offers are displayed on the Activity page in your DAO.
See also: [how the buyer accepts the offer](/evm/users-guide/private-offer).
# Investment Activity Management (/evm/guides-for-gt/dao-page/manage/investment-activity-management)
In XDAO version 3, Public Offer is no longer available, however a public sale can be run using Crowdfunding.
Vote to create an LP Token:
Vote to create a Private Offer:
Vote to manage Private Offers:
Vote to create a Private Exit Offer:
Vote to manage Private Exit Offers:
Vote to create a Crowdfunding:
Vote to pay dividends:
# Manage Private Exit Offers (/evm/guides-for-gt/dao-page/manage/investment-activity-management/manage-private-exit-offers)
If you want to change the terms of a private exit offer that has already been posted, close the current one and create a new one with the changed terms.
To close a private exit offer for burning an LP token:
Click Manage Private Exit Offers on the Manage page in your DAO.
Click Disable and sign the message in your wallet, to create a vote to close the private exit offer.
Once the vote is activated, you will close the private exit offer to the specific recipient.
# Manage Private Offers (/evm/guides-for-gt/dao-page/manage/investment-activity-management/manage-private-offers)
If you want to change the terms of a private offer that has already been posted, close the current one and create a new one with the changed terms.
To close a private offer to sell LP Token:
Click Manage Private Offers on the Manage page in your DAO.
Click the trash bin icon and sign the message in your wallet, to create a vote to close the private offer.
Once the vote is activated, you will close the private offer to the specific buyer.
# Pay Dividends (/evm/guides-for-gt/dao-page/manage/investment-activity-management/pay-dividends)
To pay dividends to your community or investors:
Click Pay Dividends on the Manage page in your DAO.
Select a token from the list or specify its smart contract, which you will be distributing. This token must be held on the DAO's balance.
Choose the method of distributing the dividends: proportionally (Proportional) among holders of the base token, or upload a list of recipients manually (Manual Distribute).
If you choose Proportional, specify the total number of tokens to send and select the base token to determine dividend recipients based on their holding of a specific token. This can be GT, LP, or any other token.
If you choose Manual Distribute, manually enter the addresses of the recipients and specify the number of tokens for each recipient. XDAO will then automatically calculate the total number of tokens to be distributed.
Click Approve, to allow the Dividends smart contract to interact with the selected token in the DAO.
Click Create voting, to create a vote for the dividend distribution. Once the vote is activated, the dividends will be sent out.
The limit on the number of dividend recipients is set at 50 addresses. If you need to distribute dividends to more users, please reach out on [telegram ](https://t.me/xdao_cis) or [Discord](https://discord.com/invite/axx6uCAb4Y).
# LP Issue (/evm/guides-for-gt/dao-page/manage/dao-features/lp-issue)
LP Minting is the issuance of LP tokens. They are minted every time you create a private offer or crowdfunding. Unlike GT, the LP Minting status can be enabled, disabled, and frozen depending on the DAO's strategy.
The LP owner claims a share in all of the DAO's assets, so we do not recommend freezing the LP status permanently — usually it is enough to temporarily enable and disable minting.
## Enable LP Issue [#enable-lp-issue]
Click Enable LP Issue on the Manage page in your DAO.
Click Create voting and create a vote. Once it is activated, LP Issue will be enabled.
## Disable LP Issue [#disable-lp-issue]
Click Disable LP Issue on the Manage page in your DAO.
Click Create voting and create a vote. Once it is activated, LP Issue will be disabled.
## Freeze the LP Minting status [#freeze-the-lp-minting-status]
Freezing locks the current LP Issue status **permanently** — it cannot be changed afterward.
Click Freeze LP Minting Status on the Manage page in your DAO.
Click Create voting and create a vote. Once it is activated, the current LP Issue status will be frozen permanently.
The changed status is displayed in the DAO features section on the Info page of your DAO.
# LP Redemption (/evm/guides-for-gt/dao-page/manage/dao-features/lp-redemption)
LP Burning is an investor's ability to exit the DAO: burn their LP tokens and receive in return a share of the assets proportional to their number. If burning is disabled, investors will not be able to get their funds back by burning LP. The burning status can be enabled, disabled, and frozen depending on the DAO's strategy.
## Enable LP Burning [#enable-lp-burning]
Click Enable LP Redemption on the Manage page in your DAO.
Click Create voting and create a vote. Once it is activated, LP Burning will be enabled.
## Disable LP Burning [#disable-lp-burning]
Click Disable LP Redemption on the Manage page in your DAO.
Click Create voting and create a vote. Once it is activated, LP Burning will be disabled.
## Freeze the LP Burning status [#freeze-the-lp-burning-status]
Freezing locks the current burning status **permanently** — it cannot be changed afterward.
Click Freeze LP Burning Status on the Manage page in your DAO.
Click Create voting and create a vote. Once it is activated, the current LP Burning status will be frozen permanently.
The changed status is displayed in the DAO features section on the Info page of your DAO.