DSSpellis an un-owned object that performs one action or series of atomic actions (multiple transactions) one time only. This can be thought of as a one-off DSProxy with no owner (no DSAuth mix-in, it is not a DSThing).
spell.solcontract contains two main contracts: DSSPELL and DSSpellBook. DSSPELL is the core contract that, with call instructions set in the constructor, can actually perform the one-time action. DSSpellBook is a factory contract designed to make the creation of DSSPELLs easier.
whom- is the address the spell is targeting, usually SAI_MOM in SCD.
mana- is the amount of ETH you are sending, which in spells it is usually 0.
data- bytes memory calldata.
done- indicates that the spell has been called successfully.
hat- A spell comes into effect as the hat when someone calls the lift function. This is only possible when the spell in question has more MKR voted towards it than the current hat.
cast- Once a spell has become the hat, it can be cast and its new variables will go into effect as part of the live Maker system. It is worth noting that a spell can only be cast once.
lift- The process whereby a new spell replaces the old proposal.
lifthave more to do with
ds-spellbut are important to mention here for context.
dataare set in the constructor, so the action a spell is to perform cannot be changed after the contract has been deployed.
spell- A spell may remain uncast if it did not reach the required amount of MKR in order to pass. If this occurs, the spell may remain available as a later target if enough MKR is voted towards it.
lift- Although spells cannot be cast a second time, they can be lifted to become the hat more than once if enough MKR votes remain on that proposal. The proposals parameters will not go into effect, however any additional spell will need to have more than that amount of MKR voted towards it in order to become the new hat. See forum post for a description of this having once occurred.
cast- If, when
castis called, the spell's one-time action fails,
donedoes not get flipped and the spell remains castable.