Skip to main content

Funding Queue (FundingQueue)

Funding Queues are a core mechanic described in the Colony whitepaper, allowing for teams to allocate resources in a distributed manner. Members of a colony can make and back funding proposals, requesting that some number of tokens be transferred between domains. The more reputation backing a proposal, the more quickly the proposal is fulfilled, up to a maximum of half of the source domain's assets per week. By creating and backing funding proposals throughout the colony, a steady flow of resources from the root through the domains can be achieved.

This is a Colony Extension which conforms to the extension interface found here.

Interface Methods

authority():DSAuthority authority

Get the authority of the contract

Return Parameters

NameTypeDescription
authorityDSAuthorityThe authority of the contract

backProposal(uint256 _id, uint256 _backing, uint256 _currPrevId, uint256 _newPrevId, bytes memory _key, bytes memory _value, uint256 _branchMask, bytes32[] memory _siblings)

Back a funding proposal and advance it along the list

Parameters

NameTypeDescription
_iduint256The proposal Id
_backinguint256The amount of backing to give the proposal (up to user's reputation)
_currPrevIduint256The current previous proposal in the list
_newPrevIduint256The new previous proposal after we re-arrange
_keybytesA reputation hash tree key, of the caller's reputation in _domainId
_valuebytesReputation value indicating the caller's reputation in _domainId
_branchMaskuint256The branchmask of the proof
_siblingsbytes32[]The siblings of the proof

cancelProposal(uint256 _id, uint256 _prevId)

Cancel a funding proposal and remove from linked list

Parameters

NameTypeDescription
_iduint256The proposal Id
_prevIduint256The id of the preceding proposal in the linked list

createProposal(uint256 _domainId, uint256 _fromChildSkillIndex, uint256 _toChildSkillIndex, uint256 _fromPot, uint256 _toPot, uint256 _totalRequested, address _token)

Create a new funding proposal

Parameters

NameTypeDescription
_domainIduint256The domain the extension has the funding permission
_fromChildSkillIndexuint256The index of the fromPot's domain in _domainId.children[]
_toChildSkillIndexuint256The index of the toPot's domain in _domainId.children[]
_fromPotuint256Funding pot id providing the funds
_toPotuint256Funding pot id receiving the funds
_totalRequesteduint256The total amount being requested
_tokenaddressThe token being transferred

deprecate(bool _deprecated)

Called when deprecating (or undeprecating) the extension

Parameters

NameTypeDescription
_deprecatedboolIndicates whether the extension should be deprecated or undeprecated

executeMetaTransaction(address _user, bytes memory _payload, bytes32 _sigR, bytes32 _sigS, uint8 _sigV):bytes returnData

Main function to be called when user wants to execute meta transaction. The actual function to be called should be passed as param with name functionSignature Here the basic signature recovery is being used. Signature is expected to be generated using personal_sign method.

Parameters

NameTypeDescription
_useraddressAddress of user trying to do meta transaction
_payloadbytesFunction call to make via meta transaction
_sigRbytes32R part of the signature
_sigSbytes32S part of the signature
_sigVuint8V part of the signature

Return Parameters

NameTypeDescription
returnDatabytesReturn data returned by the actual function called

finishUpgrade()

A function to be called after an upgrade has been done from v2 to v3.

Note: Can only be called by the colony itself, and only expected to be called as part of the upgrade() call. Required to be external so it can be an external call.

getCapabilityRoles(bytes4 _sig):bytes32 roles

Gets the bytes32 representation of the roles authorized to call a function

Parameters

NameTypeDescription
_sigbytes4The function signature

Return Parameters

NameTypeDescription
rolesbytes32bytes32 representation of the authorized roles

getColony():address colony

Gets the address of the extension's colony

Return Parameters

NameTypeDescription
colonyaddressThe address of the colony

getDeprecated():bool deprecated

Gets the boolean indicating whether or not the extension is deprecated

Return Parameters

NameTypeDescription
deprecatedboolBoolean indicating whether or not the extension is deprecated

getMetatransactionNonce(address userAddress):uint256 nonce

Gets the next metatransaction nonce for user that should be used targeting this contract

Parameters

NameTypeDescription
userAddressaddressThe address of the user that will sign the metatransaction

Return Parameters

NameTypeDescription
nonceuint256The nonce that should be used for the next metatransaction

getNextProposalId(uint256 _id):uint256 nextId

Gets the id of the next proposal in the list

Parameters

NameTypeDescription
_iduint256The proposal Id

Return Parameters

NameTypeDescription
nextIduint256The next proposal Id in the list

getProposal(uint256 _id):Proposal proposal

Get the proposal struct for a given proposal

Parameters

NameTypeDescription
_iduint256The proposal Id

Return Parameters

NameTypeDescription
proposalProposalThe proposal struct

getProposalCount():uint256 count

Get the total number of proposals

Return Parameters

NameTypeDescription
countuint256The count

getSupport(uint256 _id, address _supporter):uint256 support

Gets the reputation support from a user to a proposal

Parameters

NameTypeDescription
_iduint256The proposal Id
_supporteraddressThe supporter

Return Parameters

NameTypeDescription
supportuint256The support amount

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

multicall(bytes[] calldata _data):bytes[] results

Call multiple functions in the current contract and return the data from all of them if they all succeed

Note: The msg.value should not be trusted for any method callable from multicall.

Parameters

NameTypeDescription
_databytes[]The encoded function data for each of the calls to make to this contract

Return Parameters

NameTypeDescription
resultsbytes[]The results from each of the calls passed in via data

owner():address owner

Get the owner of the contract

Return Parameters

NameTypeDescription
owneraddressThe owner of the contract

pingProposal(uint256 _id)

Transfer the marginal funds

Parameters

NameTypeDescription
_iduint256The proposal Id

reclaimStake(uint256 _id)

Reclaim the stake after the proposal is funded

Parameters

NameTypeDescription
_iduint256The proposal Id

setOwner(address owner_)

Set the owner of the contract

Parameters

NameTypeDescription
owner_addressThe new owner of the contract

stakeProposal(uint256 _id, bytes memory _key, bytes memory _value, uint256 _branchMask, bytes32[] memory _siblings)

Stake a funding proposal

Parameters

NameTypeDescription
_iduint256The proposal Id
_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

uninstall()

Called when uninstalling the extension

verify(address _user, uint256 _nonce, uint256 _chainId, bytes memory _payload, bytes32 _sigR, bytes32 _sigS, uint8 _sigV):bool bool

Verifies the signature for the metatransaction

Parameters

NameTypeDescription
_useraddressAddress of user trying to do meta transaction
_nonceuint256Nonce of the user
_chainIduint256Chain id where the signature is valid for
_payloadbytesFunction call to make via meta transaction
_sigRbytes32R part of the signature
_sigSbytes32S part of the signature
_sigVuint8V part of the signature

Return Parameters

NameTypeDescription
boolboolindicating if the signature is valid or not

version():uint256 colonyVersion

Get the Colony contract version. Starts from 1 and is incremented with every deployed contract change.

Return Parameters

NameTypeDescription
colonyVersionuint256Version number