Skip to main content

One Transaction Payment Extension (OneTxPayment)

Ordinarily payments require more than one transaction, because the payment lifecycle requires more than one permissioned role.

In some use cases, there might be a need for one authorized individual to be able to create, funds, and finalize a payment within a single transaction.

The OneTxPayment extension adds this functionality by adding a makePayment function which requires the caller to have both Funding and administration ability within the domain of the payment.

Extension therefore requires Administration and Funding roles to function.

Note: if you deployed your Colony using the Dapp, the OneTxPayment extension is already installed for you

Interface Methods

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

getCapabilityRoles(bytes4 _sig):bytes32 _roles

Return the permissions required for each function

Parameters

NameTypeDescription
_sigbytes4The function signature

Return Parameters

NameTypeDescription
_rolesbytes32The byte32 of permissions required

getMetatransactionNonce(address userAddress):uint256 nonce

Gets the next nonce for a meta-transaction

Parameters

NameTypeDescription
userAddressaddressThe user's address

Return Parameters

NameTypeDescription
nonceuint256The nonce

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

makePayment(uint256 _permissionDomainId, uint256 _childSkillIndex, uint256 _callerPermissionDomainId, uint256 _callerChildSkillIndex, address[] memory _workers, address[] memory _tokens, uint256[] memory _amounts, uint256 _domainId, uint256 _skillId)

Completes a colony payment in a single transaction

Note: Assumes that each entity holds administration and funding roles in the root domain

Parameters

NameTypeDescription
_permissionDomainIduint256The domainId in which the contract has permissions to add a payment and fund it
_childSkillIndexuint256Index of the _permissionDomainId skill.children array to get
_callerPermissionDomainIduint256The domainId in which the caller has the administration permission (must have funding in root)
_callerChildSkillIndexuint256Index of the _callerPermissionDomainId skill.children array to get
_workersaddress[]The addresses of the recipients of the payment
_tokensaddress[]Addresses of the tokens the payments are being made in. 0x00 for Ether.
_amountsuint256[]amounts of the tokens being paid out
_domainIduint256The domainId the payment should be coming from
_skillIduint256The skillId that the payment should be marked with, possibly awarding reputation in this skill.

makePaymentFundedFromDomain(uint256 _permissionDomainId, uint256 _childSkillIndex, uint256 _callerPermissionDomainId, uint256 _callerChildSkillIndex, address[] memory _workers, address[] memory _tokens, uint256[] memory _amounts, uint256 _domainId, uint256 _skillId)

Completes a colony payment in a single transaction

Note: Assumes that each entity holds administration and funding roles in the same domain, although contract and caller can have the permissions in different domains. Payment is taken from domain funds - if the domain does not have sufficient funds, call will fail.

Parameters

NameTypeDescription
_permissionDomainIduint256The domainId in which the contract has permissions to add a payment and fund it
_childSkillIndexuint256Index of the _permissionDomainId skill.children array to get
_callerPermissionDomainIduint256The domainId in which the caller has permissions to add a payment and fund it
_callerChildSkillIndexuint256Index of the _callerPermissionDomainId skill.children array to get
_workersaddress[]The addresses of the recipients of the payment
_tokensaddress[]The addresses of the token the payments are being made in. 0x00 for Ether.
_amountsuint256[]The amounts of the tokens being paid out
_domainIduint256The domainId the payment should be coming from
_skillIduint256The skillId that the payment should be marked with, possibly awarding reputation in this skill.

uninstall()

Called when uninstalling the extension

version():uint256 _version

Returns the version of the extension

Return Parameters

NameTypeDescription
_versionuint256The extension's version number