You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on May 22, 2023. It is now read-only.
Call openKeepFeeEstimate and openKeep when Random Beacon clients are functional.
After group selection beacon is called for a new random entry. When entry is ready
the group selection seed is updated with the entry value in the BondedECDSAKeepFactory.
Call openKeepFeeEstimate and openKeep when Random Beacon clients are not working.
fee estimate is returned
a keep is created successfully after providing the estimated fee
Batch calls to Random Beacon: openKeepFeeEstimate and openKeep called n times quickly one after another
openKeepFeeEstimate should return the same value for each single call
openKeep should expect the same fee to be passed
all calls should succeed
the factory should be correctly reseed
reseed pool should have enough funds to trigger n-1 refunds
Reseed BondedECDSAKeepFactory when there are no funds in the reseed pool
When entry is ready the group selection seed is updated with the entry value in
the BondedECDSAKeepFactory.
Reseed BondedECDSAKeepFactory when there is enough funds in the pool to reseed
with no additional payment.
When entry is ready the group selection seed is updated with the entry value in
the BondedECDSAKeepFactory.
Reseed BondedECDSAKeepFactory with payment lower than estimated fee.
Random Beacon Integration
Call openKeepFeeEstimate and openKeep when Random Beacon clients are functional.
After group selection beacon is called for a new random entry. When entry is ready
the group selection seed is updated with the entry value in the BondedECDSAKeepFactory.
Call openKeepFeeEstimate and openKeep when Random Beacon clients are not working.
Batch calls to Random Beacon:
openKeepFeeEstimate
andopenKeep
calledn
times quickly one after anotheropenKeepFeeEstimate
should return the same value for each single callopenKeep
should expect the same fee to be passedn-1
refundsReseed BondedECDSAKeepFactory when there are no funds in the reseed pool
the BondedECDSAKeepFactory.
Reseed BondedECDSAKeepFactory when there is enough funds in the pool to reseed
with no additional payment.
the BondedECDSAKeepFactory.
Reseed BondedECDSAKeepFactory with payment lower than estimated fee.
Open Keep
Positive scenarios
Request with minimum group size (1) and threshold = group size ❌ Improve validation of group size and threshold input parameters #392
Request with group size # 3 and threshold = group size
Request with maximum group size (16) and threshold = group size
Request with threshold = 1
Request with threshold = group size - 1
Request with threshold = group size
Request
n
keeps at once:n
= 10n
= 50n
= 100n
= 1000Request keeps for two different Sanctioned Applications supported by at least
one client at once
Signers that are not part of the keep ignore the request
Verify logs.
Expected results:
Negative scenarios
Request with group size = 0
Request with threshold = 0
Request with threshold = group size + 1
Call from not supported Sanctioned Application
Call from address that is not backed by any operator as a Sanctioned Application.
Request for group size greater than the number of registered clients
Client Unavailability
Request when one of the clients selected to the group is down and
threshold = group size
Start a client so it's registered in the pool and close the client. Request a new
keep where the client is on the list of selected members.
Temporarily break a client while generating a group key when threshold = group size
restart the client (pod)
remove the client from kubernetes service
within a generation timeout.
Permanently break a client while generating a group key when threshold = group size
Disable the client (pod)
Sign
Positive scenarios
Request signature from keep with group size = 1 ❌ Improve validation of group size and threshold input parameters #392
Request signature from keep with group size = 3
Request signature from keep with maximum group size (16)
Request signatures from
n
keeps at once:n
= 10n
= 50n
= 100n
= 1000Request signatures for two different Sanctioned Applications from keeps
supported by the same client
Signers that are not part of the keep ignore the request
Verify logs.
Expected results:
Negative scenarios
Request signature before the public key is generated
Request gets rejected, public key has not been set yet.
Request signature from a closed keep
Request gets rejected, keep is not active.
Multiple concurrent executions for the same keep
Request gets rejected, only one signing process at a time is possible.
Client Unavailability
Request when one of the signers is down and threshold = group size
Close the client before new signature is requested. Start the client after other clients received signing request.
Request when one of the clients selected to the group is down and
threshold = group size - 1 - ❗ THRESHOLD SIGNING IS NOT SUPPORTED
Close the client before new signature is requested.
Temporarily break a client while calculating a signature when threshold = group size
When client is back up it should continue signature calculation as it rejoins the process
within a generation timeout.
Permanently break a client while calculating a signature when threshold = group size
Key generation should fail due to a timeout.
Close Keep
Call closeKeep by the keep owner
Clients should stop supporting the keep and archive their data
Seize Signer Bonds
Call seizeSignerBonds by the keep owner
Clients should stop supporting the keep and archive it's data
Submit Signature Fraud
🚫 Blocked by keep-network/keep-core#1588
To test these scenarios easier we should expect a network of 3 operator nodes
and keeps with group size of 3.
Below tests should be executed for two situations:
Submit valid signature fraud when one of keeps members operators has just
a minimum stake
Submit valid signature fraud for operators that have multiplies of the minimum stake
The text was updated successfully, but these errors were encountered: