Skip to content

Commit

Permalink
Merge branch 'master' into 01-22-feat_re-exposing_compute_initializat…
Browse files Browse the repository at this point in the history
…ion_hash
  • Loading branch information
benesjan authored Jan 22, 2025
2 parents 1d135ee + e74ce15 commit fc6ad72
Show file tree
Hide file tree
Showing 132 changed files with 1,254 additions and 593 deletions.
16 changes: 8 additions & 8 deletions .github/workflows/network-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ jobs:
export VALUES_PATH="$REPO/spartan/aztec-network/values/${{ env.VALUES_FILE }}"
export DEFAULT_VALUES_PATH="$REPO/spartan/aztec-network/values.yaml"
export MNEMONIC=${{ steps.get-mnemonic.outputs.mnemonic }}
export MNEMONIC="${{ steps.get-mnemonic.outputs.mnemonic }}"
$REPO/yarn-project/end-to-end/scripts/bash/generate_devnet_config.sh
Expand Down Expand Up @@ -183,9 +183,9 @@ jobs:
-var="GKE_CLUSTER_CONTEXT=${{ env.GKE_CLUSTER_CONTEXT }}" \
-var="AZTEC_DOCKER_IMAGE=${{ env.AZTEC_DOCKER_IMAGE }}" \
-var="L1_DEPLOYMENT_PRIVATE_KEY=${{ secrets.SEPOLIA_L1_DEPLOYMENT_PRIVATE_KEY }}" \
-var="VALIDATOR_KEYS=${{ secrets.VALIDATOR_KEYS }}" \
-var="BOOT_NODE_SEQ_PUBLISHER_PRIVATE_KEY=${{ secrets.BOOT_NODE_SEQ_PUBLISHER_PRIVATE_KEY }}" \
-var="PROVER_PUBLISHER_PRIVATE_KEY=${{ secrets.PROVER_PUBLISHER_PRIVATE_KEY }}" \
-var="VALIDATOR_KEYS=${{ secrets.SEPOLIA_VALIDATOR_KEYS }}" \
-var="BOOT_NODE_SEQ_PUBLISHER_PRIVATE_KEY=${{ secrets.SEPOLIA_BOOT_NODE_SEQ_PUBLISHER_PRIVATE_KEY }}" \
-var="PROVER_PUBLISHER_PRIVATE_KEY=${{ secrets.SEPOLIA_PROVER_PUBLISHER_PRIVATE_KEY }}" \
-var="ETHEREUM_EXTERNAL_HOST=${{ secrets.SEPOLIA_EXTERNAL_HOST }}" \
-lock=${{ inputs.respect_tf_lock }}
else
Expand All @@ -195,7 +195,7 @@ jobs:
-var="GKE_CLUSTER_CONTEXT=${{ env.GKE_CLUSTER_CONTEXT }}" \
-var="AZTEC_DOCKER_IMAGE=${{ env.AZTEC_DOCKER_IMAGE }}" \
-var="L1_DEPLOYMENT_MNEMONIC=${{ steps.get-mnemonic.outputs.mnemonic }}" \
-lock=${{ inputs.respect_tf_lock }}
-lock=${{ inputs.respect_tf_lock }}
fi
- name: Terraform Plan
Expand All @@ -209,9 +209,9 @@ jobs:
-var="AZTEC_DOCKER_IMAGE=${{ env.AZTEC_DOCKER_IMAGE }}" \
-var="L1_DEPLOYMENT_PRIVATE_KEY=${{ secrets.SEPOLIA_L1_DEPLOYMENT_PRIVATE_KEY }}" \
-var="L1_DEPLOYMENT_SALT=${DEPLOYMENT_SALT:-$RANDOM}" \
-var="VALIDATOR_KEYS=${{ secrets.VALIDATOR_KEYS }}" \
-var="BOOT_NODE_SEQ_PUBLISHER_PRIVATE_KEY=${{ secrets.BOOT_NODE_SEQ_PUBLISHER_PRIVATE_KEY }}" \
-var="PROVER_PUBLISHER_PRIVATE_KEY=${{ secrets.PROVER_PUBLISHER_PRIVATE_KEY }}" \
-var="VALIDATOR_KEYS=${{ secrets.SEPOLIA_VALIDATOR_KEYS }}" \
-var="BOOT_NODE_SEQ_PUBLISHER_PRIVATE_KEY=${{ secrets.SEPOLIA_BOOT_NODE_SEQ_PUBLISHER_PRIVATE_KEY }}" \
-var="PROVER_PUBLISHER_PRIVATE_KEY=${{ secrets.SEPOLIA_PROVER_PUBLISHER_PRIVATE_KEY }}" \
-var="ETHEREUM_EXTERNAL_HOST=${{ secrets.SEPOLIA_EXTERNAL_HOST }}" \
-out=tfplan \
-lock=${{ inputs.respect_tf_lock }}
Expand Down
52 changes: 52 additions & 0 deletions barretenberg/cpp/src/barretenberg/crypto/ecdsa/c_bind.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,25 @@ WASM_EXPORT void ecdsa__construct_signature(uint8_t const* message,
write(output_sig_v, sig.v);
}

WASM_EXPORT void ecdsa__construct_signature_(uint8_t const* message_buf,
uint8_t const* private_key,
uint8_t* output_sig_r,
uint8_t* output_sig_s,
uint8_t* output_sig_v)
{
using serialize::write;
auto priv_key = from_buffer<secp256k1::fr>(private_key);
secp256k1::g1::affine_element pub_key = secp256k1::g1::one * priv_key;
ecdsa_key_pair<secp256k1::fr, secp256k1::g1> key_pair = { priv_key, pub_key };

auto message = from_buffer<std::string>(message_buf);

auto sig = ecdsa_construct_signature<Sha256Hasher, secp256k1::fq, secp256k1::fr, secp256k1::g1>(message, key_pair);
write(output_sig_r, sig.r);
write(output_sig_s, sig.s);
write(output_sig_v, sig.v);
}

WASM_EXPORT void ecdsa__recover_public_key_from_signature(uint8_t const* message,
size_t msg_len,
uint8_t const* sig_r,
Expand All @@ -48,6 +67,21 @@ WASM_EXPORT void ecdsa__recover_public_key_from_signature(uint8_t const* message
write(output_pub_key, recovered_pub_key);
}

WASM_EXPORT void ecdsa__recover_public_key_from_signature_(
uint8_t const* message_buf, uint8_t const* sig_r, uint8_t const* sig_s, uint8_t* sig_v, uint8_t* output_pub_key)
{
std::array<uint8_t, 32> r, s;
std::copy(sig_r, sig_r + 32, r.begin());
std::copy(sig_s, sig_s + 32, s.begin());
const uint8_t v = *sig_v;

auto message = from_buffer<std::string>(message_buf);
ecdsa_signature sig = { r, s, v };
auto recovered_pub_key =
ecdsa_recover_public_key<Sha256Hasher, secp256k1::fq, secp256k1::fr, secp256k1::g1>(message, sig);
write(output_pub_key, recovered_pub_key);
}

WASM_EXPORT bool ecdsa__verify_signature(uint8_t const* message,
size_t msg_len,
uint8_t const* pub_key,
Expand All @@ -65,3 +99,21 @@ WASM_EXPORT bool ecdsa__verify_signature(uint8_t const* message,
return ecdsa_verify_signature<Sha256Hasher, secp256k1::fq, secp256k1::fr, secp256k1::g1>(
std::string((char*)message, msg_len), pubk, sig);
}

WASM_EXPORT void ecdsa__verify_signature_(uint8_t const* message_buf,
uint8_t const* pub_key,
uint8_t const* sig_r,
uint8_t const* sig_s,
uint8_t const* sig_v,
bool* result)
{
auto pubk = from_buffer<secp256k1::g1::affine_element>(pub_key);
std::array<uint8_t, 32> r, s;
std::copy(sig_r, sig_r + 32, r.begin());
std::copy(sig_s, sig_s + 32, s.begin());
const uint8_t v = *sig_v;

auto message = from_buffer<std::string>(message_buf);
ecdsa_signature sig = { r, s, v };
*result = ecdsa_verify_signature<Sha256Hasher, secp256k1::fq, secp256k1::fr, secp256k1::g1>(message, pubk, sig);
}
14 changes: 13 additions & 1 deletion barretenberg/cpp/src/barretenberg/crypto/ecdsa/c_bind.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include <ecc/curves/secp256k1/secp256k1.hpp>
#include "barretenberg/common/wasm_export.hpp"
#include <ecc/curves/secp256k1/secp256k1.hpp>

WASM_EXPORT void ecdsa__compute_public_key(uint8_t const* private_key, uint8_t* public_key_buf);

Expand All @@ -10,16 +10,28 @@ WASM_EXPORT void ecdsa__construct_signature(uint8_t const* message,
uint8_t* output_sig_s,
uint8_t* output_sig_v);

WASM_EXPORT void ecdsa__construct_signature_(uint8_t const* message_buf,
uint8_t const* private_key,
uint8_t* output_sig_r,
uint8_t* output_sig_s,
uint8_t* output_sig_v);

WASM_EXPORT void ecdsa__recover_public_key_from_signature(uint8_t const* message,
size_t msg_len,
uint8_t const* sig_r,
uint8_t const* sig_s,
uint8_t* sig_v,
uint8_t* output_pub_key);

WASM_EXPORT void ecdsa__recover_public_key_from_signature_(
uint8_t const* message_buf, uint8_t const* sig_r, uint8_t const* sig_s, uint8_t* sig_v, uint8_t* output_pub_key);

WASM_EXPORT bool ecdsa__verify_signature(uint8_t const* message,
size_t msg_len,
uint8_t const* pub_key,
uint8_t const* sig_r,
uint8_t const* sig_s,
uint8_t const* sig_v);

WASM_EXPORT bool ecdsa__verify_signature_(
uint8_t const* message, uint8_t const* pub_key, uint8_t const* sig_r, uint8_t const* sig_s, uint8_t const* sig_v);
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ template <typename FF> struct CircuitSchemaInternal {
* ComposerBase naming conventions:
* - n = 5 gates (4 gates plus the 'zero' gate).
* - variables <-- A.k.a. "witnesses". Indices of this variables vector are referred to as `witness_indices`.
* Example of varibales in this example (a 3,4,5 triangle):
* Example of variables in this example (a 3,4,5 triangle):
* - variables = [ 0, 3, 4, 5, 9, 16, 25, 25]
* - public_inputs = [6] <-- points to variables[6].
*
Expand Down
2 changes: 1 addition & 1 deletion barretenberg/cpp/src/barretenberg/vm/avm/trace/errors.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ enum class AvmError : uint32_t {
PARSING_ERROR,
ENV_VAR_UNKNOWN,
CONTRACT_INST_MEM_UNKNOWN,
RADIX_OUT_OF_BOUNDS,
INVALID_TORADIXBE_INPUTS,
DUPLICATE_NULLIFIER,
SIDE_EFFECT_LIMIT_REACHED,
OUT_OF_GAS,
Expand Down
4 changes: 2 additions & 2 deletions barretenberg/cpp/src/barretenberg/vm/avm/trace/helper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,8 @@ std::string to_name(AvmError error)
return "ENVIRONMENT VARIABLE UNKNOWN";
case AvmError::CONTRACT_INST_MEM_UNKNOWN:
return "CONTRACT INSTANCE MEMBER UNKNOWN";
case AvmError::RADIX_OUT_OF_BOUNDS:
return "RADIX OUT OF BOUNDS";
case AvmError::INVALID_TORADIXBE_INPUTS:
return "INVALID TO_RADIX_BE INPUTS";
case AvmError::DUPLICATE_NULLIFIER:
return "DUPLICATE NULLIFIER";
case AvmError::SIDE_EFFECT_LIMIT_REACHED:
Expand Down
9 changes: 9 additions & 0 deletions barretenberg/cpp/src/barretenberg/vm/avm/trace/helper.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,15 @@ template <typename FF_> VmPublicInputs_<FF_> convert_public_inputs(std::vector<F
ko_side_effect[dest_offset] = public_inputs_vec[pcpi_offset + 1];
ko_metadata[dest_offset] = public_inputs_vec[pcpi_offset + 2];
}
// TODO(#11426): Fix public input columns.
if constexpr (!std::same_as<FF_, field<Bn254FrParams>>) {
auto ctx = public_inputs_vec[0].get_context();
for (size_t i = 0; i < KERNEL_OUTPUTS_LENGTH; i++) {
ko_values[i] = FF_::from_witness(ctx, 0);
ko_side_effect[i] = FF_::from_witness(ctx, 0);
ko_metadata[i] = FF_::from_witness(ctx, 0);
}
}

return public_inputs;
}
Expand Down
9 changes: 6 additions & 3 deletions barretenberg/cpp/src/barretenberg/vm/avm/trace/trace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5019,9 +5019,12 @@ AvmError AvmTraceBuilder::op_to_radix_be(uint16_t indirect,
// uint32_t radix = static_cast<uint32_t>(read_radix.val);
uint32_t radix = static_cast<uint32_t>(read_radix);

bool radix_out_of_bounds = radix > 256;
if (is_ok(error) && radix_out_of_bounds) {
error = AvmError::RADIX_OUT_OF_BOUNDS;
const bool radix_out_of_range = radix < 2 || radix > 256;
const bool zero_limb_input_non_zero = num_limbs == 0 && input != FF(0);
const bool bit_mode_radix_not_two = output_bits > 0 && radix != 2;

if (is_ok(error) && (radix_out_of_range || zero_limb_input_non_zero || bit_mode_radix_not_two)) {
error = AvmError::INVALID_TORADIXBE_INPUTS;
}

// In case of an error, we do not perform the computation.
Expand Down
1 change: 1 addition & 0 deletions bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,7 @@ esac
hooks_dir=$(git rev-parse --git-path hooks)
echo "(cd barretenberg/cpp && ./format.sh staged)" >$hooks_dir/pre-commit
echo "./yarn-project/precommit.sh" >>$hooks_dir/pre-commit
echo "./noir-projects/precommit.sh" >>$hooks_dir/pre-commit
chmod +x $hooks_dir/pre-commit

github_group "pull submodules"
Expand Down
3 changes: 1 addition & 2 deletions boxes/boxes/react/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"main": "./dist/index.js",
"scripts": {
"compile": "cd src/contracts && ${AZTEC_NARGO:-aztec-nargo} compile --silence-warnings",
"codegen": "${AZTEC_BUILDER:-aztec-builder} codegen src/contracts/target -o artifacts",
"codegen": "${AZTEC_BUILDER:-aztec} codegen src/contracts/target -o artifacts",
"clean": "rm -rf ./dist .tsbuildinfo ./artifacts ./src/contracts/target",
"prep": "yarn clean && yarn compile && yarn codegen",
"dev": "yarn prep && webpack serve --mode development",
Expand Down Expand Up @@ -38,7 +38,6 @@
"dependencies": {
"@aztec/accounts": "latest",
"@aztec/aztec.js": "latest",
"@aztec/builder": "latest",
"classnames": "^2.3.2",
"formik": "^2.4.3",
"react": "^18.2.0",
Expand Down
21 changes: 9 additions & 12 deletions boxes/boxes/react/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,24 @@ import { SingleKeyAccountContract } from '@aztec/accounts/single_key';
const SECRET_KEY = Fr.random();

export class PrivateEnv {
pxe;
accountContract;
account: AccountManager;
private constructor(private accountManager: AccountManager) {}

constructor(
private secretKey: Fr,
private pxeURL: string,
) {
this.pxe = createPXEClient(this.pxeURL);
static async create(secretKey: Fr, pxeURL: string) {
const pxe = createPXEClient(pxeURL);
const encryptionPrivateKey = deriveMasterIncomingViewingSecretKey(secretKey);
this.accountContract = new SingleKeyAccountContract(encryptionPrivateKey);
this.account = new AccountManager(this.pxe, this.secretKey, this.accountContract);
const accountContract = new SingleKeyAccountContract(encryptionPrivateKey);
const accountManager = await AccountManager.create(pxe, secretKey, accountContract);

return new PrivateEnv(accountManager);
}

async getWallet() {
// taking advantage that register is no-op if already registered
return await this.account.register();
return await this.accountManager.register();
}
}

export const deployerEnv = new PrivateEnv(SECRET_KEY, process.env.PXE_URL || 'http://localhost:8080');
export const deployerEnv = await PrivateEnv.create(SECRET_KEY, process.env.PXE_URL || 'http://localhost:8080');

const IGNORE_FUNCTIONS = ['constructor', 'compute_note_hash_and_optionally_a_nullifier'];
export const filteredInterface = BoxReactContractArtifact.functions.filter(f => !IGNORE_FUNCTIONS.includes(f.name));
5 changes: 2 additions & 3 deletions boxes/boxes/vanilla/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"type": "module",
"scripts": {
"compile": "cd src/contracts && ${AZTEC_NARGO:-aztec-nargo} compile --silence-warnings",
"codegen": "${AZTEC_BUILDER:-aztec-builder} codegen src/contracts/target -o artifacts",
"codegen": "${AZTEC_BUILDER:-aztec} codegen src/contracts/target -o artifacts",
"clean": "rm -rf ./dest .tsbuildinfo ./artifacts ./src/contracts/target",
"prep": "yarn clean && yarn compile && yarn codegen && tsc -b",
"dev": "yarn prep && webpack serve --mode development",
Expand All @@ -18,8 +18,7 @@
},
"dependencies": {
"@aztec/accounts": "latest",
"@aztec/aztec.js": "latest",
"@aztec/builder": "latest"
"@aztec/aztec.js": "latest"
},
"devDependencies": {
"@playwright/test": "^1.49.0",
Expand Down
16 changes: 3 additions & 13 deletions boxes/boxes/vanilla/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const secretKey = Fr.random();
const pxe = createPXEClient(process.env.PXE_URL || 'http://localhost:8080');

const encryptionPrivateKey = deriveMasterIncomingViewingSecretKey(secretKey);
const account = new AccountManager(pxe, secretKey, new SingleKeyAccountContract(encryptionPrivateKey));
const account = await AccountManager.create(pxe, secretKey, new SingleKeyAccountContract(encryptionPrivateKey));
let contract: any = null;
let wallet: Wallet | null = null;

Expand All @@ -21,11 +21,7 @@ document.querySelector('#deploy').addEventListener('click', async ({ target }: a
setWait(true);
wallet = await account.register();

contract = await VanillaContract.deploy(
wallet,
Fr.random(),
wallet.getCompleteAddress().address
)
contract = await VanillaContract.deploy(wallet, Fr.random(), wallet.getCompleteAddress().address)
.send({ contractAddressSalt: Fr.random() })
.deployed();
alert(`Contract deployed at ${contract.address}`);
Expand All @@ -41,13 +37,7 @@ document.querySelector('#set').addEventListener('submit', async (e: Event) => {

const { value } = document.querySelector('#number') as HTMLInputElement;
const { address: owner } = wallet.getCompleteAddress();
await contract.methods
.setNumber(
parseInt(value),
owner,
)
.send()
.wait();
await contract.methods.setNumber(parseInt(value), owner).send().wait();

setWait(false);
alert('Number set!');
Expand Down
8 changes: 4 additions & 4 deletions boxes/boxes/vite/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ const SECRET_KEY = Fr.random();
export class PrivateEnv {
pxe;
accountContract;
account: AccountManager;
accountManager: AccountManager;

constructor(
private secretKey: Fr,
Expand Down Expand Up @@ -74,16 +74,16 @@ export class PrivateEnv {
this.secretKey,
);
this.accountContract = new SchnorrAccountContract(encryptionPrivateKey);
this.account = new AccountManager(
this.accountManager = await AccountManager.create(
this.pxe,
this.secretKey,
this.accountContract,
);
await this.account.deploy().wait();
await this.accountManager.deploy().wait();
}

async getWallet() {
return await this.account.register();
return await this.accountManager.register();
}
}

Expand Down
Loading

0 comments on commit fc6ad72

Please sign in to comment.