deploy_contract.zk 815 B

1234567891011121314151617181920212223242526272829
  1. constant "DeployContract" {
  2. EcFixedPointBase NULLIFIER_K,
  3. }
  4. contract "DeployContract" {
  5. # Amount of bytes to store on-chain
  6. Base bytes,
  7. # Deploy key used for signing and contract reference
  8. Base deploy_key,
  9. }
  10. circuit "DeployContract" {
  11. # Derive a public key used for the signature and constrain
  12. # its coordinates:
  13. signature_public = ec_mul_base(deploy_key, NULLIFIER_K);
  14. signature_x = ec_get_x(signature_public);
  15. signature_y = ec_get_y(signature_public);
  16. constrain_instance(signature_x);
  17. constrain_instance(signature_y);
  18. # Derive the contract address from the public key's coordinates
  19. address = poseidon_hash(signature_x, signature_y);
  20. constrain_instance(address);
  21. # Constrain the byte size of the deployed binaries
  22. constrain_instance(bytes);
  23. # TODO: Fee cost for storing this data on-chain
  24. }