Skip to content

Relayer


Calls


accept_paying_key

Accepts a paying_key authorization.

# Arguments - auth_id the authorization id to accept a paying_key.

# Errors - AuthorizationError::Invalid if auth_id does not exist for the given caller. - AuthorizationError::Expired if auth_id the authorization has expired. - AuthorizationError::BadType if auth_id was not a AddRelayerPayingKey authorization. - NotAuthorizedForUserKey if origin is not authorized to accept the authorization for the user_key. - NotAuthorizedForPayingKey if the authorization was created an identity different from the paying_key's identity. - UserKeyCddMissing if the user_key is not attached to a CDD'd identity. - PayingKeyCddMissing if the paying_key is not attached to a CDD'd identity. - UnauthorizedCaller if origin is not authorized to call this extrinsic.

Attributes

Name Type
auth_id u64

Python

call = substrate.compose_call(
    'Relayer', 'accept_paying_key', {'auth_id': 'u64'}
)

decrease_polyx_limit

Decrease the available POLYX for a user_key.

# Arguments - user_key the user key of the subsidy to update the available POLYX. - amount the amount of POLYX to remove from the subsidy of user_key.

# Errors - NoPayingKey if the user_key doesn't have a paying_key. - NotPayingKey if origin doesn't match the current paying_key. - UnauthorizedCaller if origin is not authorized to call this extrinsic. - Overlow if the subsidy has less then amount POLYX remaining.

Attributes

Name Type
user_key T::AccountId
amount Balance

Python

call = substrate.compose_call(
    'Relayer', 'decrease_polyx_limit', {
    'amount': 'u128',
    'user_key': 'AccountId',
}
)

increase_polyx_limit

Increase the available POLYX for a user_key.

# Arguments - user_key the user key of the subsidy to update the available POLYX. - amount the amount of POLYX to add to the subsidy of user_key.

# Errors - NoPayingKey if the user_key doesn't have a paying_key. - NotPayingKey if origin doesn't match the current paying_key. - UnauthorizedCaller if origin is not authorized to call this extrinsic. - Overlow if the subsidy's remaining POLYX would have overflowed u128::MAX.

Attributes

Name Type
user_key T::AccountId
amount Balance

Python

call = substrate.compose_call(
    'Relayer', 'increase_polyx_limit', {
    'amount': 'u128',
    'user_key': 'AccountId',
}
)

remove_paying_key

Removes the paying_key from a user_key.

# Arguments - user_key the user key to remove the subsidy from. - paying_key the paying key that was subsidising the user_key.

# Errors - NotAuthorizedForUserKey if origin is not authorized to remove the subsidy for the user_key. - NoPayingKey if the user_key doesn't have a paying_key. - NotPayingKey if the paying_key doesn't match the current paying_key. - UnauthorizedCaller if origin is not authorized to call this extrinsic.

Attributes

Name Type
user_key T::AccountId
paying_key T::AccountId

Python

call = substrate.compose_call(
    'Relayer', 'remove_paying_key', {
    'paying_key': 'AccountId',
    'user_key': 'AccountId',
}
)

set_paying_key

Creates an authorization to allow user_key to accept the caller (origin == paying_key) as their subsidiser.

# Arguments - user_key the user key to subsidise. - polyx_limit the initial POLYX limit for this subsidy.

# Errors - UnauthorizedCaller if origin is not authorized to call this extrinsic.

Attributes

Name Type
user_key T::AccountId
polyx_limit Balance

Python

call = substrate.compose_call(
    'Relayer', 'set_paying_key', {
    'polyx_limit': 'u128',
    'user_key': 'AccountId',
}
)

update_polyx_limit

Updates the available POLYX for a user_key.

# Arguments - user_key the user key of the subsidy to update the available POLYX. - polyx_limit the amount of POLYX available for subsidising the user_key.

# Errors - NoPayingKey if the user_key doesn't have a paying_key. - NotPayingKey if origin doesn't match the current paying_key. - UnauthorizedCaller if origin is not authorized to call this extrinsic.

Attributes

Name Type
user_key T::AccountId
polyx_limit Balance

Python

call = substrate.compose_call(
    'Relayer', 'update_polyx_limit', {
    'polyx_limit': 'u128',
    'user_key': 'AccountId',
}
)

Events


AcceptedPayingKey

Accepted paying key.

(Caller DID, User Key, Paying Key)

Attributes

Name Type Composition
None EventDid [u8; 32]
None AccountId AccountId
None AccountId AccountId

AuthorizedPayingKey

Authorization given for paying_key to user_key.

(Caller DID, User Key, Paying Key, Initial POLYX limit, Auth ID)

Attributes

Name Type Composition
None EventDid [u8; 32]
None AccountId AccountId
None AccountId AccountId
None Balance u128
None u64 u64

RemovedPayingKey

Removed paying key.

(Caller DID, User Key, Paying Key)

Attributes

Name Type Composition
None EventDid [u8; 32]
None AccountId AccountId
None AccountId AccountId

UpdatedPolyxLimit

Updated polyx limit.

(Caller DID, User Key, Paying Key, POLYX limit, old remaining POLYX)

Attributes

Name Type Composition
None EventDid [u8; 32]
None AccountId AccountId
None AccountId AccountId
None Balance u128
None Balance u128

Storage functions


Subsidies

The subsidy for a user_key if they are being subsidised, as a map user_key => Subsidy.

A key can only have one subsidy at a time. To change subsidisers a key needs to call remove_paying_key to remove the current subsidy, before they can accept a new subsidiser.

Python

result = substrate.query(
    'Relayer', 'Subsidies', ['AccountId']
)

Return value

{'paying_key': 'AccountId', 'remaining': 'u128'}

Errors


NoPayingKey

The user_key doesn't have a paying_key.


NotAuthorizedForPayingKey

The signer is not authorized for paying_key.


NotAuthorizedForUserKey

The signer is not authorized for user_key.


NotPayingKey

The user_key has a different paying_key.


Overflow

The remaining POLYX for user_key overflowed.


PayingKeyCddMissing

The user_key is not attached to a CDD'd identity.


UserKeyCddMissing

The user_key is not attached to a CDD'd identity.