Therefore the total work done per block, in the optimistic case, if there are T transactions and V validators, by role:

  • Block proposer:

    • ciphertext validity check: 2T pairings
    • combine decryption shares: T*V pairings plus T multiplies in G_t
  • Block signer:

    • ciphertext validity check: T+1 pairings plus T multiplies in each G_1 and G_2
    • create decryption shares: T multiplies of G_1, T multiplies in G_t
    • verify decryption shares: V+1pairings plus 2T multiplies in G_1
    • verify combination: V pairings plus V+T multiplies in G_t
  • Full node:

    • verify decryption shares: V+1 pairings plus 2T multiplies in G_1
    • verify combination: V pairings plus V+T multiplies in G_t
  • Long term storage per block (this does assume ephemeral data is pruned):

    • aggregated decryption shares (of invalid tx): V elements of G_1 ( 48*V bytes)
    • combined shares (of invalid tx): T elements of G_t (400*T bytes)