Function: addBLSPublicKey()
The function adds a BLS public key to the list of service nodes, requiring a proof-of-possession signature, and optionally includes multiple contributors.
Inputs
blsPubKeyValidation: Must match with
blsSignatureand must not be an already usedblsPubKey.Impact: A 64-byte BLS public key to identify the service node.
blsSignatureValidation: Must match with
blsPubKey.Impact: A 128-byte BLS proof-of-possession signature that proves ownership of the
blsPubkey.
serviceNodeParamsValidation: N/A.
Impact: Includes the x25519 public key and signature to be added to the service node, as well as the fee charged by the operator.
contributorsValidation: The number of contributors must be less than
_maxContributors, and the first element of contributors must be the operator of the service node.Impact: Represents a list of contributors for service nodes with multiple contributors.
Branches and code coverage (including function calls)
Intended branches
Negative behavior
Function call analysis
validateProofOfPossession(blsPubKey, blsSignature, caller, serviceNodeParams.serviceNodePubkey)External/Internal? Internal.
Argument control:
blsPubKey,blsSignature,caller, andserviceNodeParams.serviceNodePubkey.Impact: Validate the BLS signature of the proof of possession to ensure the private key is known.
updateBLSNonSignerThreshold()External/Internal? Internal.
Argument control: N/A.
Impact: The function updates the internal threshold for the maximum number of non-signers allowed in an aggregate BLS signature before it can be validated.
SafeERC20.safeTransferFrom(designatedToken, caller, address(this), _stakingRequirement)External/Internal? External.
Argument control:
caller.Impact: Collects the
designatedTokenfrom the caller in the amount of the predefined_stakingRequirement.