Good morning Weiji,

Have not completed reading, but this jumped out to me:



> 3.  Dealing with system limitation: verification keys could be very long and 
> exceed the MAX_SCRIPT_ELEMENT_SIZE (520 bytes). They could be put into 
> configurations and only use their hash in the scriptPubKey. The configuration 
> information such as new verification keys could be propagated through P2P 
> messages (we might need a separate BIP for this);

`scriptPubKey` is consensus-critical, and these new P2P messages would have to 
be consensus-critical.

As all nodes need to learn the new verification keys, we should consider how 
much resources are spent on each node just to maintain and forever remember 
verification keys.

Currently our resource-tracking methodology is via the synthetic "weight units" 
computation.
This reflects resources spent on acquiring block data, as well as maintaining 
the UTXO database.
For instance, the "witness discount" where witness data (i.e. modern equivalent 
of `scriptSig`) is charged 1/4 the weight units of other data, exists because 
spending a UTXO reduces the resources spent in the UTXO database, although 
still consumes resources in downloading block data (hence only a discount, not 
free or negative/rebate).

Similarly, any propagation of verification keys would need a similar adjustment 
for weight units.

As verification keys MUST be seen by all nodes before they can validate an 
`OP_ZKP`, I would suggest that it is best included in block data (which 
similarly needs to be seen by all nodes), together with some weight unit 
adjustment for that data, depending on how much resources verification keys 
would consume.
This is similar to how `scriptPubKey`s and amounts are included in block data, 
as those data are kept in the UTXO database, which nodes must maintain in order 
to validate the blockchain.

If verification keys are permanent, they should probably be weighted heavier 
than `scriptPubKey`s and amounts --- UTXOs can theoretically be deleted later 
by spending the UTXO (which reduces UTXO database size), while any data that 
must be permanently stored in a database must correspondingly be weighted 
higher.

Similarly, my understanding is that the CPU resources needed by validation of 
generic ZKPs is higher than that required for validation of ECC signatures.
Much of the current weight calculation assumes that witness data is primarily 
ECC signatures, so if ZKP witnesses translate to higher resource consumption, 
the weighting of ZKP witnesses should also be higher (i.e. greater than the 1/4 
witness-discounted weight of current witness data).

Regards,
ZmnSCPxj
_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

Reply via email to