@aztec/aztec 0.0.1-commit.cd76b27 → 0.0.1-commit.d1cd2107c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bin/index.js +7 -3
- package/dest/cli/admin_api_key_store.d.ts +3 -3
- package/dest/cli/admin_api_key_store.d.ts.map +1 -1
- package/dest/cli/admin_api_key_store.js +3 -3
- package/dest/cli/aztec_start_action.d.ts +1 -1
- package/dest/cli/aztec_start_action.d.ts.map +1 -1
- package/dest/cli/aztec_start_action.js +9 -7
- package/dest/cli/aztec_start_options.js +6 -6
- package/dest/cli/cli.d.ts +1 -1
- package/dest/cli/cli.d.ts.map +1 -1
- package/dest/cli/cli.js +3 -4
- package/dest/cli/cmds/compile.d.ts +4 -0
- package/dest/cli/cmds/compile.d.ts.map +1 -0
- package/dest/cli/cmds/compile.js +165 -0
- package/dest/cli/cmds/profile.d.ts +4 -0
- package/dest/cli/cmds/profile.d.ts.map +1 -0
- package/dest/cli/cmds/profile.js +8 -0
- package/dest/cli/cmds/profile_flamegraph.d.ts +4 -0
- package/dest/cli/cmds/profile_flamegraph.d.ts.map +1 -0
- package/dest/cli/cmds/profile_flamegraph.js +51 -0
- package/dest/cli/cmds/profile_gates.d.ts +4 -0
- package/dest/cli/cmds/profile_gates.d.ts.map +1 -0
- package/dest/cli/cmds/profile_gates.js +57 -0
- package/dest/cli/cmds/profile_utils.d.ts +18 -0
- package/dest/cli/cmds/profile_utils.d.ts.map +1 -0
- package/dest/cli/cmds/profile_utils.js +50 -0
- package/dest/cli/cmds/standby.d.ts +27 -0
- package/dest/cli/cmds/standby.d.ts.map +1 -0
- package/dest/cli/cmds/standby.js +78 -0
- package/dest/cli/cmds/start_archiver.d.ts +2 -2
- package/dest/cli/cmds/start_archiver.d.ts.map +1 -1
- package/dest/cli/cmds/start_archiver.js +1 -1
- package/dest/cli/cmds/start_node.d.ts +3 -2
- package/dest/cli/cmds/start_node.d.ts.map +1 -1
- package/dest/cli/cmds/start_node.js +15 -17
- package/dest/cli/cmds/start_prover_broker.d.ts +1 -1
- package/dest/cli/cmds/start_prover_broker.d.ts.map +1 -1
- package/dest/cli/cmds/start_prover_broker.js +6 -6
- package/dest/cli/cmds/utils/artifacts.d.ts +21 -0
- package/dest/cli/cmds/utils/artifacts.d.ts.map +1 -0
- package/dest/cli/cmds/utils/artifacts.js +24 -0
- package/dest/cli/cmds/utils/needs_recompile.d.ts +10 -0
- package/dest/cli/cmds/utils/needs_recompile.d.ts.map +1 -0
- package/dest/cli/cmds/utils/needs_recompile.js +124 -0
- package/dest/cli/cmds/utils/spawn.d.ts +3 -0
- package/dest/cli/cmds/utils/spawn.d.ts.map +1 -0
- package/dest/cli/cmds/utils/spawn.js +16 -0
- package/dest/cli/util.d.ts +3 -5
- package/dest/cli/util.d.ts.map +1 -1
- package/dest/cli/util.js +40 -81
- package/dest/examples/token.js +4 -4
- package/dest/local-network/banana_fpc.js +1 -1
- package/dest/local-network/local-network.d.ts +1 -1
- package/dest/local-network/local-network.d.ts.map +1 -1
- package/dest/local-network/local-network.js +33 -5
- package/dest/testing/anvil_test_watcher.d.ts +9 -1
- package/dest/testing/anvil_test_watcher.d.ts.map +1 -1
- package/dest/testing/anvil_test_watcher.js +52 -15
- package/dest/testing/index.d.ts +2 -1
- package/dest/testing/index.d.ts.map +1 -1
- package/dest/testing/index.js +1 -0
- package/dest/testing/token_allowed_setup.d.ts +7 -0
- package/dest/testing/token_allowed_setup.d.ts.map +1 -0
- package/dest/testing/token_allowed_setup.js +20 -0
- package/package.json +35 -34
- package/scripts/add_crate.sh +102 -0
- package/scripts/aztec.sh +10 -3
- package/scripts/init.sh +23 -19
- package/scripts/new.sh +48 -24
- package/scripts/setup_workspace.sh +68 -0
- package/src/bin/index.ts +7 -3
- package/src/cli/admin_api_key_store.ts +4 -4
- package/src/cli/aztec_start_action.ts +9 -7
- package/src/cli/aztec_start_options.ts +6 -6
- package/src/cli/cli.ts +3 -4
- package/src/cli/cmds/compile.ts +190 -0
- package/src/cli/cmds/profile.ts +25 -0
- package/src/cli/cmds/profile_flamegraph.ts +63 -0
- package/src/cli/cmds/profile_gates.ts +67 -0
- package/src/cli/cmds/profile_utils.ts +58 -0
- package/src/cli/cmds/standby.ts +111 -0
- package/src/cli/cmds/start_archiver.ts +1 -1
- package/src/cli/cmds/start_node.ts +25 -24
- package/src/cli/cmds/start_prover_broker.ts +7 -14
- package/src/cli/cmds/utils/artifacts.ts +44 -0
- package/src/cli/cmds/utils/needs_recompile.ts +139 -0
- package/src/cli/cmds/utils/spawn.ts +16 -0
- package/src/cli/util.ts +43 -76
- package/src/examples/token.ts +6 -4
- package/src/local-network/banana_fpc.ts +1 -1
- package/src/local-network/local-network.ts +29 -3
- package/src/testing/anvil_test_watcher.ts +59 -15
- package/src/testing/index.ts +1 -0
- package/src/testing/token_allowed_setup.ts +19 -0
- package/dest/cli/release_version.d.ts +0 -2
- package/dest/cli/release_version.d.ts.map +0 -1
- package/dest/cli/release_version.js +0 -14
- package/scripts/compile.sh +0 -44
- package/scripts/extract_function.js +0 -47
- package/scripts/flamegraph.sh +0 -59
- package/scripts/setup_project.sh +0 -31
- package/src/cli/release_version.ts +0 -21
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Creates a contract+test crate pair and adds them to an existing workspace.
|
|
5
|
+
# Usage: add_crate.sh <crate_name>
|
|
6
|
+
# Must be called from a workspace root that already has Nargo.toml with [workspace].
|
|
7
|
+
|
|
8
|
+
crate_name=$1
|
|
9
|
+
|
|
10
|
+
if [ -z "$crate_name" ]; then
|
|
11
|
+
echo "Error: crate name is required"
|
|
12
|
+
exit 1
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
if [[ "$crate_name" == *"/"* ]] || [[ "$crate_name" == *"\\"* ]]; then
|
|
16
|
+
echo "Error: crate name must not contain path separators"
|
|
17
|
+
exit 1
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
contract_dir="${crate_name}_contract"
|
|
21
|
+
test_dir="${crate_name}_test"
|
|
22
|
+
|
|
23
|
+
if [ -d "$contract_dir" ]; then
|
|
24
|
+
echo "Error: directory '$contract_dir' already exists"
|
|
25
|
+
exit 1
|
|
26
|
+
fi
|
|
27
|
+
if [ -d "$test_dir" ]; then
|
|
28
|
+
echo "Error: directory '$test_dir' already exists"
|
|
29
|
+
exit 1
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
# Get the actual aztec version for the git tag.
|
|
33
|
+
AZTEC_VERSION=$(jq -r '.version' $(dirname $0)/../package.json)
|
|
34
|
+
|
|
35
|
+
# Create contract crate
|
|
36
|
+
mkdir -p "$contract_dir/src"
|
|
37
|
+
cat > "$contract_dir/Nargo.toml" << CEOF
|
|
38
|
+
[package]
|
|
39
|
+
name = "${crate_name}_contract"
|
|
40
|
+
type = "contract"
|
|
41
|
+
|
|
42
|
+
[dependencies]
|
|
43
|
+
aztec = { git="https://github.com/AztecProtocol/aztec-nr", tag="v${AZTEC_VERSION}", directory="aztec" }
|
|
44
|
+
CEOF
|
|
45
|
+
|
|
46
|
+
cat > "$contract_dir/src/main.nr" << 'EOF'
|
|
47
|
+
use aztec::macros::aztec;
|
|
48
|
+
|
|
49
|
+
#[aztec]
|
|
50
|
+
pub contract Main {
|
|
51
|
+
use aztec::macros::functions::{external, initializer};
|
|
52
|
+
|
|
53
|
+
#[initializer]
|
|
54
|
+
#[external("private")]
|
|
55
|
+
fn constructor() {}
|
|
56
|
+
}
|
|
57
|
+
EOF
|
|
58
|
+
|
|
59
|
+
# Create test crate
|
|
60
|
+
mkdir -p "$test_dir/src"
|
|
61
|
+
cat > "$test_dir/Nargo.toml" << TEOF
|
|
62
|
+
[package]
|
|
63
|
+
name = "${crate_name}_test"
|
|
64
|
+
type = "lib"
|
|
65
|
+
|
|
66
|
+
[dependencies]
|
|
67
|
+
aztec = { git="https://github.com/AztecProtocol/aztec-nr", tag="v${AZTEC_VERSION}", directory="aztec" }
|
|
68
|
+
${crate_name}_contract = { path = "../${contract_dir}" }
|
|
69
|
+
TEOF
|
|
70
|
+
|
|
71
|
+
cat > "$test_dir/src/lib.nr" << 'NOIR'
|
|
72
|
+
use aztec::test::helpers::test_environment::TestEnvironment;
|
|
73
|
+
use __CRATE_NAME___contract::Main;
|
|
74
|
+
|
|
75
|
+
#[test]
|
|
76
|
+
unconstrained fn test_constructor() {
|
|
77
|
+
let mut env = TestEnvironment::new();
|
|
78
|
+
let deployer = env.create_light_account();
|
|
79
|
+
|
|
80
|
+
// Deploy the contract with the default constructor:
|
|
81
|
+
let contract_address = env.deploy("@__CRATE_NAME___contract/Main").with_private_initializer(
|
|
82
|
+
deployer,
|
|
83
|
+
Main::interface().constructor(),
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
// Deploy without an initializer:
|
|
87
|
+
let contract_address = env.deploy("@__CRATE_NAME___contract/Main").without_initializer();
|
|
88
|
+
}
|
|
89
|
+
NOIR
|
|
90
|
+
|
|
91
|
+
sed -i "s/__CRATE_NAME__/${crate_name}/g" "$test_dir/src/lib.nr"
|
|
92
|
+
|
|
93
|
+
# Add members to workspace Nargo.toml
|
|
94
|
+
if grep -q 'members\s*=\s*\[\s*\]' Nargo.toml; then
|
|
95
|
+
# Empty array: members = []
|
|
96
|
+
sed -i "s|members\s*=\s*\[\s*\]|members = [\"${contract_dir}\", \"${test_dir}\"]|" Nargo.toml
|
|
97
|
+
else
|
|
98
|
+
# Non-empty array: add before closing ]
|
|
99
|
+
sed -i "s|\(members\s*=\s*\[.*\)\]|\1, \"${contract_dir}\", \"${test_dir}\"]|" Nargo.toml
|
|
100
|
+
fi
|
|
101
|
+
|
|
102
|
+
echo "Created crates '${contract_dir}' and '${test_dir}'"
|
package/scripts/aztec.sh
CHANGED
|
@@ -20,13 +20,16 @@ function aztec {
|
|
|
20
20
|
|
|
21
21
|
case $cmd in
|
|
22
22
|
test)
|
|
23
|
+
# Attempt to compile, no-op if there are no changes
|
|
24
|
+
node --no-warnings "$script_dir/../dest/bin/index.js" compile
|
|
25
|
+
|
|
23
26
|
export LOG_LEVEL="${LOG_LEVEL:-"error;trace:contract_log"}"
|
|
24
27
|
aztec start --txe --port 8081 &
|
|
25
28
|
server_pid=$!
|
|
26
29
|
trap 'kill $server_pid &>/dev/null || true' EXIT
|
|
27
30
|
while ! nc -z 127.0.0.1 8081 &>/dev/null; do sleep 0.2; done
|
|
28
31
|
export NARGO_FOREIGN_CALL_TIMEOUT=300000
|
|
29
|
-
nargo test --silence-warnings
|
|
32
|
+
nargo test --silence-warnings --oracle-resolver http://127.0.0.1:8081 --test-threads 16 "$@"
|
|
30
33
|
;;
|
|
31
34
|
start)
|
|
32
35
|
if [ "${1:-}" == "--local-network" ]; then
|
|
@@ -46,16 +49,20 @@ case $cmd in
|
|
|
46
49
|
export ETHEREUM_HOSTS=${ETHEREUM_HOSTS:-"http://127.0.0.1:${ANVIL_PORT}"}
|
|
47
50
|
|
|
48
51
|
anvil --version
|
|
49
|
-
anvil --silent &
|
|
52
|
+
anvil --silent --port "$ANVIL_PORT" &
|
|
50
53
|
anvil_pid=$!
|
|
51
54
|
trap 'kill $anvil_pid &>/dev/null' EXIT
|
|
52
55
|
fi
|
|
53
56
|
|
|
54
57
|
aztec start "$@"
|
|
55
58
|
;;
|
|
56
|
-
|
|
59
|
+
new|init)
|
|
57
60
|
$script_dir/${cmd}.sh "$@"
|
|
58
61
|
;;
|
|
62
|
+
flamegraph)
|
|
63
|
+
echo "Warning: 'aztec flamegraph' is deprecated. Use 'aztec profile flamegraph' instead." >&2
|
|
64
|
+
aztec profile flamegraph "$@"
|
|
65
|
+
;;
|
|
59
66
|
*)
|
|
60
67
|
aztec $cmd "$@"
|
|
61
68
|
;;
|
package/scripts/init.sh
CHANGED
|
@@ -1,35 +1,39 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
set -euo pipefail
|
|
3
3
|
|
|
4
|
-
NARGO=${NARGO:-nargo}
|
|
5
4
|
script_path=$(realpath $(dirname "$0"))
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
# Parse arguments
|
|
7
|
+
while [[ $# -gt 0 ]]; do
|
|
8
|
+
case $1 in
|
|
9
|
+
--help|-h)
|
|
10
|
+
cat << 'EOF'
|
|
10
11
|
Aztec Init - Create a new Aztec Noir project in the current directory
|
|
11
12
|
|
|
12
|
-
Usage: aztec init
|
|
13
|
+
Usage: aztec init
|
|
13
14
|
|
|
14
15
|
Options:
|
|
15
|
-
--name <NAME> Name of the package [default: current directory name]
|
|
16
|
-
--lib Use a library template
|
|
17
16
|
-h, --help Print help
|
|
18
17
|
|
|
19
|
-
This command creates a new Aztec Noir project in the current directory
|
|
20
|
-
|
|
18
|
+
This command creates a new Aztec Noir project in the current directory with
|
|
19
|
+
a workspace containing a contract crate and a test crate, and automatically
|
|
20
|
+
adds the Aztec.nr dependency to both.
|
|
21
21
|
|
|
22
|
+
If a workspace already exists in the current directory, use
|
|
23
|
+
'aztec new <name>' instead to add another contract.
|
|
22
24
|
EOF
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
exit 0
|
|
26
|
+
;;
|
|
27
|
+
*)
|
|
28
|
+
echo "Error: unexpected argument '$1'"
|
|
29
|
+
echo "Usage: aztec init"
|
|
30
|
+
echo "Run 'aztec init --help' for more information"
|
|
31
|
+
exit 1
|
|
32
|
+
;;
|
|
33
|
+
esac
|
|
28
34
|
done
|
|
29
35
|
|
|
30
|
-
|
|
31
|
-
$NARGO init "$@"
|
|
36
|
+
package_name="$(basename $(pwd))"
|
|
32
37
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
fi
|
|
38
|
+
echo "Initializing Aztec contract project..."
|
|
39
|
+
$script_path/setup_workspace.sh "$package_name"
|
package/scripts/new.sh
CHANGED
|
@@ -1,59 +1,83 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
set -euo pipefail
|
|
3
3
|
|
|
4
|
-
NARGO=${NARGO:-nargo}
|
|
5
4
|
script_path=$(realpath $(dirname "$0"))
|
|
6
5
|
|
|
7
|
-
|
|
6
|
+
project_path=""
|
|
8
7
|
|
|
9
8
|
while [[ $# -gt 0 ]]; do
|
|
10
9
|
case $1 in
|
|
11
10
|
--help|-h)
|
|
12
11
|
cat << 'EOF'
|
|
13
|
-
Aztec New - Create a new Aztec Noir project
|
|
12
|
+
Aztec New - Create a new Aztec Noir project or add a contract to an existing workspace
|
|
14
13
|
|
|
15
|
-
Usage: aztec new
|
|
14
|
+
Usage: aztec new <NAME>
|
|
16
15
|
|
|
17
16
|
Arguments:
|
|
18
|
-
<
|
|
17
|
+
<NAME> The name for the new contract (also used as the directory name when
|
|
18
|
+
creating a new workspace)
|
|
19
19
|
|
|
20
20
|
Options:
|
|
21
|
-
--name <NAME> Name of the package [default: package directory name]
|
|
22
|
-
--lib Create a library template instead of a contract
|
|
23
21
|
-h, --help Print help
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
When run outside an existing workspace:
|
|
24
|
+
Creates a new directory with a workspace containing a contract crate and a
|
|
25
|
+
test crate, and automatically adds the Aztec.nr dependency to both.
|
|
26
|
+
|
|
27
|
+
When run inside an existing workspace (Nargo.toml with [workspace] exists):
|
|
28
|
+
Adds a new contract crate and test crate to the existing workspace.
|
|
27
29
|
EOF
|
|
28
30
|
exit 0
|
|
29
31
|
;;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
name_arg="--name $2"
|
|
36
|
-
shift 2
|
|
32
|
+
-*)
|
|
33
|
+
echo "Error: unknown option '$1'"
|
|
34
|
+
echo "Usage: aztec new <NAME>"
|
|
35
|
+
echo "Run 'aztec new --help' for more information"
|
|
36
|
+
exit 1
|
|
37
37
|
;;
|
|
38
38
|
*)
|
|
39
|
+
if [ -n "$project_path" ]; then
|
|
40
|
+
echo "Error: unexpected argument '$1'"
|
|
41
|
+
echo "Usage: aztec new <NAME>"
|
|
42
|
+
echo "Run 'aztec new --help' for more information"
|
|
43
|
+
exit 1
|
|
44
|
+
fi
|
|
39
45
|
project_path=$1
|
|
40
46
|
shift
|
|
41
|
-
break
|
|
42
47
|
;;
|
|
43
48
|
esac
|
|
44
49
|
done
|
|
45
50
|
|
|
46
51
|
if [ -z "$project_path" ]; then
|
|
47
|
-
echo "Error:
|
|
48
|
-
echo "Usage: aztec new
|
|
52
|
+
echo "Error: NAME argument is required"
|
|
53
|
+
echo "Usage: aztec new <NAME>"
|
|
49
54
|
echo "Run 'aztec new --help' for more information"
|
|
50
55
|
exit 1
|
|
51
56
|
fi
|
|
52
57
|
|
|
53
|
-
|
|
54
|
-
|
|
58
|
+
package_name="$(basename $project_path)"
|
|
59
|
+
|
|
60
|
+
# Validate that the name contains only valid Noir identifier characters
|
|
61
|
+
if ! [[ "$package_name" =~ ^[a-zA-Z][a-zA-Z0-9_]*$ ]]; then
|
|
62
|
+
echo "Error: '$package_name' is not a valid contract name"
|
|
63
|
+
echo "Name must start with a letter and contain only letters, digits, and underscores"
|
|
64
|
+
exit 1
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
# Check if we're inside an existing workspace
|
|
68
|
+
if [ -f "Nargo.toml" ] && grep -q '\[workspace\]' Nargo.toml; then
|
|
69
|
+
# Add crate pair to existing workspace
|
|
70
|
+
echo "Adding contract '$package_name' to existing workspace..."
|
|
71
|
+
$script_path/add_crate.sh "$package_name"
|
|
72
|
+
else
|
|
73
|
+
# Create new workspace
|
|
74
|
+
if [ -d "$project_path" ] && [ "$(ls -A $project_path 2>/dev/null)" ]; then
|
|
75
|
+
echo "Error: $project_path already exists and is not empty"
|
|
76
|
+
exit 1
|
|
77
|
+
fi
|
|
55
78
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
$
|
|
79
|
+
echo "Creating new Aztec contract project at $project_path..."
|
|
80
|
+
mkdir -p "$project_path"
|
|
81
|
+
cd "$project_path"
|
|
82
|
+
$script_path/setup_workspace.sh "$package_name"
|
|
59
83
|
fi
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Creates an Aztec contract workspace with a contract crate and a test crate.
|
|
5
|
+
# Usage: setup_workspace.sh <package_name>
|
|
6
|
+
# Must be called from the workspace root directory.
|
|
7
|
+
|
|
8
|
+
package_name=$1
|
|
9
|
+
script_path=$(realpath $(dirname "$0"))
|
|
10
|
+
|
|
11
|
+
if [ -z "$package_name" ]; then
|
|
12
|
+
echo "Error: package name is required"
|
|
13
|
+
exit 1
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
if [ -f "Nargo.toml" ]; then
|
|
17
|
+
echo "Error: Nargo.toml already exists in the current directory."
|
|
18
|
+
echo "To add another contract crate to this workspace, use 'aztec new <name>' instead."
|
|
19
|
+
exit 1
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
# Create workspace root Nargo.toml with empty members (add_crate.sh will populate)
|
|
23
|
+
cat > Nargo.toml << 'EOF'
|
|
24
|
+
[workspace]
|
|
25
|
+
members = []
|
|
26
|
+
EOF
|
|
27
|
+
|
|
28
|
+
# Create the first crate pair
|
|
29
|
+
$script_path/add_crate.sh "$package_name"
|
|
30
|
+
|
|
31
|
+
# Create README
|
|
32
|
+
cat > README.md << REOF
|
|
33
|
+
# ${package_name}
|
|
34
|
+
|
|
35
|
+
An Aztec Noir contract project.
|
|
36
|
+
|
|
37
|
+
## Compile
|
|
38
|
+
|
|
39
|
+
\`\`\`bash
|
|
40
|
+
aztec compile
|
|
41
|
+
\`\`\`
|
|
42
|
+
|
|
43
|
+
This compiles all contract crates and outputs artifacts to \`target/\`.
|
|
44
|
+
|
|
45
|
+
## Test
|
|
46
|
+
|
|
47
|
+
\`\`\`bash
|
|
48
|
+
aztec test
|
|
49
|
+
\`\`\`
|
|
50
|
+
|
|
51
|
+
This runs all tests in the workspace.
|
|
52
|
+
|
|
53
|
+
## Generate TypeScript bindings
|
|
54
|
+
|
|
55
|
+
\`\`\`bash
|
|
56
|
+
aztec codegen target -o src/artifacts
|
|
57
|
+
\`\`\`
|
|
58
|
+
|
|
59
|
+
This generates TypeScript contract artifacts from the compiled output in \`target/\` into \`src/artifacts/\`.
|
|
60
|
+
REOF
|
|
61
|
+
|
|
62
|
+
# Create .gitignore
|
|
63
|
+
cat > .gitignore << 'GEOF'
|
|
64
|
+
target/
|
|
65
|
+
codegenCache.json
|
|
66
|
+
GEOF
|
|
67
|
+
|
|
68
|
+
echo "Created Aztec contract workspace with crates '${package_name}_contract' and '${package_name}_test'"
|
package/src/bin/index.ts
CHANGED
|
@@ -11,12 +11,14 @@ import { injectCommands as injectMiscCommands } from '@aztec/cli/misc';
|
|
|
11
11
|
import { injectCommands as injectValidatorKeysCommands } from '@aztec/cli/validator_keys';
|
|
12
12
|
import { getActiveNetworkName } from '@aztec/foundation/config';
|
|
13
13
|
import { createConsoleLogger, createLogger } from '@aztec/foundation/log';
|
|
14
|
+
import { getPackageVersion } from '@aztec/stdlib/update-checker';
|
|
14
15
|
|
|
15
16
|
import { Command } from 'commander';
|
|
16
17
|
|
|
18
|
+
import { injectCompileCommand } from '../cli/cmds/compile.js';
|
|
17
19
|
import { injectMigrateCommand } from '../cli/cmds/migrate_ha_db.js';
|
|
20
|
+
import { injectProfileCommand } from '../cli/cmds/profile.js';
|
|
18
21
|
import { injectAztecCommands } from '../cli/index.js';
|
|
19
|
-
import { getCliVersion } from '../cli/release_version.js';
|
|
20
22
|
|
|
21
23
|
const NETWORK_FLAG = 'network';
|
|
22
24
|
|
|
@@ -45,9 +47,9 @@ async function main() {
|
|
|
45
47
|
await enrichEnvironmentWithNetworkConfig(networkName);
|
|
46
48
|
enrichEnvironmentWithChainName(networkName);
|
|
47
49
|
|
|
48
|
-
const cliVersion =
|
|
50
|
+
const cliVersion = getPackageVersion() ?? 'unknown';
|
|
49
51
|
let program = new Command('aztec');
|
|
50
|
-
program.description('Aztec command line interface').version(cliVersion);
|
|
52
|
+
program.description('Aztec command line interface').version(cliVersion).enablePositionalOptions();
|
|
51
53
|
program = injectAztecCommands(program, userLog, debugLogger);
|
|
52
54
|
program = injectBuilderCommands(program);
|
|
53
55
|
program = injectContractCommands(program, userLog, debugLogger);
|
|
@@ -56,6 +58,8 @@ async function main() {
|
|
|
56
58
|
program = injectAztecNodeCommands(program, userLog, debugLogger);
|
|
57
59
|
program = injectMiscCommands(program, userLog);
|
|
58
60
|
program = injectValidatorKeysCommands(program, userLog);
|
|
61
|
+
program = injectCompileCommand(program, userLog);
|
|
62
|
+
program = injectProfileCommand(program, userLog);
|
|
59
63
|
program = injectMigrateCommand(program, userLog);
|
|
60
64
|
|
|
61
65
|
await program.parseAsync(process.argv);
|
|
@@ -28,7 +28,7 @@ export interface ResolveAdminApiKeyOptions {
|
|
|
28
28
|
/** SHA-256 hex hash of a pre-generated API key. When set, the node uses this hash directly. */
|
|
29
29
|
adminApiKeyHash?: string;
|
|
30
30
|
/** If true, disable admin API key auth entirely. */
|
|
31
|
-
|
|
31
|
+
disableAdminApiKey?: boolean;
|
|
32
32
|
/** If true, force-generate a new key even if one is already persisted. */
|
|
33
33
|
resetAdminApiKey?: boolean;
|
|
34
34
|
/** Root data directory for persistent storage. */
|
|
@@ -39,7 +39,7 @@ export interface ResolveAdminApiKeyOptions {
|
|
|
39
39
|
* Resolves the admin API key for the admin RPC endpoint.
|
|
40
40
|
*
|
|
41
41
|
* Strategy:
|
|
42
|
-
* 1. If opt-out flag is set (`
|
|
42
|
+
* 1. If opt-out flag is set (`disableAdminApiKey`), return undefined (no auth).
|
|
43
43
|
* 2. If a pre-generated hash is provided (`adminApiKeyHash`), use it directly.
|
|
44
44
|
* 3. If a data directory exists, look for a persisted hash file
|
|
45
45
|
* at `<dataDirectory>/admin/api_key_hash`:
|
|
@@ -58,8 +58,8 @@ export async function resolveAdminApiKey(
|
|
|
58
58
|
log: Logger,
|
|
59
59
|
): Promise<AdminApiKeyResolution | undefined> {
|
|
60
60
|
// Operator explicitly opted out of admin auth
|
|
61
|
-
if (options.
|
|
62
|
-
log.warn('Admin API key authentication is DISABLED (--
|
|
61
|
+
if (options.disableAdminApiKey) {
|
|
62
|
+
log.warn('Admin API key authentication is DISABLED (--disable-admin-api-key / AZTEC_DISABLE_ADMIN_API_KEY)');
|
|
63
63
|
return undefined;
|
|
64
64
|
}
|
|
65
65
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getActiveNetworkName } from '@aztec/foundation/config';
|
|
1
2
|
import {
|
|
2
3
|
type NamespacedApiHandlers,
|
|
3
4
|
createNamespacedSafeJsonRpcServer,
|
|
@@ -7,13 +8,13 @@ import {
|
|
|
7
8
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
8
9
|
import type { ChainConfig } from '@aztec/stdlib/config';
|
|
9
10
|
import { AztecNodeApiSchema } from '@aztec/stdlib/interfaces/client';
|
|
11
|
+
import { getPackageVersion } from '@aztec/stdlib/update-checker';
|
|
10
12
|
import { getVersioningMiddleware } from '@aztec/stdlib/versioning';
|
|
11
13
|
import { getOtelJsonRpcPropagationMiddleware } from '@aztec/telemetry-client';
|
|
12
14
|
|
|
13
15
|
import { createLocalNetwork } from '../local-network/index.js';
|
|
14
16
|
import { github, splash } from '../splash.js';
|
|
15
17
|
import { resolveAdminApiKey } from './admin_api_key_store.js';
|
|
16
|
-
import { getCliVersion } from './release_version.js';
|
|
17
18
|
import { extractNamespacedOptions, installSignalHandlers } from './util.js';
|
|
18
19
|
import { getVersions } from './versioning.js';
|
|
19
20
|
|
|
@@ -25,7 +26,7 @@ export async function aztecStart(options: any, userLog: LogFn, debugLogger: Logg
|
|
|
25
26
|
let config: ChainConfig | undefined = undefined;
|
|
26
27
|
|
|
27
28
|
if (options.localNetwork) {
|
|
28
|
-
const cliVersion =
|
|
29
|
+
const cliVersion = getPackageVersion() ?? 'unknown';
|
|
29
30
|
const localNetwork = extractNamespacedOptions(options, 'local-network');
|
|
30
31
|
localNetwork.testAccounts = true;
|
|
31
32
|
userLog(`${splash}\n${github}\n\n`);
|
|
@@ -37,11 +38,11 @@ export async function aztecStart(options: any, userLog: LogFn, debugLogger: Logg
|
|
|
37
38
|
l1RpcUrls: options.l1RpcUrls,
|
|
38
39
|
testAccounts: localNetwork.testAccounts,
|
|
39
40
|
realProofs: false,
|
|
40
|
-
// Setting the epoch duration to
|
|
41
|
+
// Setting the epoch duration to 2 by default for local network. This allows the epoch to be "proven" faster, so
|
|
41
42
|
// the users can consume out hash without having to wait for a long time.
|
|
42
43
|
// Note: We are not proving anything in the local network (realProofs == false). But in `createLocalNetwork`,
|
|
43
44
|
// the EpochTestSettler will set the out hash to the outbox when an epoch is complete.
|
|
44
|
-
aztecEpochDuration:
|
|
45
|
+
aztecEpochDuration: 2,
|
|
45
46
|
},
|
|
46
47
|
userLog,
|
|
47
48
|
);
|
|
@@ -57,7 +58,8 @@ export async function aztecStart(options: any, userLog: LogFn, debugLogger: Logg
|
|
|
57
58
|
|
|
58
59
|
if (options.node) {
|
|
59
60
|
const { startNode } = await import('./cmds/start_node.js');
|
|
60
|
-
|
|
61
|
+
const networkName = getActiveNetworkName(options.network);
|
|
62
|
+
({ config } = await startNode(options, signalHandlers, services, adminServices, userLog, networkName));
|
|
61
63
|
} else if (options.bot) {
|
|
62
64
|
const { startBot } = await import('./cmds/start_bot.js');
|
|
63
65
|
await startBot(options, signalHandlers, services, userLog);
|
|
@@ -109,7 +111,7 @@ export async function aztecStart(options: any, userLog: LogFn, debugLogger: Logg
|
|
|
109
111
|
const apiKeyResolution = await resolveAdminApiKey(
|
|
110
112
|
{
|
|
111
113
|
adminApiKeyHash: options.adminApiKeyHash,
|
|
112
|
-
|
|
114
|
+
disableAdminApiKey: options.disableAdminApiKey,
|
|
113
115
|
resetAdminApiKey: options.resetAdminApiKey,
|
|
114
116
|
dataDirectory: options.dataDirectory,
|
|
115
117
|
},
|
|
@@ -148,7 +150,7 @@ export async function aztecStart(options: any, userLog: LogFn, debugLogger: Logg
|
|
|
148
150
|
userLog(' The key hash has been persisted — on next restart, the same key will be used.');
|
|
149
151
|
}
|
|
150
152
|
userLog('');
|
|
151
|
-
userLog(' To disable admin auth: --
|
|
153
|
+
userLog(' To disable admin auth: --disable-admin-api-key or AZTEC_DISABLE_ADMIN_API_KEY=true');
|
|
152
154
|
userLog(separator);
|
|
153
155
|
userLog('');
|
|
154
156
|
}
|
|
@@ -12,7 +12,6 @@ import {
|
|
|
12
12
|
isBooleanConfigValue,
|
|
13
13
|
omitConfigMappings,
|
|
14
14
|
} from '@aztec/foundation/config';
|
|
15
|
-
import { dataConfigMappings } from '@aztec/kv-store/config';
|
|
16
15
|
import { sharedNodeConfigMappings } from '@aztec/node-lib/config';
|
|
17
16
|
import { bootnodeConfigMappings, p2pConfigMappings } from '@aztec/p2p/config';
|
|
18
17
|
import { proverAgentConfigMappings, proverBrokerConfigMappings } from '@aztec/prover-client/broker/config';
|
|
@@ -20,6 +19,7 @@ import { proverNodeConfigMappings } from '@aztec/prover-node/config';
|
|
|
20
19
|
import { allPxeConfigMappings } from '@aztec/pxe/config';
|
|
21
20
|
import { sequencerClientConfigMappings } from '@aztec/sequencer-client/config';
|
|
22
21
|
import { chainConfigMappings, nodeRpcConfigMappings } from '@aztec/stdlib/config';
|
|
22
|
+
import { dataConfigMappings } from '@aztec/stdlib/kv-store';
|
|
23
23
|
import { telemetryClientConfigMappings } from '@aztec/telemetry-client/config';
|
|
24
24
|
import { worldStateConfigMappings } from '@aztec/world-state/config';
|
|
25
25
|
|
|
@@ -105,8 +105,7 @@ export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
|
|
|
105
105
|
env: 'NETWORK',
|
|
106
106
|
},
|
|
107
107
|
|
|
108
|
-
configToFlag('--
|
|
109
|
-
configToFlag('--auto-update-url', sharedNodeConfigMappings.autoUpdateUrl),
|
|
108
|
+
configToFlag('--enable-version-check', sharedNodeConfigMappings.enableVersionCheck),
|
|
110
109
|
|
|
111
110
|
configToFlag('--sync-mode', sharedNodeConfigMappings.syncMode),
|
|
112
111
|
configToFlag('--snapshots-urls', sharedNodeConfigMappings.snapshotsUrls),
|
|
@@ -150,12 +149,13 @@ export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
|
|
|
150
149
|
env: 'AZTEC_ADMIN_API_KEY_HASH',
|
|
151
150
|
},
|
|
152
151
|
{
|
|
153
|
-
flag: '--
|
|
152
|
+
flag: '--disable-admin-api-key',
|
|
154
153
|
description:
|
|
155
154
|
'Disable API key authentication on the admin RPC endpoint. By default, a key is auto-generated, displayed once, and its hash is persisted.',
|
|
156
155
|
defaultValue: false,
|
|
157
|
-
env: '
|
|
158
|
-
|
|
156
|
+
env: 'AZTEC_DISABLE_ADMIN_API_KEY',
|
|
157
|
+
// undefined means the flag was passed without a value (boolean toggle), treat as true.
|
|
158
|
+
parseVal: val => val === undefined || val === 'true' || val === '1',
|
|
159
159
|
},
|
|
160
160
|
{
|
|
161
161
|
flag: '--reset-admin-api-key',
|
package/src/cli/cli.ts
CHANGED
|
@@ -37,10 +37,9 @@ export function injectAztecCommands(program: Command, userLog: LogFn, debugLogge
|
|
|
37
37
|
`
|
|
38
38
|
Additional commands:
|
|
39
39
|
|
|
40
|
-
init
|
|
41
|
-
new <
|
|
42
|
-
|
|
43
|
-
test [options] starts a TXE and runs "nargo test" using it as the oracle resolver.
|
|
40
|
+
init creates a new Aztec Noir workspace in the current directory.
|
|
41
|
+
new <name> creates a new Aztec Noir workspace in its own directory (or creates a new contract-test crates pair and adds it to the current workspace if run in workspace).
|
|
42
|
+
test [options] starts a TXE and runs "nargo test" using it as the oracle resolver.
|
|
44
43
|
`,
|
|
45
44
|
);
|
|
46
45
|
}
|