# Child Bounties Pallet ### Config 1. `pallet_child_bounties` uses the following `pallet_treasury` config types: - `type RejectOrigin` (`close_child_bounty` and a special case for `unassign_curator`). - `type OnSlash` (used when a slash occurs). 2. And the following `pallet_bounties` config types: - `type MaximumReasonLength` - `type BountyDepositPayoutDelay` ``` impl pallet_child_bounties::Config for Runtime { type Event = Event; type MaxActiveChildBountyCount = ConstU32<5>; type ChildBountyValueMinimum = ChildBountyValueMinimum; type WeightInfo = pallet_child_bounties::weights::SubstrateWeight<Runtime>; } ``` ### Extrinsics 1. [`add_child_bounty(origin, parent_bounty_id, value, description)`](https://github.com/paritytech/substrate/blob/master/frame/child-bounties/src/lib.rs#L241) * Add a child bounty for a parent bounty to divide the work in smaller tasks. * `origin` must be the curator of the parent bounty. * parent bounty must be `Active`. * parent bounty must have enough balance. * `value` then is transferred from parent to child bounty account. 2. [`propose_curator(origin, parent_bounty_id, child_bounty_id, curator, fee)`](https://github.com/paritytech/substrate/blob/master/frame/child-bounties/src/lib.rs#L315) * Assign an account to a child bounty as candidate curator. * `origin` must be the curator of the parent bounty. * parent bounty must be `Active`. * child bounty must be in `Added` status. * Set status to `CuratorProposed` with `curator`. 3. [`accept_curator(origin, parent_bounty_id, child_bounty_id)`](https://github.com/paritytech/substrate/blob/master/frame/child-bounties/src/lib.rs#L384) * Accept a child bounty assignment from the parent bounty curator, setting a curator deposit. * `origin` must be the assigned curator of the parent bounty. * A deposit will be reserved from the curator and refund upon successful payout. * Set status to `Active`. 4. [`unassign_curator(origin, parent_bounty_id, child_bounty_id)`](https://github.com/paritytech/substrate/blob/master/frame/child-bounties/src/lib.rs#L460) * Unassign an accepted curator from a specific child bounty. * `origin` can be: * the curator, signaling that they don't want to curate anymore (no slash). * `T::RejectOrigin` (from `pallet_treasury`), in that case we slash the curator, considering them malicious or inactive. * anybody else, slash if the curator is inactive. * Set status to `Added` (so another curator can be assigned to it). 5. [`award_child_bounty(origin, parent_bounty_id, child_bounty_id, beneficiary)`](https://github.com/paritytech/substrate/blob/master/frame/child-bounties/src/lib.rs#L574) * Close and payout the specified amount for the completed work. * `origin` must be the parent or the child's curator. * Set status to `PendingPayout` with `beneficiary` and `unlock_at` (delay). 6. [`claim_child_bounty(origin, parent_bounty_id, child_bounty_id)`](https://github.com/paritytech/substrate/blob/master/frame/child-bounties/src/lib.rs#L640) * Claim the payout from an awarded child bounty after payout delay. * `origin` can be any signed origin. * child bounty must be in `PendingPayout` status. * Set `ChildBounties[bounty_id] = None`. * Remove the bounty's description from `ChildBountyDescriptions`. 7. [`close_child_bounty(origin, parent_bounty_id, child_bounty_id)`](https://github.com/paritytech/substrate/blob/master/frame/child-bounties/src/lib.rs#L750) * Cancel a proposed or active child-bounty. * Funds are transferred from child to parent bounty account. * Curator deposit may be unreserved if possible. * `origin` can be: * the parent curator, signaling that they don't want to curate anymore (no slash). * `T::RejectOrigin` (from `pallet_treasury`), in that case we slash the curator, considering them malicious or inactive. * Set `ChildBounties[bounty_id] = None`. * Remove the bounty's description from `ChildBountyDescriptions`. ---