A Proposal is used to propose a DAO transaction or to propose a split of the DAO (by choosing a new Curator). This is done by calling the
NewProposal function, which has 6 parameters that need to be set:
|The recipient of the transaction. This is an address, which can only be the address of the DAO itself, the Curator or an address on the whitelist |
|The amount of wei (|
|A short plain text description of the proposal.|
|The data of the proposed transaction. This is used to call functions in the case the |
|The amount of time (in seconds!) to debate and vote on the proposal. Unless this is a proposal for a new Curator, this has to be at least 2 weeks (= 1,209,600 seconds). For a new Curator proposal the minimum is 1 week. It is suggested to have a longer debating and voting period for controversial proposals or when a high amount of ether is proposed to be transferred. The maximum debating period is 8 weeks. (4,838,400 seconds)|
|This is a bool which can only be |
| For a regular proposal there is a minimum Proposal Deposit required, which can be read from the contract using the |
If any of these parameters are set incorrectly, the transaction will fail because the function will throw an exception. This is to protect the user from losing their Proposal Deposit.
The sender of the transaction needs to be a DAO Token Holder. In the case this is a new curator proposal, the
transactionData should be empty and the
amount as well as the amount of ether sent sent with the transaction calling the
NewProposal function should be zero.
It is always best to test any smart contract fully on a testnet before including it as a Proposal.
Do not propose transactions which may throw exceptions when they get executed. This will lead to you losing your deposit to the DAO. Such Proposals will be closed after a short grace period.
Also make sure that the sender is not a smart contract with a fallback function needing more than
9000 gas to get executed. This will make it impossible to pay back the Proposal Deposit and the Proposal will not be executed.