RadNi / prysm

Timelock Delay Encryption enabled Ethereum proof of stake
https://prysmaticlabs.com
GNU General Public License v3.0
1 stars 0 forks source link

Timelock Logic #10

Open RadNi opened 1 year ago

RadNi commented 1 year ago

This issue track will contain the process for adding the Timelock logic. Here are the steps that we need to take:

New theoretic problems: BLS signature requires the AttestationData objects to share the exact same message; however, our TimelockPublickey piece is problematic for the signature aggregation. Currently, we exclude all the TimelockPublicKeys from for signature processes. Accordingly, the block producer can include whatever publicly that they want which is totally insecure (enough for MVP). The obvious idea is to add separate signatures for each publicKey share but it makes the system impractical for light clients. Because of the nice property of our underlying messages (Timelock publicKeys should be multiplied together), there might be a way to extend BLS signature generation/verification to support our need. It needs further investigation though.

RadNi commented 1 year ago

We currently use a placeholder to produce and verify BLS signature over TimelocPublicKey inside the AttestationData:

Verification:

https://github.com/RadNi/prysm/blob/5f54308cf381c67d71801a81de899c833bc49596/beacon-chain/core/blocks/signature.go#L215-L217

Generation:

https://github.com/RadNi/prysm/blob/5f54308cf381c67d71801a81de899c833bc49596/beacon-chain/rpc/prysm/v1alpha1/validator/attester.go#L133-L143

Mock aggregation:

https://github.com/RadNi/prysm/blob/5f54308cf381c67d71801a81de899c833bc49596/proto/prysm/v1alpha1/attestation/aggregation/attestations/maxcover.go#L183-L192