publicStaking
Function Type: external
Function Signature: publicStaking(address,bool,uint256,uint256,bytes,uint256,uint256,bool,bytes)
Function Selector: 0x21cc1749
The publicStaking function enables universal access to MATE token staking when the allowPublicStaking.flag is enabled, regardless of presale participation status or account type.
Note: In this repository's contract implementation the constructor leaves allowPublicStaking.flag disabled by default and enables allowPresaleStaking.flag. Deployments and testnets may use different defaults; consult the deployed contract metadata for runtime flag values.
Parameters
| Parameter | Type | Description |
|---|---|---|
user | address | User address |
isStaking | bool | true = Stake, false = Unstake |
amountOfStaking | uint256 | Amount of staking tokens to stake/unstake |
nonce | uint256 | Staking contract nonce for replay protection |
signature | bytes | Staking contract signature for replay protection |
priorityFee_EVVM | uint256 | EVVM priority fee |
nonce_EVVM | uint256 | EVVM payment operation nonce |
priorityFlag_EVVM | bool | EVVM execution mode (true = async, false = sync) |
signature_EVVM | bytes | EVVM payment authorization |
- If you want to know more about the signature structure, refer to the Standard Staking/Unstaking Signature Structure.
- The EVVM payment signature (
signature_EVVM) follows the Single Payment Signature Structure.
Workflow
The function supports two execution paths:
- Fisher-Mediated: A designated fisher captures the transaction from the fishing spot and submits it to the contract
- Direct User Submission: The user directly submits the transaction to the contract
Staking Process
- Feature Status Verification: Confirms
allowPublicStaking.flagis enabled - Signature Verification: Validates the authenticity of the user signature
- Nonce Validation: Calls internal
verifyAsyncNonce(user, nonce)which reverts withAsyncNonceAlreadyUsed()if the nonce was already used; after successful execution the contract callsmarkAsyncNonceAsUsed(user, nonce)to prevent replays - Process Execution: Calls the internal
stakingBaseProcessfunction with:- User address and IsAService=false in AccountMetadata
- Specified amount of staking tokens
- Standard EVVM payment processing
- Historical record updates and reward distribution
- Nonce Update: Marks the staking nonce as used to prevent replay attacks
For detailed information about the stakingBaseProcess function, refer to the stakingBaseProcess.
Unstaking Process
- Feature Status Verification: Confirms
allowPublicStaking.flagis enabled - Signature Verification: Validates the authenticity of the user signature
- Nonce Validation: Calls internal
verifyAsyncNonce(user, nonce)which reverts withAsyncNonceAlreadyUsed()if the nonce was already used; after successful execution the contract callsmarkAsyncNonceAsUsed(user, nonce)to prevent replays - Process Execution: Calls the internal
stakingBaseProcessfunction with:- User address and IsAService=false in AccountMetadata
- Specified amount of staking tokens
- Standard EVVM payment processing
- Historical record updates and reward distribution
- Nonce Update: Marks the staking nonce as used to prevent replay attacks
For detailed information about the stakingBaseProcess function, refer to the stakingBaseProcess.