-
Notifications
You must be signed in to change notification settings - Fork 234
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor: Transcript handled through shared_ptr #3434
Conversation
Benchmark resultsMetrics with a significant change:
Detailed resultsAll benchmarks are run on txs on the This benchmark source data is available in JSON format on S3 here. Values are compared against data from master at commit L2 block published to L1Each column represents the number of txs on an L2 block published to L1.
L2 chain processingEach column represents the number of blocks on the L2 chain where each block has 16 txs.
Circuits statsStats on running time and I/O sizes collected for every circuit run across all benchmarks.
MiscellaneousTransaction sizes based on how many contracts are deployed in the tx.
|
2d8fbd6
to
32c97b0
Compare
@@ -453,134 +453,7 @@ template <typename BuilderType> class GoblinUltraRecursive_ { | |||
this->databus_id = verification_key->databus_id; | |||
} | |||
}; | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure what this is doing. I don't think we never need to serialize a stdlib transcript, and it was a clashing name, so I removed it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Either way it would be better to reuse the logic from GoblinUltra here so this is fine
* @brief Derived class that defines proof structure for UltraRecursive proofs, as well as supporting functions. | ||
* | ||
*/ | ||
class Transcript : public BaseTranscript { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ditto the previous comment
ac7dfc1
to
aec1f9a
Compare
@@ -35,12 +35,12 @@ template <typename Curve> class IPA { | |||
static void compute_opening_proof(std::shared_ptr<CK> ck, | |||
const OpeningPair<Curve>& opening_pair, | |||
const Polynomial& polynomial, | |||
BaseTranscript& transcript) | |||
std::shared_ptr<BaseTranscript> transcript) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's a mouthful, but the more common idiom is to pass const std::shared_ptr&
and avoid the ref copy. I don't think it matters for performance, but just pointing out the 'idiom aligns with performance' trait
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But don't we explicitly want the ref copy? Otherwise the smart pointer doesn't know how to be smart, no?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
you get this if you don't use const & for example
https://stackoverflow.com/a/8741626
it's a pointer that can be refcounted. But normal RAII usage doesn't need the mechanism
enter a function +1 ref
exit -1 ref
ref can never be below 0, therefore unneeded refcounts
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, not approving so that it doesn't get automerged but my comments are all minor
@@ -321,14 +321,14 @@ template <typename Curve> class ZeroMorphProver_ { | |||
auto&& g_shift_evaluations, | |||
auto& multilinear_challenge, | |||
auto& commitment_key, | |||
auto& transcript, | |||
auto transcript, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The entire code could use a scrub for these sorts of things but doesn't it still make sense to have the ref here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wait I take this back. I think we virtually always want to pass a shared ptr by value otherwise it defeats the purpose of the smart pointer..
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adam looked at best practices and they say to pass by const&
by default 🤷
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ludamad Tying to understand the thinking here. If we want to avoid the ref copy virtually everywhere, why not use a unique pointer? Is the point that we sometimes may want to genuinely use the shared pointer functionality? Otherwise it seems a bit like using a vector instead of an array for something whose size isn't allowed to change.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But a shared pointer that is alive for the whole duration of a function may as well be a raw pointer?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Really dereferencing a shared pointer is only bad if you store the dereferenced result in a structure that actually wants the ref count, there's no reason to ref count something that will live the entire duration of a function anyway
@@ -23,10 +23,13 @@ template <ECCVMFlavor Flavor> class ECCVMProver_ { | |||
using CommitmentLabels = typename Flavor::CommitmentLabels; | |||
using Curve = typename Flavor::Curve; | |||
using Transcript = typename Flavor::Transcript; | |||
// using Transcript = typename Flavor::Transcript; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
delete?
@@ -1205,7 +1205,7 @@ class GoblinTranslator { | |||
class VerifierCommitments : public AllEntities<Commitment> { | |||
public: | |||
VerifierCommitments([[maybe_unused]] std::shared_ptr<VerificationKey> verification_key, | |||
[[maybe_unused]] const BaseTranscript& transcript) | |||
[[maybe_unused]] const std::shared_ptr<BaseTranscript> transcript) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just FYI Adam has a PR that rightfully deletes the unneeded transcript
argument here and in other similar locations so you may get a conflict if that goes in first.
@@ -453,134 +453,7 @@ template <typename BuilderType> class GoblinUltraRecursive_ { | |||
this->databus_id = verification_key->databus_id; | |||
} | |||
}; | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Either way it would be better to reuse the logic from GoblinUltra here so this is fine
@@ -16,6 +16,8 @@ template <class ProverInstances_> class ProtoGalaxyProver_ { | |||
public: | |||
using ProverInstances = ProverInstances_; | |||
using Flavor = typename ProverInstances::Flavor; | |||
using Transcript = typename Flavor::Transcript; | |||
; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
delete?
@@ -15,9 +15,11 @@ template <typename Flavor> class SumcheckProver { | |||
using PartiallyEvaluatedMultivariates = typename Flavor::PartiallyEvaluatedMultivariates; | |||
using ClaimedEvaluations = typename Flavor::AllValues; | |||
using Transcript = typename Flavor::Transcript; | |||
// using Transcript = typename Flavor::Transcript; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
delete?
@@ -329,14 +331,14 @@ class BaseTranscript { | |||
* @details Not supported for base transcript class because it does not have a defined structure. The current | |||
* proof_data object must represent the whole proof and not a partial proof or it will throw an error. | |||
*/ | |||
virtual void deserialize_full_transcript() { throw_or_abort("Cannot deserialize transcript"); } | |||
void deserialize_full_transcript() { throw_or_abort("Cannot deserialize transcript"); } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If these arent virtual and they cant be called, why do they exist at all?
|
||
Flavor::VerifierCommitments commitments{ key, transcript }; | ||
Flavor::CommitmentLabels commitment_labels; | ||
// auto commitments = VerifierCommitments(key, transcript); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
delete?
|
||
Flavor::VerifierCommitments commitments{ key, transcript }; | ||
Flavor::CommitmentLabels commitment_labels; | ||
// auto commitments = VerifierCommitments(key, transcript); | ||
// auto commitment_labels = CommitmentLabels(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
delete?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-packages: 0.16.2</summary> ## [0.16.2](aztec-packages-v0.16.1...aztec-packages-v0.16.2) (2023-12-05) ### Features * Add tree snapshots ([#3468](#3468)) ([7a86bb3](7a86bb3)) * **AVM:** First version for mini AVM (ADD, RETURN, CALLDATACOPY) ([#3439](#3439)) ([b3af146](b3af146)) * Circuit optimized indexed tree batch insertion ([#3367](#3367)) ([187d2f7](187d2f7)) * Devnet ([#3473](#3473)) ([97c40c2](97c40c2)) * **docs:** Add simple private voting tutorial ([#3402](#3402)) ([a6e0352](a6e0352)) * **docs:** Document slow update tree ([#3416](#3416)) ([8e9f103](8e9f103)) * Flavor refactor, reduce duplication ([#3407](#3407)) ([8d6b013](8d6b013)) * Inclusion and non-inclusion proofs experiment ([#3255](#3255)) ([b911e65](b911e65)), closes [#2572](#2572) [#2584](#2584) * New Poseidon2 circuit builder gates ([#3346](#3346)) ([91cb369](91cb369)) * New Poseidon2 relations ([#3406](#3406)) ([14b9736](14b9736)) * Pull latest noir for brillig optimizations ([#3464](#3464)) ([d356bac](d356bac)) * Refactor StandardIndexedTree for abstract leaves and preimages and optimized it ([#3530](#3530)) ([63b9cdc](63b9cdc)) * Removing historical roots from circuits ([#3544](#3544)) ([9f682cb](9f682cb)) * Seperate pil files for sub machines ([#3454](#3454)) ([d09d6f5](d09d6f5)) * Throw compile time error if contract has too many fns ([#3536](#3536)) ([ad66ad0](ad66ad0)) * Use tree snapshots in aztec-node/pxe/oracles ([#3504](#3504)) ([6e40427](6e40427)) * Yellow paper cross-chain communication ([#3477](#3477)) ([d51df8c](d51df8c)) ### Bug Fixes * Check version, chainid and sender for cross-chain l1 to l2 msgs ([#3457](#3457)) ([d251703](d251703)) * **ci:** Add DEPLOY_TAG in fork log group ([#3510](#3510)) ([f021041](f021041)) * **ci:** Check if l1 contracts img has been deployed ([#3531](#3531)) ([ac1f03c](ac1f03c)) * **ci:** Comment out LB listeners (for now) ([#3519](#3519)) ([640aabc](640aabc)) * **ci:** Count for bootnode discovery service ([#3517](#3517)) ([2a38788](2a38788)) * **ci:** Define REPOSITORY in deploy_l1_contracts ([#3514](#3514)) ([b246d1b](b246d1b)) * **ci:** Don't deploy to npm on master merge ([#3502](#3502)) ([a138860](a138860)) * **ci:** Env vars for deploying l1-contracts ([#3513](#3513)) ([27106b2](27106b2)) * **ci:** Export FORK_API_KEY from setup_env ([#3512](#3512)) ([7e81e2c](7e81e2c)) * **ci:** Fix docker architecture for devnet packages ([#3505](#3505)) ([66d0287](66d0287)) * **ci:** Fix faucet vars + don't deploy contracts from node ([#3553](#3553)) ([c7176f6](c7176f6)) * **ci:** L1 contracts directories ([#3545](#3545)) ([63dd0c8](63dd0c8)) * **ci:** Login to ecr to fetch contracts image ([#3538](#3538)) ([b033538](b033538)) * **ci:** Remove unused ADDRESS vars & export private key vars ([#3520](#3520)) ([d889359](d889359)) * **ci:** Set default value for $TO_TAINT ([#3508](#3508)) ([8b6688a](8b6688a)) * **ci:** Terraform listener resources ([#3534](#3534)) ([c3b9cce](c3b9cce)) * **ci:** Terraform_deploy for devnet ([#3516](#3516)) ([ba3803e](ba3803e)) * **ci:** Tf variable references & formatting([#3522](#3522)) ([d37cf52](d37cf52)) * Disable e2e-slow-tree ([#3459](#3459)) ([5927103](5927103)) * **docs:** Update package name of aztec-cli ([#3474](#3474)) ([98d7ba0](98d7ba0)) * Double slash in deployed faucet routes ([#3555](#3555)) ([6c704a5](6c704a5)) * Faucet lb_listener priority ([#3554](#3554)) ([3f56dd7](3f56dd7)) * Handling low_nullifier.next_value equal to 0 ([#3562](#3562)) ([c800502](c800502)), closes [#3550](#3550) * Remove x86_64 form l1-contracts img tag ([#3549](#3549)) ([6828f1a](6828f1a)) * Throw error if fn sig has whitespaces ([#3509](#3509)) ([7671063](7671063)), closes [#3055](#3055) ### Miscellaneous * (yellow paper) public-vm section of yellow paper ([#3493](#3493)) ([8ff3780](8ff3780)) * Add mermaid diagram support ([#3499](#3499)) ([537d552](537d552)) * Add yellow paper build check to CI ([#3490](#3490)) ([3ebd2f2](3ebd2f2)) * **avm:** Enable AVM unit tests in CI ([#3463](#3463)) ([051dda9](051dda9)), closes [#3461](#3461) * **bb:** Pointer_view to reference-based get_all ([#3495](#3495)) ([50d7327](50d7327)) * **bb:** Reuse entities from GoblinUltra in GoblinUltraRecursive ([#3521](#3521)) ([8259636](8259636)) * Build the acir test vectors as part of CI. ([#3447](#3447)) ([1a2d1f8](1a2d1f8)) * Containers reduced to ~100MB total. ~30s installation. ([#3487](#3487)) ([b49cef2](b49cef2)) * **docs:** Fix broken Noir stdlib link ([#3496](#3496)) ([787d59a](787d59a)) * Field-agnostic and reusable transcript ([#3433](#3433)) ([d78775a](d78775a)) * Fix broken link in txs in yellow paper ([#3484](#3484)) ([798565d](798565d)) * Fix yellow paper build error ([32881a4](32881a4)) * Fixed typo in build system ([#3501](#3501)) ([3a80ac2](3a80ac2)) * Increase functions per contract from 16 to 32 ([#3503](#3503)) ([ebdeea3](ebdeea3)) * Naming fixes ([#3476](#3476)) ([1db30bf](1db30bf)) * Optimise bb.js package size and sandox/cli dockerfiles to unbloat final containers. ([#3462](#3462)) ([cb3db5d](cb3db5d)) * Pin node version in docker base images and bump nvmrc ([#3537](#3537)) ([5d3895a](5d3895a)) * Recursive verifier updates ([#3452](#3452)) ([dbb4a12](dbb4a12)) * Refactor `WitnessEntities` to be able to derive `WitnessCommitments` from it ([#3479](#3479)) ([9c9b561](9c9b561)) * Remove temporary logging ([#3466](#3466)) ([8c8387b](8c8387b)) * Transcript handled through shared_ptr ([#3434](#3434)) ([30fca33](30fca33)) * Typo fixes ([#3488](#3488)) ([d9a44dc](d9a44dc)) * **yellow_paper:** Public<>private messaging ([#3491](#3491)) ([6ecc406](6ecc406)) ### Documentation * Add transaction section to yellow paper ([#3418](#3418)) ([44bf30b](44bf30b)) * Apply comments from Jan on contracts ([#3539](#3539)) ([e351873](e351873)) * Fees update in yellow paper ([#3486](#3486)) ([a8b2608](a8b2608)) * First go at generated AVM instruction set doc ([#3469](#3469)) ([8cc54a4](8cc54a4)) * Further update to the yellow paper ([#3542](#3542)) ([751bb6a](751bb6a)) * Yellow paper updates ([#3478](#3478)) ([11f754d](11f754d)) * Yellow paper updates for private message delivery ([#3472](#3472)) ([6ba9e18](6ba9e18)) * **yellow-paper:** Sync, enqueued, and static calls ([#3494](#3494)) ([00835c6](00835c6)), closes [#3108](#3108) * **yellowpaper:** Instruction set updates and fixes ([#3515](#3515)) ([bfb61dd](bfb61dd)) </details> <details><summary>barretenberg.js: 0.16.2</summary> ## [0.16.2](barretenberg.js-v0.16.1...barretenberg.js-v0.16.2) (2023-12-05) ### Miscellaneous * Optimise bb.js package size and sandox/cli dockerfiles to unbloat final containers. ([#3462](#3462)) ([cb3db5d](cb3db5d)) * Pin node version in docker base images and bump nvmrc ([#3537](#3537)) ([5d3895a](5d3895a)) </details> <details><summary>barretenberg: 0.16.2</summary> ## [0.16.2](barretenberg-v0.16.1...barretenberg-v0.16.2) (2023-12-05) ### Features * **AVM:** First version for mini AVM (ADD, RETURN, CALLDATACOPY) ([#3439](#3439)) ([b3af146](b3af146)) * Flavor refactor, reduce duplication ([#3407](#3407)) ([8d6b013](8d6b013)) * New Poseidon2 circuit builder gates ([#3346](#3346)) ([91cb369](91cb369)) * New Poseidon2 relations ([#3406](#3406)) ([14b9736](14b9736)) * Pull latest noir for brillig optimizations ([#3464](#3464)) ([d356bac](d356bac)) * Seperate pil files for sub machines ([#3454](#3454)) ([d09d6f5](d09d6f5)) ### Miscellaneous * **avm:** Enable AVM unit tests in CI ([#3463](#3463)) ([051dda9](051dda9)), closes [#3461](#3461) * **bb:** Pointer_view to reference-based get_all ([#3495](#3495)) ([50d7327](50d7327)) * **bb:** Reuse entities from GoblinUltra in GoblinUltraRecursive ([#3521](#3521)) ([8259636](8259636)) * Build the acir test vectors as part of CI. ([#3447](#3447)) ([1a2d1f8](1a2d1f8)) * Field-agnostic and reusable transcript ([#3433](#3433)) ([d78775a](d78775a)) * Optimise bb.js package size and sandox/cli dockerfiles to unbloat final containers. ([#3462](#3462)) ([cb3db5d](cb3db5d)) * Pin node version in docker base images and bump nvmrc ([#3537](#3537)) ([5d3895a](5d3895a)) * Recursive verifier updates ([#3452](#3452)) ([dbb4a12](dbb4a12)) * Refactor `WitnessEntities` to be able to derive `WitnessCommitments` from it ([#3479](#3479)) ([9c9b561](9c9b561)) * Transcript handled through shared_ptr ([#3434](#3434)) ([30fca33](30fca33)) * Typo fixes ([#3488](#3488)) ([d9a44dc](d9a44dc)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-packages: 0.16.2</summary> ## [0.16.2](AztecProtocol/aztec-packages@aztec-packages-v0.16.1...aztec-packages-v0.16.2) (2023-12-05) ### Features * Add tree snapshots ([#3468](AztecProtocol/aztec-packages#3468)) ([7a86bb3](AztecProtocol/aztec-packages@7a86bb3)) * **AVM:** First version for mini AVM (ADD, RETURN, CALLDATACOPY) ([#3439](AztecProtocol/aztec-packages#3439)) ([b3af146](AztecProtocol/aztec-packages@b3af146)) * Circuit optimized indexed tree batch insertion ([#3367](AztecProtocol/aztec-packages#3367)) ([187d2f7](AztecProtocol/aztec-packages@187d2f7)) * Devnet ([#3473](AztecProtocol/aztec-packages#3473)) ([97c40c2](AztecProtocol/aztec-packages@97c40c2)) * **docs:** Add simple private voting tutorial ([#3402](AztecProtocol/aztec-packages#3402)) ([a6e0352](AztecProtocol/aztec-packages@a6e0352)) * **docs:** Document slow update tree ([#3416](AztecProtocol/aztec-packages#3416)) ([8e9f103](AztecProtocol/aztec-packages@8e9f103)) * Flavor refactor, reduce duplication ([#3407](AztecProtocol/aztec-packages#3407)) ([8d6b013](AztecProtocol/aztec-packages@8d6b013)) * Inclusion and non-inclusion proofs experiment ([#3255](AztecProtocol/aztec-packages#3255)) ([b911e65](AztecProtocol/aztec-packages@b911e65)), closes [#2572](AztecProtocol/aztec-packages#2572) [#2584](AztecProtocol/aztec-packages#2584) * New Poseidon2 circuit builder gates ([#3346](AztecProtocol/aztec-packages#3346)) ([91cb369](AztecProtocol/aztec-packages@91cb369)) * New Poseidon2 relations ([#3406](AztecProtocol/aztec-packages#3406)) ([14b9736](AztecProtocol/aztec-packages@14b9736)) * Pull latest noir for brillig optimizations ([#3464](AztecProtocol/aztec-packages#3464)) ([d356bac](AztecProtocol/aztec-packages@d356bac)) * Refactor StandardIndexedTree for abstract leaves and preimages and optimized it ([#3530](AztecProtocol/aztec-packages#3530)) ([63b9cdc](AztecProtocol/aztec-packages@63b9cdc)) * Removing historical roots from circuits ([#3544](AztecProtocol/aztec-packages#3544)) ([9f682cb](AztecProtocol/aztec-packages@9f682cb)) * Seperate pil files for sub machines ([#3454](AztecProtocol/aztec-packages#3454)) ([d09d6f5](AztecProtocol/aztec-packages@d09d6f5)) * Throw compile time error if contract has too many fns ([#3536](AztecProtocol/aztec-packages#3536)) ([ad66ad0](AztecProtocol/aztec-packages@ad66ad0)) * Use tree snapshots in aztec-node/pxe/oracles ([#3504](AztecProtocol/aztec-packages#3504)) ([6e40427](AztecProtocol/aztec-packages@6e40427)) * Yellow paper cross-chain communication ([#3477](AztecProtocol/aztec-packages#3477)) ([d51df8c](AztecProtocol/aztec-packages@d51df8c)) ### Bug Fixes * Check version, chainid and sender for cross-chain l1 to l2 msgs ([#3457](AztecProtocol/aztec-packages#3457)) ([d251703](AztecProtocol/aztec-packages@d251703)) * **ci:** Add DEPLOY_TAG in fork log group ([#3510](AztecProtocol/aztec-packages#3510)) ([f021041](AztecProtocol/aztec-packages@f021041)) * **ci:** Check if l1 contracts img has been deployed ([#3531](AztecProtocol/aztec-packages#3531)) ([ac1f03c](AztecProtocol/aztec-packages@ac1f03c)) * **ci:** Comment out LB listeners (for now) ([#3519](AztecProtocol/aztec-packages#3519)) ([640aabc](AztecProtocol/aztec-packages@640aabc)) * **ci:** Count for bootnode discovery service ([#3517](AztecProtocol/aztec-packages#3517)) ([2a38788](AztecProtocol/aztec-packages@2a38788)) * **ci:** Define REPOSITORY in deploy_l1_contracts ([#3514](AztecProtocol/aztec-packages#3514)) ([b246d1b](AztecProtocol/aztec-packages@b246d1b)) * **ci:** Don't deploy to npm on master merge ([#3502](AztecProtocol/aztec-packages#3502)) ([a138860](AztecProtocol/aztec-packages@a138860)) * **ci:** Env vars for deploying l1-contracts ([#3513](AztecProtocol/aztec-packages#3513)) ([27106b2](AztecProtocol/aztec-packages@27106b2)) * **ci:** Export FORK_API_KEY from setup_env ([#3512](AztecProtocol/aztec-packages#3512)) ([7e81e2c](AztecProtocol/aztec-packages@7e81e2c)) * **ci:** Fix docker architecture for devnet packages ([#3505](AztecProtocol/aztec-packages#3505)) ([66d0287](AztecProtocol/aztec-packages@66d0287)) * **ci:** Fix faucet vars + don't deploy contracts from node ([#3553](AztecProtocol/aztec-packages#3553)) ([c7176f6](AztecProtocol/aztec-packages@c7176f6)) * **ci:** L1 contracts directories ([#3545](AztecProtocol/aztec-packages#3545)) ([63dd0c8](AztecProtocol/aztec-packages@63dd0c8)) * **ci:** Login to ecr to fetch contracts image ([#3538](AztecProtocol/aztec-packages#3538)) ([b033538](AztecProtocol/aztec-packages@b033538)) * **ci:** Remove unused ADDRESS vars & export private key vars ([#3520](AztecProtocol/aztec-packages#3520)) ([d889359](AztecProtocol/aztec-packages@d889359)) * **ci:** Set default value for $TO_TAINT ([#3508](AztecProtocol/aztec-packages#3508)) ([8b6688a](AztecProtocol/aztec-packages@8b6688a)) * **ci:** Terraform listener resources ([#3534](AztecProtocol/aztec-packages#3534)) ([c3b9cce](AztecProtocol/aztec-packages@c3b9cce)) * **ci:** Terraform_deploy for devnet ([#3516](AztecProtocol/aztec-packages#3516)) ([ba3803e](AztecProtocol/aztec-packages@ba3803e)) * **ci:** Tf variable references & formatting([#3522](AztecProtocol/aztec-packages#3522)) ([d37cf52](AztecProtocol/aztec-packages@d37cf52)) * Disable e2e-slow-tree ([#3459](AztecProtocol/aztec-packages#3459)) ([5927103](AztecProtocol/aztec-packages@5927103)) * **docs:** Update package name of aztec-cli ([#3474](AztecProtocol/aztec-packages#3474)) ([98d7ba0](AztecProtocol/aztec-packages@98d7ba0)) * Double slash in deployed faucet routes ([#3555](AztecProtocol/aztec-packages#3555)) ([6c704a5](AztecProtocol/aztec-packages@6c704a5)) * Faucet lb_listener priority ([#3554](AztecProtocol/aztec-packages#3554)) ([3f56dd7](AztecProtocol/aztec-packages@3f56dd7)) * Handling low_nullifier.next_value equal to 0 ([#3562](AztecProtocol/aztec-packages#3562)) ([c800502](AztecProtocol/aztec-packages@c800502)), closes [#3550](AztecProtocol/aztec-packages#3550) * Remove x86_64 form l1-contracts img tag ([#3549](AztecProtocol/aztec-packages#3549)) ([6828f1a](AztecProtocol/aztec-packages@6828f1a)) * Throw error if fn sig has whitespaces ([#3509](AztecProtocol/aztec-packages#3509)) ([7671063](AztecProtocol/aztec-packages@7671063)), closes [#3055](AztecProtocol/aztec-packages#3055) ### Miscellaneous * (yellow paper) public-vm section of yellow paper ([#3493](AztecProtocol/aztec-packages#3493)) ([8ff3780](AztecProtocol/aztec-packages@8ff3780)) * Add mermaid diagram support ([#3499](AztecProtocol/aztec-packages#3499)) ([537d552](AztecProtocol/aztec-packages@537d552)) * Add yellow paper build check to CI ([#3490](AztecProtocol/aztec-packages#3490)) ([3ebd2f2](AztecProtocol/aztec-packages@3ebd2f2)) * **avm:** Enable AVM unit tests in CI ([#3463](AztecProtocol/aztec-packages#3463)) ([051dda9](AztecProtocol/aztec-packages@051dda9)), closes [#3461](AztecProtocol/aztec-packages#3461) * **bb:** Pointer_view to reference-based get_all ([#3495](AztecProtocol/aztec-packages#3495)) ([50d7327](AztecProtocol/aztec-packages@50d7327)) * **bb:** Reuse entities from GoblinUltra in GoblinUltraRecursive ([#3521](AztecProtocol/aztec-packages#3521)) ([8259636](AztecProtocol/aztec-packages@8259636)) * Build the acir test vectors as part of CI. ([#3447](AztecProtocol/aztec-packages#3447)) ([1a2d1f8](AztecProtocol/aztec-packages@1a2d1f8)) * Containers reduced to ~100MB total. ~30s installation. ([#3487](AztecProtocol/aztec-packages#3487)) ([b49cef2](AztecProtocol/aztec-packages@b49cef2)) * **docs:** Fix broken Noir stdlib link ([#3496](AztecProtocol/aztec-packages#3496)) ([787d59a](AztecProtocol/aztec-packages@787d59a)) * Field-agnostic and reusable transcript ([#3433](AztecProtocol/aztec-packages#3433)) ([d78775a](AztecProtocol/aztec-packages@d78775a)) * Fix broken link in txs in yellow paper ([#3484](AztecProtocol/aztec-packages#3484)) ([798565d](AztecProtocol/aztec-packages@798565d)) * Fix yellow paper build error ([32881a4](AztecProtocol/aztec-packages@32881a4)) * Fixed typo in build system ([#3501](AztecProtocol/aztec-packages#3501)) ([3a80ac2](AztecProtocol/aztec-packages@3a80ac2)) * Increase functions per contract from 16 to 32 ([#3503](AztecProtocol/aztec-packages#3503)) ([ebdeea3](AztecProtocol/aztec-packages@ebdeea3)) * Naming fixes ([#3476](AztecProtocol/aztec-packages#3476)) ([1db30bf](AztecProtocol/aztec-packages@1db30bf)) * Optimise bb.js package size and sandox/cli dockerfiles to unbloat final containers. ([#3462](AztecProtocol/aztec-packages#3462)) ([cb3db5d](AztecProtocol/aztec-packages@cb3db5d)) * Pin node version in docker base images and bump nvmrc ([#3537](AztecProtocol/aztec-packages#3537)) ([5d3895a](AztecProtocol/aztec-packages@5d3895a)) * Recursive verifier updates ([#3452](AztecProtocol/aztec-packages#3452)) ([dbb4a12](AztecProtocol/aztec-packages@dbb4a12)) * Refactor `WitnessEntities` to be able to derive `WitnessCommitments` from it ([#3479](AztecProtocol/aztec-packages#3479)) ([9c9b561](AztecProtocol/aztec-packages@9c9b561)) * Remove temporary logging ([#3466](AztecProtocol/aztec-packages#3466)) ([8c8387b](AztecProtocol/aztec-packages@8c8387b)) * Transcript handled through shared_ptr ([#3434](AztecProtocol/aztec-packages#3434)) ([30fca33](AztecProtocol/aztec-packages@30fca33)) * Typo fixes ([#3488](AztecProtocol/aztec-packages#3488)) ([d9a44dc](AztecProtocol/aztec-packages@d9a44dc)) * **yellow_paper:** Public<>private messaging ([#3491](AztecProtocol/aztec-packages#3491)) ([6ecc406](AztecProtocol/aztec-packages@6ecc406)) ### Documentation * Add transaction section to yellow paper ([#3418](AztecProtocol/aztec-packages#3418)) ([44bf30b](AztecProtocol/aztec-packages@44bf30b)) * Apply comments from Jan on contracts ([#3539](AztecProtocol/aztec-packages#3539)) ([e351873](AztecProtocol/aztec-packages@e351873)) * Fees update in yellow paper ([#3486](AztecProtocol/aztec-packages#3486)) ([a8b2608](AztecProtocol/aztec-packages@a8b2608)) * First go at generated AVM instruction set doc ([#3469](AztecProtocol/aztec-packages#3469)) ([8cc54a4](AztecProtocol/aztec-packages@8cc54a4)) * Further update to the yellow paper ([#3542](AztecProtocol/aztec-packages#3542)) ([751bb6a](AztecProtocol/aztec-packages@751bb6a)) * Yellow paper updates ([#3478](AztecProtocol/aztec-packages#3478)) ([11f754d](AztecProtocol/aztec-packages@11f754d)) * Yellow paper updates for private message delivery ([#3472](AztecProtocol/aztec-packages#3472)) ([6ba9e18](AztecProtocol/aztec-packages@6ba9e18)) * **yellow-paper:** Sync, enqueued, and static calls ([#3494](AztecProtocol/aztec-packages#3494)) ([00835c6](AztecProtocol/aztec-packages@00835c6)), closes [#3108](AztecProtocol/aztec-packages#3108) * **yellowpaper:** Instruction set updates and fixes ([#3515](AztecProtocol/aztec-packages#3515)) ([bfb61dd](AztecProtocol/aztec-packages@bfb61dd)) </details> <details><summary>barretenberg.js: 0.16.2</summary> ## [0.16.2](AztecProtocol/aztec-packages@barretenberg.js-v0.16.1...barretenberg.js-v0.16.2) (2023-12-05) ### Miscellaneous * Optimise bb.js package size and sandox/cli dockerfiles to unbloat final containers. ([#3462](AztecProtocol/aztec-packages#3462)) ([cb3db5d](AztecProtocol/aztec-packages@cb3db5d)) * Pin node version in docker base images and bump nvmrc ([#3537](AztecProtocol/aztec-packages#3537)) ([5d3895a](AztecProtocol/aztec-packages@5d3895a)) </details> <details><summary>barretenberg: 0.16.2</summary> ## [0.16.2](AztecProtocol/aztec-packages@barretenberg-v0.16.1...barretenberg-v0.16.2) (2023-12-05) ### Features * **AVM:** First version for mini AVM (ADD, RETURN, CALLDATACOPY) ([#3439](AztecProtocol/aztec-packages#3439)) ([b3af146](AztecProtocol/aztec-packages@b3af146)) * Flavor refactor, reduce duplication ([#3407](AztecProtocol/aztec-packages#3407)) ([8d6b013](AztecProtocol/aztec-packages@8d6b013)) * New Poseidon2 circuit builder gates ([#3346](AztecProtocol/aztec-packages#3346)) ([91cb369](AztecProtocol/aztec-packages@91cb369)) * New Poseidon2 relations ([#3406](AztecProtocol/aztec-packages#3406)) ([14b9736](AztecProtocol/aztec-packages@14b9736)) * Pull latest noir for brillig optimizations ([#3464](AztecProtocol/aztec-packages#3464)) ([d356bac](AztecProtocol/aztec-packages@d356bac)) * Seperate pil files for sub machines ([#3454](AztecProtocol/aztec-packages#3454)) ([d09d6f5](AztecProtocol/aztec-packages@d09d6f5)) ### Miscellaneous * **avm:** Enable AVM unit tests in CI ([#3463](AztecProtocol/aztec-packages#3463)) ([051dda9](AztecProtocol/aztec-packages@051dda9)), closes [#3461](AztecProtocol/aztec-packages#3461) * **bb:** Pointer_view to reference-based get_all ([#3495](AztecProtocol/aztec-packages#3495)) ([50d7327](AztecProtocol/aztec-packages@50d7327)) * **bb:** Reuse entities from GoblinUltra in GoblinUltraRecursive ([#3521](AztecProtocol/aztec-packages#3521)) ([8259636](AztecProtocol/aztec-packages@8259636)) * Build the acir test vectors as part of CI. ([#3447](AztecProtocol/aztec-packages#3447)) ([1a2d1f8](AztecProtocol/aztec-packages@1a2d1f8)) * Field-agnostic and reusable transcript ([#3433](AztecProtocol/aztec-packages#3433)) ([d78775a](AztecProtocol/aztec-packages@d78775a)) * Optimise bb.js package size and sandox/cli dockerfiles to unbloat final containers. ([#3462](AztecProtocol/aztec-packages#3462)) ([cb3db5d](AztecProtocol/aztec-packages@cb3db5d)) * Pin node version in docker base images and bump nvmrc ([#3537](AztecProtocol/aztec-packages#3537)) ([5d3895a](AztecProtocol/aztec-packages@5d3895a)) * Recursive verifier updates ([#3452](AztecProtocol/aztec-packages#3452)) ([dbb4a12](AztecProtocol/aztec-packages@dbb4a12)) * Refactor `WitnessEntities` to be able to derive `WitnessCommitments` from it ([#3479](AztecProtocol/aztec-packages#3479)) ([9c9b561](AztecProtocol/aztec-packages@9c9b561)) * Transcript handled through shared_ptr ([#3434](AztecProtocol/aztec-packages#3434)) ([30fca33](AztecProtocol/aztec-packages@30fca33)) * Typo fixes ([#3488](AztecProtocol/aztec-packages#3488)) ([d9a44dc](AztecProtocol/aztec-packages@d9a44dc)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
To enable sharing transcripts in the context of Goblin, I make the transcript be handled through a shared pointer.