├── .circleci └── config.yml ├── .editorconfig ├── .gitattributes ├── .gitignore ├── .gitmodules ├── .nvmrc ├── .vscode ├── c_cpp_properties.json ├── extensions.json ├── launch.json └── settings.json ├── LICENSE ├── PROJECT ├── README.md ├── VERSION ├── audits └── Security Audit Results - Aztec Protocol.pdf ├── aztec-connect-cpp ├── .clang-format ├── .dockerignore ├── .gitignore ├── CMakeLists.txt ├── README.md ├── bootstrap.sh ├── cmake │ ├── arch.cmake │ ├── barretenberg.cmake │ ├── build.cmake │ ├── gtest.cmake │ ├── module.cmake │ ├── threading.cmake │ ├── toolchain.cmake │ └── toolchains │ │ ├── wasm-linux-clang.cmake │ │ ├── x86_64-apple-clang.cmake │ │ ├── x86_64-linux-clang.cmake │ │ ├── x86_64-linux-gcc.cmake │ │ └── x86_64-linux-gcc10.cmake ├── dockerfiles │ ├── Dockerfile.wasm-linux-clang │ ├── Dockerfile.x86_64-linux-clang │ ├── Dockerfile.x86_64-linux-clang-assert │ └── Dockerfile.x86_64-linux-gcc ├── format.sh ├── scripts │ ├── ac-tests │ └── run_tests └── src │ ├── CMakeLists.txt │ └── rollup │ ├── CMakeLists.txt │ ├── ci_failsafe │ ├── CMakeLists.txt │ └── failsafe.test.cpp │ ├── constants.hpp │ ├── db_cli │ ├── CMakeLists.txt │ ├── get.hpp │ ├── main.cpp │ └── put.hpp │ ├── fixtures │ ├── compute_or_load_fixture.hpp │ ├── test_context.hpp │ └── user_context.hpp │ ├── keygen │ ├── CMakeLists.txt │ └── main.cpp │ ├── proofs │ ├── CMakeLists.txt │ ├── account │ │ ├── CMakeLists.txt │ │ ├── account.cpp │ │ ├── account.hpp │ │ ├── account.test.cpp │ │ ├── account_tx.cpp │ │ ├── account_tx.hpp │ │ ├── account_tx.test.cpp │ │ ├── account_tx_factory.hpp │ │ ├── c_bind.cpp │ │ ├── c_bind.h │ │ ├── compute_circuit_data.hpp │ │ ├── compute_signing_data.cpp │ │ ├── compute_signing_data.hpp │ │ ├── create_proof.hpp │ │ ├── index.hpp │ │ ├── verify.cpp │ │ └── verify.hpp │ ├── add_zero_public_inputs.hpp │ ├── claim │ │ ├── CMakeLists.txt │ │ ├── claim.test.cpp │ │ ├── claim_circuit.cpp │ │ ├── claim_circuit.hpp │ │ ├── claim_tx.hpp │ │ ├── claim_tx.test.cpp │ │ ├── claim_tx_factory.hpp │ │ ├── create_proof.hpp │ │ ├── get_circuit_data.hpp │ │ ├── index.hpp │ │ ├── malicious_claim_circuit.hpp │ │ ├── malicious_ratio_check.hpp │ │ ├── ratio_check.hpp │ │ ├── ratio_check.test.cpp │ │ ├── verify.cpp │ │ └── verify.hpp │ ├── compute_circuit_data.hpp │ ├── inner_proof_data │ │ ├── CMakeLists.txt │ │ ├── inner_proof_data.cpp │ │ ├── inner_proof_data.hpp │ │ └── inner_proof_data.test.cpp │ ├── join_split │ │ ├── CMakeLists.txt │ │ ├── c_bind.cpp │ │ ├── c_bind.h │ │ ├── compute_circuit_data.cpp │ │ ├── compute_circuit_data.hpp │ │ ├── compute_signing_data.cpp │ │ ├── compute_signing_data.hpp │ │ ├── create_noop_join_split_proof.cpp │ │ ├── create_noop_join_split_proof.hpp │ │ ├── create_proof.hpp │ │ ├── index.hpp │ │ ├── join_split.cpp │ │ ├── join_split.hpp │ │ ├── join_split.test.cpp │ │ ├── join_split_circuit.cpp │ │ ├── join_split_circuit.hpp │ │ ├── join_split_js_parity.test.cpp │ │ ├── join_split_tx.cpp │ │ ├── join_split_tx.hpp │ │ ├── join_split_tx.test.cpp │ │ ├── join_split_tx_factory.hpp │ │ ├── sign_join_split_tx.cpp │ │ ├── sign_join_split_tx.hpp │ │ └── verify_signature.hpp │ ├── mock │ │ └── mock_circuit.hpp │ ├── notes │ │ ├── CMakeLists.txt │ │ ├── c_bind.cpp │ │ ├── circuit │ │ │ ├── account │ │ │ │ ├── account_note.hpp │ │ │ │ ├── commit.hpp │ │ │ │ └── index.hpp │ │ │ ├── asset_id.cpp │ │ │ ├── asset_id.hpp │ │ │ ├── bridge_call_data.hpp │ │ │ ├── claim │ │ │ │ ├── claim_note.hpp │ │ │ │ ├── complete_partial_commitment.hpp │ │ │ │ ├── compute_nullifier.hpp │ │ │ │ ├── create_partial_commitment.hpp │ │ │ │ ├── index.hpp │ │ │ │ └── witness_data.hpp │ │ │ ├── defi_interaction │ │ │ │ ├── compute_nullifier.hpp │ │ │ │ ├── index.hpp │ │ │ │ ├── note.hpp │ │ │ │ └── witness_data.hpp │ │ │ ├── index.hpp │ │ │ └── value │ │ │ │ ├── commit.hpp │ │ │ │ ├── complete_partial_commitment.hpp │ │ │ │ ├── compute_nullifier.cpp │ │ │ │ ├── compute_nullifier.hpp │ │ │ │ ├── compute_nullifier.test.cpp │ │ │ │ ├── create_partial_commitment.hpp │ │ │ │ ├── index.hpp │ │ │ │ ├── value_note.hpp │ │ │ │ ├── value_note.test.cpp │ │ │ │ └── witness_data.hpp │ │ ├── constants.hpp │ │ └── native │ │ │ ├── account │ │ │ ├── account_note.cpp │ │ │ ├── account_note.hpp │ │ │ ├── compute_account_alias_hash_nullifier.hpp │ │ │ ├── compute_account_public_key_nullifier.hpp │ │ │ └── index.hpp │ │ │ ├── asset_id.cpp │ │ │ ├── asset_id.hpp │ │ │ ├── bridge_call_data.hpp │ │ │ ├── claim │ │ │ ├── claim_note.hpp │ │ │ ├── claim_note_tx_data.hpp │ │ │ ├── complete_partial_commitment.hpp │ │ │ ├── compute_nullifier.hpp │ │ │ ├── create_partial_commitment.hpp │ │ │ └── index.hpp │ │ │ ├── defi_interaction │ │ │ ├── compute_nullifier.hpp │ │ │ ├── index.hpp │ │ │ └── note.hpp │ │ │ ├── index.hpp │ │ │ └── value │ │ │ ├── complete_partial_commitment.hpp │ │ │ ├── compute_nullifier.cpp │ │ │ ├── compute_nullifier.hpp │ │ │ ├── create_partial_commitment.hpp │ │ │ ├── index.hpp │ │ │ └── value_note.hpp │ ├── rollup │ │ ├── CMakeLists.txt │ │ ├── compute_circuit_data.hpp │ │ ├── create_rollup_tx.hpp │ │ ├── index.hpp │ │ ├── rollup_circuit.cpp │ │ ├── rollup_circuit.hpp │ │ ├── rollup_circuit.test.cpp │ │ ├── rollup_circuit_full.test.cpp │ │ ├── rollup_proof_data.cpp │ │ ├── rollup_proof_data.hpp │ │ ├── rollup_tx.hpp │ │ ├── rollup_tx.test.cpp │ │ ├── verify.cpp │ │ └── verify.hpp │ ├── root_rollup │ │ ├── CMakeLists.txt │ │ ├── compute_circuit_data.cpp │ │ ├── compute_circuit_data.hpp │ │ ├── create_root_rollup_tx.hpp │ │ ├── index.hpp │ │ ├── root_rollup.test.cpp │ │ ├── root_rollup_broadcast_data.cpp │ │ ├── root_rollup_broadcast_data.hpp │ │ ├── root_rollup_circuit.cpp │ │ ├── root_rollup_circuit.hpp │ │ ├── root_rollup_full.test.cpp │ │ ├── root_rollup_proof_data.cpp │ │ ├── root_rollup_proof_data.hpp │ │ ├── root_rollup_tx.hpp │ │ ├── root_rollup_tx.test.cpp │ │ ├── verify.cpp │ │ └── verify.hpp │ ├── root_verifier │ │ ├── CMakeLists.txt │ │ ├── compute_circuit_data.hpp │ │ ├── create_root_verifier_tx.hpp │ │ ├── index.hpp │ │ ├── root_verifier.test.cpp │ │ ├── root_verifier_circuit.cpp │ │ ├── root_verifier_circuit.hpp │ │ ├── root_verifier_full.test.cpp │ │ ├── root_verifier_proof_data.cpp │ │ ├── root_verifier_proof_data.hpp │ │ ├── root_verifier_tx.hpp │ │ ├── root_verifier_tx.test.cpp │ │ ├── verify.cpp │ │ └── verify.hpp │ ├── standard_example │ │ ├── CMakeLists.txt │ │ ├── c_bind.cpp │ │ ├── c_bind.h │ │ ├── c_bind.test.cpp │ │ ├── standard_example.cpp │ │ ├── standard_example.hpp │ │ └── standard_example.test.cpp │ └── verify.hpp │ ├── rollup_cli │ ├── CMakeLists.txt │ └── main.cpp │ ├── tx_factory │ ├── CMakeLists.txt │ └── main.cpp │ └── world_state │ └── world_state.hpp ├── blockchain-vks ├── Dockerfile └── generate_vks.sh ├── bootstrap.sh ├── bootstrap_docker.sh ├── build_manifest.json ├── build_manifest.sh ├── contracts ├── .dockerignore ├── .gitignore ├── Dockerfile ├── README.md ├── bootstrap.sh ├── deploy │ ├── dev │ ├── stage │ └── testnet ├── foundry.toml ├── scripts │ ├── ci_deploy_contracts.sh │ ├── deploy_contracts.sh │ ├── install_foundry.sh │ ├── start_e2e.sh │ └── start_e2e_fork.sh ├── src │ ├── core │ │ ├── Decoder.sol │ │ ├── DefiBridgeProxy.sol │ │ ├── interfaces │ │ │ ├── IDefiBridge.sol │ │ │ ├── IERC20Permit.sol │ │ │ └── IVerifier.sol │ │ ├── libraries │ │ │ ├── SafeCast.sol │ │ │ └── TokenTransfers.sol │ │ ├── processors │ │ │ ├── RollupProcessor.sol │ │ │ └── RollupProcessorV2.sol │ │ ├── reference │ │ │ └── RollupProcessorV2Reference.sol │ │ └── verifier │ │ │ ├── BaseStandardVerifier.sol │ │ │ ├── instances │ │ │ ├── MockVerifier.sol │ │ │ ├── Verifier1x1.sol │ │ │ └── Verifier28x32.sol │ │ │ └── keys │ │ │ ├── MockVerificationKey.sol │ │ │ ├── VerificationKey1x1.sol │ │ │ └── VerificationKey28x32.sol │ ├── periphery │ │ ├── AztecFaucet.sol │ │ ├── AztecFeeDistributor.sol │ │ ├── PermitHelper.sol │ │ ├── ProxyDeployer.sol │ │ └── interfaces │ │ │ └── IFeeDistributor.sol │ ├── script │ │ ├── UpgradeV2.s.sol │ │ └── deployments │ │ │ ├── ChainSpecificSetup.s.sol │ │ │ ├── E2ESetup.s.sol │ │ │ └── RollupDeployer.s.sol │ └── test │ │ ├── aztec │ │ └── TestBase.sol │ │ ├── fee_distributor │ │ └── FeeDistributor.t.sol │ │ ├── mocks │ │ ├── AlwaysTrueVerifier.sol │ │ ├── AsyncBridge.sol │ │ ├── DummyDefiBridge.sol │ │ ├── ERC20Mintable.sol │ │ ├── ERC20Permit.sol │ │ ├── ERC20Reenter.sol │ │ ├── ERC20RevertingTransfer.sol │ │ ├── EmptyContract.sol │ │ ├── HashInputs.sol │ │ ├── MockBridgeDataProvider.sol │ │ ├── MockChainlinkOracle.sol │ │ ├── MockChainlinkOracle.t.sol │ │ ├── ProxyKiller.sol │ │ ├── RollupManipulator.sol │ │ ├── RollupProcessorVPlus1.sol │ │ └── SyncBridge.sol │ │ └── rollup_processor │ │ ├── AccessControl.t.sol │ │ ├── AsyncBridge.t.sol │ │ ├── BridgeCallData.t.sol │ │ ├── Create2.s.sol │ │ ├── Create2.t.sol │ │ ├── DefiBridge.t.sol │ │ ├── DefiBridgeFail.t.sol │ │ ├── Deposit.t.sol │ │ ├── Fees.t.sol │ │ ├── InteractionNotes.t.sol │ │ ├── MultiAsync.t.sol │ │ ├── NoCode.t.sol │ │ ├── Pauseable.t.sol │ │ ├── Reentry.t.sol │ │ ├── RollupProcessor.t.sol │ │ ├── State.t.sol │ │ ├── Upgradeable.t.sol │ │ └── Withdraw.t.sol ├── terraform │ ├── dev │ │ └── main.tf │ ├── stage │ │ └── main.tf │ └── testnet │ │ └── main.tf └── verification-keys │ └── generate_vks.sh ├── markdown └── specs │ ├── aztec-connect │ ├── README.md │ ├── book.toml │ ├── macros.txt │ ├── src │ │ ├── SUMMARY.md │ │ ├── account_circuit.md │ │ ├── claim_circuit.md │ │ ├── defi_bridge_interface.md │ │ ├── intro.md │ │ ├── join_split_circuit.md │ │ ├── notes_and_nullifiers.md │ │ ├── primitives.md │ │ ├── rollup_circuit.md │ │ ├── rollup_contract.md │ │ ├── root_rollup_circuit.md │ │ ├── root_verifier_circuit.md │ │ ├── schnorr.md │ │ ├── schnorr_multisig.md │ │ └── uint.md │ └── theme │ │ ├── css │ │ └── style.css │ │ ├── index.hbs │ │ └── sidebar.js │ └── yellowpaper.md ├── scripts ├── docker_push └── tmux-splits └── yarn-project ├── .dockerignore ├── .gitignore ├── .pnp.cjs ├── .pnp.loader.mjs ├── .prettierignore ├── .prettierrc.js ├── .yarn ├── plugins │ └── @yarnpkg │ │ └── plugin-workspace-tools.cjs ├── releases │ └── yarn-3.2.3.cjs └── sdks │ ├── eslint │ ├── bin │ │ └── eslint.js │ ├── lib │ │ └── api.js │ └── package.json │ ├── integrations.yml │ ├── prettier │ ├── index.js │ └── package.json │ └── typescript │ ├── bin │ ├── tsc │ └── tsserver │ ├── lib │ ├── tsc.js │ ├── tsserver.js │ ├── tsserverlibrary.js │ └── typescript.js │ └── package.json ├── .yarnrc.yml ├── README.md ├── account-migrator ├── .eslintrc.cjs ├── .gitignore ├── .vscode │ └── launch.json ├── README.md ├── package.json ├── scripts │ └── harden-accounts-local.sh ├── src │ ├── abi │ │ └── RollupProcessor.json │ ├── account.ts │ ├── account_hardener.ts │ ├── aztec_connect.ts │ ├── block_source.ts │ ├── create_funded_wallet_provider.ts │ ├── get_rollup_blocks.ts │ ├── harden.ts │ ├── index.ts │ ├── legacy_aztec.ts │ ├── migrate.ts │ ├── rollup_processor.ts │ ├── rollup_proof.ts │ ├── second_class_rollup_provider_limited.ts │ └── viewing_key.ts ├── tsconfig.dest.json └── tsconfig.json ├── alpha-sdk ├── .eslintrc.cjs ├── .vscode │ └── launch.json ├── Dockerfile ├── README.md ├── docs │ ├── iframe.md │ └── wallet.md ├── package.json ├── scripts │ └── start_e2e.sh ├── src │ ├── account_state │ │ ├── account_state.test.ts │ │ └── index.ts │ ├── auth_algorithms │ │ ├── auth_algorithms.ts │ │ ├── index.ts │ │ └── key_pair_auth_algorithms.ts │ ├── auth_database │ │ ├── auth_database.test.ts │ │ ├── auth_database.ts │ │ ├── auth_db.ts │ │ └── index.ts │ ├── aztec_sdk │ │ ├── aztec_sdk.ts │ │ ├── create_aztec_sdk.ts │ │ ├── fee_calculator.test.ts │ │ ├── fee_calculator.ts │ │ ├── group_txs.test.ts │ │ ├── group_txs.ts │ │ ├── index.ts │ │ ├── tx_value_calculator.test.ts │ │ └── tx_value_calculator.ts │ ├── aztec_wallet_provider │ │ ├── aztec_wallet_provider.ts │ │ ├── aztec_wallet_provider_client_stub.test.ts │ │ ├── aztec_wallet_provider_client_stub.ts │ │ ├── aztec_wallet_provider_server_stub.ts │ │ ├── index.ts │ │ └── vanilla_aztec_wallet_provider.ts │ ├── block_context │ │ ├── block_context.test.ts │ │ ├── block_context.ts │ │ └── index.ts │ ├── block_decryptor │ │ ├── block_decryptor.ts │ │ └── index.ts │ ├── block_processor │ │ ├── index.ts │ │ └── processed_tx_data.ts │ ├── cache_request │ │ └── index.ts │ ├── client_log │ │ └── client_log.ts │ ├── controllers │ │ ├── add_spending_key_controller.ts │ │ ├── defi_controller.ts │ │ ├── deposit_controller.ts │ │ ├── deposit_handler.ts │ │ ├── fee_controller.ts │ │ ├── index.ts │ │ ├── migrate_account_controller.ts │ │ ├── recover_account_controller.ts │ │ ├── register_controller.ts │ │ ├── transfer_controller.ts │ │ └── withdraw_controller.ts │ ├── core_sdk │ │ ├── core_sdk.ts │ │ ├── core_sdk_options.ts │ │ ├── create_core_sdk.ts │ │ ├── index.ts │ │ ├── sdk_status.ts │ │ └── sdk_version.ts │ ├── core_tx │ │ ├── core_account_tx.ts │ │ ├── core_claim_tx.ts │ │ ├── core_defi_tx.ts │ │ ├── core_payment_tx.ts │ │ ├── fixtures.ts │ │ └── index.ts │ ├── database │ │ ├── database.ts │ │ ├── dexie_database.ts │ │ ├── index.ts │ │ ├── node │ │ │ ├── account_tx_dao.ts │ │ │ ├── alias_dao.ts │ │ │ ├── claim_tx_dao.ts │ │ │ ├── defi_tx_dao.ts │ │ │ ├── index.ts │ │ │ ├── key_dao.ts │ │ │ ├── mutex_dao.ts │ │ │ ├── note_dao.ts │ │ │ ├── payment_tx_dao.ts │ │ │ ├── spending_key_dao.ts │ │ │ ├── transformer.ts │ │ │ └── user_data_dao.ts │ │ └── test │ │ │ ├── dexie_database.test.ts │ │ │ ├── fixtures.ts │ │ │ ├── sql_database.test.ts │ │ │ └── test_suite.ts │ ├── eip1193_aztec_wallet_provider │ │ ├── client │ │ │ ├── eip1193_aztec_wallet_frontend.ts │ │ │ ├── eip1193_aztec_wallet_provider_client.ts │ │ │ └── eip1193_sign_client.ts │ │ ├── index.ts │ │ ├── methods.ts │ │ ├── rpc_wrapper.ts │ │ └── server │ │ │ ├── walletconnect_aztec_wallet_backend.ts │ │ │ └── walletconnect_aztec_wallet_provider_server.ts │ ├── genesis_state │ │ └── index.ts │ ├── get_num_workers │ │ └── index.ts │ ├── iframe │ │ ├── create_iframe.ts │ │ ├── iframe_event.ts │ │ ├── iframe_server_stub.ts │ │ ├── iframe_transport_connect.ts │ │ └── index.ts │ ├── iframe_aztec_wallet_provider │ │ ├── client │ │ │ ├── iframe_aztec_wallet_frontend.ts │ │ │ ├── iframe_aztec_wallet_provider_client.ts │ │ │ └── index.ts │ │ └── server │ │ │ ├── iframe_aztec_wallet_backend.ts │ │ │ ├── iframe_aztec_wallet_provider_server.ts │ │ │ └── index.ts │ ├── iframe_transport_listener.ts │ ├── index.ts │ ├── key_pair │ │ ├── constant_key_pair.ts │ │ ├── index.ts │ │ └── key_pair.ts │ ├── key_store │ │ ├── aztec_key_store.test.ts │ │ ├── aztec_key_store.ts │ │ ├── constant_key_pair.ts │ │ ├── constant_key_store.ts │ │ ├── generate_keys.ts │ │ ├── generate_legacy_private_key.ts │ │ ├── index.ts │ │ ├── key_pair.ts │ │ ├── key_store.ts │ │ ├── legacy_key_store.ts │ │ ├── permission.ts │ │ └── recovery_kit.ts │ ├── key_value_database │ │ ├── browser │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── key_value_database.ts │ │ ├── level_db.ts │ │ ├── local_storage_db.ts │ │ └── node │ │ │ └── index.ts │ ├── level_db │ │ ├── browser │ │ │ └── index.ts │ │ ├── get_level_db.ts │ │ ├── index.ts │ │ └── node │ │ │ └── index.ts │ ├── note │ │ ├── index.ts │ │ ├── note.ts │ │ └── restore_note_path.ts │ ├── note_picker │ │ ├── index.ts │ │ └── note_picker.test.ts │ ├── proofs │ │ ├── index.ts │ │ ├── proof_input │ │ │ ├── account_proof_input_creator.ts │ │ │ ├── defi_proof_input_creator.ts │ │ │ ├── index.ts │ │ │ ├── join_split_tx_input.ts │ │ │ ├── join_split_tx_input_creator.ts │ │ │ ├── payment_proof_input_creator.ts │ │ │ ├── proof_input.ts │ │ │ ├── proof_input_factory.ts │ │ │ └── proof_input_type.ts │ │ ├── proof_output │ │ │ ├── account_proof_creator.ts │ │ │ ├── defi_proof_creator.ts │ │ │ ├── index.ts │ │ │ ├── payment_proof_creator.ts │ │ │ ├── proof_output.ts │ │ │ └── proof_output_factory.ts │ │ └── proof_request_data │ │ │ ├── account_proof_request_data.ts │ │ │ ├── defi_proof_request_data.ts │ │ │ ├── index.ts │ │ │ ├── payment_proof_request_data.ts │ │ │ ├── pick_input_notes.ts │ │ │ ├── proof_request_data_factory.ts │ │ │ ├── proof_request_data_type.ts │ │ │ └── spending_key_account.ts │ ├── recovery_payload │ │ ├── index.ts │ │ ├── recovery_data.ts │ │ ├── recovery_key_store.ts │ │ └── recovery_payload.ts │ ├── serial_queue │ │ ├── index.ts │ │ ├── memory_serial_queue.ts │ │ ├── mutex_serial_queue.ts │ │ └── serial_queue.ts │ ├── signer │ │ ├── auth_service_signer.ts │ │ ├── index.ts │ │ ├── recover_signer.ts │ │ ├── schnorr_signer.ts │ │ └── signer.ts │ ├── transport │ │ ├── index.ts │ │ ├── messages.ts │ │ ├── transport_client.ts │ │ ├── transport_connect.ts │ │ ├── transport_listener.ts │ │ ├── transport_server.ts │ │ └── transport_socket.ts │ ├── user_tx │ │ ├── index.ts │ │ ├── user_account_tx.ts │ │ ├── user_defi_claim_tx.ts │ │ ├── user_defi_tx.ts │ │ └── user_payment_tx.ts │ └── version.ts ├── static │ ├── aztec-connect.wasm │ └── worker.js ├── terraform │ ├── dev │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ ├── prod │ ├── stage │ └── testnet ├── tsconfig.dest.json ├── tsconfig.json └── webpack.config.js ├── aztec-dev-cli ├── .eslintrc.cjs ├── .gitignore ├── .prettierignore ├── Dockerfile ├── README.md ├── package.json ├── src │ ├── abis │ │ ├── AztecFaucet.sol │ │ ├── DataProvider.sol │ │ ├── ElementBridge.sol │ │ ├── IVault.sol │ │ ├── RollupProcessorV2.sol │ │ └── index.ts │ ├── clients │ │ ├── bridge-data.ts │ │ ├── element-bridge-data.ts │ │ └── web3_provider.ts │ ├── index.ts │ └── key_derivation.ts ├── tsconfig.dest.json └── tsconfig.json ├── babel.config.json ├── barretenberg.js ├── .eslintrc.cjs ├── .gitignore ├── .prettierignore ├── Dockerfile ├── README.md ├── bootstrap.sh ├── package.json ├── scripts │ ├── build_dev.sh │ └── build_wasm.sh ├── src │ ├── account_id │ │ ├── account_alias_id.ts │ │ ├── account_id.ts │ │ ├── alias_hash.ts │ │ └── index.ts │ ├── address │ │ ├── eth_address.test.ts │ │ ├── eth_address.ts │ │ ├── grumpkin_address.ts │ │ └── index.ts │ ├── asset │ │ └── index.ts │ ├── async_map │ │ └── index.ts │ ├── bigint_buffer │ │ └── index.ts │ ├── block_source │ │ ├── block.test.ts │ │ ├── block_source.ts │ │ ├── decoded_block.ts │ │ ├── defi_interaction_event.ts │ │ ├── get_blocks.ts │ │ ├── index.ts │ │ └── server_block_source.ts │ ├── blockchain │ │ ├── asset.ts │ │ ├── blockchain.ts │ │ ├── blockchain_status.ts │ │ ├── ethereum_provider.ts │ │ ├── ethereum_rpc.ts │ │ ├── ethereum_signer.ts │ │ ├── index.ts │ │ ├── price_feed.ts │ │ ├── tx_hash.ts │ │ └── typed_data.ts │ ├── bridge_call_data │ │ ├── aux_data_selector.ts │ │ ├── bit_config.ts │ │ ├── bridge_call_data.ts │ │ ├── bridge_call_data_config.ts │ │ ├── index.test.ts │ │ ├── index.ts │ │ ├── validate_bridge_call_data.test.ts │ │ └── validate_bridge_call_data.ts │ ├── client_proofs │ │ ├── account_proof │ │ │ ├── account_prover.test.ts │ │ │ ├── account_prover.ts │ │ │ ├── account_tx.test.ts │ │ │ ├── account_tx.ts │ │ │ ├── account_verifier.ts │ │ │ ├── create_account_proof_signing_data.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── join_split_proof │ │ │ ├── create_join_split_proof_signing_data.ts │ │ │ ├── index.ts │ │ │ ├── join_split_prover.test.ts │ │ │ ├── join_split_prover.ts │ │ │ ├── join_split_tx.test.ts │ │ │ ├── join_split_tx.ts │ │ │ └── join_split_verifier.ts │ │ ├── proof_data │ │ │ ├── account_proof_data.ts │ │ │ ├── create_tx_id.ts │ │ │ ├── defi_claim_proof_data.ts │ │ │ ├── defi_deposit_proof_data.ts │ │ │ ├── index.ts │ │ │ ├── join_split_proof_data.ts │ │ │ ├── proof_data.test.ts │ │ │ ├── proof_data.ts │ │ │ └── proof_id.ts │ │ └── prover │ │ │ ├── index.ts │ │ │ ├── prover.ts │ │ │ └── unrolled_prover.ts │ ├── crs │ │ └── index.ts │ ├── crypto │ │ ├── aes128 │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── blake2s │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── keccak256 │ │ │ └── index.ts │ │ ├── pedersen │ │ │ ├── index.ts │ │ │ ├── pedersen.test.ts │ │ │ ├── pedersen.ts │ │ │ ├── pooled_pedersen.ts │ │ │ └── single_pedersen.ts │ │ ├── random │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── schnorr │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ └── signature.ts │ │ └── sha256 │ │ │ ├── index.test.ts │ │ │ └── index.ts │ ├── ecc │ │ ├── grumpkin │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ └── index.ts │ ├── environment │ │ ├── index.ts │ │ └── init │ │ │ ├── init.ts │ │ │ └── init_config.ts │ ├── errors │ │ └── index.ts │ ├── fft │ │ ├── fft.ts │ │ ├── index.ts │ │ ├── pooled_fft.ts │ │ └── single_fft.ts │ ├── fifo │ │ ├── bounded_serial_queue.ts │ │ ├── index.ts │ │ ├── memory_fifo.ts │ │ ├── semaphore.ts │ │ └── serial_queue.ts │ ├── iso_fetch │ │ └── index.ts │ ├── log │ │ ├── console.ts │ │ ├── debug.ts │ │ ├── index.ts │ │ ├── log_history.test.ts │ │ └── log_history.ts │ ├── merkle_tree │ │ ├── bench.test.ts │ │ ├── hash_path.ts │ │ ├── hasher.ts │ │ ├── index.ts │ │ ├── memory_merkle_tree.test.ts │ │ ├── memory_merkle_tree.ts │ │ ├── merkle_tree.test.ts │ │ └── merkle_tree.ts │ ├── mutex │ │ ├── index.ts │ │ ├── mutex.test.ts │ │ └── mutex_database.ts │ ├── note_algorithms │ │ ├── batch_decrypt_notes.test.ts │ │ ├── batch_decrypt_notes.ts │ │ ├── claim_note_tx_data.ts │ │ ├── decrypted_note.ts │ │ ├── defi_interaction_note.test.ts │ │ ├── defi_interaction_note.ts │ │ ├── derive_note_secret.ts │ │ ├── index.ts │ │ ├── note_algorithms.test.ts │ │ ├── note_algorithms.ts │ │ ├── note_decryptor │ │ │ ├── index.ts │ │ │ ├── note_decryptor.ts │ │ │ ├── pooled_note_decryptor.ts │ │ │ └── single_note_decryptor.ts │ │ ├── recover_tree_notes.ts │ │ ├── tree_claim_note.test.ts │ │ ├── tree_claim_note.ts │ │ ├── tree_note.test.ts │ │ └── tree_note.ts │ ├── offchain_tx_data │ │ ├── index.ts │ │ ├── offchain_account_data.test.ts │ │ ├── offchain_account_data.ts │ │ ├── offchain_defi_claim_data.test.ts │ │ ├── offchain_defi_claim_data.ts │ │ ├── offchain_defi_deposit_data.test.ts │ │ ├── offchain_defi_deposit_data.ts │ │ ├── offchain_join_split_data.test.ts │ │ ├── offchain_join_split_data.ts │ │ └── slice_offchain_tx_data.ts │ ├── pippenger │ │ ├── index.ts │ │ ├── pippenger.ts │ │ ├── pooled_pippenger.ts │ │ ├── single_pippenger.test.ts │ │ └── single_pippenger.ts │ ├── retry │ │ └── index.ts │ ├── rollup_proof │ │ ├── decode_inner_proof.ts │ │ ├── encode_inner_proof.ts │ │ ├── fixtures.ts │ │ ├── index.ts │ │ ├── inner_proof.test.ts │ │ ├── inner_proof.ts │ │ ├── rollup_account_proof_data.test.ts │ │ ├── rollup_account_proof_data.ts │ │ ├── rollup_defi_claim_proof_data.test.ts │ │ ├── rollup_defi_claim_proof_data.ts │ │ ├── rollup_defi_deposit_proof_data.test.ts │ │ ├── rollup_defi_deposit_proof_data.ts │ │ ├── rollup_deposit_proof_data.test.ts │ │ ├── rollup_deposit_proof_data.ts │ │ ├── rollup_padding_proof_data.ts │ │ ├── rollup_proof_data.test.ts │ │ ├── rollup_proof_data.ts │ │ ├── rollup_send_proof_data.test.ts │ │ ├── rollup_send_proof_data.ts │ │ ├── rollup_withdraw_proof_data.test.ts │ │ └── rollup_withdraw_proof_data.ts │ ├── rollup_provider │ │ ├── bridge_config.ts │ │ ├── bridge_publish_stats_query.ts │ │ ├── bridge_status.ts │ │ ├── index.ts │ │ ├── privacy_set.ts │ │ ├── rollup_provider.ts │ │ ├── rollup_provider_status.ts │ │ └── server_rollup_provider.ts │ ├── rounding │ │ ├── index.ts │ │ ├── round_up.test.ts │ │ └── round_up.ts │ ├── serialize │ │ ├── deserializer.ts │ │ ├── free_funcs.ts │ │ ├── index.ts │ │ ├── serialize.test.ts │ │ └── serializer.ts │ ├── sleep │ │ └── index.ts │ ├── timer │ │ ├── index.ts │ │ ├── timeout.ts │ │ └── timer.ts │ ├── transport │ │ ├── browser │ │ │ ├── index.ts │ │ │ ├── message_port_socket.ts │ │ │ ├── shared_worker_connector.ts │ │ │ ├── shared_worker_listener.ts │ │ │ ├── worker_connector.ts │ │ │ └── worker_listener.ts │ │ ├── dispatch │ │ │ ├── create_dispatch_fn.ts │ │ │ ├── create_dispatch_proxy.ts │ │ │ └── messages.ts │ │ ├── index.ts │ │ ├── interface │ │ │ ├── connector.ts │ │ │ ├── listener.ts │ │ │ ├── socket.ts │ │ │ └── transferable.ts │ │ ├── node │ │ │ ├── index.ts │ │ │ ├── node_connector.ts │ │ │ ├── node_connector_socket.ts │ │ │ ├── node_listener.ts │ │ │ └── node_listener_socket.ts │ │ ├── transport_client.ts │ │ └── transport_server.ts │ ├── tx_id │ │ └── index.ts │ ├── viewing_key │ │ ├── index.ts │ │ ├── viewing_key.test.ts │ │ └── viewing_key_data.ts │ ├── wasm │ │ ├── async_call_state.ts │ │ ├── aztec-connect.wasm │ │ ├── barretenberg_wasm.test.ts │ │ ├── barretenberg_wasm.ts │ │ ├── barretenberg_worker.ts │ │ ├── browser │ │ │ ├── index.ts │ │ │ ├── web_data_store.ts │ │ │ ├── web_worker.ts │ │ │ └── web_worker_factory.ts │ │ ├── data_store.ts │ │ ├── index.ts │ │ ├── node │ │ │ ├── index.ts │ │ │ ├── node_data_store.ts │ │ │ ├── node_worker.ts │ │ │ └── node_worker_factory.ts │ │ ├── worker.test.ts │ │ ├── worker_factory.ts │ │ ├── worker_pool.test.ts │ │ └── worker_pool.ts │ ├── world_state │ │ ├── index.ts │ │ ├── world_state.ts │ │ └── world_state_constants.ts │ └── world_state_db │ │ ├── index.test.ts │ │ └── index.ts ├── tsconfig.dest.json ├── tsconfig.json ├── webpack.config.dev.js └── webpack.config.prod.js ├── block-server ├── .dockerignore ├── .eslintrc.cjs ├── .gitignore ├── .vscode │ └── launch.json ├── Dockerfile ├── README.md ├── package.json ├── src │ ├── app.ts │ ├── blockCache.test.ts │ ├── blockCache.ts │ ├── index.ts │ └── server.ts ├── terraform │ ├── dev │ │ ├── main.tf │ │ └── variables.tf │ ├── prod │ │ ├── main.tf │ │ └── variables.tf │ ├── servicediscovery-drain.sh │ ├── stage │ │ ├── main.tf │ │ └── variables.tf │ └── testnet │ │ ├── main.tf │ │ └── variables.tf ├── tsconfig.dest.json └── tsconfig.json ├── blockchain ├── .eslintrc.cjs ├── .gitattributes ├── .gitignore ├── .prettierignore ├── Dockerfile ├── README.md ├── package.json ├── scripts │ ├── as_cjs │ ├── compile_and_test │ └── run_tests ├── src │ ├── abis.ts │ ├── abis │ │ ├── bridges │ │ │ ├── CurveStEthBridge.sol │ │ │ │ └── CurveStEthBridge.json │ │ │ ├── ElementBridge.sol │ │ │ │ └── ElementBridge.json │ │ │ ├── ILido.sol │ │ │ │ └── ILido.json │ │ │ ├── IVault.sol │ │ │ │ ├── IAsset.json │ │ │ │ └── IVault.json │ │ │ ├── IWstETH.sol │ │ │ │ └── IWstETH.json │ │ │ └── LidoBridge.sol │ │ │ │ └── LidoBridge.json │ │ ├── contracts │ │ │ ├── AlwaysTrueVerifier.sol │ │ │ ├── AztecFaucet.sol │ │ │ ├── AztecFeeDistributor.sol │ │ │ ├── DataProvider.sol │ │ │ ├── DefiBridgeProxy.sol │ │ │ ├── ERC20Mintable.sol │ │ │ ├── IDefiBridge.sol │ │ │ ├── MockVerifier.sol │ │ │ ├── PermitHelper.sol │ │ │ ├── ProxyAdmin.sol │ │ │ ├── ProxyDeployer.sol │ │ │ ├── RollupProcessor.sol │ │ │ ├── RollupProcessorV2.sol │ │ │ ├── TransparentUpgradeableProxy.sol │ │ │ ├── Verifier1x1.sol │ │ │ └── Verifier28x32.sol │ │ └── mocks │ │ │ ├── ERC20.json │ │ │ ├── IBridgeDataProvider.json │ │ │ ├── ICurveFactory.json │ │ │ ├── ICurveProvider.json │ │ │ ├── ICurveRegistry.json │ │ │ ├── ICurveStablePool.json │ │ │ ├── ICurveZap.json │ │ │ ├── ISwapRouter.json │ │ │ ├── MockBridgeDataProvider.json │ │ │ └── WETH9.json │ ├── client_ethereum_blockchain.ts │ ├── contracts │ │ ├── asset │ │ │ ├── eth_asset.ts │ │ │ ├── index.ts │ │ │ └── token_asset.ts │ │ ├── bridge_data_provider │ │ │ ├── bridge_data_provider.test.ts │ │ │ ├── bridge_data_provider.ts │ │ │ └── index.ts │ │ ├── contract_with_signer.ts │ │ ├── contracts.ts │ │ ├── decode_error.test.ts │ │ ├── decode_error.ts │ │ ├── defi_bridge │ │ │ ├── defi_bridge.ts │ │ │ └── index.ts │ │ ├── fee_distributor │ │ │ ├── fee_distributor.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── price_feed │ │ │ ├── eth_price_feed.ts │ │ │ ├── gas_price_feed.ts │ │ │ ├── index.ts │ │ │ └── token_price_feed.ts │ │ └── rollup_processor │ │ │ ├── index.ts │ │ │ ├── proxy_admin.ts │ │ │ ├── rollup_processor.ts │ │ │ └── solidity_format_signatures.ts │ ├── create_permit_data.ts │ ├── earliest_block │ │ └── index.ts │ ├── ethereum_blockchain.test.ts │ ├── ethereum_blockchain.ts │ ├── fork_helpers │ │ └── manipulate_blocks.ts │ ├── index.ts │ ├── provider │ │ ├── ethers_adapter.ts │ │ ├── index.ts │ │ ├── json_rpc_provider.ts │ │ ├── multi_json_rpc_provider.ts │ │ ├── wallet_provider.ts │ │ ├── web3_adapter.ts │ │ └── web3_provider.ts │ ├── signer │ │ ├── index.ts │ │ └── web3_signer.ts │ ├── tokens │ │ ├── index.ts │ │ ├── mainnet_addresses.ts │ │ ├── token_store.ts │ │ └── uniswap.ts │ ├── units.test.ts │ ├── units.ts │ └── validate_signature.ts ├── tsconfig.dest.json └── tsconfig.json ├── contracts-verifier-test ├── .dockerignore ├── .gitignore ├── Dockerfile ├── README.md ├── foundry.toml ├── package.json ├── src │ └── test │ │ └── Verifier.t.sol ├── tsconfig.dest.json ├── tsconfig.json └── verifier-fixtures │ ├── create_fixture.sh │ ├── create_rollup_proof.sh │ └── index.ts ├── end-to-end ├── .dockerignore ├── .eslintrc.cjs ├── .gitignore ├── .vscode │ └── launch.json ├── Dockerfile ├── README.md ├── contracts.json ├── media │ └── e2e-overview.png ├── package.json ├── scripts │ ├── docker-compose-browser.yml │ ├── docker-compose.dev.yml │ ├── docker-compose.fork.yml │ ├── docker-compose.integration.yml │ ├── docker-compose.yml │ ├── download_all_data.sh │ ├── run_smoketest │ ├── run_tests │ ├── start_browser_e2e.sh │ └── start_e2e.sh ├── src │ ├── async_map.ts │ ├── create_funded_wallet_provider.ts │ ├── e2e.test.ts │ ├── e2e_account.test.ts │ ├── e2e_async_bridge.test.ts │ ├── e2e_browser.test.ts │ ├── e2e_chained_txs.test.ts │ ├── e2e_chained_txs_with_spending_keys.test.ts │ ├── e2e_deposit.test.ts │ ├── e2e_deposit_approval.test.ts │ ├── e2e_deposit_permit.test.ts │ ├── e2e_migrate_account_and_funds.test.ts │ ├── e2e_migrated_accounts.test.ts │ ├── e2e_non_fee_assets.test.ts │ ├── e2e_subsidy.test.ts │ ├── e2e_subsidy_async.test.ts │ ├── e2e_sync.test.ts │ ├── e2e_sync_bridge.test.ts │ ├── e2e_sync_browser.test.ts │ ├── e2e_virtual_assets.test.ts │ ├── int_rollup_processor.test.ts │ ├── rollup_processor_helpers │ │ └── create_mock_proof.ts │ └── sdk_utils.ts ├── tsconfig.dest.json └── tsconfig.json ├── eslint-config ├── index.js └── package.json ├── falafel ├── .dockerignore ├── .eslintrc.cjs ├── .gitignore ├── .vscode │ └── launch.json ├── Dockerfile ├── README.md ├── bootstrap.sh ├── config │ ├── dev_testnet_initial_config.json │ └── e2e_test_initial_config.json ├── package.json ├── scripts │ ├── clone_prod.sh │ ├── export_addresses.sh │ ├── export_rds_db.sh │ ├── import_rds_db.sh │ ├── start_e2e.sh │ ├── start_e2e_prover.sh │ ├── start_prod_clone.sh │ └── start_wasabi.sh ├── src │ ├── app.ts │ ├── bridge │ │ ├── bridge_resolver.test.ts │ │ ├── bridge_resolver.ts │ │ ├── bridge_stats_query.test.ts │ │ ├── bridge_stats_query.ts │ │ ├── bridge_subsidy_provider.test.ts │ │ ├── bridge_subsidy_provider.ts │ │ └── index.ts │ ├── claim_proof_creator.ts │ ├── cli │ │ ├── diagnostics.test.ts │ │ ├── diagnostics.ts │ │ └── index.ts │ ├── compliance │ │ ├── address_check_provider.ts │ │ ├── address_check_providers.test.ts │ │ ├── aztec_blacklist_provider.test.ts │ │ ├── aztec_blacklist_provider.ts │ │ ├── index.ts │ │ ├── rate_limiter.test.ts │ │ └── rate_limiter.ts │ ├── configurator.ts │ ├── entity │ │ ├── account.ts │ │ ├── asset_metrics.ts │ │ ├── bridge_metrics.ts │ │ ├── buffer_column.ts │ │ ├── claim.ts │ │ ├── index.ts │ │ ├── rollup.ts │ │ ├── rollup_proof.ts │ │ ├── transformer.ts │ │ └── tx.ts │ ├── environment │ │ ├── index.ts │ │ └── init │ │ │ ├── data │ │ │ ├── default │ │ │ │ └── accounts │ │ │ ├── mainnet │ │ │ │ └── accounts │ │ │ └── mainnet_fork │ │ │ │ └── accounts │ │ │ ├── init.ts │ │ │ └── init_config.ts │ ├── get_components.ts │ ├── get_tx_type.ts │ ├── index.ts │ ├── metrics │ │ └── index.ts │ ├── pipeline_coordinator │ │ ├── bridge_tx_queue.test.ts │ │ ├── bridge_tx_queue.ts │ │ ├── index.ts │ │ ├── pipeline_coordinator.test.ts │ │ ├── publish_time_manager.test.ts │ │ ├── publish_time_manager.ts │ │ ├── rollup_coordinator.test.ts │ │ ├── rollup_coordinator.ts │ │ ├── rollup_profiler.test.ts │ │ └── rollup_profiler.ts │ ├── rollup_aggregator.ts │ ├── rollup_creator.test.ts │ ├── rollup_creator.ts │ ├── rollup_db │ │ ├── cached_rollup_db.ts │ │ ├── fixtures.ts │ │ ├── index.ts │ │ ├── log_rollup_db.ts │ │ ├── parse_interaction_result.ts │ │ ├── rollup_dao_to_block_buffer.ts │ │ ├── rollup_db.test.ts │ │ ├── rollup_db.ts │ │ ├── sync_rollup_db.ts │ │ └── tx_dao_to_account_dao.ts │ ├── rollup_pipeline.ts │ ├── rollup_publisher.ts │ ├── server.ts │ ├── tx_fee_resolver │ │ ├── fee_calculator.test.ts │ │ ├── fee_calculator.ts │ │ ├── fixtures.ts │ │ ├── gas_overhead.test.ts │ │ ├── get_gas_overhead.ts │ │ ├── index.ts │ │ ├── price_tracker.test.ts │ │ ├── price_tracker.ts │ │ └── tx_fee_resolver.test.ts │ ├── tx_receiver │ │ ├── index.ts │ │ ├── tx.ts │ │ ├── tx_fee_allocator.test.ts │ │ ├── tx_fee_allocator.ts │ │ ├── tx_receiver.test.ts │ │ └── tx_receiver.ts │ ├── version.ts │ ├── world_state.test.ts │ └── world_state.ts ├── terraform │ ├── dev │ │ ├── main.tf │ │ └── variables.tf │ ├── prod │ │ ├── main.tf │ │ └── variables.tf │ ├── servicediscovery-drain.sh │ ├── stage │ │ ├── main.tf │ │ └── variables.tf │ └── testnet │ │ ├── main.tf │ │ └── variables.tf ├── tsconfig.dest.json └── tsconfig.json ├── halloumi ├── .eslintrc.cjs ├── .gitignore ├── Dockerfile ├── README.md ├── bootstrap.sh ├── package.json ├── scripts │ ├── start_e2e.sh │ └── start_e2e_prover.sh ├── src │ ├── app.ts │ ├── index.ts │ ├── proof_generator │ │ ├── claim_proof.test.ts │ │ ├── claim_proof.ts │ │ ├── cli_proof_generator.ts │ │ ├── http_job_protocol.ts │ │ ├── http_job_server.test.ts │ │ ├── http_job_server.ts │ │ ├── http_job_servers.ts │ │ ├── http_job_worker.ts │ │ ├── index.ts │ │ ├── proof_generator.ts │ │ ├── proof_request.ts │ │ ├── root_rollup.test.ts │ │ ├── root_rollup.ts │ │ ├── root_verifier.ts │ │ ├── tx_rollup.test.ts │ │ └── tx_rollup.ts │ └── server.ts ├── terraform │ ├── dev │ │ ├── main.tf │ │ └── variables.tf │ ├── prod │ │ ├── main.tf │ │ └── variables.tf │ ├── servicediscovery-drain.sh │ ├── stage │ └── testnet │ │ ├── main.tf │ │ └── variables.tf ├── tsconfig.dest.json └── tsconfig.json ├── hummus ├── .dockerignore ├── .eslintrc.cjs ├── .gitignore ├── Dockerfile ├── README.md ├── package.json ├── src │ ├── cli.ts │ ├── index.html │ ├── index.tsx │ ├── terminal │ │ ├── cursor.ts │ │ ├── index.ts │ │ ├── terminal.ts │ │ ├── terminal_component.tsx │ │ ├── terminal_handler.ts │ │ └── terminal_page.tsx │ └── terminal_kit.ts ├── terraform │ ├── dev │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ ├── prod │ ├── stage │ └── testnet ├── tsconfig.cli.json ├── tsconfig.json └── webpack.config.js ├── kebab ├── .dockerignore ├── .eslintrc.cjs ├── .gitignore ├── Dockerfile ├── README.md ├── package.json ├── scripts │ ├── start_e2e.sh │ └── start_e2e_prover.sh ├── src │ ├── @types │ │ └── json-normalize.d.ts │ ├── app.ts │ ├── config.ts │ ├── configurator.ts │ ├── entity │ │ └── eth_event.ts │ ├── eth_event.ts │ ├── index.ts │ ├── log_db.ts │ ├── server.ts │ ├── topic_event_retriever.ts │ └── types.ts ├── terraform │ ├── dev │ │ ├── main.tf │ │ └── variables.tf │ ├── prod │ │ ├── main.tf │ │ └── variables.tf │ ├── servicediscovery-drain.sh │ ├── stage │ │ ├── main.tf │ │ └── variables.tf │ └── testnet │ │ ├── main.tf │ │ └── variables.tf └── tsconfig.json ├── nym-gateway ├── .dockerignore ├── .eslintrc.cjs ├── .gitignore ├── Dockerfile ├── README.md ├── package.json ├── scripts │ └── test-surb.js ├── src │ ├── app.ts │ ├── config.ts │ ├── index.ts │ └── server.ts ├── start-nym.sh ├── terraform │ ├── dev │ │ ├── main.tf │ │ └── variables.tf │ ├── prod │ │ ├── main.tf │ │ └── variables.tf │ ├── servicediscovery-drain.sh │ ├── stage │ │ ├── main.tf │ │ └── variables.tf │ └── testnet │ │ ├── main.tf │ │ └── variables.tf └── tsconfig.json ├── package.json ├── sdk ├── .eslintrc.cjs ├── .vscode │ └── launch.json ├── Dockerfile ├── README.md ├── package.json ├── scripts │ └── start_e2e.sh ├── src │ ├── auth_algorithms │ │ ├── auth_algorithms.ts │ │ ├── index.ts │ │ └── key_pair_auth_algorithms.ts │ ├── aztec_sdk │ │ ├── aztec_sdk.ts │ │ ├── aztec_sdk_user.ts │ │ ├── create_aztec_sdk.ts │ │ ├── fee_calculator.test.ts │ │ ├── fee_calculator.ts │ │ ├── group_user_txs.test.ts │ │ ├── group_user_txs.ts │ │ ├── index.ts │ │ ├── tx_value_calculator.test.ts │ │ └── tx_value_calculator.ts │ ├── block_context │ │ ├── block_context.test.ts │ │ └── block_context.ts │ ├── cache_request │ │ └── index.ts │ ├── client_log │ │ └── client_log.ts │ ├── controllers │ │ ├── add_spending_key_controller.ts │ │ ├── create_tx_ref_no.ts │ │ ├── defi_controller.ts │ │ ├── deposit_controller.ts │ │ ├── deposit_handler.ts │ │ ├── fee_controller.ts │ │ ├── index.ts │ │ ├── migrate_account_controller.ts │ │ ├── recover_account_controller.ts │ │ ├── register_controller.ts │ │ ├── transfer_controller.ts │ │ └── withdraw_controller.ts │ ├── core_sdk │ │ ├── block_downloader.ts │ │ ├── core_sdk.ts │ │ ├── core_sdk_options.ts │ │ ├── create_core_sdk.ts │ │ ├── index.ts │ │ ├── sdk_status.ts │ │ ├── sdk_version.ts │ │ └── synchroniser.ts │ ├── core_tx │ │ ├── core_account_tx.ts │ │ ├── core_claim_tx.ts │ │ ├── core_defi_tx.ts │ │ ├── core_payment_tx.ts │ │ ├── fixtures.ts │ │ └── index.ts │ ├── database │ │ ├── database.ts │ │ ├── dexie_database.ts │ │ ├── index.ts │ │ ├── node │ │ │ ├── account_tx_dao.ts │ │ │ ├── alias_dao.ts │ │ │ ├── defi_tx_dao.ts │ │ │ ├── index.ts │ │ │ ├── key_dao.ts │ │ │ ├── mutex_dao.ts │ │ │ ├── note_dao.ts │ │ │ ├── payment_tx_dao.ts │ │ │ ├── spending_key_dao.ts │ │ │ ├── transformer.ts │ │ │ └── user_data_dao.ts │ │ ├── sort_txs.ts │ │ ├── sync_database.ts │ │ └── test │ │ │ ├── dexie_database.test.ts │ │ │ ├── fixtures.ts │ │ │ ├── sql_database.test.ts │ │ │ └── test_suite.ts │ ├── genesis_state │ │ └── index.ts │ ├── get_num_workers │ │ └── index.ts │ ├── index.ts │ ├── key_pair │ │ ├── constant_key_pair.ts │ │ ├── index.ts │ │ └── key_pair.ts │ ├── level_db │ │ ├── browser │ │ │ └── index.ts │ │ ├── get_level_db.ts │ │ ├── index.ts │ │ └── node │ │ │ └── index.ts │ ├── note │ │ ├── index.ts │ │ ├── note.ts │ │ ├── restore_note_path.ts │ │ └── tree_note_to_note.ts │ ├── note_picker │ │ ├── index.ts │ │ └── note_picker.test.ts │ ├── proofs │ │ ├── account_proof_creator.ts │ │ ├── defi_deposit_proof_creator.ts │ │ ├── index.ts │ │ ├── join_split_tx_factory.ts │ │ ├── payment_proof_creator.ts │ │ ├── proof_input.ts │ │ ├── proof_input │ │ │ ├── account_proof_input_creator.ts │ │ │ ├── defi_proof_input_creator.ts │ │ │ ├── index.ts │ │ │ ├── join_split_tx_input.ts │ │ │ ├── join_split_tx_input_creator.ts │ │ │ ├── payment_proof_input_creator.ts │ │ │ ├── proof_input.ts │ │ │ └── proof_input_factory.ts │ │ ├── proof_output.ts │ │ ├── proof_output │ │ │ ├── account_proof_creator.ts │ │ │ ├── defi_proof_creator.ts │ │ │ ├── index.ts │ │ │ ├── payment_proof_creator.ts │ │ │ ├── proof_output.ts │ │ │ └── proof_output_factory.ts │ │ └── proof_request_data │ │ │ ├── account_proof_request_data.ts │ │ │ ├── defi_proof_request_data.ts │ │ │ ├── index.ts │ │ │ ├── payment_proof_request_data.ts │ │ │ ├── pick_input_notes.ts │ │ │ ├── proof_request_data_factory.ts │ │ │ └── spending_key_account.ts │ ├── serial_queue │ │ ├── index.ts │ │ ├── memory_serial_queue.ts │ │ ├── mutex_serial_queue.ts │ │ └── serial_queue.ts │ ├── signer │ │ ├── index.ts │ │ ├── recover_signer.ts │ │ ├── schnorr_signer.ts │ │ └── signer.ts │ ├── transport │ │ ├── index.ts │ │ ├── messages.ts │ │ ├── transport_client.ts │ │ ├── transport_connect.ts │ │ ├── transport_listener.ts │ │ ├── transport_server.ts │ │ └── transport_socket.ts │ ├── user │ │ ├── index.ts │ │ └── recovery_payload.ts │ ├── user_state │ │ ├── db_ops.ts │ │ ├── index.ts │ │ └── user_state.test.ts │ ├── user_tx │ │ ├── index.ts │ │ ├── user_account_tx.ts │ │ ├── user_defi_claim_tx.ts │ │ ├── user_defi_tx.ts │ │ ├── user_payment_tx.ts │ │ └── user_tx.ts │ └── version.ts ├── static │ ├── aztec-connect.wasm │ └── worker.js ├── terraform │ ├── dev │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ ├── prod │ ├── stage │ └── testnet ├── tsconfig.dest.json ├── tsconfig.json └── webpack.config.js ├── wallet ├── .dockerignore ├── .eslintrc.cjs ├── .gitignore ├── Dockerfile ├── README.md ├── package.json ├── src │ ├── index.html │ ├── index.tsx │ ├── min_form.tsx │ ├── tpm │ │ ├── parse_auth_data.ts │ │ ├── tpm_sign.ts │ │ └── vanillacbor.ts │ └── types.d.ts ├── terraform │ ├── dev │ │ ├── main.tf │ │ ├── outputs.tf │ │ └── variables.tf │ ├── prod │ ├── stage │ └── testnet ├── tsconfig.json └── webpack.config.js ├── wasabi ├── .eslintrc.cjs ├── .gitignore ├── .vscode │ └── launch.json ├── Dockerfile ├── README.md ├── package.json ├── src │ ├── agent.ts │ ├── agent_key.ts │ ├── agent_manager.ts │ ├── assets.ts │ ├── async_map.ts │ ├── aztec_deposits.ts │ ├── bridges.ts │ ├── clients │ │ ├── abis │ │ │ ├── bridges │ │ │ │ ├── ElementBridge.sol │ │ │ │ │ └── ElementBridge.json │ │ │ │ └── IVault.sol │ │ │ │ │ ├── IAsset.json │ │ │ │ │ └── IVault.json │ │ │ └── contracts │ │ │ │ └── RollupProcessor.sol │ │ │ │ └── RollupProcessor.json │ │ ├── bridge-data.ts │ │ ├── element-bridge-data.ts │ │ └── web3_provider.ts │ ├── element_agent.ts │ ├── element_agent_manager.ts │ ├── index.ts │ ├── manual_payment_agent.ts │ ├── payment_agent.ts │ ├── refund.ts │ ├── run.ts │ └── swapping_agent.ts ├── terraform │ ├── dev │ │ ├── main.tf │ │ └── variables.tf │ ├── stage │ └── testnet │ │ ├── main.tf │ │ └── variables.tf ├── tsconfig.dest.json └── tsconfig.json ├── yarn-project-base └── Dockerfile └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | 7 | [*.{js,json,yml}] 8 | charset = utf-8 9 | indent_style = space 10 | indent_size = 2 11 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | .yarn/releases/** binary 2 | .yarn/plugins/** binary 3 | yarn.lock -diff 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | dest 3 | node_modules 4 | .terraform 5 | .cache 6 | .clangd 7 | yarn-project/*/src/package_version.ts 8 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v18.8.0 2 | -------------------------------------------------------------------------------- /.vscode/c_cpp_properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations": [ 3 | { 4 | "name": "Linux", 5 | "includePath": ["${workspaceFolder}/**", "${workspaceFolder}/aztec-connect-cpp/src", "${workspaceFolder}/aztec-connect-cpp/barretenberg/cpp/src/aztec"], 6 | "defines": [], 7 | "compilerPath": "/usr/bin/clang", 8 | "cStandard": "c11", 9 | "cppStandard": "c++20", 10 | "intelliSenseMode": "clang-x64" 11 | } 12 | ], 13 | "version": 4 14 | } 15 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "arcanis.vscode-zipfs", 4 | "dbaeumer.vscode-eslint", 5 | "esbenp.prettier-vscode", 6 | "ms-vscode.cpptools", 7 | "eamodio.gitlens", 8 | "hashicorp.terraform", 9 | "ms-vsliveshare.vsliveshare", 10 | "ms-vsliveshare.vsliveshare-pack", 11 | "juanblanco.solidity", 12 | "styled-components.vscode-styled-components" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "address": "${config:mainframeAddress}", 9 | "port": 9221, 10 | "type": "node", 11 | "request": "attach", 12 | "name": "Attach to Remote", 13 | "skipFiles": ["/**"], 14 | "localRoot": "${workspaceFolder}", 15 | "sourceMaps": true 16 | } 17 | ] 18 | } -------------------------------------------------------------------------------- /PROJECT: -------------------------------------------------------------------------------- 1 | aztec-connect 2 | -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | v2.1 -------------------------------------------------------------------------------- /audits/Security Audit Results - Aztec Protocol.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AztecProtocol/aztec-connect/9374aae687ec5ea01adeb651e7b9ab0d69a1b33b/audits/Security Audit Results - Aztec Protocol.pdf -------------------------------------------------------------------------------- /aztec-connect-cpp/.gitignore: -------------------------------------------------------------------------------- 1 | build*/ 2 | src/wasi-sdk-* 3 | src/rollup/proofs/*/fixtures 4 | .vscode -------------------------------------------------------------------------------- /aztec-connect-cpp/cmake/arch.cmake: -------------------------------------------------------------------------------- 1 | if(WASM) 2 | # Disable SLP vectorization on WASM as it's brokenly slow. To give an idea, with this off it still takes 3 | # 2m:18s to compile scalar_multiplication.cpp, and with it on I estimate it's 50-100 times longer. I never 4 | # had the patience to wait it out... 5 | add_compile_options(-fno-exceptions -fno-slp-vectorize) 6 | endif() 7 | 8 | if(NOT WASM AND NOT APPLE) 9 | add_compile_options(-march=skylake) 10 | endif() 11 | -------------------------------------------------------------------------------- /aztec-connect-cpp/cmake/build.cmake: -------------------------------------------------------------------------------- 1 | if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) 2 | set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build." FORCE) 3 | endif() 4 | message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") 5 | 6 | if(CMAKE_BUILD_TYPE STREQUAL "RelWithAssert") 7 | add_compile_options(-O3) 8 | remove_definitions(-DNDEBUG) 9 | endif() -------------------------------------------------------------------------------- /aztec-connect-cpp/cmake/toolchain.cmake: -------------------------------------------------------------------------------- 1 | if (CMAKE_C_COMPILER AND CMAKE_CXX_COMPILER) 2 | message(STATUS "Toolchain: manually chosen ${CMAKE_C_COMPILER} and ${CMAKE_CXX_COMPILER}") 3 | else() 4 | if(NOT TOOLCHAIN) 5 | set(TOOLCHAIN "x86_64-linux-clang" CACHE STRING "Build toolchain." FORCE) 6 | endif() 7 | message(STATUS "Toolchain: ${TOOLCHAIN}") 8 | 9 | include("./cmake/toolchains/${TOOLCHAIN}.cmake") 10 | endif() -------------------------------------------------------------------------------- /aztec-connect-cpp/cmake/toolchains/x86_64-apple-clang.cmake: -------------------------------------------------------------------------------- 1 | set(APPLE ON) 2 | set(CMAKE_CXX_COMPILER "$ENV{BREW_PREFIX}/opt/llvm/bin/clang++") 3 | set(CMAKE_C_COMPILER "$ENV{BREW_PREFIX}/opt/llvm/bin/clang") -------------------------------------------------------------------------------- /aztec-connect-cpp/cmake/toolchains/x86_64-linux-clang.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_C_COMPILER "clang") 2 | set(CMAKE_CXX_COMPILER "clang++") -------------------------------------------------------------------------------- /aztec-connect-cpp/cmake/toolchains/x86_64-linux-gcc.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_C_COMPILER "gcc") 2 | set(CMAKE_CXX_COMPILER "g++") -------------------------------------------------------------------------------- /aztec-connect-cpp/cmake/toolchains/x86_64-linux-gcc10.cmake: -------------------------------------------------------------------------------- 1 | set(CMAKE_C_COMPILER "gcc-10") 2 | set(CMAKE_CXX_COMPILER "g++-10") -------------------------------------------------------------------------------- /aztec-connect-cpp/scripts/ac-tests: -------------------------------------------------------------------------------- 1 | rollup_proofs_account_tests 2 | rollup_proofs_claim_tests 3 | rollup_proofs_inner_proof_data_tests 4 | rollup_proofs_join_split_tests 5 | rollup_proofs_notes_tests 6 | rollup_proofs_standard_example_tests -------------------------------------------------------------------------------- /aztec-connect-cpp/scripts/run_tests: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | TESTS=$1 5 | shift 6 | 7 | $(aws ecr get-login --region us-east-2 --no-include-email) 2> /dev/null 8 | 9 | IMAGE_URI=278380418400.dkr.ecr.us-east-2.amazonaws.com/aztec-connect-cpp-x86_64-linux-clang-assert:cache-$COMMIT_HASH 10 | 11 | docker pull $IMAGE_URI 12 | 13 | if [ -f "$TESTS" ]; then 14 | TESTS=$(cat $TESTS | tr '\n' ' ') 15 | fi 16 | 17 | docker run --rm -t $IMAGE_URI /bin/sh -c "\ 18 | set -e; \ 19 | cd /usr/src/aztec-connect-cpp/barretenberg/cpp/srs_db; \ 20 | ./download_ignition.sh 1; \ 21 | cd /usr/src/aztec-connect-cpp/build; \ 22 | for BIN in $TESTS; do ./bin/\$BIN $@; done" -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/ci_failsafe/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aztec_connect_module(ci_failsafe) -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/ci_failsafe/failsafe.test.cpp: -------------------------------------------------------------------------------- 1 | #include "../constants.hpp" 2 | #include 3 | 4 | /** 5 | * @brief This test detects if the circuit change expected constant is disabled. It is used so that developers can 6 | * safely change stuff in circuits and run tests in PRs, but there is one last failsafe that doesn't allow them to merge 7 | * it. 8 | * 9 | */ 10 | TEST(ci_failsafe, detect_circuit_change_disabled) 11 | { 12 | EXPECT_EQ(rollup::circuit_gate_count::is_circuit_change_expected, 0); 13 | } -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/db_cli/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable( 2 | db_cli 3 | main.cpp 4 | ) 5 | 6 | target_link_libraries( 7 | db_cli 8 | PRIVATE 9 | barretenberg 10 | rollup_proofs_root_verifier 11 | ) -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/db_cli/get.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | 5 | struct GetRequest { 6 | uint8_t tree_id; 7 | uint256_t index; 8 | }; 9 | 10 | struct GetResponse { 11 | barretenberg::fr value; 12 | }; 13 | 14 | void read(std::istream& s, GetRequest& r) 15 | { 16 | read(s, r.tree_id); 17 | read(s, r.index); 18 | } 19 | 20 | void write(std::ostream& s, GetResponse const& r) 21 | { 22 | write(s, r.value); 23 | } 24 | 25 | std::ostream& operator<<(std::ostream& os, GetRequest const& get_request) 26 | { 27 | return os << "GET (tree:" << (int)get_request.tree_id << " index:" << get_request.index << ")"; 28 | } 29 | -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/keygen/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable( 2 | keygen 3 | main.cpp 4 | ) 5 | 6 | target_link_libraries( 7 | keygen 8 | PRIVATE 9 | barretenberg 10 | rollup_proofs_root_verifier 11 | ) -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(account) 2 | add_subdirectory(claim) 3 | add_subdirectory(inner_proof_data) 4 | add_subdirectory(join_split) 5 | add_subdirectory(notes) 6 | 7 | if(NOT WASM) 8 | add_subdirectory(rollup) 9 | add_subdirectory(root_rollup) 10 | add_subdirectory(root_verifier) 11 | add_subdirectory(standard_example) 12 | endif() -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/account/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aztec_connect_module( 2 | rollup_proofs_account 3 | rollup_proofs_inner_proof_data 4 | rollup_proofs_notes 5 | barretenberg) -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/account/compute_signing_data.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "account_tx.hpp" 3 | 4 | namespace rollup { 5 | namespace proofs { 6 | namespace account { 7 | 8 | barretenberg::fr compute_signing_data(account_tx const& tx); 9 | 10 | } // namespace account 11 | } // namespace proofs 12 | } // namespace rollup 13 | -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/account/index.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "account_tx_factory.hpp" 3 | #include "account_tx.hpp" 4 | #include "account.hpp" 5 | #include "c_bind.h" 6 | #include "compute_circuit_data.hpp" 7 | #include "create_proof.hpp" 8 | #include "verify.hpp" 9 | -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/account/verify.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "../verify.hpp" 3 | #include "./compute_circuit_data.hpp" 4 | #include "./account.hpp" 5 | #include 6 | 7 | namespace rollup { 8 | namespace proofs { 9 | namespace account { 10 | 11 | using namespace plonk::stdlib::types::turbo; 12 | 13 | verify_result verify_logic(account_tx& tx, circuit_data const& cd); 14 | 15 | verify_result verify(account_tx& tx, circuit_data const& cd); 16 | 17 | } // namespace account 18 | } // namespace proofs 19 | } // namespace rollup 20 | -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/add_zero_public_inputs.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace rollup { 5 | namespace proofs { 6 | 7 | using namespace plonk::stdlib::types::turbo; 8 | 9 | inline void add_zero_public_inputs(Composer& composer, size_t num) 10 | { 11 | for (size_t i = 0; i < num; ++i) { 12 | auto zero = field_ct(witness_ct(&composer, 0)); 13 | zero.assert_is_zero(); 14 | zero.set_public(); 15 | } 16 | } 17 | 18 | } // namespace proofs 19 | } // namespace rollup 20 | -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/claim/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aztec_connect_module( 2 | rollup_proofs_claim 3 | rollup_proofs_inner_proof_data 4 | rollup_proofs_notes 5 | barretenberg) -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/claim/claim_circuit.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "claim_tx.hpp" 3 | #include 4 | 5 | namespace rollup { 6 | namespace proofs { 7 | namespace claim { 8 | 9 | using namespace plonk::stdlib::types::turbo; 10 | 11 | void claim_circuit(Composer& composer, claim_tx const& tx); 12 | 13 | } // namespace claim 14 | } // namespace proofs 15 | } // namespace rollup 16 | -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/claim/index.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "claim_circuit.hpp" 3 | #include "claim_tx_factory.hpp" 4 | #include "claim_tx.hpp" 5 | #include "create_proof.hpp" 6 | #include "get_circuit_data.hpp" 7 | #include "ratio_check.hpp" 8 | #include "verify.hpp" -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/claim/verify.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "../verify.hpp" 3 | #include "./get_circuit_data.hpp" 4 | #include 5 | 6 | namespace rollup { 7 | namespace proofs { 8 | namespace claim { 9 | 10 | using namespace plonk::stdlib::types::turbo; 11 | 12 | verify_result verify_logic(claim_tx& tx, circuit_data const& cd); 13 | 14 | verify_result verify(claim_tx& tx, circuit_data const& cd); 15 | 16 | std::shared_ptr get_verification_key(); 17 | 18 | size_t get_number_of_gates(); 19 | 20 | } // namespace claim 21 | } // namespace proofs 22 | } // namespace rollup 23 | -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/inner_proof_data/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aztec_connect_module( 2 | rollup_proofs_inner_proof_data 3 | barretenberg) -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/join_split/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aztec_connect_module( 2 | rollup_proofs_join_split 3 | rollup_proofs_inner_proof_data 4 | rollup_proofs_notes 5 | barretenberg) -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/join_split/compute_circuit_data.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "join_split_tx.hpp" 3 | #include "../compute_circuit_data.hpp" 4 | 5 | namespace rollup { 6 | namespace proofs { 7 | namespace join_split { 8 | 9 | join_split_tx noop_tx(); 10 | 11 | using circuit_data = proofs::circuit_data; 12 | 13 | circuit_data get_circuit_data(std::shared_ptr const& srs, bool mock = false); 14 | 15 | } // namespace join_split 16 | } // namespace proofs 17 | } // namespace rollup -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/join_split/compute_signing_data.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "join_split_tx.hpp" 3 | 4 | namespace rollup { 5 | namespace proofs { 6 | namespace join_split { 7 | 8 | barretenberg::fr compute_signing_data(join_split_tx const& tx); 9 | 10 | } // namespace join_split 11 | } // namespace proofs 12 | } // namespace rollup -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/join_split/create_noop_join_split_proof.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "compute_circuit_data.hpp" 3 | #include 4 | #include 5 | 6 | namespace rollup { 7 | namespace proofs { 8 | namespace join_split { 9 | 10 | std::vector create_noop_join_split_proof(circuit_data const& circuit_data, 11 | barretenberg::fr const& merkle_root, 12 | bool valid = true, 13 | bool mock = false); 14 | 15 | } // namespace join_split 16 | } // namespace proofs 17 | } // namespace rollup 18 | -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/join_split/index.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "c_bind.h" 3 | #include "compute_circuit_data.hpp" 4 | #include "create_noop_join_split_proof.hpp" 5 | #include "create_proof.hpp" 6 | #include "join_split_circuit.hpp" 7 | #include "join_split_tx_factory.hpp" 8 | #include "join_split_tx.hpp" 9 | #include "join_split.hpp" 10 | #include "sign_join_split_tx.hpp" 11 | #include "verify_signature.hpp" -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/join_split/sign_join_split_tx.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include "../notes/native/value/value_note.hpp" 4 | #include "join_split_tx.hpp" 5 | 6 | namespace rollup { 7 | namespace proofs { 8 | namespace join_split { 9 | 10 | using namespace crypto::schnorr; 11 | 12 | signature sign_join_split_tx(proofs::join_split::join_split_tx const& tx, 13 | key_pair const& keys); 14 | 15 | } // namespace join_split 16 | } // namespace proofs 17 | } // namespace rollup -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/notes/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aztec_connect_module( 2 | rollup_proofs_notes 3 | barretenberg) -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/notes/circuit/account/index.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "account_note.hpp" 3 | #include "commit.hpp" -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/notes/circuit/asset_id.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace rollup::proofs::notes::circuit { 5 | 6 | using namespace plonk::stdlib::types::turbo; 7 | 8 | std::pair deflag_asset_id(suint_ct const& asset_id); 9 | 10 | bool_ct get_asset_id_flag(suint_ct const& asset_id); 11 | 12 | } // namespace rollup::proofs::notes::circuit -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/notes/circuit/claim/index.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "claim_note.hpp" 3 | #include "complete_partial_commitment.hpp" 4 | #include "compute_nullifier.hpp" 5 | #include "create_partial_commitment.hpp" 6 | #include "witness_data.hpp" -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/notes/circuit/defi_interaction/index.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "compute_nullifier.hpp" 3 | #include "note.hpp" 4 | #include "witness_data.hpp" -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/notes/circuit/index.hpp: -------------------------------------------------------------------------------- 1 | #include "asset_id.hpp" 2 | #include "bridge_call_data.hpp" 3 | #include "account/index.hpp" 4 | #include "claim/index.hpp" 5 | #include "defi_interaction/index.hpp" 6 | #include "value/index.hpp" -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/notes/circuit/value/compute_nullifier.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace rollup { 5 | namespace proofs { 6 | namespace notes { 7 | namespace circuit { 8 | 9 | using namespace barretenberg; 10 | using namespace plonk::stdlib::types::turbo; 11 | 12 | field_ct compute_nullifier(field_ct const& note_commitment, 13 | field_ct const& account_private_key, 14 | bool_ct const& is_note_in_use); 15 | 16 | } // namespace circuit 17 | } // namespace notes 18 | } // namespace proofs 19 | } // namespace rollup -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/notes/circuit/value/index.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "commit.hpp" 3 | #include "complete_partial_commitment.hpp" 4 | #include "compute_nullifier.hpp" 5 | #include "create_partial_commitment.hpp" 6 | #include "value_note.hpp" 7 | #include "witness_data.hpp" -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/notes/native/account/index.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "account_note.hpp" 3 | #include "compute_account_alias_hash_nullifier.hpp" 4 | #include "compute_account_public_key_nullifier.hpp" -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/notes/native/asset_id.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | 5 | namespace rollup::proofs::notes::native { 6 | 7 | std::pair deflag_asset_id(uint32_t const& asset_id); 8 | 9 | bool get_asset_id_flag(uint32_t const& asset_id); 10 | 11 | } // namespace rollup::proofs::notes::native -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/notes/native/claim/index.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "claim_note_tx_data.hpp" 3 | #include "claim_note.hpp" 4 | #include "complete_partial_commitment.hpp" 5 | #include "compute_nullifier.hpp" 6 | #include "create_partial_commitment.hpp" -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/notes/native/defi_interaction/index.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "compute_nullifier.hpp" 3 | #include "note.hpp" -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/notes/native/index.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "asset_id.hpp" 3 | #include "bridge_call_data.hpp" 4 | #include "account/index.hpp" 5 | #include "claim/index.hpp" 6 | #include "defi_interaction/index.hpp" 7 | #include "value/index.hpp" -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/notes/native/value/compute_nullifier.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace rollup { 5 | namespace proofs { 6 | namespace notes { 7 | namespace native { 8 | 9 | barretenberg::fr compute_nullifier(grumpkin::fq const& note_commitment, 10 | grumpkin::fr const& account_private_key, 11 | const bool is_note_in_use); 12 | 13 | } // namespace native 14 | } // namespace notes 15 | } // namespace proofs 16 | } // namespace rollup -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/notes/native/value/index.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "value_note.hpp" 3 | #include "compute_nullifier.hpp" -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/rollup/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aztec_connect_module( 2 | rollup_proofs_tx_rollup 3 | rollup_proofs_account 4 | rollup_proofs_claim 5 | rollup_proofs_join_split) -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/rollup/index.hpp: -------------------------------------------------------------------------------- 1 | #include "compute_circuit_data.hpp" 2 | #include "create_rollup_tx.hpp" 3 | #include "rollup_circuit.hpp" 4 | #include "rollup_proof_data.hpp" 5 | #include "rollup_tx.hpp" 6 | #include "verify.hpp" -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/rollup/verify.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "compute_circuit_data.hpp" 3 | #include "rollup_tx.hpp" 4 | 5 | namespace rollup { 6 | namespace proofs { 7 | namespace rollup { 8 | 9 | using namespace plonk::stdlib::types::turbo; 10 | 11 | verify_result verify_logic(rollup_tx& tx, circuit_data const& cd); 12 | 13 | verify_result verify(rollup_tx& tx, circuit_data const& cd); 14 | 15 | } // namespace rollup 16 | } // namespace proofs 17 | } // namespace rollup 18 | -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/root_rollup/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aztec_connect_module(rollup_proofs_root_rollup rollup_proofs_tx_rollup) -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/root_rollup/index.hpp: -------------------------------------------------------------------------------- 1 | #include "compute_circuit_data.hpp" 2 | #include "create_root_rollup_tx.hpp" 3 | #include "root_rollup_circuit.hpp" 4 | #include "root_rollup_broadcast_data.hpp" 5 | #include "root_rollup_proof_data.hpp" 6 | #include "root_rollup_tx.hpp" 7 | #include "verify.hpp" -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/root_rollup/verify.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "../verify.hpp" 3 | #include "compute_circuit_data.hpp" 4 | #include "root_rollup_tx.hpp" 5 | 6 | namespace rollup { 7 | namespace proofs { 8 | namespace root_rollup { 9 | 10 | using namespace barretenberg; 11 | using namespace plonk::stdlib::types::turbo; 12 | 13 | struct verify_result : ::rollup::proofs::verify_result { 14 | std::vector broadcast_data; 15 | }; 16 | 17 | verify_result verify_logic(root_rollup_tx& tx, circuit_data const& cd); 18 | 19 | verify_result verify(root_rollup_tx& tx, circuit_data const& cd); 20 | 21 | } // namespace root_rollup 22 | } // namespace proofs 23 | } // namespace rollup 24 | -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/root_verifier/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aztec_connect_module(rollup_proofs_root_verifier rollup_proofs_root_rollup) -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/root_verifier/index.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "compute_circuit_data.hpp" 3 | #include "create_root_verifier_tx.hpp" 4 | #include "root_verifier_circuit.hpp" 5 | #include "root_verifier_proof_data.hpp" 6 | #include "root_verifier_tx.hpp" 7 | #include "verify.hpp" -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/root_verifier/root_verifier_tx.test.cpp: -------------------------------------------------------------------------------- 1 | #include "root_verifier_tx.hpp" 2 | #include 3 | 4 | using namespace rollup::proofs::root_verifier; 5 | 6 | TEST(root_verifier_transaction, serialization) 7 | { 8 | root_verifier_tx tx; 9 | tx.broadcast_data = std::vector(66, 0xf); 10 | tx.proof_data = std::vector(123, 0x80); 11 | auto buf = to_buffer(tx); 12 | auto result = from_buffer(buf); 13 | EXPECT_EQ(result.broadcast_data, tx.broadcast_data); 14 | EXPECT_EQ(result.proof_data, tx.proof_data); 15 | } 16 | -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/standard_example/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | aztec_connect_module( 2 | rollup_proofs_standard_example 3 | barretenberg) -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/proofs/standard_example/c_bind.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define WASM_EXPORT __attribute__((visibility("default"))) 4 | 5 | extern "C" { 6 | 7 | WASM_EXPORT void standard_example__init_proving_key(); 8 | 9 | WASM_EXPORT void standard_example__init_verification_key(void* pippenger_ptr, uint8_t const* g2x); 10 | 11 | WASM_EXPORT void* standard_example__new_prover(); 12 | 13 | WASM_EXPORT void standard_example__delete_prover(void* prover); 14 | 15 | WASM_EXPORT bool standard_example__verify_proof(uint8_t* proof, uint32_t length); 16 | 17 | } -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/rollup_cli/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable( 2 | rollup_cli 3 | main.cpp 4 | ) 5 | 6 | target_link_libraries( 7 | rollup_cli 8 | PRIVATE 9 | barretenberg 10 | rollup_proofs_root_verifier 11 | ) -------------------------------------------------------------------------------- /aztec-connect-cpp/src/rollup/tx_factory/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable( 2 | tx_factory 3 | main.cpp 4 | ) 5 | 6 | target_link_libraries( 7 | tx_factory 8 | barretenberg 9 | rollup_proofs_root_verifier 10 | ) -------------------------------------------------------------------------------- /blockchain-vks/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/aztec-connect-cpp-x86_64-linux-clang 2 | 3 | FROM node:16-alpine3.15 4 | RUN apk update && apk add --no-cache bash curl 5 | COPY --from=0 /usr/src/aztec-connect-cpp/ /usr/src/aztec-connect-cpp 6 | WORKDIR /usr/src/blockchain-vks 7 | COPY . . 8 | RUN ./generate_vks.sh -------------------------------------------------------------------------------- /blockchain-vks/generate_vks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | OUTPUT_DIR=../../blockchain-vks/keys 5 | 6 | cd ../aztec-connect-cpp/ 7 | 8 | (cd barretenberg/cpp/srs_db && ./download_ignition.sh 1) 9 | 10 | cd build 11 | 12 | mkdir -p $OUTPUT_DIR 13 | 14 | ./bin/keygen 1 1 $OUTPUT_DIR true 2> >(awk '$0="mock: "$0' 1>&2) 15 | ./bin/keygen 1 1 $OUTPUT_DIR 2> >(awk '$0="real1x1: "$0' 1>&2) -------------------------------------------------------------------------------- /contracts/.dockerignore: -------------------------------------------------------------------------------- 1 | broadcast 2 | cache 3 | out 4 | Dockerfile 5 | lib 6 | serve 7 | # Contains aztec fork specific vars. 8 | scripts/start_e2e_fork.sh -------------------------------------------------------------------------------- /contracts/.gitignore: -------------------------------------------------------------------------------- 1 | .foundry 2 | broadcast 3 | cache 4 | out 5 | serve -------------------------------------------------------------------------------- /contracts/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eu 3 | 4 | # Clean 5 | rm -rf broadcast cache out serve 6 | 7 | # Install foundry. 8 | . ./scripts/install_foundry.sh 9 | 10 | # Install 11 | forge install --no-commit 12 | 13 | # Ensure libraries are at the correct version 14 | git submodule update --init --recursive ./lib 15 | 16 | # Compile contracts 17 | forge build -------------------------------------------------------------------------------- /contracts/deploy/dev: -------------------------------------------------------------------------------- 1 | redeploy=23 2 | -------------------------------------------------------------------------------- /contracts/deploy/stage: -------------------------------------------------------------------------------- 1 | redeploy=0 -------------------------------------------------------------------------------- /contracts/deploy/testnet: -------------------------------------------------------------------------------- 1 | redeploy=7 2 | -------------------------------------------------------------------------------- /contracts/scripts/install_foundry.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -eu 3 | 4 | export FOUNDRY_DIR="$PWD/.foundry" 5 | FOUNDRY_BIN_DIR="$FOUNDRY_DIR/bin" 6 | BIN_URL="https://raw.githubusercontent.com/foundry-rs/foundry/master/foundryup/foundryup" 7 | BIN_PATH="$FOUNDRY_BIN_DIR/foundryup" 8 | FOUNDRY_MAN_DIR="$FOUNDRY_DIR/share/man/man1" 9 | 10 | # Clean 11 | rm -rf $FOUNDRY_DIR 12 | 13 | # Install foundryup. 14 | mkdir -p $FOUNDRY_BIN_DIR 15 | mkdir -p $FOUNDRY_MAN_DIR 16 | curl -# -L $BIN_URL -o $BIN_PATH 17 | chmod +x $BIN_PATH 18 | export PATH=$FOUNDRY_BIN_DIR:$PATH 19 | 20 | # Use version. 21 | foundryup -------------------------------------------------------------------------------- /contracts/scripts/start_e2e_fork.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eu pipefail 3 | 4 | export FORK_BLOCK=15918000 5 | export FORK_URL=https://mainnet.infura.io/v3/9928b52099854248b3a096be07a6b23c 6 | export CHAIN_ID=3630 7 | 8 | ./scripts/start_e2e.sh -------------------------------------------------------------------------------- /contracts/src/core/interfaces/IVerifier.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // Copyright 2022 Aztec 3 | pragma solidity >=0.8.4; 4 | 5 | interface IVerifier { 6 | function verify(bytes memory _serializedProof, uint256 _publicInputsHash) external returns (bool); 7 | 8 | function getVerificationKeyHash() external pure returns (bytes32); 9 | } 10 | -------------------------------------------------------------------------------- /contracts/src/core/libraries/SafeCast.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // Copyright 2022 Aztec. 3 | pragma solidity >=0.8.4; 4 | 5 | library SafeCast { 6 | error SAFE_CAST_OVERFLOW(); 7 | 8 | function toU128(uint256 a) internal pure returns (uint128) { 9 | if (a > type(uint128).max) revert SAFE_CAST_OVERFLOW(); 10 | return uint128(a); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /contracts/src/test/mocks/ERC20RevertingTransfer.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // Copyright 2022 Aztec 3 | pragma solidity >=0.8.4; 4 | 5 | import {ERC20Mintable} from "./ERC20Mintable.sol"; 6 | 7 | /** 8 | * @dev Warning: do not deploy in real environments, for testing only 9 | * ERC20 contract where the transfer() fn will always throw 10 | */ 11 | contract ERC20RevertingTransfer is ERC20Mintable { 12 | constructor(string memory _symbol) ERC20Mintable(_symbol) {} 13 | 14 | function transfer(address, uint256) public pure override returns (bool) { 15 | require(true == false, "ERC20FaultyTransfer: FAILED"); 16 | return false; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /contracts/src/test/mocks/EmptyContract.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // Copyright 2022 Aztec 3 | pragma solidity >=0.8.4; 4 | 5 | // @dev Used in places where we need a contract address 6 | contract EmptyContract {} 7 | -------------------------------------------------------------------------------- /contracts/src/test/mocks/ProxyKiller.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Apache-2.0 2 | // Copyright 2022 Aztec 3 | pragma solidity >=0.8.4; 4 | 5 | contract ProxyKiller { 6 | function initialize() public { 7 | selfdestruct(payable(msg.sender)); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /contracts/src/test/mocks/RollupProcessorVPlus1.sol: -------------------------------------------------------------------------------- 1 | import {RollupProcessorV2} from "core/processors/RollupProcessorV2.sol"; 2 | 3 | contract RollupProcessorVPlus1 is RollupProcessorV2 { 4 | constructor() RollupProcessorV2(80, 100) {} 5 | 6 | function getImplementationVersion() public view override(RollupProcessorV2) returns (uint8) { 7 | return super.getImplementationVersion() + 1; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /contracts/terraform/stage/main.tf: -------------------------------------------------------------------------------- 1 | ../dev/main.tf -------------------------------------------------------------------------------- /markdown/specs/aztec-connect/book.toml: -------------------------------------------------------------------------------- 1 | [book] 2 | authors = ["Aztec"] 3 | language = "en" 4 | multilingual = false 5 | src = "src" 6 | title = "Aztec Connect" 7 | 8 | [output.html] 9 | additional-css = ["theme/css/style.css"] 10 | additional-js = ["theme/sidebar.js"] 11 | 12 | [build] 13 | build-dir = "dist" 14 | 15 | [preprocessor.katex] 16 | macros = "macros.txt" 17 | 18 | [output.katex] -------------------------------------------------------------------------------- /yarn-project/.dockerignore: -------------------------------------------------------------------------------- 1 | .yarn 2 | !/.yarn/cache 3 | !/.yarn/patches 4 | !/.yarn/plugins 5 | !/.yarn/releases 6 | !/.yarn/sdks 7 | !/.yarn/versions 8 | 9 | */data* 10 | */dest 11 | */dist 12 | */.tsbuildinfo 13 | **/Dockerfile* 14 | **/node_modules 15 | **/.terraform 16 | blockchain/src/artifacts -------------------------------------------------------------------------------- /yarn-project/.gitignore: -------------------------------------------------------------------------------- 1 | .cache 2 | .parcel-cache* 3 | dest 4 | dist 5 | node_modules 6 | .terraform 7 | .env 8 | *.log 9 | *.swp 10 | .next 11 | .tsbuildinfo 12 | 13 | # Zero install: https://yarnpkg.com/features/zero-installs 14 | .yarn/* 15 | # Exclude cache until we're really sure we're ready. 16 | # !.yarn/cache 17 | !.yarn/patches 18 | !.yarn/plugins 19 | !.yarn/releases 20 | !.yarn/sdks 21 | !.yarn/versions -------------------------------------------------------------------------------- /yarn-project/.prettierignore: -------------------------------------------------------------------------------- 1 | .yarn -------------------------------------------------------------------------------- /yarn-project/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | singleQuote: true, 3 | trailingComma: 'all', 4 | printWidth: 120, 5 | arrowParens: 'avoid', 6 | }; 7 | -------------------------------------------------------------------------------- /yarn-project/.yarn/sdks/eslint/bin/eslint.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const {existsSync} = require(`fs`); 4 | const {createRequire} = require(`module`); 5 | const {resolve} = require(`path`); 6 | 7 | const relPnpApiPath = "../../../../.pnp.cjs"; 8 | 9 | const absPnpApiPath = resolve(__dirname, relPnpApiPath); 10 | const absRequire = createRequire(absPnpApiPath); 11 | 12 | if (existsSync(absPnpApiPath)) { 13 | if (!process.versions.pnp) { 14 | // Setup the environment to be able to require eslint/bin/eslint.js 15 | require(absPnpApiPath).setup(); 16 | } 17 | } 18 | 19 | // Defer to the real eslint/bin/eslint.js your application uses 20 | module.exports = absRequire(`eslint/bin/eslint.js`); 21 | -------------------------------------------------------------------------------- /yarn-project/.yarn/sdks/eslint/lib/api.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const {existsSync} = require(`fs`); 4 | const {createRequire} = require(`module`); 5 | const {resolve} = require(`path`); 6 | 7 | const relPnpApiPath = "../../../../.pnp.cjs"; 8 | 9 | const absPnpApiPath = resolve(__dirname, relPnpApiPath); 10 | const absRequire = createRequire(absPnpApiPath); 11 | 12 | if (existsSync(absPnpApiPath)) { 13 | if (!process.versions.pnp) { 14 | // Setup the environment to be able to require eslint 15 | require(absPnpApiPath).setup(); 16 | } 17 | } 18 | 19 | // Defer to the real eslint your application uses 20 | module.exports = absRequire(`eslint`); 21 | -------------------------------------------------------------------------------- /yarn-project/.yarn/sdks/eslint/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "eslint", 3 | "version": "8.21.0-sdk", 4 | "main": "./lib/api.js", 5 | "type": "commonjs" 6 | } 7 | -------------------------------------------------------------------------------- /yarn-project/.yarn/sdks/integrations.yml: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by @yarnpkg/sdks. 2 | # Manual changes might be lost! 3 | 4 | integrations: 5 | - vscode 6 | -------------------------------------------------------------------------------- /yarn-project/.yarn/sdks/prettier/index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const {existsSync} = require(`fs`); 4 | const {createRequire} = require(`module`); 5 | const {resolve} = require(`path`); 6 | 7 | const relPnpApiPath = "../../../.pnp.cjs"; 8 | 9 | const absPnpApiPath = resolve(__dirname, relPnpApiPath); 10 | const absRequire = createRequire(absPnpApiPath); 11 | 12 | if (existsSync(absPnpApiPath)) { 13 | if (!process.versions.pnp) { 14 | // Setup the environment to be able to require prettier/index.js 15 | require(absPnpApiPath).setup(); 16 | } 17 | } 18 | 19 | // Defer to the real prettier/index.js your application uses 20 | module.exports = absRequire(`prettier/index.js`); 21 | -------------------------------------------------------------------------------- /yarn-project/.yarn/sdks/prettier/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "prettier", 3 | "version": "2.7.1-sdk", 4 | "main": "./index.js", 5 | "type": "commonjs" 6 | } 7 | -------------------------------------------------------------------------------- /yarn-project/.yarn/sdks/typescript/bin/tsc: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const {existsSync} = require(`fs`); 4 | const {createRequire} = require(`module`); 5 | const {resolve} = require(`path`); 6 | 7 | const relPnpApiPath = "../../../../.pnp.cjs"; 8 | 9 | const absPnpApiPath = resolve(__dirname, relPnpApiPath); 10 | const absRequire = createRequire(absPnpApiPath); 11 | 12 | if (existsSync(absPnpApiPath)) { 13 | if (!process.versions.pnp) { 14 | // Setup the environment to be able to require typescript/bin/tsc 15 | require(absPnpApiPath).setup(); 16 | } 17 | } 18 | 19 | // Defer to the real typescript/bin/tsc your application uses 20 | module.exports = absRequire(`typescript/bin/tsc`); 21 | -------------------------------------------------------------------------------- /yarn-project/.yarn/sdks/typescript/bin/tsserver: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const {existsSync} = require(`fs`); 4 | const {createRequire} = require(`module`); 5 | const {resolve} = require(`path`); 6 | 7 | const relPnpApiPath = "../../../../.pnp.cjs"; 8 | 9 | const absPnpApiPath = resolve(__dirname, relPnpApiPath); 10 | const absRequire = createRequire(absPnpApiPath); 11 | 12 | if (existsSync(absPnpApiPath)) { 13 | if (!process.versions.pnp) { 14 | // Setup the environment to be able to require typescript/bin/tsserver 15 | require(absPnpApiPath).setup(); 16 | } 17 | } 18 | 19 | // Defer to the real typescript/bin/tsserver your application uses 20 | module.exports = absRequire(`typescript/bin/tsserver`); 21 | -------------------------------------------------------------------------------- /yarn-project/.yarn/sdks/typescript/lib/tsc.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const {existsSync} = require(`fs`); 4 | const {createRequire} = require(`module`); 5 | const {resolve} = require(`path`); 6 | 7 | const relPnpApiPath = "../../../../.pnp.cjs"; 8 | 9 | const absPnpApiPath = resolve(__dirname, relPnpApiPath); 10 | const absRequire = createRequire(absPnpApiPath); 11 | 12 | if (existsSync(absPnpApiPath)) { 13 | if (!process.versions.pnp) { 14 | // Setup the environment to be able to require typescript/lib/tsc.js 15 | require(absPnpApiPath).setup(); 16 | } 17 | } 18 | 19 | // Defer to the real typescript/lib/tsc.js your application uses 20 | module.exports = absRequire(`typescript/lib/tsc.js`); 21 | -------------------------------------------------------------------------------- /yarn-project/.yarn/sdks/typescript/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "typescript", 3 | "version": "4.7.4-sdk", 4 | "main": "./lib/typescript.js", 5 | "type": "commonjs" 6 | } 7 | -------------------------------------------------------------------------------- /yarn-project/account-migrator/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-patch/modern-module-resolution'); 2 | 3 | module.exports = { 4 | extends: ['@aztec/eslint-config'], 5 | parserOptions: { tsconfigRootDir: __dirname }, 6 | }; 7 | -------------------------------------------------------------------------------- /yarn-project/account-migrator/.gitignore: -------------------------------------------------------------------------------- 1 | /data 2 | gen/ 3 | log/ 4 | -------------------------------------------------------------------------------- /yarn-project/account-migrator/src/account.ts: -------------------------------------------------------------------------------- 1 | import { GrumpkinAddress } from '@aztec/barretenberg/address'; 2 | import { AccountAliasId } from '@aztec/barretenberg/account_id'; 3 | 4 | export interface Account { 5 | aliasId: AccountAliasId; 6 | accountKey: GrumpkinAddress; 7 | spendingKeys: Buffer[]; 8 | } 9 | 10 | export interface Accounts { 11 | earliestRollupId: number; 12 | lastestRollupId: number; 13 | accounts: Account[]; 14 | } 15 | -------------------------------------------------------------------------------- /yarn-project/account-migrator/src/block_source.ts: -------------------------------------------------------------------------------- 1 | import { TxHash } from '@aztec/barretenberg/blockchain'; 2 | 3 | export interface Block { 4 | txHash: TxHash; 5 | created: Date; 6 | rollupId: number; 7 | rollupSize: number; 8 | rollupProofData: Buffer; 9 | viewingKeysData: Buffer; 10 | gasUsed: number; 11 | gasPrice: bigint; 12 | } 13 | -------------------------------------------------------------------------------- /yarn-project/account-migrator/tsconfig.dest.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ".", 3 | "references": [ 4 | { "path": "../barretenberg.js/tsconfig.dest.json" }, 5 | { "path": "../blockchain/tsconfig.dest.json" }, 6 | { "path": "../halloumi/tsconfig.dest.json" } 7 | ], 8 | "exclude": ["**/*.test.*"] 9 | } 10 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-patch/modern-module-resolution'); 2 | 3 | module.exports = { 4 | extends: ['@aztec/eslint-config'], 5 | parserOptions: { tsconfigRootDir: __dirname }, 6 | }; 7 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "address": "${config:mainframeAddress}", 9 | "port": 9221, 10 | "type": "node", 11 | "request": "attach", 12 | "name": "Attach to Remote", 13 | "skipFiles": ["/**"], 14 | "localRoot": "${workspaceFolder}", 15 | "sourceMaps": true 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-base AS builder 2 | COPY barretenberg.js barretenberg.js 3 | COPY blockchain blockchain 4 | COPY sdk sdk 5 | RUN cd barretenberg.js && yarn build 6 | WORKDIR /usr/src/yarn-project/sdk 7 | ARG ARG_COMMIT_HASH 8 | ENV COMMIT_HASH=$ARG_COMMIT_HASH 9 | RUN yarn build && yarn formatting && yarn test 10 | # Prune dev dependencies. See comment in base image. 11 | RUN yarn cache clean 12 | RUN yarn workspaces focus --production > /dev/null 13 | 14 | FROM node:18-alpine 15 | COPY --from=builder /usr/src/yarn-project /usr/src/yarn-project 16 | WORKDIR /usr/src/yarn-project/sdk 17 | ENTRYPOINT ["yarn"] 18 | CMD ["start"] 19 | EXPOSE 1234 -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/scripts/start_e2e.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -eu pipefail 3 | 4 | ROLLUP_HOST=${ROLLUP_HOST:-http://localhost:8081} 5 | 6 | echo $ROLLUP_HOST > /usr/src/sdk/dest/ROLLUP_PROVIDER_URL; 7 | yarn start -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/auth_algorithms/auth_algorithms.ts: -------------------------------------------------------------------------------- 1 | import { GrumpkinAddress } from '@aztec/barretenberg/address'; 2 | import { DecryptedNote } from '@aztec/barretenberg/note_algorithms'; 3 | import { JoinSplitTxInput } from '../proofs/proof_input/index.js'; 4 | 5 | export interface AuthAlgorithms { 6 | computeValueNoteNullifier(commitment: Buffer, gibberish?: boolean): Promise; 7 | deriveNoteSecret(ecdhPubKey: GrumpkinAddress): Promise; 8 | decryptViewingKeys(viewingKeysBuf: Buffer): Promise<(DecryptedNote | undefined)[]>; 9 | createJoinSplitProofSigningData(tx: JoinSplitTxInput): Promise; 10 | } 11 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/auth_algorithms/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth_algorithms.js'; 2 | export * from './key_pair_auth_algorithms.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/auth_database/auth_db.ts: -------------------------------------------------------------------------------- 1 | import isNode from 'detect-node'; 2 | import { getLevelDb, LocalStorageDb } from '../key_value_database/index.js'; 3 | import { AuthDatabase } from './auth_database.js'; 4 | 5 | export function getAuthDb(memoryDb = false, identifier?: string) { 6 | const keyValueDb = isNode ? getLevelDb('aztec2-sdk-auth', memoryDb, identifier) : new LocalStorageDb(); 7 | return new AuthDatabase(keyValueDb); 8 | } 9 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/auth_database/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth_database.js'; 2 | export * from './auth_db.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/aztec_sdk/index.ts: -------------------------------------------------------------------------------- 1 | export * from './aztec_sdk.js'; 2 | export * from './create_aztec_sdk.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/aztec_wallet_provider/index.ts: -------------------------------------------------------------------------------- 1 | export * from './aztec_wallet_provider.js'; 2 | export * from './vanilla_aztec_wallet_provider.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/block_context/index.ts: -------------------------------------------------------------------------------- 1 | export * from './block_context.js'; 2 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/block_decryptor/index.ts: -------------------------------------------------------------------------------- 1 | export * from './block_decryptor.js'; 2 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/client_log/client_log.ts: -------------------------------------------------------------------------------- 1 | import { RollupProvider } from '../index.js'; 2 | import { VERSION_HASH } from '../package_version.js'; 3 | 4 | export async function sendClientLog(rollupProvider: RollupProvider, data: any) { 5 | await rollupProvider.clientLog({ 6 | ...data, 7 | sdkVersion: VERSION_HASH, 8 | }); 9 | } 10 | 11 | export async function sendClientConsoleLog(rollupProvider: RollupProvider, data: any) { 12 | await rollupProvider.clientConsoleLog({ 13 | ...data, 14 | sdkVersion: VERSION_HASH, 15 | }); 16 | } 17 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/controllers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './add_spending_key_controller.js'; 2 | export * from './defi_controller.js'; 3 | export * from './deposit_controller.js'; 4 | export * from './migrate_account_controller.js'; 5 | export * from './recover_account_controller.js'; 6 | export * from './register_controller.js'; 7 | export * from './transfer_controller.js'; 8 | export * from './withdraw_controller.js'; 9 | export * from './fee_controller.js'; 10 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/core_sdk/core_sdk_options.ts: -------------------------------------------------------------------------------- 1 | export type CoreSdkOptions = { 2 | serverUrl: string; 3 | pollInterval?: number; 4 | useKeyCache?: boolean; 5 | debug?: string; 6 | noVersionCheck?: boolean; 7 | }; 8 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/core_sdk/index.ts: -------------------------------------------------------------------------------- 1 | export * from './core_sdk.js'; 2 | export * from './core_sdk_options.js'; 3 | export * from './create_core_sdk.js'; 4 | export * from './sdk_status.js'; 5 | export * from './sdk_version.js'; 6 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/core_sdk/sdk_version.ts: -------------------------------------------------------------------------------- 1 | export const sdkVersion = (process.env.NODE_ENV === 'production' && process.env.COMMIT_TAG) || ''; 2 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/core_tx/core_claim_tx.ts: -------------------------------------------------------------------------------- 1 | import { GrumpkinAddress } from '@aztec/barretenberg/address'; 2 | import { TxId } from '@aztec/barretenberg/tx_id'; 3 | 4 | export interface CoreClaimTx { 5 | defiTxId: TxId; 6 | accountPublicKey: GrumpkinAddress; 7 | partialState: Buffer; 8 | secret: Buffer; 9 | nullifier: Buffer; // the nullifier of this claim's claim note 10 | interactionNonce: number; 11 | } 12 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/database/index.ts: -------------------------------------------------------------------------------- 1 | import isNode from 'detect-node'; 2 | import { DexieDatabase } from './dexie_database.js'; 3 | import { SQLDatabase } from './node/index.js'; 4 | 5 | export * from './database.js'; 6 | 7 | export async function getDb(memoryDb = false, identifier?: string) { 8 | if (isNode) { 9 | return await SQLDatabase.getDb(memoryDb, identifier); 10 | } else { 11 | return new DexieDatabase(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/database/node/key_dao.ts: -------------------------------------------------------------------------------- 1 | import { Column, Entity, PrimaryColumn } from 'typeorm'; 2 | 3 | @Entity({ name: 'key' }) 4 | export class KeyDao { 5 | @PrimaryColumn() 6 | public name!: string; 7 | 8 | @Column() 9 | public value!: Buffer; 10 | } 11 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/database/node/mutex_dao.ts: -------------------------------------------------------------------------------- 1 | import { Column, Entity, Index, PrimaryColumn } from 'typeorm'; 2 | 3 | @Entity({ name: 'mutex' }) 4 | export class MutexDao { 5 | @PrimaryColumn() 6 | public name!: string; 7 | 8 | @Index({ unique: false }) 9 | @Column() 10 | public expiredAt!: number; 11 | } 12 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/database/node/user_data_dao.ts: -------------------------------------------------------------------------------- 1 | import { GrumpkinAddress } from '@aztec/barretenberg/address'; 2 | import { Column, Entity, PrimaryColumn } from 'typeorm'; 3 | import { AccountData } from '../database.js'; 4 | import { grumpkinAddressTransformer } from './transformer.js'; 5 | 6 | @Entity({ name: 'userData' }) 7 | export class UserDataDao implements AccountData { 8 | @PrimaryColumn('blob', { transformer: [grumpkinAddressTransformer] }) 9 | public accountPublicKey!: GrumpkinAddress; 10 | 11 | @Column() 12 | public syncedToRollup!: number; 13 | } 14 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/database/test/sql_database.test.ts: -------------------------------------------------------------------------------- 1 | import { DataSource } from 'typeorm'; 2 | import { SQLDatabase, getOrmConfig } from '../node/index.js'; 3 | import { databaseTestSuite } from './test_suite.js'; 4 | 5 | let connection: DataSource; 6 | let db: SQLDatabase; 7 | 8 | const createDb = async () => { 9 | const config = getOrmConfig(true); 10 | connection = new DataSource(config); 11 | await connection.initialize(); 12 | db = new SQLDatabase(connection); 13 | return db; 14 | }; 15 | 16 | const destroyDb = async () => { 17 | await db.clear(); 18 | await connection.close(); 19 | }; 20 | 21 | databaseTestSuite('SQLDatabase', createDb, destroyDb); 22 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/eip1193_aztec_wallet_provider/index.ts: -------------------------------------------------------------------------------- 1 | export { EIP1193AztecWalletProviderClient } from './client/eip1193_aztec_wallet_provider_client.js'; 2 | export { WalletConnectAztecWalletProviderServer } from './server/walletconnect_aztec_wallet_provider_server.js'; 3 | 4 | export * from './client/eip1193_sign_client.js'; 5 | export { RPC_METHODS } from './methods.js'; 6 | export { RPCWrapper } from './rpc_wrapper.js'; 7 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/eip1193_aztec_wallet_provider/methods.ts: -------------------------------------------------------------------------------- 1 | export const RPC_METHODS = [ 2 | 'aztec_connect', 3 | 'aztec_disconnect', 4 | 'aztec_getAccountPublicKey', 5 | 'aztec_getSpendingPublicKey', 6 | 'aztec_getPermissions', 7 | 'aztec_setPermissions', 8 | 'aztec_signProofs', 9 | 'aztec_createProofs', 10 | 'aztec_requestProofInputs', 11 | 'aztec_requestProofs', 12 | 'aztec_decryptBlocks', 13 | ]; 14 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/get_num_workers/index.ts: -------------------------------------------------------------------------------- 1 | import isNode from 'detect-node'; 2 | import os from 'os'; 3 | 4 | export function getDeviceMemory() { 5 | return isNode ? os.totalmem() : navigator ? (navigator['deviceMemory'] as number) : undefined; 6 | } 7 | 8 | export function getNumCpu() { 9 | return isNode ? os.cpus().length : navigator.hardwareConcurrency; 10 | } 11 | 12 | export function getNumWorkers() { 13 | const nextLowestPowerOf2 = (n: number) => Math.pow(2, Math.floor(Math.log(n) / Math.log(2))); 14 | const numCPU = getNumCpu() || 2; 15 | return nextLowestPowerOf2(Math.min(numCPU, 8)); 16 | } 17 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/iframe/iframe_event.ts: -------------------------------------------------------------------------------- 1 | export enum IframeEvent { 2 | READY = 'READY', 3 | NEW_VERSION_LOADED = 'NEW_VERSION_LOADED', 4 | OPEN = 'OPEN', 5 | CLOSE = 'CLOSE', 6 | DESTROYED = 'DESTROYED', 7 | } 8 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/iframe/iframe_transport_connect.ts: -------------------------------------------------------------------------------- 1 | import { MessageChannelTransportSocket, TransportConnect } from '../transport/index.js'; 2 | 3 | export class IframeTransportConnect implements TransportConnect { 4 | constructor(private window: Window, private targetOrigin: string) {} 5 | 6 | createSocket() { 7 | const { port1, port2 } = new MessageChannel(); 8 | this.window.postMessage(undefined, this.targetOrigin, [port2]); 9 | return Promise.resolve(new MessageChannelTransportSocket(port1)); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/iframe/index.ts: -------------------------------------------------------------------------------- 1 | export * from './create_iframe.js'; 2 | export * from './iframe_event.js'; 3 | export * from './iframe_server_stub.js'; 4 | export * from './iframe_transport_connect.js'; 5 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/iframe_aztec_wallet_provider/client/index.ts: -------------------------------------------------------------------------------- 1 | export { createIframeAztecWalletProviderClient } from './iframe_aztec_wallet_provider_client.js'; 2 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/iframe_aztec_wallet_provider/server/index.ts: -------------------------------------------------------------------------------- 1 | export { 2 | IframeAztecWalletProviderServer, 3 | createIframeAztecWalletProviderServer, 4 | } from './iframe_aztec_wallet_provider_server.js'; 5 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/key_pair/index.ts: -------------------------------------------------------------------------------- 1 | export * from './constant_key_pair.js'; 2 | export * from './key_pair.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/key_pair/key_pair.ts: -------------------------------------------------------------------------------- 1 | import { GrumpkinAddress } from '@aztec/barretenberg/address'; 2 | import { SchnorrSignature } from '@aztec/barretenberg/crypto'; 3 | 4 | export interface KeyPair { 5 | getPublicKey(): GrumpkinAddress; 6 | getPrivateKey(): Promise; 7 | signMessage(message: Buffer): Promise; 8 | } 9 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/key_store/index.ts: -------------------------------------------------------------------------------- 1 | export * from './constant_key_pair.js'; 2 | export * from './constant_key_store.js'; 3 | export * from './legacy_key_store.js'; 4 | export * from './key_pair.js'; 5 | export * from './key_store.js'; 6 | export * from './permission.js'; 7 | export * from './aztec_key_store.js'; 8 | export { RecoveryKit } from './recovery_kit.js'; 9 | export { keyPairFromPK, RECOVERY_KEY_MESSAGE } from './generate_keys.js'; 10 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/key_store/key_pair.ts: -------------------------------------------------------------------------------- 1 | import { GrumpkinAddress } from '@aztec/barretenberg/address'; 2 | import { SchnorrSignature } from '@aztec/barretenberg/crypto'; 3 | 4 | export interface KeyPair { 5 | getPublicKey(): GrumpkinAddress; 6 | getPrivateKey(): Promise; 7 | signMessage(message: Buffer): Promise; 8 | } 9 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/key_store/permission.ts: -------------------------------------------------------------------------------- 1 | export interface Permission { 2 | assets: number[]; 3 | } 4 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/key_value_database/browser/index.ts: -------------------------------------------------------------------------------- 1 | import { default as levelup } from 'levelup'; 2 | import { default as leveljs } from 'level-js'; 3 | 4 | export function levelUpWebFactory(id: string) { 5 | return levelup(leveljs(id)); 6 | } 7 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/key_value_database/index.ts: -------------------------------------------------------------------------------- 1 | export * from './key_value_database.js'; 2 | export * from './level_db.js'; 3 | export * from './local_storage_db.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/key_value_database/key_value_database.ts: -------------------------------------------------------------------------------- 1 | export interface KeyValueDatabase { 2 | close(): Promise; 3 | clear(): Promise; 4 | 5 | put(key: string, value: Buffer): Promise; 6 | get(key: string): Promise; 7 | del(key: string): Promise; 8 | } 9 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/key_value_database/node/index.ts: -------------------------------------------------------------------------------- 1 | import { default as levelup } from 'levelup'; 2 | import { default as leveldown } from 'leveldown'; 3 | 4 | export function levelUpNodeFactory(path: string) { 5 | return levelup(leveldown(path)); 6 | } 7 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/level_db/browser/index.ts: -------------------------------------------------------------------------------- 1 | import { default as levelup } from 'levelup'; 2 | import { default as leveljs } from 'level-js'; 3 | 4 | export function levelUpWebFactory(id: string) { 5 | return levelup(leveljs(id)); 6 | } 7 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/level_db/index.ts: -------------------------------------------------------------------------------- 1 | export * from './get_level_db.js'; 2 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/level_db/node/index.ts: -------------------------------------------------------------------------------- 1 | import { default as levelup } from 'levelup'; 2 | import { default as leveldown } from 'leveldown'; 3 | 4 | export function levelUpNodeFactory(path: string) { 5 | return levelup(leveldown(path)); 6 | } 7 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/note/index.ts: -------------------------------------------------------------------------------- 1 | export * from './note.js'; 2 | export * from './restore_note_path.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/proofs/index.ts: -------------------------------------------------------------------------------- 1 | export * from './proof_input/index.js'; 2 | export * from './proof_output/index.js'; 3 | export * from './proof_request_data/index.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/proofs/proof_input/index.ts: -------------------------------------------------------------------------------- 1 | export * from './join_split_tx_input.js'; 2 | export * from './proof_input_factory.js'; 3 | export * from './proof_input.js'; 4 | export * from './proof_input_type.js'; 5 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/proofs/proof_input/proof_input_type.ts: -------------------------------------------------------------------------------- 1 | export enum ProofInputType { 2 | PaymentProofInput = 'PaymentProofInput', 3 | AccountProofInput = 'AccountProofInput', 4 | DefiProofInput = 'DefiProofInput', 5 | } 6 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/proofs/proof_output/index.ts: -------------------------------------------------------------------------------- 1 | export * from './proof_output.js'; 2 | export * from './proof_output_factory.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/proofs/proof_request_data/proof_request_data_type.ts: -------------------------------------------------------------------------------- 1 | export enum ProofRequestDataType { 2 | PaymentProofRequestData = 'PaymentProofRequestData', 3 | AccountProofRequestData = 'AccountProofRequestData', 4 | DefiProofRequestData = 'DefiProofRequestData', 5 | } 6 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/recovery_payload/index.ts: -------------------------------------------------------------------------------- 1 | export * from './recovery_data.js'; 2 | export * from './recovery_key_store.js'; 3 | export * from './recovery_payload.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/serial_queue/index.ts: -------------------------------------------------------------------------------- 1 | export * from './memory_serial_queue.js'; 2 | export * from './mutex_serial_queue.js'; 3 | export * from './serial_queue.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/serial_queue/serial_queue.ts: -------------------------------------------------------------------------------- 1 | export interface SerialQueue { 2 | length(): number; 3 | push(fn: () => Promise): Promise; 4 | cancel(): void; 5 | } 6 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/signer/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth_service_signer.js'; 2 | export * from './recover_signer.js'; 3 | export * from './schnorr_signer.js'; 4 | export * from './signer.js'; 5 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/signer/recover_signer.ts: -------------------------------------------------------------------------------- 1 | import { GrumpkinAddress } from '@aztec/barretenberg/address'; 2 | import { SchnorrSignature } from '@aztec/barretenberg/crypto'; 3 | import { Signer } from './signer.js'; 4 | 5 | export class RecoverSignatureSigner implements Signer { 6 | constructor(private publicKey: GrumpkinAddress, private signature: SchnorrSignature) {} 7 | 8 | getPublicKey() { 9 | return this.publicKey; 10 | } 11 | 12 | signMessage() { 13 | return Promise.resolve(this.signature); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/signer/signer.ts: -------------------------------------------------------------------------------- 1 | import { GrumpkinAddress } from '@aztec/barretenberg/address'; 2 | import { SchnorrSignature } from '@aztec/barretenberg/crypto'; 3 | 4 | export interface Signer { 5 | getPublicKey(): GrumpkinAddress; 6 | signMessage(message: Buffer): Promise; 7 | } 8 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/transport/index.ts: -------------------------------------------------------------------------------- 1 | export * from './messages.js'; 2 | export * from './transport_client.js'; 3 | export * from './transport_connect.js'; 4 | export * from './transport_listener.js'; 5 | export * from './transport_server.js'; 6 | export * from './transport_socket.js'; 7 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/transport/messages.ts: -------------------------------------------------------------------------------- 1 | export interface RequestMessage { 2 | msgId: number; 3 | payload: Payload; 4 | } 5 | 6 | export interface ResponseMessage { 7 | msgId: number; 8 | payload?: Payload; 9 | error?: string; 10 | } 11 | 12 | export interface EventMessage { 13 | payload: Payload; 14 | } 15 | 16 | export function isEventMessage( 17 | msg: ResponseMessage | EventMessage, 18 | ): msg is EventMessage { 19 | return (msg as ResponseMessage).msgId === undefined; 20 | } 21 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/transport/transport_connect.ts: -------------------------------------------------------------------------------- 1 | import { TransportSocket } from './transport_socket.js'; 2 | 3 | /** 4 | * Opens a socket with corresponding TransportListener. 5 | */ 6 | export interface TransportConnect { 7 | createSocket(): Promise; 8 | } 9 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/transport/transport_listener.ts: -------------------------------------------------------------------------------- 1 | import EventEmitter from 'events'; 2 | import { TransportSocket } from './transport_socket.js'; 3 | 4 | /** 5 | * Once opened, an implementation of a TransportListener will emit `new_socket` events as new clients connect. 6 | * Possible implementations could include MessageChannels of WebSockets. 7 | */ 8 | export interface TransportListener extends EventEmitter { 9 | open(): void; 10 | 11 | close(): void; 12 | 13 | on(name: 'new_socket', cb: (client: TransportSocket) => void): this; 14 | } 15 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/user_tx/index.ts: -------------------------------------------------------------------------------- 1 | export * from './user_account_tx.js'; 2 | export * from './user_defi_tx.js'; 3 | export * from './user_defi_claim_tx.js'; 4 | export * from './user_payment_tx.js'; 5 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/src/version.ts: -------------------------------------------------------------------------------- 1 | // This version must match the server/Falafel version 2 | export const SDK_VERSION = '2.1.6'; 3 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/static/aztec-connect.wasm: -------------------------------------------------------------------------------- 1 | ../node_modules/@aztec/barretenberg/wasm/aztec-connect.wasm -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/static/worker.js: -------------------------------------------------------------------------------- 1 | ../node_modules/@aztec/barretenberg/worker.js -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/terraform/dev/outputs.tf: -------------------------------------------------------------------------------- 1 | output "cloudfront" { 2 | value = "${aws_cloudfront_distribution.sdk_distribution.id}" 3 | } 4 | 5 | output "s3" { 6 | value = "${aws_s3_bucket.sdk.bucket}" 7 | } 8 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/terraform/dev/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } 4 | -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/terraform/prod: -------------------------------------------------------------------------------- 1 | ./dev -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/terraform/stage: -------------------------------------------------------------------------------- 1 | ./dev/ -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/terraform/testnet: -------------------------------------------------------------------------------- 1 | ./dev -------------------------------------------------------------------------------- /yarn-project/alpha-sdk/tsconfig.dest.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "references": [ 4 | { "path": "../barretenberg.js/tsconfig.dest.json" }, 5 | { "path": "../blockchain/tsconfig.dest.json" } 6 | ], 7 | "exclude": ["src/**/*.test.ts", "src/**/fixtures/*", "src/**/test/*"] 8 | } 9 | -------------------------------------------------------------------------------- /yarn-project/aztec-dev-cli/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-patch/modern-module-resolution'); 2 | 3 | module.exports = { 4 | extends: ['@aztec/eslint-config'], 5 | parserOptions: { tsconfigRootDir: __dirname }, 6 | }; 7 | -------------------------------------------------------------------------------- /yarn-project/aztec-dev-cli/.gitignore: -------------------------------------------------------------------------------- 1 | dest 2 | data 3 | -------------------------------------------------------------------------------- /yarn-project/aztec-dev-cli/.prettierignore: -------------------------------------------------------------------------------- 1 | src/abis -------------------------------------------------------------------------------- /yarn-project/aztec-dev-cli/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-base AS builder 2 | COPY barretenberg.js barretenberg.js 3 | COPY blockchain blockchain 4 | 5 | COPY aztec-dev-cli aztec-dev-cli 6 | WORKDIR /usr/src/yarn-project/aztec-dev-cli 7 | RUN yarn build && yarn formatting && yarn test 8 | # Prune dev dependencies. See comment in base image. 9 | RUN yarn cache clean 10 | RUN yarn workspaces focus --production > /dev/null 11 | RUN rm -rf /usr/src/contracts 12 | 13 | FROM node:18-alpine 14 | COPY --from=builder /usr/src/yarn-project /usr/src/yarn-project 15 | WORKDIR /usr/src/yarn-project/aztec-dev-cli 16 | ENTRYPOINT ["yarn", "start"] 17 | CMD [] -------------------------------------------------------------------------------- /yarn-project/aztec-dev-cli/src/abis/AztecFaucet.sol: -------------------------------------------------------------------------------- 1 | ../../../../contracts/out/AztecFaucet.sol -------------------------------------------------------------------------------- /yarn-project/aztec-dev-cli/src/abis/DataProvider.sol: -------------------------------------------------------------------------------- 1 | ../../../../contracts/out/DataProvider.sol/ -------------------------------------------------------------------------------- /yarn-project/aztec-dev-cli/src/abis/ElementBridge.sol: -------------------------------------------------------------------------------- 1 | ../../../../contracts/out/ElementBridge.sol -------------------------------------------------------------------------------- /yarn-project/aztec-dev-cli/src/abis/IVault.sol: -------------------------------------------------------------------------------- 1 | ../../../../contracts/out/IVault.sol -------------------------------------------------------------------------------- /yarn-project/aztec-dev-cli/src/abis/RollupProcessorV2.sol: -------------------------------------------------------------------------------- 1 | ../../../../contracts/out/RollupProcessorV2.sol -------------------------------------------------------------------------------- /yarn-project/aztec-dev-cli/src/abis/index.ts: -------------------------------------------------------------------------------- 1 | export { default as ElementBridge } from './ElementBridge.sol/ElementBridge.json' assert { type: 'json' }; 2 | export { default as IVault } from './IVault.sol/IVault.json' assert { type: 'json' }; 3 | export { default as RollupProcessor } from './RollupProcessorV2.sol/RollupProcessorV2.json' assert { type: 'json' }; 4 | export { default as AztecFaucetJson } from './AztecFaucet.sol/AztecFaucet.json' assert { type: 'json' }; 5 | export { default as DataProviderJson} from './DataProvider.sol/DataProvider.json' assert { type: 'json' }; 6 | -------------------------------------------------------------------------------- /yarn-project/aztec-dev-cli/src/clients/web3_provider.ts: -------------------------------------------------------------------------------- 1 | import { EthereumProvider } from '@aztec/barretenberg/blockchain'; 2 | import { Web3Provider } from '@ethersproject/providers'; 3 | 4 | export const createWeb3Provider = (ethereumProvider: EthereumProvider) => new Web3Provider(ethereumProvider); 5 | -------------------------------------------------------------------------------- /yarn-project/aztec-dev-cli/tsconfig.dest.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ".", 3 | "compilerOptions": { 4 | "rootDir": "src", 5 | "types": [] 6 | }, 7 | "references": [{ "path": "../barretenberg.js/tsconfig.dest.json" }, { "path": "../blockchain/tsconfig.dest.json" }], 8 | "exclude": ["**/*.test.*", "**/fixtures/*"], 9 | "files": [] 10 | } 11 | -------------------------------------------------------------------------------- /yarn-project/babel.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [["@babel/preset-env", { "targets": { "node": "current" } }], "@babel/preset-typescript"], 3 | "plugins": ["babel-plugin-transform-import-meta", "@babel/plugin-syntax-import-assertions"] 4 | } 5 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-patch/modern-module-resolution'); 2 | 3 | module.exports = { 4 | extends: ['@aztec/eslint-config'], 5 | parserOptions: { tsconfigRootDir: __dirname }, 6 | }; 7 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/.gitignore: -------------------------------------------------------------------------------- 1 | src/wasm/aztec-connect.wasm 2 | src/wasm/node/node_worker.js -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/.prettierignore: -------------------------------------------------------------------------------- 1 | *.js -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-base AS builder 2 | COPY barretenberg.js barretenberg.js 3 | WORKDIR /usr/src/yarn-project/barretenberg.js 4 | RUN yarn build && yarn build:dev:worker && yarn formatting && yarn test 5 | 6 | FROM alpine:latest 7 | COPY --from=builder /usr/src/yarn-project/barretenberg.js /usr/src/yarn-project/barretenberg.js -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/README.md: -------------------------------------------------------------------------------- 1 | # barretenberg.js 2 | 3 | 4 | Bindings around barretenberg WebAssembly, core components and interfaces for wider system. 5 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | yarn clean 5 | 6 | ./scripts/build_wasm.sh 7 | 8 | yarn build 9 | 10 | # Build ./src/wasm/node_worker.js. 11 | # Needed for unit tests until node 18 + yarn pnp + ts-node chained loader stuff works. 12 | yarn build:dev:worker 13 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/scripts/build_dev.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | yarn clean 4 | 5 | # Kick off building source to ./dest for upstream projects. 6 | tsc -p tsconfig.dest.json --watch & 7 | 8 | # Kick off building ./dest/wasm/web_worker.js for upstream projects. 9 | webpack watch --config webpack.config.prod.js & 10 | 11 | # Kick off building ./src/wasm/node_worker.js. 12 | # Needed for unit tests until node 18 + yarn pnp + ts-node chained loader stuff works. 13 | webpack watch --config webpack.config.dev.js & 14 | 15 | wait -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/scripts/build_wasm.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Expects current working directory to be /yarn-project/barretenberg.js 3 | set -e 4 | 5 | cmake --build ../../aztec-connect-cpp/build --parallel --target db_cli 6 | cmake --build ../../aztec-connect-cpp/build-wasm --parallel --target aztec-connect.wasm -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/account_id/index.ts: -------------------------------------------------------------------------------- 1 | export * from './account_id.js'; 2 | export * from './account_alias_id.js'; 3 | export * from './alias_hash.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/address/index.ts: -------------------------------------------------------------------------------- 1 | export * from './eth_address.js'; 2 | export * from './grumpkin_address.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/asset/index.ts: -------------------------------------------------------------------------------- 1 | export interface AssetValue { 2 | assetId: number; 3 | value: bigint; 4 | } 5 | 6 | export interface AssetValueJson { 7 | assetId: number; 8 | value: string; 9 | } 10 | 11 | export const assetValueToJson = (assetValue: AssetValue): AssetValueJson => ({ 12 | ...assetValue, 13 | value: assetValue.value.toString(), 14 | }); 15 | 16 | export const assetValueFromJson = (json: AssetValueJson): AssetValue => ({ 17 | ...json, 18 | value: BigInt(json.value), 19 | }); 20 | 21 | export const isVirtualAsset = (assetId: number) => assetId >= 1 << 29; 22 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/blockchain/ethereum_signer.ts: -------------------------------------------------------------------------------- 1 | import { EthAddress } from '../address/index.js'; 2 | import { TypedData } from './typed_data.js'; 3 | 4 | export type EthereumSignature = { v: Buffer; r: Buffer; s: Buffer }; 5 | 6 | export interface EthereumSigner { 7 | signPersonalMessage(message: Buffer, address: EthAddress): Promise; 8 | signMessage(message: Buffer, address: EthAddress): Promise; 9 | signTypedData({ domain, types, message }: TypedData, address: EthAddress): Promise; 10 | validateSignature(publicOwner: EthAddress, signature: Buffer, data: Buffer): boolean; 11 | } 12 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/blockchain/index.ts: -------------------------------------------------------------------------------- 1 | export * from './blockchain.js'; 2 | export * from './blockchain_status.js'; 3 | export * from './ethereum_rpc.js'; 4 | export * from './typed_data.js'; 5 | export * from './ethereum_provider.js'; 6 | export * from './ethereum_signer.js'; 7 | export * from './asset.js'; 8 | export * from './price_feed.js'; 9 | export * from './tx_hash.js'; 10 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/blockchain/price_feed.ts: -------------------------------------------------------------------------------- 1 | export interface RoundData { 2 | roundId: bigint; 3 | price: bigint; 4 | timestamp: number; 5 | } 6 | 7 | export interface PriceFeed { 8 | price(): Promise; 9 | latestRound(): Promise; 10 | getRoundData(roundId: bigint): Promise; 11 | getHistoricalPrice(round: bigint): Promise; 12 | } 13 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/blockchain/typed_data.ts: -------------------------------------------------------------------------------- 1 | export interface TypedData { 2 | domain: { 3 | name: string; 4 | version: string; 5 | chainId: string; 6 | verifyingContract: string; 7 | }; 8 | types: { [key: string]: { name: string; type: string }[] }; 9 | message: any; 10 | primaryType: string; 11 | } 12 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/bridge_call_data/aux_data_selector.ts: -------------------------------------------------------------------------------- 1 | export enum AUX_DATA_SELECTOR { 2 | NADA, 3 | OPEN_LOAN, 4 | CLOSE_LOAN, 5 | OPEN_LP, 6 | CLOSE_LP, 7 | } 8 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/bridge_call_data/bit_config.ts: -------------------------------------------------------------------------------- 1 | const getNumber = (val: bigint, offset: number, size: number) => 2 | Number((val >> BigInt(offset)) & ((BigInt(1) << BigInt(size)) - BigInt(1))); 3 | 4 | export class BitConfig { 5 | static EMPTY = new BitConfig(false, false); 6 | 7 | constructor(public readonly secondInputInUse: boolean, public readonly secondOutputInUse: boolean) {} 8 | 9 | static fromBigInt(val: bigint) { 10 | return new BitConfig(getNumber(val, 0, 1) == 0 ? false : true, getNumber(val, 1, 1) == 0 ? false : true); 11 | } 12 | 13 | toBigInt() { 14 | return BigInt(this.secondInputInUse) + (BigInt(this.secondOutputInUse) << BigInt(1)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/bridge_call_data/index.ts: -------------------------------------------------------------------------------- 1 | export * from './aux_data_selector.js'; 2 | export * from './bridge_call_data.js'; 3 | export * from './validate_bridge_call_data.js'; 4 | export * from './bit_config.js'; 5 | export { virtualAssetIdFlag, virtualAssetIdPlaceholder } from './bridge_call_data_config.js'; 6 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/bridge_call_data/validate_bridge_call_data.ts: -------------------------------------------------------------------------------- 1 | import { BridgeCallData } from './bridge_call_data.js'; 2 | 3 | export const validateBridgeCallData = (bridgeCallData: BridgeCallData) => { 4 | if (bridgeCallData.inputAssetIdA === bridgeCallData.inputAssetIdB) { 5 | throw new Error('Identical input assets.'); 6 | } 7 | if (!bridgeCallData.secondOutputVirtual && bridgeCallData.outputAssetIdA === bridgeCallData.outputAssetIdB) { 8 | throw new Error('Identical output assets.'); 9 | } 10 | }; 11 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/client_proofs/account_proof/create_account_proof_signing_data.ts: -------------------------------------------------------------------------------- 1 | import { BarretenbergWasm, BarretenbergWorker } from '../../wasm/index.js'; 2 | import { AccountTx } from './account_tx.js'; 3 | 4 | export async function createAccountProofSigningData(tx: AccountTx, wasm: BarretenbergWorker | BarretenbergWasm) { 5 | await wasm.transferToHeap(tx.toBuffer(), 0); 6 | await wasm.call('account__compute_signing_data', 0, 0); 7 | return Buffer.from(await wasm.sliceMemory(0, 32)); 8 | } 9 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/client_proofs/account_proof/index.ts: -------------------------------------------------------------------------------- 1 | export * from './account_prover.js'; 2 | export * from './account_tx.js'; 3 | export * from './account_verifier.js'; 4 | export * from './create_account_proof_signing_data.js'; 5 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/client_proofs/index.ts: -------------------------------------------------------------------------------- 1 | export * from './account_proof/index.js'; 2 | export * from './join_split_proof/index.js'; 3 | export * from './proof_data/index.js'; 4 | export * from './prover/index.js'; 5 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/client_proofs/join_split_proof/create_join_split_proof_signing_data.ts: -------------------------------------------------------------------------------- 1 | import { BarretenbergWasm, BarretenbergWorker } from '../../wasm/index.js'; 2 | import { JoinSplitTx } from './join_split_tx.js'; 3 | 4 | export async function createJoinSplitProofSigningData(tx: JoinSplitTx, wasm: BarretenbergWorker | BarretenbergWasm) { 5 | await wasm.transferToHeap(tx.toBuffer(), 0); 6 | await wasm.call('join_split__compute_signing_data', 0, 0); 7 | return Buffer.from(await wasm.sliceMemory(0, 32)); 8 | } 9 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/client_proofs/join_split_proof/index.ts: -------------------------------------------------------------------------------- 1 | export * from './create_join_split_proof_signing_data.js'; 2 | export * from './join_split_prover.js'; 3 | export * from './join_split_verifier.js'; 4 | export * from './join_split_tx.js'; 5 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/client_proofs/proof_data/account_proof_data.ts: -------------------------------------------------------------------------------- 1 | import { ProofData } from './proof_data.js'; 2 | import { ProofId } from './proof_id.js'; 3 | 4 | export class AccountProofData { 5 | constructor(public readonly proofData: ProofData) { 6 | if (proofData.proofId !== ProofId.ACCOUNT) { 7 | throw new Error('Not an account proof.'); 8 | } 9 | } 10 | 11 | static fromBuffer(rawProofData: Buffer) { 12 | return new AccountProofData(new ProofData(rawProofData)); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/client_proofs/proof_data/index.ts: -------------------------------------------------------------------------------- 1 | export * from './account_proof_data.js'; 2 | export * from './create_tx_id.js'; 3 | export * from './defi_claim_proof_data.js'; 4 | export * from './defi_deposit_proof_data.js'; 5 | export * from './join_split_proof_data.js'; 6 | export * from './proof_data.js'; 7 | export * from './proof_id.js'; 8 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/client_proofs/proof_data/proof_id.ts: -------------------------------------------------------------------------------- 1 | export enum ProofId { 2 | PADDING, 3 | DEPOSIT, 4 | WITHDRAW, 5 | SEND, 6 | ACCOUNT, 7 | DEFI_DEPOSIT, 8 | DEFI_CLAIM, 9 | } 10 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/client_proofs/prover/index.ts: -------------------------------------------------------------------------------- 1 | export * from './prover.js'; 2 | export * from './unrolled_prover.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/client_proofs/prover/unrolled_prover.ts: -------------------------------------------------------------------------------- 1 | import { Fft } from '../../fft/index.js'; 2 | import { Pippenger } from '../../pippenger/index.js'; 3 | import { BarretenbergWasm, BarretenbergWorker } from '../../wasm/index.js'; 4 | import { Prover } from './prover.js'; 5 | 6 | /** 7 | * An UnrolledProver is used for proofs that are verified inside a another snark (e.g. the rollup). 8 | */ 9 | export class UnrolledProver extends Prover { 10 | constructor(wasm: BarretenbergWorker | BarretenbergWasm, pippenger: Pippenger, fft: Fft) { 11 | super(wasm, pippenger, fft, 'unrolled_'); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/crypto/blake2s/index.ts: -------------------------------------------------------------------------------- 1 | import { BarretenbergWasm } from '../../wasm/index.js'; 2 | 3 | export class Blake2s { 4 | constructor(private wasm: BarretenbergWasm) {} 5 | 6 | public hashToField(data: Uint8Array) { 7 | const mem = this.wasm.call('bbmalloc', data.length); 8 | this.wasm.transferToHeap(data, mem); 9 | this.wasm.call('blake2s_to_field', mem, data.length, 0); 10 | this.wasm.call('bbfree', mem); 11 | return Buffer.from(this.wasm.sliceMemory(0, 32)); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/crypto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './aes128/index.js'; 2 | export * from './blake2s/index.js'; 3 | export * from './pedersen/index.js'; 4 | export * from './random/index.js'; 5 | export * from './schnorr/index.js'; 6 | export * from './sha256/index.js'; 7 | export * from './keccak256/index.js'; 8 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/crypto/keccak256/index.ts: -------------------------------------------------------------------------------- 1 | import { Keccak } from 'sha3'; 2 | 3 | export function keccak256(input: Buffer) { 4 | const hash = new Keccak(256); 5 | return hash.update(input).digest(); 6 | } 7 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/crypto/pedersen/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pedersen.js'; 2 | export * from './pooled_pedersen.js'; 3 | export * from './single_pedersen.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/crypto/pedersen/pedersen.ts: -------------------------------------------------------------------------------- 1 | export interface Pedersen { 2 | init(): Promise; 3 | 4 | compress(lhs: Uint8Array, rhs: Uint8Array): Buffer; 5 | 6 | compressInputs(inputs: Buffer[]): Buffer; 7 | 8 | compressWithHashIndex(inputs: Buffer[], hashIndex: number): Buffer; 9 | 10 | hashToField(data: Buffer): Buffer; 11 | 12 | hashToTree(values: Buffer[]): Promise; 13 | } 14 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/crypto/random/index.test.ts: -------------------------------------------------------------------------------- 1 | import { randomBytes } from './index.js'; 2 | 3 | describe('random', () => { 4 | it('randomBytes returns a filled byte array', () => { 5 | const data = randomBytes(32); 6 | expect(data.length).toEqual(32); 7 | let identical = true; 8 | for (let i = 1; i < data.length; ++i) { 9 | identical = identical && data[i] == data[i - 1]; 10 | } 11 | expect(identical).toEqual(false); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/ecc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './grumpkin/index.js'; 2 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/environment/index.ts: -------------------------------------------------------------------------------- 1 | export * from './init/init.js'; 2 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/errors/index.ts: -------------------------------------------------------------------------------- 1 | export class InterruptError extends Error {} 2 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/fft/fft.ts: -------------------------------------------------------------------------------- 1 | export interface Fft { 2 | fft(coefficients: Uint8Array, constant: Uint8Array): Promise; 3 | ifft(coefficients: Uint8Array): Promise; 4 | } 5 | 6 | export interface FftFactory { 7 | createFft(circuitSize: number): Promise; 8 | destroy(): Promise; 9 | } 10 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/fft/index.ts: -------------------------------------------------------------------------------- 1 | export * from './fft.js'; 2 | export * from './single_fft.js'; 3 | export * from './pooled_fft.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/fifo/index.ts: -------------------------------------------------------------------------------- 1 | export * from './memory_fifo.js'; 2 | export * from './serial_queue.js'; 3 | export * from './bounded_serial_queue.js'; 4 | export * from './semaphore.js'; 5 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/fifo/semaphore.ts: -------------------------------------------------------------------------------- 1 | import { MemoryFifo } from '@aztec/barretenberg/fifo'; 2 | 3 | /** 4 | * Allows the acquiring of up to `size` tokens before calls to acquire block, waiting for a call to release(). 5 | */ 6 | export class Semaphore { 7 | private readonly queue = new MemoryFifo(); 8 | 9 | constructor(size: number) { 10 | new Array(size).fill(true).map(() => this.queue.put(true)); 11 | } 12 | 13 | public async acquire() { 14 | await this.queue.get(); 15 | } 16 | 17 | public release() { 18 | this.queue.put(true); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/iso_fetch/index.ts: -------------------------------------------------------------------------------- 1 | // TODO: Remove, node 18 has native fetch. 2 | export * from 'cross-fetch'; 3 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/log/console.ts: -------------------------------------------------------------------------------- 1 | export type Logger = (...args: any[]) => void; 2 | 3 | class ConsoleLogger { 4 | constructor(private prefix: string, private logger: (...args: any[]) => void = console.log) {} 5 | 6 | public log(...args: any[]) { 7 | this.logger(`${this.prefix}:`, ...args); 8 | } 9 | } 10 | 11 | export function createLogger(prefix: string): Logger { 12 | if (prefix) { 13 | const logger = new ConsoleLogger(prefix, console.log); 14 | return (...args: any[]) => logger.log(...args); 15 | } 16 | return console.log; 17 | } 18 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/log/index.ts: -------------------------------------------------------------------------------- 1 | export * from './console.js'; 2 | export * from './debug.js'; 3 | export * from './log_history.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/log/log_history.ts: -------------------------------------------------------------------------------- 1 | import { setPreDebugLogHook } from './debug.js'; 2 | 3 | export class LogHistory { 4 | private logs: any[][] = []; 5 | 6 | public enable() { 7 | setPreDebugLogHook((...args: any[]) => { 8 | this.logs.push([new Date().toISOString(), ...args]); 9 | }); 10 | } 11 | 12 | public getLogs(last = 0) { 13 | return last ? this.logs.slice(-last) : this.logs; 14 | } 15 | 16 | public clear(count = this.logs.length) { 17 | this.logs = this.logs.slice(count); 18 | } 19 | } 20 | 21 | export const logHistory = new LogHistory(); 22 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/merkle_tree/hasher.ts: -------------------------------------------------------------------------------- 1 | export interface Hasher { 2 | compress(lhs: Uint8Array, rhs: Uint8Array): Buffer; 3 | hashToField(data: Uint8Array): Buffer; 4 | hashToTree(leaves: Buffer[]): Promise; 5 | } 6 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/merkle_tree/index.ts: -------------------------------------------------------------------------------- 1 | export * from './hash_path.js'; 2 | export * from './memory_merkle_tree.js'; 3 | export * from './hasher.js'; 4 | export * from './merkle_tree.js'; 5 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/mutex/mutex_database.ts: -------------------------------------------------------------------------------- 1 | export interface MutexDatabase { 2 | acquireLock(name: string, timeout: number): Promise; 3 | extendLock(name: string, timeout: number): Promise; 4 | releaseLock(name: string): Promise; 5 | } 6 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/note_algorithms/index.ts: -------------------------------------------------------------------------------- 1 | export * from './batch_decrypt_notes.js'; 2 | export * from './claim_note_tx_data.js'; 3 | export * from './decrypted_note.js'; 4 | export * from './defi_interaction_note.js'; 5 | export * from './derive_note_secret.js'; 6 | export * from './note_algorithms.js'; 7 | export * from './note_decryptor/index.js'; 8 | export * from './recover_tree_notes.js'; 9 | export * from './tree_claim_note.js'; 10 | export * from './tree_note.js'; 11 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/note_algorithms/note_decryptor/index.ts: -------------------------------------------------------------------------------- 1 | export * from './note_decryptor.js'; 2 | export * from './pooled_note_decryptor.js'; 3 | export * from './single_note_decryptor.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/note_algorithms/note_decryptor/note_decryptor.ts: -------------------------------------------------------------------------------- 1 | export interface NoteDecryptor { 2 | batchDecryptNotes(keysBuf: Buffer, privateKey: Buffer): Promise; 3 | } 4 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/note_algorithms/tree_claim_note.test.ts: -------------------------------------------------------------------------------- 1 | import { TreeClaimNote } from './tree_claim_note.js'; 2 | 3 | describe('tree_claim_note', () => { 4 | it('convert tree claim note to and from buffer', () => { 5 | const note = TreeClaimNote.random(); 6 | const buf = note.toBuffer(); 7 | expect(buf.length).toBe(TreeClaimNote.LENGTH); 8 | const recovered = TreeClaimNote.fromBuffer(buf); 9 | expect(recovered).toEqual(note); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/offchain_tx_data/index.ts: -------------------------------------------------------------------------------- 1 | export * from './offchain_account_data.js'; 2 | export * from './offchain_defi_claim_data.js'; 3 | export * from './offchain_defi_deposit_data.js'; 4 | export * from './offchain_join_split_data.js'; 5 | export * from './slice_offchain_tx_data.js'; 6 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/offchain_tx_data/offchain_defi_claim_data.ts: -------------------------------------------------------------------------------- 1 | export class OffchainDefiClaimData { 2 | static EMPTY = new OffchainDefiClaimData(); 3 | static SIZE = 0; 4 | 5 | constructor() {} 6 | 7 | static fromBuffer(buf: Buffer) { 8 | if (buf.length !== OffchainDefiClaimData.SIZE) { 9 | throw new Error('Invalid buffer size.'); 10 | } 11 | 12 | return new OffchainDefiClaimData(); 13 | } 14 | 15 | toBuffer() { 16 | return Buffer.alloc(0); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/pippenger/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pippenger.js'; 2 | export * from './single_pippenger.js'; 3 | export * from './pooled_pippenger.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/pippenger/pippenger.ts: -------------------------------------------------------------------------------- 1 | export interface Pippenger { 2 | init(crsData: Uint8Array): Promise; 3 | destroy(): Promise; 4 | pippengerUnsafe(scalars: Uint8Array, from: number, range: number): Promise; 5 | } 6 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/rollup_proof/index.ts: -------------------------------------------------------------------------------- 1 | export * from './inner_proof.js'; 2 | export * from './rollup_account_proof_data.js'; 3 | export * from './rollup_defi_claim_proof_data.js'; 4 | export * from './rollup_defi_deposit_proof_data.js'; 5 | export * from './rollup_deposit_proof_data.js'; 6 | export * from './rollup_proof_data.js'; 7 | export * from './rollup_send_proof_data.js'; 8 | export * from './rollup_withdraw_proof_data.js'; 9 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/rollup_provider/bridge_config.ts: -------------------------------------------------------------------------------- 1 | export interface BridgeConfig { 2 | bridgeAddressId: number; 3 | numTxs: number; 4 | // The total amount of gas the bridge is expected to use, from which we compute the fees. 5 | // e.g. The gas for a single tx is gas / numTxs. This can then be converted to a fee in whichever asset. 6 | gas?: number; 7 | permittedAssets: number[]; 8 | } 9 | 10 | export interface BridgeConfigJson { 11 | bridgeAddressId: number; 12 | numTxs: number; 13 | gas?: number; 14 | permittedAssets: number[]; 15 | } 16 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/rollup_provider/index.ts: -------------------------------------------------------------------------------- 1 | export * from './rollup_provider.js'; 2 | export * from './rollup_provider_status.js'; 3 | export * from './server_rollup_provider.js'; 4 | export * from './bridge_publish_stats_query.js'; 5 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/rounding/index.ts: -------------------------------------------------------------------------------- 1 | export * from './round_up.js'; 2 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/rounding/round_up.ts: -------------------------------------------------------------------------------- 1 | export const roundUp = (value: bigint, numSignificantFigures: number) => { 2 | if (numSignificantFigures < 0) { 3 | throw new Error('Number of significant figures cannot be negative.'); 4 | } 5 | 6 | if (!numSignificantFigures) { 7 | return value; 8 | } 9 | 10 | const numDigits = `${value}`.length; 11 | const numZeros = Math.max(0, numDigits - numSignificantFigures); 12 | const exp = BigInt(10) ** BigInt(numZeros); 13 | const head = value / exp; 14 | const carry = numZeros && value % exp ? BigInt(1) : BigInt(0); 15 | return (head + carry) * exp; 16 | }; 17 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/serialize/index.ts: -------------------------------------------------------------------------------- 1 | export * from './free_funcs.js'; 2 | export * from './deserializer.js'; 3 | export * from './serializer.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/timer/index.ts: -------------------------------------------------------------------------------- 1 | export * from './timeout.js'; 2 | export * from './timer.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/timer/timer.ts: -------------------------------------------------------------------------------- 1 | export class Timer { 2 | private start: number; 3 | 4 | constructor() { 5 | this.start = new Date().getTime(); 6 | } 7 | 8 | public ms() { 9 | return new Date().getTime() - this.start; 10 | } 11 | 12 | public s() { 13 | return (new Date().getTime() - this.start) / 1000; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/transport/browser/index.ts: -------------------------------------------------------------------------------- 1 | export * from './worker_connector.js'; 2 | export * from './worker_listener.js'; 3 | export * from './shared_worker_connector.js'; 4 | export * from './shared_worker_listener.js'; 5 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/transport/browser/shared_worker_connector.ts: -------------------------------------------------------------------------------- 1 | import { Connector } from '../interface/connector.js'; 2 | import { MessagePortSocket } from './message_port_socket.js'; 3 | 4 | export class SharedWorkerConnector implements Connector { 5 | constructor(private worker: SharedWorker) {} 6 | 7 | createSocket() { 8 | return Promise.resolve(new MessagePortSocket(this.worker.port)); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/transport/browser/worker_connector.ts: -------------------------------------------------------------------------------- 1 | import { Connector } from '../interface/connector.js'; 2 | import { MessagePortSocket } from './message_port_socket.js'; 3 | 4 | export class WorkerConnector implements Connector { 5 | constructor(private worker: Worker) {} 6 | 7 | createSocket() { 8 | const channel = new MessageChannel(); 9 | this.worker.postMessage('', [channel.port2]); 10 | return Promise.resolve(new MessagePortSocket(channel.port1)); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/transport/dispatch/create_dispatch_fn.ts: -------------------------------------------------------------------------------- 1 | export interface DispatchMsg { 2 | fn: string; 3 | args: any[]; 4 | } 5 | 6 | export function createDispatchFn(targetFn: () => any, debug = console.error) { 7 | return async ({ fn, args }: DispatchMsg) => { 8 | const target = targetFn(); 9 | debug(`dispatching to ${target}: ${fn}`, args); 10 | return await target[fn](...args); 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/transport/dispatch/messages.ts: -------------------------------------------------------------------------------- 1 | export interface RequestMessage { 2 | msgId: number; 3 | payload: Payload; 4 | } 5 | 6 | export interface ResponseMessage { 7 | msgId: number; 8 | payload?: Payload; 9 | error?: string; 10 | } 11 | 12 | export interface EventMessage { 13 | payload: Payload; 14 | } 15 | 16 | export function isEventMessage( 17 | msg: ResponseMessage | EventMessage, 18 | ): msg is EventMessage { 19 | return (msg as ResponseMessage).msgId === undefined; 20 | } 21 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/transport/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dispatch/create_dispatch_fn.js'; 2 | export * from './dispatch/create_dispatch_proxy.js'; 3 | export * from './dispatch/messages.js'; 4 | export * from './interface/connector.js'; 5 | export * from './interface/listener.js'; 6 | export * from './interface/socket.js'; 7 | export * from './interface/transferable.js'; 8 | export * from './transport_client.js'; 9 | export * from './transport_server.js'; 10 | export * from './browser/index.js'; 11 | export * from './node/index.js'; 12 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/transport/interface/connector.ts: -------------------------------------------------------------------------------- 1 | import { Socket } from './socket.js'; 2 | 3 | /** 4 | * Opens a socket with corresponding TransportListener. 5 | */ 6 | export interface Connector { 7 | createSocket(): Promise; 8 | } 9 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/transport/interface/listener.ts: -------------------------------------------------------------------------------- 1 | import EventEmitter from 'events'; 2 | import { Socket } from './socket.js'; 3 | 4 | /** 5 | * Once opened, an implementation of a TransportListener will emit `new_socket` events as new clients connect. 6 | * Possible implementations could include MessageChannels or WebSockets. 7 | */ 8 | export interface Listener extends EventEmitter { 9 | open(): void; 10 | 11 | close(): void; 12 | 13 | on(name: 'new_socket', cb: (client: Socket) => void): this; 14 | } 15 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/transport/interface/socket.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Represents one end of a socket connection. 3 | * A message sent via `send` will be handled by the corresponding Socket's handler function at the other end. 4 | * Implementations could use e.g. MessagePorts for communication between browser workers, 5 | * or WebSockets for communication between processes. 6 | * If `registerHandler` callback receives `undefined` that signals the other end closed. 7 | */ 8 | export interface Socket { 9 | send(msg: any, transfer?: Transferable[]): Promise; 10 | registerHandler(cb: (msg: any) => any): void; 11 | close(): void; 12 | } 13 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/transport/node/index.ts: -------------------------------------------------------------------------------- 1 | export * from './node_connector.js'; 2 | export * from './node_listener.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/transport/node/node_connector.ts: -------------------------------------------------------------------------------- 1 | import { Worker } from 'worker_threads'; 2 | import { Connector } from '../interface/connector.js'; 3 | import { NodeConnectorSocket } from './node_connector_socket.js'; 4 | 5 | export class NodeConnector implements Connector { 6 | constructor(private worker: Worker) {} 7 | 8 | createSocket() { 9 | return Promise.resolve(new NodeConnectorSocket(this.worker)); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/transport/node/node_connector_socket.ts: -------------------------------------------------------------------------------- 1 | import { TransferListItem, Worker } from 'worker_threads'; 2 | import { Socket } from '../interface/socket.js'; 3 | 4 | export class NodeConnectorSocket implements Socket { 5 | constructor(private worker: Worker) {} 6 | 7 | send(msg: any, transfer: Transferable[] = []): Promise { 8 | this.worker.postMessage(msg, transfer as TransferListItem[]); 9 | return Promise.resolve(); 10 | } 11 | 12 | registerHandler(cb: (msg: any) => any): void { 13 | this.worker.on('message', cb); 14 | } 15 | 16 | close() { 17 | void this.send(undefined); 18 | this.worker.removeAllListeners(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/transport/node/node_listener.ts: -------------------------------------------------------------------------------- 1 | import { parentPort } from 'worker_threads'; 2 | import EventEmitter from 'events'; 3 | import { Listener } from '../interface/listener.js'; 4 | import { NodeListenerSocket } from './node_listener_socket.js'; 5 | 6 | export class NodeListener extends EventEmitter implements Listener { 7 | constructor() { 8 | super(); 9 | } 10 | 11 | open() { 12 | this.emit('new_socket', new NodeListenerSocket(parentPort as any)); 13 | } 14 | 15 | close() {} 16 | } 17 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/viewing_key/viewing_key.test.ts: -------------------------------------------------------------------------------- 1 | import { randomBytes } from '../crypto/index.js'; 2 | import { ViewingKey } from './index.js'; 3 | 4 | describe('viewing_key', () => { 5 | it('convert viewing key from and to buffer', () => { 6 | const buf = randomBytes(ViewingKey.SIZE); 7 | const key = new ViewingKey(buf); 8 | expect(key.toBuffer()).toEqual(buf); 9 | }); 10 | 11 | it('convert viewing key from and to string', () => { 12 | const key = ViewingKey.random(); 13 | const str = key.toString(); 14 | const recovered = ViewingKey.fromString(str); 15 | expect(recovered).toEqual(key); 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/wasm/aztec-connect.wasm: -------------------------------------------------------------------------------- 1 | ../../../../aztec-connect-cpp/build-wasm/bin/aztec-connect.wasm -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/wasm/barretenberg_worker.ts: -------------------------------------------------------------------------------- 1 | import { Proxify } from '../transport/index.js'; 2 | import { BarretenbergWasm } from './barretenberg_wasm.js'; 3 | 4 | export interface BarretenbergWorker extends Proxify { 5 | destroyWorker(): Promise; 6 | } 7 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/wasm/browser/index.ts: -------------------------------------------------------------------------------- 1 | export * from './web_worker_factory.js'; 2 | export * from './web_data_store.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/wasm/data_store.ts: -------------------------------------------------------------------------------- 1 | export interface DataStore { 2 | get(key: string): Promise; 3 | set(key: string, value: Buffer): Promise; 4 | } 5 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/wasm/index.ts: -------------------------------------------------------------------------------- 1 | export * from './worker_factory.js'; 2 | export * from './worker_pool.js'; 3 | export * from './barretenberg_wasm.js'; 4 | export * from './barretenberg_worker.js'; 5 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/wasm/node/index.ts: -------------------------------------------------------------------------------- 1 | export * from './node_worker_factory.js'; 2 | export * from './node_data_store.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/wasm/worker_pool.test.ts: -------------------------------------------------------------------------------- 1 | import { WorkerPool } from './worker_pool.js'; 2 | import { BarretenbergWasm } from './barretenberg_wasm.js'; 3 | 4 | describe('wasm worker pool', () => { 5 | it('should call worker', async () => { 6 | const pool = await WorkerPool.new(await BarretenbergWasm.new(), 4); 7 | try { 8 | const memSizeWasm0 = await pool.workers[0].memSize(); 9 | expect(memSizeWasm0).toBeGreaterThan(0); 10 | } finally { 11 | await pool.destroy(); 12 | } 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/src/world_state/index.ts: -------------------------------------------------------------------------------- 1 | export * from './world_state.js'; 2 | export * from './world_state_constants.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/tsconfig.dest.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "exclude": ["src/**/*.test.ts", "src/**/fixtures/*", "src/wasm/web_worker.ts"] 4 | } 5 | -------------------------------------------------------------------------------- /yarn-project/barretenberg.js/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2020", 4 | "lib": ["dom", "esnext", "es2017.object"], 5 | "module": "NodeNext", 6 | "outDir": "dest", 7 | "strict": true, 8 | "declaration": true, 9 | "noImplicitAny": false, 10 | "noImplicitThis": false, 11 | "allowSyntheticDefaultImports": true, 12 | "esModuleInterop": true, 13 | "downlevelIteration": true, 14 | "inlineSourceMap": true, 15 | "declarationMap": true, 16 | "importHelpers": true, 17 | "resolveJsonModule": true, 18 | "composite": true, 19 | "rootDir": "src", 20 | "tsBuildInfoFile": ".tsbuildinfo" 21 | }, 22 | "include": ["src"] 23 | } 24 | -------------------------------------------------------------------------------- /yarn-project/block-server/.dockerignore: -------------------------------------------------------------------------------- 1 | data 2 | dest 3 | node_modules 4 | **/.terraform 5 | Dockerfile -------------------------------------------------------------------------------- /yarn-project/block-server/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-patch/modern-module-resolution'); 2 | 3 | module.exports = { 4 | extends: ['@aztec/eslint-config'], 5 | parserOptions: { tsconfigRootDir: __dirname }, 6 | }; 7 | -------------------------------------------------------------------------------- /yarn-project/block-server/.gitignore: -------------------------------------------------------------------------------- 1 | /data* 2 | -------------------------------------------------------------------------------- /yarn-project/block-server/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "address": "${config:mainframeAddress}", 9 | "port": 9221, 10 | "type": "node", 11 | "request": "attach", 12 | "name": "Attach to Remote", 13 | "skipFiles": ["/**"], 14 | "localRoot": "${workspaceFolder}", 15 | "sourceMaps": true 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /yarn-project/block-server/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-base AS builder 2 | COPY barretenberg.js barretenberg.js 3 | COPY block-server block-server 4 | WORKDIR /usr/src/yarn-project/block-server 5 | RUN yarn build && yarn formatting && yarn test 6 | # Prune dev dependencies. See comment in base image. 7 | RUN yarn cache clean 8 | RUN yarn workspaces focus --production > /dev/null 9 | 10 | FROM node:18-alpine 11 | COPY --from=builder /usr/src /usr/src 12 | WORKDIR /usr/src/yarn-project/block-server 13 | CMD ["yarn", "start"] 14 | EXPOSE 80 -------------------------------------------------------------------------------- /yarn-project/block-server/terraform/dev/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } 4 | -------------------------------------------------------------------------------- /yarn-project/block-server/terraform/prod/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } 4 | -------------------------------------------------------------------------------- /yarn-project/block-server/terraform/servicediscovery-drain.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | [ $# -ne 1 ] && echo "Usage: $0 " && exit 1 4 | 5 | serviceId="--service-id=$1" 6 | 7 | echo "Draining servicediscovery instances from $1 ..." 8 | ids="$(aws servicediscovery list-instances $serviceId --query 'Instances[].Id' --output text | tr '\t' ' ')" 9 | 10 | found= 11 | for id in $ids; do 12 | if [ -n "$id" ]; then 13 | echo "Deregistering $1 / $id ..." 14 | aws servicediscovery deregister-instance $serviceId --instance-id "$id" 15 | found=1 16 | fi 17 | done 18 | 19 | # Yes, I'm being lazy here... 20 | [ -n "$found" ] && sleep 5 || true -------------------------------------------------------------------------------- /yarn-project/block-server/terraform/stage/variables.tf: -------------------------------------------------------------------------------- 1 | 2 | variable "DEPLOY_TAG" { 3 | type = string 4 | } 5 | -------------------------------------------------------------------------------- /yarn-project/block-server/terraform/testnet/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } 4 | -------------------------------------------------------------------------------- /yarn-project/block-server/tsconfig.dest.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ".", 3 | "references": [{ "path": "../barretenberg.js/tsconfig.dest.json" }], 4 | "exclude": ["**/*.test.*"] 5 | } 6 | -------------------------------------------------------------------------------- /yarn-project/blockchain/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-patch/modern-module-resolution'); 2 | 3 | module.exports = { 4 | extends: ['@aztec/eslint-config'], 5 | parserOptions: { tsconfigRootDir: __dirname }, 6 | }; 7 | -------------------------------------------------------------------------------- /yarn-project/blockchain/.gitattributes: -------------------------------------------------------------------------------- 1 | *.sol linguist-language=Solidity -------------------------------------------------------------------------------- /yarn-project/blockchain/.gitignore: -------------------------------------------------------------------------------- 1 | cache 2 | src/verifier-fixtures/*.dat 3 | .openzeppelin -------------------------------------------------------------------------------- /yarn-project/blockchain/.prettierignore: -------------------------------------------------------------------------------- 1 | /src/abis -------------------------------------------------------------------------------- /yarn-project/blockchain/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-base AS builder 2 | COPY barretenberg.js barretenberg.js 3 | COPY blockchain blockchain 4 | WORKDIR /usr/src/yarn-project/blockchain 5 | RUN yarn build && yarn formatting && yarn test 6 | 7 | FROM node:18-alpine 8 | COPY --from=builder /usr/src/yarn-project/blockchain /usr/src/yarn-project/blockchain -------------------------------------------------------------------------------- /yarn-project/blockchain/scripts/compile_and_test: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | NODE_NO_WARNINGS=1 yarn jest --silent $@ -------------------------------------------------------------------------------- /yarn-project/blockchain/scripts/run_tests: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | $(aws ecr get-login --region us-east-2 --no-include-email) 2> /dev/null 5 | 6 | IMAGE_URI=278380418400.dkr.ecr.us-east-2.amazonaws.com/blockchain:cache-$COMMIT_HASH-builder 7 | 8 | docker pull $IMAGE_URI 9 | 10 | docker run --rm $IMAGE_URI -------------------------------------------------------------------------------- /yarn-project/blockchain/src/abis/contracts/AlwaysTrueVerifier.sol: -------------------------------------------------------------------------------- 1 | ../../../../../contracts/out/AlwaysTrueVerifier.sol/ -------------------------------------------------------------------------------- /yarn-project/blockchain/src/abis/contracts/AztecFaucet.sol: -------------------------------------------------------------------------------- 1 | ../../../../../contracts/out/AztecFaucet.sol -------------------------------------------------------------------------------- /yarn-project/blockchain/src/abis/contracts/AztecFeeDistributor.sol: -------------------------------------------------------------------------------- 1 | ../../../../../contracts/out/AztecFeeDistributor.sol/ -------------------------------------------------------------------------------- /yarn-project/blockchain/src/abis/contracts/DataProvider.sol: -------------------------------------------------------------------------------- 1 | ../../../../../contracts/out/DataProvider.sol/ -------------------------------------------------------------------------------- /yarn-project/blockchain/src/abis/contracts/DefiBridgeProxy.sol: -------------------------------------------------------------------------------- 1 | ../../../../../contracts/out/DefiBridgeProxy.sol/ -------------------------------------------------------------------------------- /yarn-project/blockchain/src/abis/contracts/ERC20Mintable.sol: -------------------------------------------------------------------------------- 1 | ../../../../../contracts/out/ERC20Mintable.sol -------------------------------------------------------------------------------- /yarn-project/blockchain/src/abis/contracts/IDefiBridge.sol: -------------------------------------------------------------------------------- 1 | ../../../../../contracts/out/IDefiBridge.sol/ -------------------------------------------------------------------------------- /yarn-project/blockchain/src/abis/contracts/MockVerifier.sol: -------------------------------------------------------------------------------- 1 | ../../../../../contracts/out/MockVerifier.sol/ -------------------------------------------------------------------------------- /yarn-project/blockchain/src/abis/contracts/PermitHelper.sol: -------------------------------------------------------------------------------- 1 | ../../../../../contracts/out/PermitHelper.sol -------------------------------------------------------------------------------- /yarn-project/blockchain/src/abis/contracts/ProxyAdmin.sol: -------------------------------------------------------------------------------- 1 | ../../../../../contracts/out/ProxyAdmin.sol/ -------------------------------------------------------------------------------- /yarn-project/blockchain/src/abis/contracts/ProxyDeployer.sol: -------------------------------------------------------------------------------- 1 | ../../../../../contracts/out/ProxyDeployer.sol/ -------------------------------------------------------------------------------- /yarn-project/blockchain/src/abis/contracts/RollupProcessor.sol: -------------------------------------------------------------------------------- 1 | ../../../../../contracts/out/RollupProcessor.sol/ -------------------------------------------------------------------------------- /yarn-project/blockchain/src/abis/contracts/RollupProcessorV2.sol: -------------------------------------------------------------------------------- 1 | ../../../../../contracts/out/RollupProcessorV2.sol/ -------------------------------------------------------------------------------- /yarn-project/blockchain/src/abis/contracts/TransparentUpgradeableProxy.sol: -------------------------------------------------------------------------------- 1 | ../../../../../contracts/out/TransparentUpgradeableProxy.sol -------------------------------------------------------------------------------- /yarn-project/blockchain/src/abis/contracts/Verifier1x1.sol: -------------------------------------------------------------------------------- 1 | ../../../../../contracts/out/Verifier1x1.sol/ -------------------------------------------------------------------------------- /yarn-project/blockchain/src/abis/contracts/Verifier28x32.sol: -------------------------------------------------------------------------------- 1 | ../../../../../contracts/out/Verifier28x32.sol/ -------------------------------------------------------------------------------- /yarn-project/blockchain/src/abis/mocks/ICurveProvider.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "ICurveProvider", 4 | "sourceName": "contracts/interfaces/ICurveProvider.sol", 5 | "abi": [ 6 | { 7 | "inputs": [], 8 | "name": "get_registry", 9 | "outputs": [ 10 | { 11 | "internalType": "address", 12 | "name": "", 13 | "type": "address" 14 | } 15 | ], 16 | "stateMutability": "view", 17 | "type": "function" 18 | } 19 | ], 20 | "bytecode": "0x", 21 | "deployedBytecode": "0x", 22 | "linkReferences": {}, 23 | "deployedLinkReferences": {} 24 | } 25 | -------------------------------------------------------------------------------- /yarn-project/blockchain/src/contracts/asset/index.ts: -------------------------------------------------------------------------------- 1 | export * from './eth_asset.js'; 2 | export * from './token_asset.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/blockchain/src/contracts/bridge_data_provider/index.ts: -------------------------------------------------------------------------------- 1 | export * from './bridge_data_provider.js'; 2 | -------------------------------------------------------------------------------- /yarn-project/blockchain/src/contracts/defi_bridge/index.ts: -------------------------------------------------------------------------------- 1 | export * from './defi_bridge.js'; 2 | -------------------------------------------------------------------------------- /yarn-project/blockchain/src/contracts/fee_distributor/index.ts: -------------------------------------------------------------------------------- 1 | export * from './fee_distributor.js'; 2 | -------------------------------------------------------------------------------- /yarn-project/blockchain/src/contracts/index.ts: -------------------------------------------------------------------------------- 1 | export * from './contracts.js'; 2 | export * from './asset/index.js'; 3 | export * from './fee_distributor/index.js'; 4 | export * from './price_feed/index.js'; 5 | export * from './rollup_processor/index.js'; 6 | export * from './bridge_data_provider/index.js'; 7 | export * from './decode_error.js'; 8 | -------------------------------------------------------------------------------- /yarn-project/blockchain/src/contracts/price_feed/eth_price_feed.ts: -------------------------------------------------------------------------------- 1 | import { PriceFeed } from '@aztec/barretenberg/blockchain'; 2 | 3 | export class EthPriceFeed implements PriceFeed { 4 | constructor() {} 5 | 6 | price() { 7 | return Promise.resolve(BigInt(10) ** BigInt(18)); 8 | } 9 | 10 | latestRound() { 11 | return Promise.resolve(BigInt(0)); 12 | } 13 | 14 | async getRoundData(roundId: bigint) { 15 | return { 16 | roundId, 17 | price: await this.price(), 18 | timestamp: 0, 19 | }; 20 | } 21 | 22 | async getHistoricalPrice() { 23 | return await this.price(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /yarn-project/blockchain/src/contracts/price_feed/gas_price_feed.ts: -------------------------------------------------------------------------------- 1 | import { TokenPriceFeed } from './token_price_feed.js'; 2 | 3 | export class GasPriceFeed extends TokenPriceFeed {} 4 | -------------------------------------------------------------------------------- /yarn-project/blockchain/src/contracts/price_feed/index.ts: -------------------------------------------------------------------------------- 1 | export * from './eth_price_feed.js'; 2 | export * from './gas_price_feed.js'; 3 | export * from './token_price_feed.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/blockchain/src/contracts/rollup_processor/index.ts: -------------------------------------------------------------------------------- 1 | export * from './rollup_processor.js'; 2 | -------------------------------------------------------------------------------- /yarn-project/blockchain/src/contracts/rollup_processor/solidity_format_signatures.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Format all signatures into useful solidity format. EVM word size is 32bytes 3 | * and we're supplying a concatenated array of signatures - so need each ECDSA 4 | * param (v, r, s) to occupy 32 bytes. 5 | * 6 | * Zero left padding v by 31 bytes. 7 | */ 8 | export function solidityFormatSignatures(signatures: Buffer[]) { 9 | const paddedSignatures = signatures.map(currentSignature => { 10 | const v = currentSignature.slice(-1); 11 | return Buffer.concat([currentSignature.slice(0, 64), Buffer.alloc(31), v]); 12 | }); 13 | return Buffer.concat(paddedSignatures); 14 | } 15 | -------------------------------------------------------------------------------- /yarn-project/blockchain/src/earliest_block/index.ts: -------------------------------------------------------------------------------- 1 | export function getEarliestBlock(chainId: number) { 2 | switch (chainId) { 3 | case 1: 4 | return { earliestBlock: 14728000, chunk: 100000, offchainSearchLead: 6 * 60 * 24 }; 5 | case 0xa57ec: 6 | case 0xdef: 7 | case 0x57a93: 8 | return { earliestBlock: 15918000, chunk: 100000, offchainSearchLead: 10 }; 9 | case 0xe2e: 10 | return { earliestBlock: 15918000, chunk: 10, offchainSearchLead: 10 }; 11 | case 1337: 12 | return { earliestBlock: 0, chunk: 10, offchainSearchLead: 10 }; 13 | default: 14 | return { earliestBlock: 0, chunk: 100000, offchainSearchLead: 6 * 60 * 24 }; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /yarn-project/blockchain/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './provider/index.js'; 2 | export * from './client_ethereum_blockchain.js'; 3 | export * from './create_permit_data.js'; 4 | export * from './ethereum_blockchain.js'; 5 | export * from './contracts/index.js'; 6 | export * from './signer/index.js'; 7 | export * from './validate_signature.js'; 8 | export * from './units.js'; 9 | export * from './tokens/index.js'; 10 | export * from './fork_helpers/manipulate_blocks.js'; 11 | export * from './earliest_block/index.js'; 12 | -------------------------------------------------------------------------------- /yarn-project/blockchain/src/provider/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ethers_adapter.js'; 2 | export * from './wallet_provider.js'; 3 | export * from './web3_adapter.js'; 4 | export * from './web3_provider.js'; 5 | export * from './json_rpc_provider.js'; 6 | -------------------------------------------------------------------------------- /yarn-project/blockchain/src/provider/web3_provider.ts: -------------------------------------------------------------------------------- 1 | interface JsonRpcRequest { 2 | jsonrpc: string; 3 | method: string; 4 | params: any[]; 5 | id: number; 6 | } 7 | 8 | interface JsonRpcResponse { 9 | jsonrpc: string; 10 | id: number; 11 | result?: any; 12 | error?: { 13 | code: number; 14 | message: string; 15 | data?: any; 16 | }; 17 | } 18 | 19 | type Callback = (err?: Error, result?: JsonRpcResponse) => void; 20 | 21 | export interface Web3Provider { 22 | send(payload: JsonRpcRequest, callback: Callback): any; 23 | } 24 | -------------------------------------------------------------------------------- /yarn-project/blockchain/src/signer/index.ts: -------------------------------------------------------------------------------- 1 | export * from './web3_signer.js'; 2 | -------------------------------------------------------------------------------- /yarn-project/blockchain/src/validate_signature.ts: -------------------------------------------------------------------------------- 1 | import { EthAddress } from '@aztec/barretenberg/address'; 2 | import { ethers } from 'ethers'; 3 | 4 | export function validateSignature(publicOwner: EthAddress, signature: Buffer, signingData: Buffer) { 5 | const recoveredSigner = ethers.utils.verifyMessage(signingData, `0x${signature.toString('hex')}`); 6 | return recoveredSigner.toLowerCase() === publicOwner.toString().toLowerCase(); 7 | } 8 | -------------------------------------------------------------------------------- /yarn-project/blockchain/tsconfig.dest.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ".", 3 | "compilerOptions": { 4 | "rootDir": "src", 5 | "types": [] 6 | }, 7 | "references": [{ "path": "../barretenberg.js/tsconfig.dest.json" }], 8 | "exclude": ["**/*.test.*", "**/fixtures/*"], 9 | "files": [] 10 | } 11 | -------------------------------------------------------------------------------- /yarn-project/contracts-verifier-test/.dockerignore: -------------------------------------------------------------------------------- 1 | broadcast 2 | cache 3 | out 4 | Dockerfile 5 | lib 6 | verifier-fixtures/*.dat -------------------------------------------------------------------------------- /yarn-project/contracts-verifier-test/.gitignore: -------------------------------------------------------------------------------- 1 | cache 2 | dest 3 | out 4 | verifier-fixtures/*.dat -------------------------------------------------------------------------------- /yarn-project/contracts-verifier-test/README.md: -------------------------------------------------------------------------------- 1 | # Running the docker for tests locally: 2 | To run these tests, the contracts docker need to have been built with the latest keys to have up to date keys. 3 | 4 | ```bash 5 | # In yarn-project 6 | docker build -f contracts-verifier-test/Dockerfile --no-cache . 7 | ``` 8 | -------------------------------------------------------------------------------- /yarn-project/contracts-verifier-test/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@aztec/contracts-verifier-test", 3 | "version": "2.0.0", 4 | "license": "MIT", 5 | "exports": "./dest/index.js", 6 | "type": "module", 7 | "scripts": { 8 | "build": "yarn tsc -b tsconfig.dest.json", 9 | "start": "cd verifier-fixtures && ./create_fixture.sh", 10 | "test": "forge clean && forge build && forge test" 11 | }, 12 | "dependencies": { 13 | "@aztec/barretenberg": "workspace:^" 14 | }, 15 | "devDependencies": { 16 | "@aztec/eslint-config": "workspace:^", 17 | "@rushstack/eslint-patch": "^1.1.4", 18 | "@types/node": "^18.7.23", 19 | "typescript": "^4.7.4" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /yarn-project/contracts-verifier-test/tsconfig.dest.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ".", 3 | "compilerOptions": { 4 | "rootDir": "verifier-fixtures", 5 | "types": [] 6 | }, 7 | "references": [{ "path": "../barretenberg.js/tsconfig.dest.json" }], 8 | "exclude": ["./verifier-fixtures/*.dat"], 9 | "files": [] 10 | } 11 | -------------------------------------------------------------------------------- /yarn-project/contracts-verifier-test/verifier-fixtures/create_fixture.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ -d "./src" ]; then 5 | (cd ../../../aztec-connect-cpp/ && mkdir -p build && cd build && rm -rf ./data && cmake .. && cmake --build . --parallel --target tx_factory --target rollup_cli) 6 | fi 7 | 8 | (cd ../../../aztec-connect-cpp/barretenberg/cpp/srs_db && ./download_ignition.sh 1) 9 | 10 | # input format: num_txs | inner size | outer size | is mock 11 | ./create_rollup_proof.sh 4 3 2 true 12 | ./create_rollup_proof.sh 1 1 1 false 13 | 14 | yarn build && yarn node ../dest -------------------------------------------------------------------------------- /yarn-project/end-to-end/.dockerignore: -------------------------------------------------------------------------------- 1 | Dockerfile 2 | data 3 | node_modules 4 | media -------------------------------------------------------------------------------- /yarn-project/end-to-end/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-patch/modern-module-resolution'); 2 | 3 | module.exports = { 4 | extends: ['@aztec/eslint-config'], 5 | parserOptions: { tsconfigRootDir: __dirname }, 6 | }; 7 | -------------------------------------------------------------------------------- /yarn-project/end-to-end/.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | data 3 | dest 4 | node_modules -------------------------------------------------------------------------------- /yarn-project/end-to-end/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "address": "${config:mainframeAddress}", 9 | "port": 9221, 10 | "type": "node", 11 | "request": "attach", 12 | "name": "Attach to Remote", 13 | "skipFiles": ["/**"], 14 | "localRoot": "${workspaceFolder}", 15 | "sourceMaps": true 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /yarn-project/end-to-end/contracts.json: -------------------------------------------------------------------------------- 1 | { 2 | "outputPath": "./src/contracts", 3 | "contracts": { 4 | "RollupProcessor": { 5 | "source": "truffle", 6 | "buildFile": "./node_modules/blockchain/artifacts/RollupProcessor.json" 7 | }, 8 | "ERC20Mintable": { 9 | "source": "truffle", 10 | "buildFile": "./node_modules/blockchainc/artifacts/ERC20Mintable.json" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /yarn-project/end-to-end/media/e2e-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AztecProtocol/aztec-connect/9374aae687ec5ea01adeb651e7b9ab0d69a1b33b/yarn-project/end-to-end/media/e2e-overview.png -------------------------------------------------------------------------------- /yarn-project/end-to-end/scripts/docker-compose.integration.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | contracts: 4 | platform: linux/amd64 5 | image: aztecprotocol/contracts:latest 6 | environment: 7 | ETHEREUM_HOST: ${ETHEREUM_HOST:-} 8 | VK: ${VK:-} 9 | PORT: 8547 10 | command: ./scripts/start_e2e.sh 11 | ports: 12 | - '8545:8544' 13 | 14 | end-to-end: 15 | image: aztecprotocol/end-to-end:latest 16 | environment: 17 | ETHEREUM_HOST: http://contracts:8544 18 | CONTRACTS_HOST: http://contracts:8547 19 | command: ${TEST:-./src/int_rollup_processor.test.ts} -------------------------------------------------------------------------------- /yarn-project/end-to-end/scripts/download_all_data.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Run with `time` in order to get both the time to download all data, and the total data size. 3 | 4 | URL=${1:-https://api.aztec.network/aztec-connect-prod/falafel} 5 | BYTES=0 6 | TOTAL=0 7 | FROM=0 8 | TAKE=128 9 | export LC_NUMERIC="en_US.utf8" 10 | 11 | while [ "$BYTES" -ne 4 ]; do 12 | BYTES=$(curl -s "$URL/get-blocks?from=$FROM&take=$TAKE" | wc -c) 13 | TOTAL=$[$TOTAL + $BYTES] 14 | TO=$[$FROM + $TAKE - 1] 15 | if [ "$BYTES" -ne 4 ]; then 16 | printf "Blocks $FROM to $TO: %'d bytes / %'d total.\n" $BYTES $TOTAL 17 | fi 18 | FROM=$[$FROM + $TAKE] 19 | done -------------------------------------------------------------------------------- /yarn-project/end-to-end/scripts/start_browser_e2e.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | TEST=${1:-./src/e2e_browser.test.ts} 4 | 5 | apk add dbus 6 | 7 | # Create dbus dirs 8 | mkdir -p /var/run/dbus 9 | 10 | # Change ownership and permissions if necessary 11 | chown -R root:root /var/run/dbus 12 | chmod -R 755 /var/run/dbus 13 | 14 | dbus-daemon --system --nofork & 15 | yarn test $TEST 16 | -------------------------------------------------------------------------------- /yarn-project/end-to-end/tsconfig.dest.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ".", 3 | "references": [ 4 | { "path": "../blockchain/tsconfig.dest.json" }, 5 | { "path": "../sdk/tsconfig.dest.json" }, 6 | { "path": "../barretenberg.js/tsconfig.dest.json" } 7 | ], 8 | "exclude": ["**/*.test.*"] 9 | } 10 | -------------------------------------------------------------------------------- /yarn-project/eslint-config/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@aztec/eslint-config", 3 | "packageManager": "yarn@3.2.2", 4 | "devDependencies": { 5 | "@typescript-eslint/eslint-plugin": "^5.38.0", 6 | "@typescript-eslint/parser": "^5.38.0", 7 | "eslint": "^8.21.0", 8 | "eslint-config-prettier": "^8.5.0" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /yarn-project/falafel/.dockerignore: -------------------------------------------------------------------------------- 1 | data 2 | dest 3 | node_modules 4 | **/.terraform 5 | Dockerfile -------------------------------------------------------------------------------- /yarn-project/falafel/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-patch/modern-module-resolution'); 2 | 3 | module.exports = { 4 | extends: ['@aztec/eslint-config'], 5 | parserOptions: { tsconfigRootDir: __dirname }, 6 | }; 7 | -------------------------------------------------------------------------------- /yarn-project/falafel/.gitignore: -------------------------------------------------------------------------------- 1 | /data* 2 | -------------------------------------------------------------------------------- /yarn-project/falafel/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "address": "${config:mainframeAddress}", 9 | "port": 9221, 10 | "type": "node", 11 | "request": "attach", 12 | "name": "Attach to Remote", 13 | "skipFiles": ["/**"], 14 | "localRoot": "${workspaceFolder}", 15 | "sourceMaps": true 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /yarn-project/falafel/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | yarn clean 5 | 6 | cmake --build ../../aztec-connect-cpp/build --parallel --target db_cli 7 | cmake --build ../../aztec-connect-cpp/build-wasm --parallel --target aztec-connect.wasm 8 | 9 | yarn build -------------------------------------------------------------------------------- /yarn-project/falafel/config/e2e_test_initial_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "depositLimit": 100, 3 | "bridgeConfigs": [ 4 | { 5 | "bridgeAddressId": 1, 6 | "gas": 500000, 7 | "numTxs": 5, 8 | "permittedAssets": [0, 1, 2] 9 | }, 10 | { 11 | "bridgeAddressId": 2, 12 | "gas": 500000, 13 | "numTxs": 5, 14 | "permittedAssets": [0, 1, 2] 15 | }, 16 | { 17 | "bridgeAddressId": 3, 18 | "gas": 500000, 19 | "numTxs": 5, 20 | "permittedAssets": [0, 1, 2] 21 | }, 22 | { 23 | "bridgeAddressId": 4, 24 | "gas": 500000, 25 | "numTxs": 5, 26 | "permittedAssets": [0, 1, 2] 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /yarn-project/falafel/scripts/export_addresses.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Wait for host 4 | echo "Waiting for contracts host at $CONTRACTS_HOST..." 5 | while ! curl -s $CONTRACTS_HOST > /dev/null; do sleep 1; done; 6 | 7 | # Export keys to env variables 8 | for KEY in ROLLUP_CONTRACT_ADDRESS FAUCET_CONTRACT_ADDRESS PERMIT_HELPER_CONTRACT_ADDRESS FEE_DISTRIBUTOR_ADDRESS GAS_PRICE_FEED_CONTRACT_ADDRESS DAI_PRICE_FEED_CONTRACT_ADDRESS BRIDGE_DATA_PROVIDER_CONTRACT_ADDRESS; do 9 | VALUE=$(curl -s $CONTRACTS_HOST | jq -r .$KEY) 10 | echo "$KEY=$VALUE" 11 | export $KEY=$VALUE 12 | done 13 | export PRICE_FEED_CONTRACT_ADDRESSES="$GAS_PRICE_FEED_CONTRACT_ADDRESS,$DAI_PRICE_FEED_CONTRACT_ADDRESS" -------------------------------------------------------------------------------- /yarn-project/falafel/scripts/export_rds_db.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -euo pipefail 3 | 4 | DB_INSTANCE=$1 5 | DB_PORT=${2:-5432} 6 | DB_NAME=${3:-"falafel"} 7 | TEMP_DIR=${4:-~/} 8 | 9 | if [ $# -eq 0 ]; then 10 | echo "Please provide a db instance to export"; 11 | exit 12 | fi 13 | 14 | # execute pg_dump on bastion via ssh 15 | echo "Dumping db..." 16 | PG_DUMP="pg_dump -h '${DB_INSTANCE}' --port ${DB_PORT} -U username -d ${DB_NAME} -Fc > db.dump" 17 | ssh bastion "${PG_DUMP}" 18 | echo "Dump completed, copying to mainframe at ${TEMP_DIR}..." 19 | 20 | # pull the dump file across to mainframe 21 | scp ec2-user@bastion:/home/ec2-user/db.dump $TEMP_DIR -------------------------------------------------------------------------------- /yarn-project/falafel/scripts/start_e2e_prover.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -eu 3 | 4 | export NUM_INNER_ROLLUP_TXS=1 5 | export NUM_OUTER_ROLLUP_PROOFS=1 6 | export VK=VerificationKey1x1 7 | 8 | ./scripts/start_e2e.sh -------------------------------------------------------------------------------- /yarn-project/falafel/scripts/start_wasabi.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | export FEE_GAS_PRICE_MULTIPLIER=0.0001 5 | export ETHEREUM_POLL_INTERVAL=1000 6 | export FLUSH_AFTER_IDLE=10 7 | export DEFAULT_DEFI_BATCH_SIZE=10 8 | export NUM_INNER_ROLLUP_TXS=1 9 | export NUM_OUTER_ROLLUP_PROOFS=1 10 | export VK=VerificationKey1x1 11 | 12 | ./scripts/start_e2e.sh -------------------------------------------------------------------------------- /yarn-project/falafel/src/bridge/index.ts: -------------------------------------------------------------------------------- 1 | export * from './bridge_resolver.js'; 2 | -------------------------------------------------------------------------------- /yarn-project/falafel/src/compliance/address_check_provider.ts: -------------------------------------------------------------------------------- 1 | import { EthAddress } from '@aztec/barretenberg/address'; 2 | 3 | export interface AddressCheckProvider { 4 | addressProhibited(address: EthAddress): Promise; 5 | } 6 | 7 | export class AddressCheckProviders implements AddressCheckProvider { 8 | private providers: AddressCheckProvider[] = []; 9 | 10 | addProvider(provider: AddressCheckProvider) { 11 | this.providers.push(provider); 12 | } 13 | 14 | async addressProhibited(address: EthAddress): Promise { 15 | const results = await Promise.all(this.providers.map(provider => provider.addressProhibited(address))); 16 | return results.includes(true); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /yarn-project/falafel/src/compliance/aztec_blacklist_provider.ts: -------------------------------------------------------------------------------- 1 | import { AddressCheckProvider } from './address_check_provider.js'; 2 | import { EthAddress } from '@aztec/barretenberg/address'; 3 | 4 | export class AztecBlacklistProvider implements AddressCheckProvider { 5 | constructor(private blacklist: EthAddress[]) {} 6 | 7 | addressProhibited(address: EthAddress): Promise { 8 | return Promise.resolve(this.blacklist.some(x => x.equals(address))); 9 | } 10 | 11 | configureNewAddresses(newBlacklist: EthAddress[]) { 12 | this.blacklist = newBlacklist; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /yarn-project/falafel/src/compliance/index.ts: -------------------------------------------------------------------------------- 1 | export * from './address_check_provider.js'; 2 | export * from './aztec_blacklist_provider.js'; 3 | export * from './rate_limiter.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/falafel/src/entity/buffer_column.ts: -------------------------------------------------------------------------------- 1 | import { configurator } from '../configurator.js'; 2 | 3 | const db = configurator.getDbType(); 4 | 5 | export function bufferColumn(opts: any = {}): [any, any] { 6 | switch (db) { 7 | case 'mysql': 8 | if (opts.length) { 9 | return ['binary', opts]; 10 | } else { 11 | return ['blob', opts]; 12 | } 13 | case 'postgres': 14 | return ['bytea', { ...opts, length: undefined }]; 15 | case 'sqlite': 16 | return ['blob', { ...opts, length: undefined }]; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /yarn-project/falafel/src/entity/index.ts: -------------------------------------------------------------------------------- 1 | export * from './account.js'; 2 | export * from './claim.js'; 3 | export * from './rollup_proof.js'; 4 | export * from './rollup.js'; 5 | export * from './tx.js'; 6 | export * from './asset_metrics.js'; 7 | export * from './bridge_metrics.js'; 8 | -------------------------------------------------------------------------------- /yarn-project/falafel/src/environment/index.ts: -------------------------------------------------------------------------------- 1 | export * from './init/init.js'; 2 | -------------------------------------------------------------------------------- /yarn-project/falafel/src/environment/init/data/default/accounts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AztecProtocol/aztec-connect/9374aae687ec5ea01adeb651e7b9ab0d69a1b33b/yarn-project/falafel/src/environment/init/data/default/accounts -------------------------------------------------------------------------------- /yarn-project/falafel/src/environment/init/data/mainnet/accounts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AztecProtocol/aztec-connect/9374aae687ec5ea01adeb651e7b9ab0d69a1b33b/yarn-project/falafel/src/environment/init/data/mainnet/accounts -------------------------------------------------------------------------------- /yarn-project/falafel/src/environment/init/data/mainnet_fork/accounts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AztecProtocol/aztec-connect/9374aae687ec5ea01adeb651e7b9ab0d69a1b33b/yarn-project/falafel/src/environment/init/data/mainnet_fork/accounts -------------------------------------------------------------------------------- /yarn-project/falafel/src/rollup_db/index.ts: -------------------------------------------------------------------------------- 1 | export * from './cached_rollup_db.js'; 2 | export * from './rollup_db.js'; 3 | export * from './log_rollup_db.js'; 4 | export * from './sync_rollup_db.js'; 5 | export * from './parse_interaction_result.js'; 6 | -------------------------------------------------------------------------------- /yarn-project/falafel/src/rollup_db/parse_interaction_result.ts: -------------------------------------------------------------------------------- 1 | import { DefiInteractionEvent } from '@aztec/barretenberg/block_source'; 2 | import { Deserializer } from '@aztec/barretenberg/serialize'; 3 | 4 | export const parseInteractionResult = (buf: Buffer) => { 5 | if (!buf.length) { 6 | return []; 7 | } 8 | const des = new Deserializer(buf); 9 | return des.deserializeArray(DefiInteractionEvent.deserialize); 10 | }; 11 | -------------------------------------------------------------------------------- /yarn-project/falafel/src/tx_receiver/index.ts: -------------------------------------------------------------------------------- 1 | export * from './tx.js'; 2 | export * from './tx_receiver.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/falafel/src/tx_receiver/tx.ts: -------------------------------------------------------------------------------- 1 | import { ProofData } from '@aztec/barretenberg/client_proofs'; 2 | 3 | export interface Tx { 4 | proof: ProofData; 5 | offchainTxData: Buffer; 6 | depositSignature?: Buffer; 7 | } 8 | 9 | export interface TxRequest { 10 | txs: Tx[]; 11 | requestSender: RequestSender; 12 | } 13 | 14 | export interface RequestSender { 15 | clientIp: string; 16 | originUrl: string; 17 | } 18 | -------------------------------------------------------------------------------- /yarn-project/falafel/src/version.ts: -------------------------------------------------------------------------------- 1 | // Sdk/client version must match this 2 | export const FALAFEL_VERSION = '2.1.6'; 3 | -------------------------------------------------------------------------------- /yarn-project/falafel/terraform/dev/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEV_FORK_ROLLUP_PROVIDER_PRIVATE_KEY" { 2 | type = string 3 | } 4 | 5 | variable "DEPLOY_TAG" { 6 | type = string 7 | } 8 | 9 | variable "DEV_KEBAB_API_KEY" { 10 | type = string 11 | } 12 | variable "DEV_SERVER_AUTH_TOKEN" { 13 | type = string 14 | } 15 | -------------------------------------------------------------------------------- /yarn-project/falafel/terraform/prod/variables.tf: -------------------------------------------------------------------------------- 1 | variable "PROD_ROLLUP_PROVIDER_PRIVATE_KEY" { 2 | type = string 3 | } 4 | 5 | variable "PROD_SERVER_AUTH_TOKEN" { 6 | type = string 7 | } 8 | 9 | variable "DEPLOY_TAG" { 10 | type = string 11 | } 12 | 13 | variable "PROD_FALAFEL_INFURA_API_KEY" { 14 | type = string 15 | } 16 | -------------------------------------------------------------------------------- /yarn-project/falafel/terraform/servicediscovery-drain.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | [ $# -ne 1 ] && echo "Usage: $0 " && exit 1 4 | 5 | serviceId="--service-id=$1" 6 | 7 | echo "Draining servicediscovery instances from $1 ..." 8 | ids="$(aws servicediscovery list-instances $serviceId --query 'Instances[].Id' --output text | tr '\t' ' ')" 9 | 10 | found= 11 | for id in $ids; do 12 | if [ -n "$id" ]; then 13 | echo "Deregistering $1 / $id ..." 14 | aws servicediscovery deregister-instance $serviceId --instance-id "$id" 15 | found=1 16 | fi 17 | done 18 | 19 | # Yes, I'm being lazy here... 20 | [ -n "$found" ] && sleep 5 || true -------------------------------------------------------------------------------- /yarn-project/falafel/terraform/stage/variables.tf: -------------------------------------------------------------------------------- 1 | 2 | variable "STAGE_FORK_ROLLUP_PROVIDER_PRIVATE_KEY" { 3 | type = string 4 | } 5 | 6 | variable "STAGE_SERVER_AUTH_TOKEN" { 7 | type = string 8 | } 9 | 10 | variable "DEPLOY_TAG" { 11 | type = string 12 | } 13 | 14 | variable "STAGE_KEBAB_API_KEY" { 15 | type = string 16 | } 17 | -------------------------------------------------------------------------------- /yarn-project/falafel/terraform/testnet/variables.tf: -------------------------------------------------------------------------------- 1 | variable "TEST_FORK_ROLLUP_PROVIDER_PRIVATE_KEY" { 2 | type = string 3 | } 4 | 5 | variable "TEST_SERVER_AUTH_TOKEN" { 6 | type = string 7 | } 8 | 9 | variable "DEPLOY_TAG" { 10 | type = string 11 | } 12 | 13 | variable "TEST_KEBAB_API_KEY" { 14 | type = string 15 | } 16 | -------------------------------------------------------------------------------- /yarn-project/falafel/tsconfig.dest.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ".", 3 | "references": [ 4 | { "path": "../barretenberg.js/tsconfig.dest.json" }, 5 | { "path": "../blockchain/tsconfig.dest.json" }, 6 | { "path": "../halloumi/tsconfig.dest.json" } 7 | ], 8 | "exclude": ["**/*.test.*"] 9 | } 10 | -------------------------------------------------------------------------------- /yarn-project/halloumi/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-patch/modern-module-resolution'); 2 | 3 | module.exports = { 4 | extends: ['@aztec/eslint-config'], 5 | parserOptions: { tsconfigRootDir: __dirname }, 6 | }; 7 | -------------------------------------------------------------------------------- /yarn-project/halloumi/.gitignore: -------------------------------------------------------------------------------- 1 | /data 2 | -------------------------------------------------------------------------------- /yarn-project/halloumi/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-base AS builder 2 | COPY barretenberg.js barretenberg.js 3 | COPY halloumi halloumi 4 | WORKDIR /usr/src/yarn-project/halloumi 5 | RUN yarn build && yarn formatting && yarn test 6 | # Prune dev dependencies. See comment in base image. 7 | RUN yarn cache clean 8 | RUN yarn workspaces focus --production > /dev/null 9 | RUN rm -rf /usr/src/contracts 10 | 11 | FROM node:18-alpine 12 | RUN apk update && apk add --no-cache llvm15-libs 13 | COPY --from=builder /usr/src /usr/src 14 | WORKDIR /usr/src/yarn-project/halloumi 15 | CMD ["yarn", "start"] 16 | EXPOSE 80 -------------------------------------------------------------------------------- /yarn-project/halloumi/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | cmake --build ../../aztec-connect-cpp/build --parallel --target rollup_cli 5 | 6 | yarn build -------------------------------------------------------------------------------- /yarn-project/halloumi/scripts/start_e2e.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -eu 3 | 4 | cmake --build ../../aztec-connect-cpp/build --parallel --target rollup_cli 5 | 6 | export NUM_INNER_ROLLUP_TXS=${NUM_INNER_ROLLUP_TXS:-3} 7 | export NUM_OUTER_ROLLUP_PROOFS=${NUM_OUTER_ROLLUP_PROOFS:-2} 8 | export PERSIST=false 9 | export PROVERLESS=${1:-true} 10 | export LAZY_INIT=${2:-false} 11 | 12 | yarn build 13 | yarn start -------------------------------------------------------------------------------- /yarn-project/halloumi/scripts/start_e2e_prover.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -eu 3 | 4 | export NUM_INNER_ROLLUP_TXS=1 5 | export NUM_OUTER_ROLLUP_PROOFS=1 6 | export PROVERLESS=false 7 | 8 | ./scripts/start_e2e.sh -------------------------------------------------------------------------------- /yarn-project/halloumi/src/proof_generator/index.ts: -------------------------------------------------------------------------------- 1 | export * from './proof_generator.js'; 2 | export * from './proof_request.js'; 3 | export * from './cli_proof_generator.js'; 4 | export * from './http_job_server.js'; 5 | export * from './http_job_servers.js'; 6 | export * from './http_job_worker.js'; 7 | export * from './tx_rollup.js'; 8 | export * from './root_rollup.js'; 9 | export * from './claim_proof.js'; 10 | export * from './root_verifier.js'; 11 | -------------------------------------------------------------------------------- /yarn-project/halloumi/src/proof_generator/proof_generator.ts: -------------------------------------------------------------------------------- 1 | export interface ProofGenerator { 2 | start(): Promise; 3 | stop(): Promise; 4 | interrupt(): Promise; 5 | getJoinSplitVk(): Promise; 6 | getAccountVk(): Promise; 7 | createProof(data: Buffer): Promise; 8 | } 9 | -------------------------------------------------------------------------------- /yarn-project/halloumi/src/proof_generator/root_verifier.ts: -------------------------------------------------------------------------------- 1 | import { deserializeBufferFromVector, serializeBufferToVector } from '@aztec/barretenberg/serialize'; 2 | 3 | export class RootVerifier { 4 | constructor(public rootRollupProofBuf: Buffer) {} 5 | 6 | public toBuffer() { 7 | return Buffer.concat([serializeBufferToVector(this.rootRollupProofBuf)]); 8 | } 9 | 10 | public static fromBuffer(buf: Buffer) { 11 | const rootRollupProofBuf = deserializeBufferFromVector(buf); 12 | return new RootVerifier(rootRollupProofBuf.elem); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /yarn-project/halloumi/terraform/dev/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } -------------------------------------------------------------------------------- /yarn-project/halloumi/terraform/prod/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } 4 | 5 | variable "IMAGE_TAG" { 6 | type = string 7 | default = "" 8 | } 9 | -------------------------------------------------------------------------------- /yarn-project/halloumi/terraform/servicediscovery-drain.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | [ $# -ne 1 ] && echo "Usage: $0 " && exit 1 4 | 5 | serviceId="--service-id=$1" 6 | 7 | echo "Draining servicediscovery instances from $1 ..." 8 | ids="$(aws servicediscovery list-instances $serviceId --query 'Instances[].Id' --output text | tr '\t' ' ')" 9 | 10 | found= 11 | for id in $ids; do 12 | if [ -n "$id" ]; then 13 | echo "Deregistering $1 / $id ..." 14 | aws servicediscovery deregister-instance $serviceId --instance-id "$id" 15 | found=1 16 | fi 17 | done 18 | 19 | # Yes, I'm being lazy here... 20 | [ -n "$found" ] && sleep 5 || true -------------------------------------------------------------------------------- /yarn-project/halloumi/terraform/stage: -------------------------------------------------------------------------------- 1 | ./dev/ -------------------------------------------------------------------------------- /yarn-project/halloumi/terraform/testnet/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } -------------------------------------------------------------------------------- /yarn-project/halloumi/tsconfig.dest.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ".", 3 | "references": [{ "path": "../barretenberg.js/tsconfig.dest.json" }], 4 | "exclude": ["**/*.test.*"] 5 | } 6 | -------------------------------------------------------------------------------- /yarn-project/hummus/.dockerignore: -------------------------------------------------------------------------------- 1 | .cache 2 | dist 3 | node_modules 4 | **/.terraform 5 | Dockerfile -------------------------------------------------------------------------------- /yarn-project/hummus/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-patch/modern-module-resolution'); 2 | 3 | module.exports = { 4 | extends: ['@aztec/eslint-config'], 5 | parserOptions: { tsconfigRootDir: __dirname }, 6 | }; 7 | -------------------------------------------------------------------------------- /yarn-project/hummus/.gitignore: -------------------------------------------------------------------------------- 1 | data -------------------------------------------------------------------------------- /yarn-project/hummus/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-base AS builder 2 | COPY barretenberg.js barretenberg.js 3 | COPY blockchain blockchain 4 | COPY sdk sdk 5 | RUN cd barretenberg.js && yarn build && cd ../sdk && yarn build 6 | 7 | COPY hummus hummus 8 | WORKDIR /usr/src/yarn-project/hummus 9 | RUN yarn build && yarn formatting && yarn test 10 | # Prune dev dependencies. See comment in base image. 11 | RUN yarn cache clean 12 | RUN yarn workspaces focus --production > /dev/null 13 | 14 | FROM node:18-alpine 15 | COPY --from=builder /usr/src/yarn-project /usr/src/yarn-project 16 | WORKDIR /usr/src/yarn-project/hummus 17 | CMD ["yarn", "start"] 18 | EXPOSE 8080 -------------------------------------------------------------------------------- /yarn-project/hummus/README.md: -------------------------------------------------------------------------------- 1 | # Hummus 2 | 3 | `hummus` is our terminal test frontend for the sdk. 4 | 5 | # Getting started 6 | 7 | Ensure you've built `barretenberg`, `barretenberg.js`, and `sdk`. 8 | 9 | Run: 10 | 11 | ``` 12 | ./bootstrap.sh 13 | yarn start:dev 14 | ``` 15 | 16 | Navigate to `http://localhost:8080/`. 17 | -------------------------------------------------------------------------------- /yarn-project/hummus/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Aztec Terminal 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /yarn-project/hummus/src/terminal/cursor.ts: -------------------------------------------------------------------------------- 1 | export class Cursor { 2 | private pos = 0; 3 | constructor(private chars: string, private delay: () => number) {} 4 | getChar() { 5 | return this.chars[this.pos % this.chars.length]; 6 | } 7 | advance() { 8 | this.pos++; 9 | } 10 | getDelay() { 11 | return this.delay(); 12 | } 13 | } 14 | 15 | export const blockCursor = () => new Cursor(`\u2588 `, () => 500); 16 | export const spinnerCursor = () => new Cursor(`|/-\\`, () => 100 + 900 * Math.random()); 17 | -------------------------------------------------------------------------------- /yarn-project/hummus/src/terminal/index.ts: -------------------------------------------------------------------------------- 1 | export * from './terminal.js'; 2 | -------------------------------------------------------------------------------- /yarn-project/hummus/src/terminal/terminal_component.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { createGlobalStyle } from 'styled-components'; 3 | import { Terminal } from './terminal.js'; 4 | import { TerminalPage } from './terminal_page.js'; 5 | 6 | const GlobalStyle = createGlobalStyle` 7 | body { 8 | background-color: black; 9 | } 10 | `; 11 | 12 | export function TerminalComponent({ terminal }: { terminal: Terminal }) { 13 | return ( 14 | 15 | 16 | 17 | 18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /yarn-project/hummus/terraform/dev/outputs.tf: -------------------------------------------------------------------------------- 1 | output "cloudfront" { 2 | value = "${aws_cloudfront_distribution.hummus_distribution.id}" 3 | } 4 | 5 | output "s3" { 6 | value = "${aws_s3_bucket.hummus.bucket}" 7 | } 8 | -------------------------------------------------------------------------------- /yarn-project/hummus/terraform/dev/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } 4 | -------------------------------------------------------------------------------- /yarn-project/hummus/terraform/prod: -------------------------------------------------------------------------------- 1 | ./dev -------------------------------------------------------------------------------- /yarn-project/hummus/terraform/stage: -------------------------------------------------------------------------------- 1 | ./dev/ -------------------------------------------------------------------------------- /yarn-project/hummus/terraform/testnet: -------------------------------------------------------------------------------- 1 | ./dev -------------------------------------------------------------------------------- /yarn-project/hummus/tsconfig.cli.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2020", 4 | "module": "node16", 5 | "lib": ["esnext", "dom"], 6 | "jsx": "react", 7 | "outDir": "dest", 8 | "strict": true, 9 | "noImplicitAny": true, 10 | "allowSyntheticDefaultImports": true, 11 | "resolveJsonModule": true, 12 | "inlineSourceMap": true 13 | }, 14 | "files": ["./src/cli.ts"] 15 | } 16 | -------------------------------------------------------------------------------- /yarn-project/hummus/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2020", 4 | "module": "node16", 5 | "lib": ["esnext", "dom"], 6 | "jsx": "react", 7 | "outDir": "dest", 8 | "strict": true, 9 | "noImplicitAny": true, 10 | "allowSyntheticDefaultImports": true, 11 | "resolveJsonModule": true, 12 | "inlineSourceMap": true 13 | }, 14 | "references": [{ "path": "../sdk/tsconfig.dest.json" }], 15 | "include": ["src"] 16 | } 17 | -------------------------------------------------------------------------------- /yarn-project/kebab/.dockerignore: -------------------------------------------------------------------------------- 1 | data 2 | dest 3 | node_modules 4 | **/.terraform 5 | Dockerfile 6 | .env -------------------------------------------------------------------------------- /yarn-project/kebab/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-patch/modern-module-resolution'); 2 | 3 | module.exports = { 4 | extends: ['@aztec/eslint-config'], 5 | parserOptions: { tsconfigRootDir: __dirname }, 6 | }; 7 | -------------------------------------------------------------------------------- /yarn-project/kebab/.gitignore: -------------------------------------------------------------------------------- 1 | /data* 2 | /.env -------------------------------------------------------------------------------- /yarn-project/kebab/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-base AS builder 2 | COPY barretenberg.js barretenberg.js 3 | COPY blockchain blockchain 4 | 5 | COPY kebab kebab 6 | WORKDIR /usr/src/yarn-project/kebab 7 | RUN yarn build && yarn formatting 8 | # Prune dev dependencies. See comment in base image. 9 | RUN yarn cache clean 10 | RUN yarn workspaces focus --production > /dev/null 11 | 12 | FROM node:18-alpine 13 | RUN apk add curl jq 14 | COPY --from=builder /usr/src/yarn-project /usr/src/yarn-project 15 | WORKDIR /usr/src/yarn-project/kebab 16 | ENTRYPOINT ["yarn"] 17 | CMD ["start"] 18 | EXPOSE 8545 -------------------------------------------------------------------------------- /yarn-project/kebab/scripts/start_e2e.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | if [ -z "${NO_BUILD-}" ]; then 5 | echo "Building..." 6 | yarn build 7 | fi 8 | 9 | export ETHEREUM_HOST=${ETHEREUM_HOST:-http://localhost:8544} 10 | export CONTRACTS_HOST=${CONTRACTS_HOST:-http://localhost:8547} 11 | export ALLOW_PRIVILEGED_METHODS=true 12 | export ADDITIONAL_PERMITTED_METHODS=net_version 13 | 14 | if [ -z "${ROLLUP_CONTRACT_ADDRESS}" ]; then 15 | echo "Waiting for contracts host at $CONTRACTS_HOST..." 16 | while ! curl -s $CONTRACTS_HOST > /dev/null; do sleep 1; done; 17 | 18 | export ROLLUP_CONTRACT_ADDRESS=$(curl -s $CONTRACTS_HOST | jq -r .ROLLUP_CONTRACT_ADDRESS) 19 | fi 20 | 21 | yarn clean_db 22 | yarn start -------------------------------------------------------------------------------- /yarn-project/kebab/scripts/start_e2e_prover.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -eu 3 | 4 | export VK=VerificationKey1x1 5 | 6 | ./scripts/start_e2e.sh -------------------------------------------------------------------------------- /yarn-project/kebab/src/@types/json-normalize.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'json-normalize' { 2 | export default class JSONNormalize { 3 | static sha256Sync(obj: any): string; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /yarn-project/kebab/src/eth_event.ts: -------------------------------------------------------------------------------- 1 | export type EthEvent = { 2 | address: string; 3 | blockHash: string; 4 | blockNumber: string; 5 | data: string; 6 | logIndex: string; 7 | removed: boolean; 8 | topics: string[]; 9 | transactionHash: string; 10 | transactionIndex: string; 11 | }; 12 | -------------------------------------------------------------------------------- /yarn-project/kebab/src/types.ts: -------------------------------------------------------------------------------- 1 | /** CONTRACT_ADDRESSES 2 | * 3 | * @notice The contract addresses returned from the contracts container 4 | */ 5 | export type ContractAddresses = { 6 | FAUCET_CONTRACT_ADDRESS: string; 7 | ROLLUP_CONTRACT_ADDRESS: string; 8 | FEE_DISTRIBUTOR_ADDRESS: string; 9 | GAS_PRICE_FEED_CONTRACT_ADDRESS: string; 10 | DAI_PRICE_FEED_CONTRACT_ADDRESS: string; 11 | BRIDGE_DATA_PROVIDER_CONTRACT_ADDRESS: string; 12 | PERMIT_HELPER_CONTRACT_ADDRESS: string; 13 | }; 14 | -------------------------------------------------------------------------------- /yarn-project/kebab/terraform/dev/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } 4 | 5 | variable "DEV_KEBAB_API_KEY" { 6 | type = string 7 | } 8 | 9 | variable "DEV_FORK_API_KEY" { 10 | type = string 11 | } 12 | -------------------------------------------------------------------------------- /yarn-project/kebab/terraform/prod/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } 4 | 5 | variable "PROD_KEBAB_INFURA_API_KEY" { 6 | type = string 7 | } 8 | -------------------------------------------------------------------------------- /yarn-project/kebab/terraform/servicediscovery-drain.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | [ $# -ne 1 ] && echo "Usage: $0 " && exit 1 4 | 5 | serviceId="--service-id=$1" 6 | 7 | echo "Draining servicediscovery instances from $1 ..." 8 | ids="$(aws servicediscovery list-instances $serviceId --query 'Instances[].Id' --output text | tr '\t' ' ')" 9 | 10 | found= 11 | for id in $ids; do 12 | if [ -n "$id" ]; then 13 | echo "Deregistering $1 / $id ..." 14 | aws servicediscovery deregister-instance $serviceId --instance-id "$id" 15 | found=1 16 | fi 17 | done 18 | 19 | # Yes, I'm being lazy here... 20 | [ -n "$found" ] && sleep 5 || true -------------------------------------------------------------------------------- /yarn-project/kebab/terraform/stage/variables.tf: -------------------------------------------------------------------------------- 1 | 2 | variable "DEPLOY_TAG" { 3 | type = string 4 | } 5 | 6 | variable "STAGE_KEBAB_API_KEY" { 7 | type = string 8 | } 9 | 10 | variable "STAGE_FORK_API_KEY" { 11 | type = string 12 | } 13 | -------------------------------------------------------------------------------- /yarn-project/kebab/terraform/testnet/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } 4 | 5 | variable "TEST_KEBAB_API_KEY" { 6 | type = string 7 | } 8 | 9 | variable "TEST_FORK_API_KEY" { 10 | type = string 11 | } 12 | -------------------------------------------------------------------------------- /yarn-project/kebab/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "NodeNext", 5 | "lib": ["dom", "es2017.object", "es2019"], 6 | "outDir": "dest", 7 | "strict": true, 8 | "noImplicitAny": true, 9 | "noImplicitThis": false, 10 | "esModuleInterop": true, 11 | "declaration": true, 12 | "emitDecoratorMetadata": true, 13 | "experimentalDecorators": true, 14 | "inlineSourceMap": true, 15 | "declarationMap": true, 16 | "useUnknownInCatchVariables": false 17 | }, 18 | "references": [{ "path": "../barretenberg.js/tsconfig.dest.json" }, { "path": "../blockchain/tsconfig.dest.json" }], 19 | "include": ["src"] 20 | } 21 | -------------------------------------------------------------------------------- /yarn-project/nym-gateway/.dockerignore: -------------------------------------------------------------------------------- 1 | nym-client -------------------------------------------------------------------------------- /yarn-project/nym-gateway/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-patch/modern-module-resolution'); 2 | 3 | module.exports = { 4 | extends: ['@aztec/eslint-config'], 5 | parserOptions: { tsconfigRootDir: __dirname }, 6 | }; 7 | -------------------------------------------------------------------------------- /yarn-project/nym-gateway/.gitignore: -------------------------------------------------------------------------------- 1 | nym-client -------------------------------------------------------------------------------- /yarn-project/nym-gateway/README.md: -------------------------------------------------------------------------------- 1 | # nym-gateway 2 | 3 | The nym gateway is a service that can interface between Aztec's services and the nym network, using HTTP. 4 | It works by: 5 | 6 | - Running a nym client whose address will be shared to our front-end services 7 | - Connecting to that nym client via a websocket and then transporting nym messages downstream, as regular HTTP messages. 8 | 9 | ## nym-client binary download 10 | 11 | Native websocket nym client binaries can be downloaded from here: 12 | https://github.com/nymtech/nym/releases/download/nym-binaries-1.1.6/nym-client 13 | 14 | Latest version is currently 1.1.6 15 | -------------------------------------------------------------------------------- /yarn-project/nym-gateway/src/config.ts: -------------------------------------------------------------------------------- 1 | export const getConfig = () => { 2 | return { 3 | port: process.env.PORT || 8085, 4 | apiPrefix: process.env.API_PREFIX || '', 5 | nymHost: process.env.NYM_HOST || '127.0.0.1', 6 | nymPort: process.env.NYM_PORT || '1977', 7 | }; 8 | }; 9 | -------------------------------------------------------------------------------- /yarn-project/nym-gateway/start-nym.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ./nym-client init --id=$DEPLOY_TAG 4 | ./nym-client run --id=$DEPLOY_TAG & 5 | yarn start -------------------------------------------------------------------------------- /yarn-project/nym-gateway/terraform/dev/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } 4 | -------------------------------------------------------------------------------- /yarn-project/nym-gateway/terraform/prod/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } 4 | -------------------------------------------------------------------------------- /yarn-project/nym-gateway/terraform/servicediscovery-drain.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | [ $# -ne 1 ] && echo "Usage: $0 " && exit 1 4 | 5 | serviceId="--service-id=$1" 6 | 7 | echo "Draining servicediscovery instances from $1 ..." 8 | ids="$(aws servicediscovery list-instances $serviceId --query 'Instances[].Id' --output text | tr '\t' ' ')" 9 | 10 | found= 11 | for id in $ids; do 12 | if [ -n "$id" ]; then 13 | echo "Deregistering $1 / $id ..." 14 | aws servicediscovery deregister-instance $serviceId --instance-id "$id" 15 | found=1 16 | fi 17 | done 18 | 19 | # Yes, I'm being lazy here... 20 | [ -n "$found" ] && sleep 5 || true -------------------------------------------------------------------------------- /yarn-project/nym-gateway/terraform/stage/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } 4 | -------------------------------------------------------------------------------- /yarn-project/nym-gateway/terraform/testnet/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } 4 | -------------------------------------------------------------------------------- /yarn-project/nym-gateway/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2020", 4 | "lib": ["dom", "esnext", "es2017.object"], 5 | "module": "NodeNext", 6 | "outDir": "dest", 7 | "strict": true, 8 | "noImplicitAny": true, 9 | "noUnusedLocals": true, 10 | "noImplicitThis": false, 11 | "esModuleInterop": true, 12 | "declaration": true, 13 | "emitDecoratorMetadata": true, 14 | "experimentalDecorators": true, 15 | "inlineSourceMap": true, 16 | "declarationMap": true, 17 | "resolveJsonModule": true, 18 | "useUnknownInCatchVariables": false 19 | }, 20 | "include": ["src"] 21 | } 22 | -------------------------------------------------------------------------------- /yarn-project/sdk/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-patch/modern-module-resolution'); 2 | 3 | module.exports = { 4 | extends: ['@aztec/eslint-config'], 5 | parserOptions: { tsconfigRootDir: __dirname }, 6 | }; 7 | -------------------------------------------------------------------------------- /yarn-project/sdk/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "address": "${config:mainframeAddress}", 9 | "port": 9221, 10 | "type": "node", 11 | "request": "attach", 12 | "name": "Attach to Remote", 13 | "skipFiles": ["/**"], 14 | "localRoot": "${workspaceFolder}", 15 | "sourceMaps": true 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /yarn-project/sdk/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-base AS builder 2 | COPY barretenberg.js barretenberg.js 3 | COPY blockchain blockchain 4 | COPY sdk sdk 5 | RUN cd barretenberg.js && yarn build 6 | WORKDIR /usr/src/yarn-project/sdk 7 | ARG ARG_COMMIT_HASH 8 | ENV COMMIT_HASH=$ARG_COMMIT_HASH 9 | RUN yarn build && yarn formatting && yarn test 10 | # Prune dev dependencies. See comment in base image. 11 | RUN yarn cache clean 12 | RUN yarn workspaces focus --production > /dev/null 13 | 14 | FROM node:18-alpine 15 | COPY --from=builder /usr/src/yarn-project /usr/src/yarn-project 16 | WORKDIR /usr/src/yarn-project/sdk 17 | ENTRYPOINT ["yarn"] 18 | CMD ["start"] 19 | EXPOSE 1234 -------------------------------------------------------------------------------- /yarn-project/sdk/scripts/start_e2e.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -eu pipefail 3 | 4 | ROLLUP_HOST=${ROLLUP_HOST:-http://localhost:8081} 5 | 6 | echo $ROLLUP_HOST > /usr/src/sdk/dest/ROLLUP_PROVIDER_URL; 7 | yarn start -------------------------------------------------------------------------------- /yarn-project/sdk/src/auth_algorithms/auth_algorithms.ts: -------------------------------------------------------------------------------- 1 | import { GrumpkinAddress } from '@aztec/barretenberg/address'; 2 | import { DecryptedNote } from '@aztec/barretenberg/note_algorithms'; 3 | import { JoinSplitTxInput } from '../proofs/proof_input/index.js'; 4 | 5 | export interface AuthAlgorithms { 6 | computeValueNoteNullifier(commitment: Buffer, gibberish?: boolean): Promise; 7 | deriveNoteSecret(ecdhPubKey: GrumpkinAddress): Promise; 8 | decryptViewingKeys(viewingKeysBuf: Buffer): Promise<(DecryptedNote | undefined)[]>; 9 | createJoinSplitProofSigningData(tx: JoinSplitTxInput): Promise; 10 | } 11 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/auth_algorithms/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth_algorithms.js'; 2 | export * from './key_pair_auth_algorithms.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/aztec_sdk/index.ts: -------------------------------------------------------------------------------- 1 | export * from './aztec_sdk.js'; 2 | export * from './aztec_sdk_user.js'; 3 | export * from './create_aztec_sdk.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/client_log/client_log.ts: -------------------------------------------------------------------------------- 1 | import { RollupProvider } from '../index.js'; 2 | import { VERSION_HASH } from '../package_version.js'; 3 | 4 | export async function sendClientLog(rollupProvider: RollupProvider, data: any, debug?: (...args: any[]) => void) { 5 | await rollupProvider 6 | .clientLog({ 7 | ...data, 8 | sdkVersion: VERSION_HASH, 9 | }) 10 | .catch(e => debug && debug('client log failed:', e)); 11 | } 12 | 13 | export async function sendClientConsoleLog(rollupProvider: RollupProvider, data: any) { 14 | await rollupProvider.clientConsoleLog({ 15 | ...data, 16 | sdkVersion: VERSION_HASH, 17 | }); 18 | } 19 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/controllers/create_tx_ref_no.ts: -------------------------------------------------------------------------------- 1 | import { randomBytes } from '@aztec/barretenberg/crypto'; 2 | 3 | export const createTxRefNo = () => randomBytes(4).readUInt32BE(0); 4 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/controllers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './add_spending_key_controller.js'; 2 | export * from './defi_controller.js'; 3 | export * from './deposit_controller.js'; 4 | export * from './migrate_account_controller.js'; 5 | export * from './recover_account_controller.js'; 6 | export * from './register_controller.js'; 7 | export * from './transfer_controller.js'; 8 | export * from './withdraw_controller.js'; 9 | export * from './fee_controller.js'; 10 | export * from './create_tx_ref_no.js'; 11 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/core_sdk/core_sdk_options.ts: -------------------------------------------------------------------------------- 1 | export type CoreSdkOptions = { 2 | serverUrl: string; 3 | pollInterval?: number; 4 | useKeyCache?: boolean; 5 | debug?: string; 6 | noVersionCheck?: boolean; 7 | }; 8 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/core_sdk/index.ts: -------------------------------------------------------------------------------- 1 | export * from './core_sdk.js'; 2 | export * from './core_sdk_options.js'; 3 | export * from './create_core_sdk.js'; 4 | export * from './sdk_status.js'; 5 | export * from './sdk_version.js'; 6 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/core_sdk/sdk_version.ts: -------------------------------------------------------------------------------- 1 | export const sdkVersion = (process.env.NODE_ENV === 'production' && process.env.COMMIT_TAG) || ''; 2 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/core_tx/core_claim_tx.ts: -------------------------------------------------------------------------------- 1 | import { GrumpkinAddress } from '@aztec/barretenberg/address'; 2 | import { TxId } from '@aztec/barretenberg/tx_id'; 3 | 4 | export interface CoreClaimTx { 5 | defiTxId: TxId; 6 | userId: GrumpkinAddress; 7 | partialState: Buffer; 8 | secret: Buffer; 9 | nullifier: Buffer; // the nullifier of this claim's claim note 10 | interactionNonce: number; 11 | } 12 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/database/index.ts: -------------------------------------------------------------------------------- 1 | import isNode from 'detect-node'; 2 | import { DexieDatabase } from './dexie_database.js'; 3 | import { SQLDatabase } from './node/index.js'; 4 | 5 | export * from './database.js'; 6 | 7 | export async function getDb(memoryDb = false, identifier?: string) { 8 | if (isNode) { 9 | return await SQLDatabase.getDb(memoryDb, identifier); 10 | } else { 11 | const db = new DexieDatabase(); 12 | await db.open(); 13 | return db; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/database/node/key_dao.ts: -------------------------------------------------------------------------------- 1 | import { Column, Entity, PrimaryColumn } from 'typeorm'; 2 | 3 | @Entity({ name: 'key' }) 4 | export class KeyDao { 5 | @PrimaryColumn() 6 | public name!: string; 7 | 8 | @Column() 9 | public value!: Buffer; 10 | } 11 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/database/node/mutex_dao.ts: -------------------------------------------------------------------------------- 1 | import { Column, Entity, Index, PrimaryColumn } from 'typeorm'; 2 | 3 | @Entity({ name: 'mutex' }) 4 | export class MutexDao { 5 | @PrimaryColumn() 6 | public name!: string; 7 | 8 | @Index({ unique: false }) 9 | @Column() 10 | public expiredAt!: number; 11 | } 12 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/database/node/user_data_dao.ts: -------------------------------------------------------------------------------- 1 | import { GrumpkinAddress } from '@aztec/barretenberg/address'; 2 | import { Column, Entity, PrimaryColumn } from 'typeorm'; 3 | import { UserData } from '../../user/index.js'; 4 | import { grumpkinAddressTransformer } from './transformer.js'; 5 | 6 | @Entity({ name: 'userData' }) 7 | export class UserDataDao implements UserData { 8 | @PrimaryColumn('blob', { transformer: [grumpkinAddressTransformer] }) 9 | public accountPublicKey!: GrumpkinAddress; 10 | 11 | @Column() 12 | public accountPrivateKey!: Buffer; 13 | 14 | @Column() 15 | public syncedToRollup!: number; 16 | } 17 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/database/sort_txs.ts: -------------------------------------------------------------------------------- 1 | // Input txs should have been sorted by `settled` in descending order before passing in to this function. 2 | // Return a sorted txs array based on settled time. Sort based on created time if settled times are the same. 3 | export function sortTxs< 4 | T extends { 5 | created: Date; 6 | settled?: Date | number; 7 | }, 8 | >(txs: T[]): T[] { 9 | return [ 10 | ...txs.filter(tx => !tx.settled).sort((a, b) => (a.created < b.created ? 1 : -1)), 11 | ...txs.filter(tx => tx.settled).sort((a, b) => (a.settled !== b.settled ? 0 : a.created < b.created ? 1 : -1)), 12 | ]; 13 | } 14 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/database/test/sql_database.test.ts: -------------------------------------------------------------------------------- 1 | import { DataSource } from 'typeorm'; 2 | import { SQLDatabase, getOrmConfig } from '../node/index.js'; 3 | import { databaseTestSuite } from './test_suite.js'; 4 | 5 | let connection: DataSource; 6 | let db: SQLDatabase; 7 | 8 | const createDb = async () => { 9 | const config = getOrmConfig(true); 10 | connection = new DataSource(config); 11 | await connection.initialize(); 12 | db = new SQLDatabase(connection); 13 | return db; 14 | }; 15 | 16 | const destroyDb = async () => { 17 | await db.clear(); 18 | await connection.close(); 19 | }; 20 | 21 | databaseTestSuite('SQLDatabase', createDb, destroyDb); 22 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/get_num_workers/index.ts: -------------------------------------------------------------------------------- 1 | import isNode from 'detect-node'; 2 | import os from 'os'; 3 | 4 | export function getDeviceMemory() { 5 | return isNode ? os.totalmem() : navigator ? (navigator['deviceMemory'] as number) : undefined; 6 | } 7 | 8 | export function getNumCpu() { 9 | return isNode ? os.cpus().length : navigator.hardwareConcurrency; 10 | } 11 | 12 | export function getNumWorkers() { 13 | const nextLowestPowerOf2 = (n: number) => Math.pow(2, Math.floor(Math.log(n) / Math.log(2))); 14 | const numCPU = getNumCpu() || 2; 15 | return nextLowestPowerOf2(Math.min(numCPU, 8)); 16 | } 17 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/key_pair/index.ts: -------------------------------------------------------------------------------- 1 | export * from './constant_key_pair.js'; 2 | export * from './key_pair.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/key_pair/key_pair.ts: -------------------------------------------------------------------------------- 1 | import { GrumpkinAddress } from '@aztec/barretenberg/address'; 2 | import { SchnorrSignature } from '@aztec/barretenberg/crypto'; 3 | 4 | export interface KeyPair { 5 | getPublicKey(): GrumpkinAddress; 6 | getPrivateKey(): Promise; 7 | signMessage(message: Buffer): Promise; 8 | } 9 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/level_db/browser/index.ts: -------------------------------------------------------------------------------- 1 | import { default as levelup } from 'levelup'; 2 | import { default as leveljs } from 'level-js'; 3 | 4 | export function levelUpWebFactory(id: string) { 5 | return levelup(leveljs(id)); 6 | } 7 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/level_db/index.ts: -------------------------------------------------------------------------------- 1 | export * from './get_level_db.js'; 2 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/level_db/node/index.ts: -------------------------------------------------------------------------------- 1 | import { default as levelup } from 'levelup'; 2 | import { default as leveldown } from 'leveldown'; 3 | 4 | export function levelUpNodeFactory(path: string) { 5 | return levelup(leveldown(path)); 6 | } 7 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/note/index.ts: -------------------------------------------------------------------------------- 1 | export * from './note.js'; 2 | export * from './restore_note_path.js'; 3 | export * from './tree_note_to_note.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/proofs/index.ts: -------------------------------------------------------------------------------- 1 | export * from './account_proof_creator.js'; 2 | export * from './defi_deposit_proof_creator.js'; 3 | export * from './payment_proof_creator.js'; 4 | export * from './proof_input.js'; 5 | export * from './proof_output.js'; 6 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/proofs/proof_input/index.ts: -------------------------------------------------------------------------------- 1 | export * from './join_split_tx_input.js'; 2 | export * from './proof_input_factory.js'; 3 | export * from './proof_input.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/proofs/proof_output/index.ts: -------------------------------------------------------------------------------- 1 | export * from './proof_output.js'; 2 | export * from './proof_output_factory.js'; 3 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/proofs/proof_request_data/defi_proof_request_data.ts: -------------------------------------------------------------------------------- 1 | import { GrumpkinAddress } from '@aztec/barretenberg/address'; 2 | import { AssetValue } from '@aztec/barretenberg/asset'; 3 | import { BridgeCallData } from '@aztec/barretenberg/bridge_call_data'; 4 | import { Note } from '../../note/index.js'; 5 | import { SpendingKeyAccount } from './spending_key_account.js'; 6 | 7 | export interface DefiProofRequestData { 8 | accountPublicKey: GrumpkinAddress; 9 | bridgeCallData: BridgeCallData; 10 | assetValue: AssetValue; 11 | fee: AssetValue; 12 | inputNotes: Note[]; 13 | spendingKeyAccount: SpendingKeyAccount; 14 | dataRoot: Buffer; 15 | allowChain: boolean; 16 | } 17 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/proofs/proof_request_data/index.ts: -------------------------------------------------------------------------------- 1 | import { AccountProofRequestData } from './account_proof_request_data.js'; 2 | import { DefiProofRequestData } from './defi_proof_request_data.js'; 3 | import { PaymentProofRequestData } from './payment_proof_request_data.js'; 4 | export * from './account_proof_request_data.js'; 5 | export * from './defi_proof_request_data.js'; 6 | export * from './payment_proof_request_data.js'; 7 | export * from './proof_request_data_factory.js'; 8 | export * from './spending_key_account.js'; 9 | 10 | export type ProofRequestData = PaymentProofRequestData | AccountProofRequestData | DefiProofRequestData; 11 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/serial_queue/index.ts: -------------------------------------------------------------------------------- 1 | export * from './memory_serial_queue.js'; 2 | export * from './mutex_serial_queue.js'; 3 | export * from './serial_queue.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/serial_queue/serial_queue.ts: -------------------------------------------------------------------------------- 1 | export interface SerialQueue { 2 | length(): number; 3 | push(fn: () => Promise): Promise; 4 | cancel(): void; 5 | } 6 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/signer/index.ts: -------------------------------------------------------------------------------- 1 | export * from './recover_signer.js'; 2 | export * from './schnorr_signer.js'; 3 | export * from './signer.js'; 4 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/signer/recover_signer.ts: -------------------------------------------------------------------------------- 1 | import { GrumpkinAddress } from '@aztec/barretenberg/address'; 2 | import { SchnorrSignature } from '@aztec/barretenberg/crypto'; 3 | import { Signer } from './signer.js'; 4 | 5 | export class RecoverSignatureSigner implements Signer { 6 | constructor(private publicKey: GrumpkinAddress, private signature: SchnorrSignature) {} 7 | 8 | getPublicKey() { 9 | return this.publicKey; 10 | } 11 | 12 | signMessage() { 13 | return Promise.resolve(this.signature); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/signer/signer.ts: -------------------------------------------------------------------------------- 1 | import { GrumpkinAddress } from '@aztec/barretenberg/address'; 2 | import { SchnorrSignature } from '@aztec/barretenberg/crypto'; 3 | 4 | export interface Signer { 5 | getPublicKey(): GrumpkinAddress; 6 | signMessage(message: Buffer): Promise; 7 | } 8 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/transport/index.ts: -------------------------------------------------------------------------------- 1 | export * from './messages.js'; 2 | export * from './transport_client.js'; 3 | export * from './transport_connect.js'; 4 | export * from './transport_listener.js'; 5 | export * from './transport_server.js'; 6 | export * from './transport_socket.js'; 7 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/transport/messages.ts: -------------------------------------------------------------------------------- 1 | export interface RequestMessage { 2 | msgId: number; 3 | payload: Payload; 4 | } 5 | 6 | export interface ResponseMessage { 7 | msgId: number; 8 | payload?: Payload; 9 | error?: string; 10 | } 11 | 12 | export interface EventMessage { 13 | payload: Payload; 14 | } 15 | 16 | export function isEventMessage( 17 | msg: ResponseMessage | EventMessage, 18 | ): msg is EventMessage { 19 | return (msg as ResponseMessage).msgId === undefined; 20 | } 21 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/transport/transport_connect.ts: -------------------------------------------------------------------------------- 1 | import { TransportSocket } from './transport_socket.js'; 2 | 3 | /** 4 | * Opens a socket with corresponding TransportListener. 5 | */ 6 | export interface TransportConnect { 7 | createSocket(): Promise; 8 | } 9 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/transport/transport_listener.ts: -------------------------------------------------------------------------------- 1 | import EventEmitter from 'events'; 2 | import { TransportSocket } from './transport_socket.js'; 3 | 4 | /** 5 | * Once opened, an implementation of a TransportListener will emit `new_socket` events as new clients connect. 6 | * Possible implementations could include MessageChannels of WebSockets. 7 | */ 8 | export interface TransportListener extends EventEmitter { 9 | open(): void; 10 | 11 | close(): void; 12 | 13 | on(name: 'new_socket', cb: (client: TransportSocket) => void): this; 14 | } 15 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/user/index.ts: -------------------------------------------------------------------------------- 1 | import { GrumpkinAddress } from '@aztec/barretenberg/address'; 2 | 3 | export * from './recovery_payload.js'; 4 | 5 | export interface UserData { 6 | accountPublicKey: GrumpkinAddress; 7 | accountPrivateKey: Buffer; 8 | syncedToRollup: number; 9 | } 10 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/user_tx/index.ts: -------------------------------------------------------------------------------- 1 | export * from './user_account_tx.js'; 2 | export * from './user_defi_tx.js'; 3 | export * from './user_defi_claim_tx.js'; 4 | export * from './user_payment_tx.js'; 5 | export * from './user_tx.js'; 6 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/user_tx/user_tx.ts: -------------------------------------------------------------------------------- 1 | import { UserAccountTx } from './user_account_tx.js'; 2 | import { UserDefiTx } from './user_defi_tx.js'; 3 | import { UserDefiClaimTx } from './user_defi_claim_tx.js'; 4 | import { UserPaymentTx } from './user_payment_tx.js'; 5 | 6 | export type UserTx = UserAccountTx | UserDefiTx | UserDefiClaimTx | UserPaymentTx; 7 | -------------------------------------------------------------------------------- /yarn-project/sdk/src/version.ts: -------------------------------------------------------------------------------- 1 | // This version must match the server/Falafel version 2 | export const SDK_VERSION = '2.1.6'; 3 | -------------------------------------------------------------------------------- /yarn-project/sdk/static/aztec-connect.wasm: -------------------------------------------------------------------------------- 1 | ../node_modules/@aztec/barretenberg/wasm/aztec-connect.wasm -------------------------------------------------------------------------------- /yarn-project/sdk/static/worker.js: -------------------------------------------------------------------------------- 1 | ../node_modules/@aztec/barretenberg/worker.js -------------------------------------------------------------------------------- /yarn-project/sdk/terraform/dev/outputs.tf: -------------------------------------------------------------------------------- 1 | output "cloudfront" { 2 | value = "${aws_cloudfront_distribution.sdk_distribution.id}" 3 | } 4 | 5 | output "s3" { 6 | value = "${aws_s3_bucket.sdk.bucket}" 7 | } 8 | -------------------------------------------------------------------------------- /yarn-project/sdk/terraform/dev/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } 4 | -------------------------------------------------------------------------------- /yarn-project/sdk/terraform/prod: -------------------------------------------------------------------------------- 1 | ./dev -------------------------------------------------------------------------------- /yarn-project/sdk/terraform/stage: -------------------------------------------------------------------------------- 1 | ./dev/ -------------------------------------------------------------------------------- /yarn-project/sdk/terraform/testnet: -------------------------------------------------------------------------------- 1 | ./dev -------------------------------------------------------------------------------- /yarn-project/sdk/tsconfig.dest.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ".", 3 | "references": [{ "path": "../barretenberg.js/tsconfig.dest.json" }, { "path": "../blockchain/tsconfig.dest.json" }], 4 | "exclude": ["src/**/*.test.ts", "src/**/fixtures/*", "src/**/test/*"] 5 | } 6 | -------------------------------------------------------------------------------- /yarn-project/wallet/.dockerignore: -------------------------------------------------------------------------------- 1 | .cache 2 | dist 3 | node_modules 4 | **/.terraform 5 | Dockerfile -------------------------------------------------------------------------------- /yarn-project/wallet/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-patch/modern-module-resolution'); 2 | 3 | module.exports = { 4 | extends: ['@aztec/eslint-config'], 5 | parserOptions: { tsconfigRootDir: __dirname }, 6 | }; 7 | -------------------------------------------------------------------------------- /yarn-project/wallet/.gitignore: -------------------------------------------------------------------------------- 1 | data -------------------------------------------------------------------------------- /yarn-project/wallet/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-base AS builder 2 | COPY barretenberg.js barretenberg.js 3 | COPY blockchain blockchain 4 | COPY sdk sdk 5 | RUN cd barretenberg.js && yarn build && cd ../sdk && yarn build 6 | 7 | COPY wallet wallet 8 | WORKDIR /usr/src/yarn-project/wallet 9 | RUN yarn build && yarn formatting && yarn test 10 | # Prune dev dependencies. See comment in base image. 11 | RUN yarn cache clean 12 | RUN yarn workspaces focus --production > /dev/null 13 | 14 | FROM node:18-alpine 15 | COPY --from=builder /usr/src/yarn-project /usr/src/yarn-project 16 | WORKDIR /usr/src/yarn-project/wallet 17 | CMD ["yarn", "start"] 18 | EXPOSE 8080 -------------------------------------------------------------------------------- /yarn-project/wallet/README.md: -------------------------------------------------------------------------------- 1 | # wallet 2 | 3 | Example Aztec wallet. -------------------------------------------------------------------------------- /yarn-project/wallet/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Aztec Terminal 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /yarn-project/wallet/src/types.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'browserify-cipher' { 2 | function createVerify(...args: any[]): any; 3 | } 4 | -------------------------------------------------------------------------------- /yarn-project/wallet/terraform/dev/outputs.tf: -------------------------------------------------------------------------------- 1 | output "cloudfront" { 2 | value = "${aws_cloudfront_distribution.wallet_distribution.id}" 3 | } 4 | 5 | output "s3" { 6 | value = "${aws_s3_bucket.wallet.bucket}" 7 | } 8 | -------------------------------------------------------------------------------- /yarn-project/wallet/terraform/dev/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } 4 | -------------------------------------------------------------------------------- /yarn-project/wallet/terraform/prod: -------------------------------------------------------------------------------- 1 | ./dev -------------------------------------------------------------------------------- /yarn-project/wallet/terraform/stage: -------------------------------------------------------------------------------- 1 | ./dev/ -------------------------------------------------------------------------------- /yarn-project/wallet/terraform/testnet: -------------------------------------------------------------------------------- 1 | ./dev -------------------------------------------------------------------------------- /yarn-project/wallet/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2020", 4 | "module": "node16", 5 | "lib": ["esnext", "dom"], 6 | "jsx": "react-jsx", 7 | "outDir": "dest", 8 | "strict": true, 9 | "noImplicitAny": true, 10 | "allowSyntheticDefaultImports": true, 11 | "resolveJsonModule": true, 12 | "inlineSourceMap": true 13 | }, 14 | "references": [{ "path": "../sdk/tsconfig.dest.json" }], 15 | "include": ["src"] 16 | } 17 | -------------------------------------------------------------------------------- /yarn-project/wasabi/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | require('@rushstack/eslint-patch/modern-module-resolution'); 2 | 3 | module.exports = { 4 | extends: ['@aztec/eslint-config'], 5 | parserOptions: { tsconfigRootDir: __dirname }, 6 | }; 7 | -------------------------------------------------------------------------------- /yarn-project/wasabi/.gitignore: -------------------------------------------------------------------------------- 1 | dest 2 | data 3 | node_modules -------------------------------------------------------------------------------- /yarn-project/wasabi/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "address": "${config:mainframeAddress}", 9 | "port": 9221, 10 | "type": "node", 11 | "request": "attach", 12 | "name": "Attach to Remote", 13 | "skipFiles": ["/**"], 14 | "localRoot": "${workspaceFolder}", 15 | "sourceMaps": true 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /yarn-project/wasabi/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-base AS builder 2 | COPY barretenberg.js barretenberg.js 3 | COPY blockchain blockchain 4 | COPY sdk sdk 5 | RUN cd barretenberg.js && yarn build && cd ../sdk && yarn build 6 | 7 | COPY wasabi wasabi 8 | WORKDIR /usr/src/yarn-project/wasabi 9 | RUN yarn build && yarn formatting && yarn test 10 | # Prune dev dependencies. See comment in base image. 11 | RUN yarn cache clean 12 | RUN yarn workspaces focus --production > /dev/null 13 | 14 | FROM node:18-alpine 15 | COPY --from=0 /usr/src /usr/src 16 | WORKDIR /usr/src/yarn-project/wasabi 17 | CMD ["yarn", "start"] -------------------------------------------------------------------------------- /yarn-project/wasabi/src/agent_key.ts: -------------------------------------------------------------------------------- 1 | export interface AgentKeyInfo { 2 | mnemonic: string; 3 | account: number; 4 | } 5 | 6 | export function buildMnemonicPath(bip32Account: number, accountIndex: number) { 7 | return `m/44'/60'/${bip32Account}'/0/${accountIndex}`; 8 | } 9 | -------------------------------------------------------------------------------- /yarn-project/wasabi/src/clients/web3_provider.ts: -------------------------------------------------------------------------------- 1 | import { EthereumProvider } from '@aztec/sdk'; 2 | import { Web3Provider } from '@ethersproject/providers'; 3 | 4 | export const createWeb3Provider = (ethereumProvider: EthereumProvider) => new Web3Provider(ethereumProvider); 5 | -------------------------------------------------------------------------------- /yarn-project/wasabi/terraform/dev/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } 4 | 5 | variable "PRIVATE_KEY_WASABI" { 6 | type = string 7 | } 8 | -------------------------------------------------------------------------------- /yarn-project/wasabi/terraform/stage: -------------------------------------------------------------------------------- 1 | ./dev/ -------------------------------------------------------------------------------- /yarn-project/wasabi/terraform/testnet/variables.tf: -------------------------------------------------------------------------------- 1 | variable "DEPLOY_TAG" { 2 | type = string 3 | } 4 | 5 | variable "PRIVATE_KEY_WASABI" { 6 | type = string 7 | } 8 | -------------------------------------------------------------------------------- /yarn-project/wasabi/tsconfig.dest.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ".", 3 | "references": [{ "path": "../blockchain/tsconfig.dest.json" }, { "path": "../sdk/tsconfig.dest.json" }], 4 | "exclude": ["**/*.test.ts"] 5 | } 6 | -------------------------------------------------------------------------------- /yarn-project/wasabi/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "NodeNext", 5 | "lib": ["dom", "esnext", "es2017.object"], 6 | "outDir": "dest", 7 | "strict": true, 8 | "noImplicitAny": true, 9 | "noImplicitThis": false, 10 | "esModuleInterop": true, 11 | "declaration": true, 12 | "emitDecoratorMetadata": true, 13 | "experimentalDecorators": true, 14 | "inlineSourceMap": true, 15 | "resolveJsonModule": true 16 | }, 17 | "references": [{ "path": "../blockchain/tsconfig.dest.json" }, { "path": "../sdk/tsconfig.dest.json" }], 18 | "include": ["src"] 19 | } 20 | --------------------------------------------------------------------------------