I have a simple contract/circuit, and i'd like to know when is the resulting verification key meant to change? Because from my observation, changing the 'const field' to a different value, does not change the verification key. Is this meant to be? Note: there are actually two constants, both Fields in these examples.
class TestContract extends SmartContract {
@method
assert() {
const field = Field(0);
field.assertEquals(Field(0));
}
}
// const field = Field(0) and .assertEquals(Field(0))
verification key: 7948290093200245896508944589480762942981031779572753481662585512495325656000
// const field = Field(1) and .assertEquals(Field(1))
verification key: 7948290093200245896508944589480762942981031779572753481662585512495325656000
^^ same verification key in both const cases
^^ both verification keys are the same, even tho the 'circuit constant' (const field) has changed, is this intentional? In my understanding the const should be a part of the circuit therefore i'd expect it to change the verification key when changed
The verification key is changed together with the constant, if .assertLte is used instead of .assertEquals:
// const = Field(0) and .assertLte(Field(0))
verification key: 25042330595415981771119229777367115064043240572771754696131063485884945220088
// const = Field(0) and .assertLte(Field(1))
verification key: 5450372029939486778107747299903230310201247331835086151068760972857259830379
^^ different verification key
Summoning pioneers of snarky @full flare @viscid nymph @swift horizon 👀