Skip to main content

Staked Expenditure (StakedExpenditure)

This extension allows users without the Administration permission to create expenditures by posting a small stake. If the expenditure is refined and finalized without issue, then the stake is returned. If for whatever reason the creator is found to have acted inapproriately, they run the risk of losing their stake.

Interface Methods

cancelAndPunish(uint256 _permissionDomainId, uint256 _childSkillIndex, uint256 _callerPermissionDomainId, uint256 _callerChildSkillIndex, uint256 _expenditureId, bool _punish)

Can only be called by an arbitration user

Parameters

NameTypeDescription
_permissionDomainIduint256The domainId in which the extension has the arbitration permission
_childSkillIndexuint256The index that the _domainId is relative to _permissionDomainId
_callerPermissionDomainIduint256The domainId in which the caller has the arbitration permission
_callerChildSkillIndexuint256The index that the _domainId is relative to _callerPermissionDomainId
_expenditureIduint256The id of the expenditure
_punishboolWhether the staker should be punished by losing an amount of reputation equal to the stake

cancelAndReclaimStake(uint256 _permissionDomainId, uint256 _childSkillIndex, uint256 _expenditureId)

Can only be called by expenditure owner while expenditure is in draft state

Parameters

NameTypeDescription
_permissionDomainIduint256The domainId in which the extension has the arbitration permission
_childSkillIndexuint256The index that the _domainId is relative to _permissionDomainId
_expenditureIduint256The id of the expenditure

deprecate(bool _deprecated)

Called when deprecating (or undeprecating) the extension

Parameters

NameTypeDescription
_deprecatedboolIndicates whether the extension should be deprecated or undeprecated

finishUpgrade()

Called when upgrading the extension

getStake(uint256 _expenditureId):Stake stake

Get the stake for an expenditure

Parameters

NameTypeDescription
_expenditureIduint256The id of the expenditure to get the stake for

Return Parameters

NameTypeDescription
stakeStakeThe stake, a struct holding the staker's address and the stake amount

getStakeFraction():uint256 _stakeFraction

Get the stake fraction

Return Parameters

NameTypeDescription
_stakeFractionuint256The stake fraction

identifier():bytes32 _identifier

Returns the identifier of the extension

Return Parameters

NameTypeDescription
_identifierbytes32The extension's identifier

install(address _colony)

Configures the extension

Parameters

NameTypeDescription
_colonyaddressThe colony in which the extension holds permissions

makeExpenditureWithStake(uint256 _permissionDomainId, uint256 _childSkillIndex, uint256 _domainId, bytes memory _key, bytes memory _value, uint256 _branchMask, bytes32[] memory _siblings)

Make an expenditure by putting up a stake

Parameters

NameTypeDescription
_permissionDomainIduint256The domainId in which the extension has the administration permission
_childSkillIndexuint256The index that the _domainId is relative to _permissionDomainId,
_domainIduint256The domain where the expenditure belongs
_keybytesA reputation hash tree key, of the total reputation in _domainId
_valuebytesReputation value indicating the total reputation in _domainId
_branchMaskuint256The branchmask of the proof
_siblingsbytes32[]The siblings of the proof

reclaimStake(uint256 _expenditureId)

Reclaims the stake if the expenditure is finalized or cancelled

Parameters

NameTypeDescription
_expenditureIduint256The id of the expenditure

setStakeFraction(uint256 _stakeFraction)

Sets the stake fraction

Parameters

NameTypeDescription
_stakeFractionuint256WAD-denominated fraction, used to determine stake as fraction of rep in domain

uninstall()

Called when uninstalling the extension

version():uint256 _version

Returns the version of the extension

Return Parameters

NameTypeDescription
_versionuint256The extension's version number