跳到主要内容

DAO Known Issues

DAOs are currently under development. Be sure to read this list carefully before using the DAO primitive.

As of Chia version 2.1.4, the following DAO issues are known to exist:

Proposal Spam

Under normal circumstances, an attacker can create a malicious proposal to drain the DAO of its treasury. However, even if the attacker has secured enough YES votes to meet the attendance_required threshold to pass the proposal, the soft_close_length will protect against this type of attack. As long as a sufficient number of NO votes are added prior to the expiration of the soft_close_length, the proposal (and the attack) will fail.

However, prior to creating this proposal, the attacker can use proposal spam to improve the chances of the attack's success.

The DAO wallet subscribes to PROPOSAL coins by hinting the TREASURY_ID in the memos field upon the coin's creation. To release the coins, launch the wallet from main, and then run the release_coins command.

  • There is a limit on the number of items a full_node will return to a wallet based on a subscribed puzzle_hash (including hinted coins): * trusted_max_subscribe_response_items: 500000 * max_subscribe_response_items: 100000
  • Mitigation: This issue only exists in the 2.1.2 release.

The attacker can take advantage of this limit by creating multiple coins, each of which contains a hint equal to the TREASURY_ID. Eventually a wallet will no longer get any additional coin states for newer coins from a full_node via the coin state subscription. This is the "proposal spam" part of the attack.

If the attacker has created a sufficient number of the aforementioned coins to reach the subscription limit, the malicious proposal will be invisible to the wallets of every other DAO member. If the members are not alerted to the existence of the malicious proposal in some other way, the soft_close_length will eventually be reached, and the proposal will succeed.

Fake Proposals to lock DAO CATs

An attacker can create spam proposals with the intent of locking DAO_CATs into voting mode permanently. There are two ways to accomplish this:

  • Create otherwise valid PROPOSAL coins which don't meet the proposal minimum amount (e.g. 0 or 1 mojo coins).
  • Create proposals without a timer coin.

In the event that such proposals are voted on by users, because the proposals can never be closed (even via self-destruct), any users who voted on these proposals will never be able to unlock the coins they voted with. Note that coins in this state could continue to be used to vote on other proposals.

The current mitigation to this is that the wallet will filter out any proposals which either don't meet the proposal minimum amount or don't have valid timer coins. It is strongly suggested to use the show_proposal command with any proposal that you intend to vote on, and check that it is valid.

Changing a DAO's settings

Because each proposal is voted on and enacted independently, it is possible to have a situation where a proposal to change one or more of the DAO's settings passes while another proposal is active. In this case, the active proposal will take on the new rules imposed by the proposal to change the DAO's settings. This situation could cause the existing proposal to fail, even if it would have passed under the original rules. Other side effects are also possible.

Because of this anomaly, a vote for a proposal to change the DAO's settings could affect any of the DAO's other active proposals. Therefore, members are strongly encouraged to examine all open proposals when deciding whether to vote for a proposal to change the DAO's settings.