@aztec/aztec 0.0.1-commit.358457c → 0.0.1-commit.381b1a9
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 +2 -2
- 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 +11 -6
- package/dest/cli/aztec_start_options.d.ts +1 -1
- package/dest/cli/aztec_start_options.d.ts.map +1 -1
- package/dest/cli/aztec_start_options.js +1 -2
- package/dest/cli/cmds/compile.d.ts +1 -1
- package/dest/cli/cmds/compile.d.ts.map +1 -1
- package/dest/cli/cmds/compile.js +0 -92
- package/dest/cli/cmds/standby.d.ts +32 -0
- package/dest/cli/cmds/standby.d.ts.map +1 -0
- package/dest/cli/cmds/standby.js +97 -0
- 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 +21 -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 +12 -6
- package/dest/cli/util.d.ts +3 -5
- package/dest/cli/util.d.ts.map +1 -1
- package/dest/cli/util.js +37 -78
- 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 +18 -5
- package/dest/testing/epoch_test_settler.d.ts +1 -1
- package/dest/testing/epoch_test_settler.d.ts.map +1 -1
- package/dest/testing/epoch_test_settler.js +3 -4
- 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 +34 -34
- package/scripts/aztec.sh +1 -0
- package/scripts/init.sh +13 -23
- package/scripts/new.sh +16 -17
- package/scripts/setup_project.sh +31 -0
- package/src/bin/index.ts +2 -2
- package/src/cli/aztec_start_action.ts +9 -6
- package/src/cli/aztec_start_options.ts +1 -2
- package/src/cli/cmds/compile.ts +0 -104
- package/src/cli/cmds/standby.ts +132 -0
- package/src/cli/cmds/start_node.ts +32 -24
- package/src/cli/cmds/start_prover_broker.ts +14 -14
- package/src/cli/util.ts +41 -74
- package/src/examples/token.ts +6 -4
- package/src/local-network/banana_fpc.ts +1 -1
- package/src/local-network/local-network.ts +13 -3
- package/src/testing/epoch_test_settler.ts +3 -4
- 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/setup_workspace.sh +0 -124
- package/src/cli/release_version.ts +0 -21
package/src/examples/token.ts
CHANGED
|
@@ -32,7 +32,9 @@ async function main() {
|
|
|
32
32
|
logger.info(`Fetched Alice and Bob accounts: ${alice.toString()}, ${bob.toString()}`);
|
|
33
33
|
|
|
34
34
|
logger.info('Deploying Token...');
|
|
35
|
-
const token = await TokenContract.deploy(wallet, alice, 'TokenName', 'TokenSymbol', 18).send({
|
|
35
|
+
const { contract: token } = await TokenContract.deploy(wallet, alice, 'TokenName', 'TokenSymbol', 18).send({
|
|
36
|
+
from: alice,
|
|
37
|
+
});
|
|
36
38
|
logger.info('Token deployed');
|
|
37
39
|
|
|
38
40
|
// Mint tokens to Alice
|
|
@@ -41,7 +43,7 @@ async function main() {
|
|
|
41
43
|
|
|
42
44
|
logger.info(`${ALICE_MINT_BALANCE} tokens were successfully minted by Alice and transferred to private`);
|
|
43
45
|
|
|
44
|
-
const balanceAfterMint = await token.methods.balance_of_private(alice).simulate({ from: alice });
|
|
46
|
+
const { result: balanceAfterMint } = await token.methods.balance_of_private(alice).simulate({ from: alice });
|
|
45
47
|
logger.info(`Tokens successfully minted. New Alice's balance: ${balanceAfterMint}`);
|
|
46
48
|
|
|
47
49
|
// We will now transfer tokens from Alice to Bob
|
|
@@ -49,10 +51,10 @@ async function main() {
|
|
|
49
51
|
await token.methods.transfer(bob, TRANSFER_AMOUNT).send({ from: alice });
|
|
50
52
|
|
|
51
53
|
// Check the new balances
|
|
52
|
-
const aliceBalance = await token.methods.balance_of_private(alice).simulate({ from: alice });
|
|
54
|
+
const { result: aliceBalance } = await token.methods.balance_of_private(alice).simulate({ from: alice });
|
|
53
55
|
logger.info(`Alice's balance ${aliceBalance}`);
|
|
54
56
|
|
|
55
|
-
const bobBalance = await token.methods.balance_of_private(bob).simulate({ from: bob });
|
|
57
|
+
const { result: bobBalance } = await token.methods.balance_of_private(bob).simulate({ from: bob });
|
|
56
58
|
logger.info(`Bob's balance ${bobBalance}`);
|
|
57
59
|
}
|
|
58
60
|
|
|
@@ -48,7 +48,7 @@ export async function getBananaFPCAddress(initialAccounts: InitialAccountData[])
|
|
|
48
48
|
export async function setupBananaFPC(initialAccounts: InitialAccountData[], wallet: Wallet, log: LogFn) {
|
|
49
49
|
const bananaCoinAddress = await getBananaCoinAddress(initialAccounts);
|
|
50
50
|
const admin = getBananaAdmin(initialAccounts);
|
|
51
|
-
const [bananaCoin, fpc] = await Promise.all([
|
|
51
|
+
const [{ contract: bananaCoin }, { contract: fpc }] = await Promise.all([
|
|
52
52
|
TokenContract.deploy(wallet, admin, bananaCoinArgs.name, bananaCoinArgs.symbol, bananaCoinArgs.decimal).send({
|
|
53
53
|
from: admin,
|
|
54
54
|
contractAddressSalt: BANANA_COIN_SALT,
|
|
@@ -19,6 +19,7 @@ import { DateProvider, TestDateProvider } from '@aztec/foundation/timer';
|
|
|
19
19
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
20
20
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
21
21
|
import { SequencerState } from '@aztec/sequencer-client';
|
|
22
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
22
23
|
import type { ProvingJobBroker } from '@aztec/stdlib/interfaces/server';
|
|
23
24
|
import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
24
25
|
import {
|
|
@@ -38,6 +39,7 @@ import { createAccountLogs } from '../cli/util.js';
|
|
|
38
39
|
import { DefaultMnemonic } from '../mnemonic.js';
|
|
39
40
|
import { AnvilTestWatcher } from '../testing/anvil_test_watcher.js';
|
|
40
41
|
import { EpochTestSettler } from '../testing/epoch_test_settler.js';
|
|
42
|
+
import { getTokenAllowedSetupFunctions } from '../testing/token_allowed_setup.js';
|
|
41
43
|
import { getBananaFPCAddress, setupBananaFPC } from './banana_fpc.js';
|
|
42
44
|
import { getSponsoredFPCAddress } from './sponsored_fpc.js';
|
|
43
45
|
|
|
@@ -101,9 +103,14 @@ export async function createLocalNetwork(config: Partial<LocalNetworkConfig> = {
|
|
|
101
103
|
logger.warn(`Multiple L1 RPC URLs provided. Local networks will only use the first one: ${l1RpcUrl}`);
|
|
102
104
|
}
|
|
103
105
|
|
|
106
|
+
// The local network deploys a banana FPC with Token contracts, so include Token entries
|
|
107
|
+
// in the setup allowlist so FPC-based fee payments work out of the box.
|
|
108
|
+
const tokenAllowList = await getTokenAllowedSetupFunctions();
|
|
109
|
+
|
|
104
110
|
const aztecNodeConfig: AztecNodeConfig = {
|
|
105
111
|
...getConfigEnvVars(),
|
|
106
112
|
...config,
|
|
113
|
+
txPublicSetupAllowListExtend: [...tokenAllowList, ...(config.txPublicSetupAllowListExtend ?? [])],
|
|
107
114
|
};
|
|
108
115
|
const hdAccount = mnemonicToAccount(config.l1Mnemonic || DefaultMnemonic);
|
|
109
116
|
if (
|
|
@@ -138,9 +145,12 @@ export async function createLocalNetwork(config: Partial<LocalNetworkConfig> = {
|
|
|
138
145
|
|
|
139
146
|
const bananaFPC = await getBananaFPCAddress(initialAccounts);
|
|
140
147
|
const sponsoredFPC = await getSponsoredFPCAddress();
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
148
|
+
const prefundAddresses = (aztecNodeConfig.prefundAddresses ?? []).map(a => AztecAddress.fromString(a));
|
|
149
|
+
const fundedAddresses = [
|
|
150
|
+
...initialAccounts.map(a => a.address),
|
|
151
|
+
...(initialAccounts.length ? [bananaFPC, sponsoredFPC] : []),
|
|
152
|
+
...prefundAddresses,
|
|
153
|
+
];
|
|
144
154
|
const { genesisArchiveRoot, prefilledPublicData, fundingNeeded } = await getGenesisValues(fundedAddresses);
|
|
145
155
|
|
|
146
156
|
const dateProvider = new TestDateProvider();
|
|
@@ -4,7 +4,7 @@ import { type EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
|
4
4
|
import type { Logger } from '@aztec/foundation/log';
|
|
5
5
|
import { EpochMonitor } from '@aztec/prover-node';
|
|
6
6
|
import type { EthAddress, L2BlockSource } from '@aztec/stdlib/block';
|
|
7
|
-
import {
|
|
7
|
+
import { computeEpochOutHash } from '@aztec/stdlib/messaging';
|
|
8
8
|
|
|
9
9
|
export class EpochTestSettler {
|
|
10
10
|
private rollupCheatCodes: RollupCheatCodes;
|
|
@@ -51,9 +51,8 @@ export class EpochTestSettler {
|
|
|
51
51
|
messagesInEpoch[checkpointIndex].push(block.body.txEffects.map(txEffect => txEffect.l2ToL1Msgs));
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
const
|
|
55
|
-
if (
|
|
56
|
-
const { root: outHash } = computeL2ToL1MembershipWitnessFromMessagesInEpoch(messagesInEpoch, firstMessage);
|
|
54
|
+
const outHash = computeEpochOutHash(messagesInEpoch);
|
|
55
|
+
if (!outHash.isZero()) {
|
|
57
56
|
await this.rollupCheatCodes.insertOutbox(epoch, outHash.toBigInt());
|
|
58
57
|
} else {
|
|
59
58
|
this.log.info(`No L2 to L1 messages in epoch ${epoch}`);
|
package/src/testing/index.ts
CHANGED
|
@@ -2,3 +2,4 @@ export { AnvilTestWatcher } from './anvil_test_watcher.js';
|
|
|
2
2
|
export { EthCheatCodes, RollupCheatCodes } from '@aztec/ethereum/test';
|
|
3
3
|
export { CheatCodes } from './cheat_codes.js';
|
|
4
4
|
export { EpochTestSettler } from './epoch_test_settler.js';
|
|
5
|
+
export { getTokenAllowedSetupFunctions } from './token_allowed_setup.js';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { TokenContractArtifact } from '@aztec/noir-contracts.js/Token';
|
|
2
|
+
import { buildAllowedElement } from '@aztec/p2p/msg_validators';
|
|
3
|
+
import { getContractClassFromArtifact } from '@aztec/stdlib/contract';
|
|
4
|
+
import type { AllowedElement } from '@aztec/stdlib/interfaces/server';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Returns Token-specific allowlist entries needed for FPC-based fee payments.
|
|
8
|
+
* These are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
|
|
9
|
+
*/
|
|
10
|
+
export async function getTokenAllowedSetupFunctions(): Promise<AllowedElement[]> {
|
|
11
|
+
const tokenClassId = (await getContractClassFromArtifact(TokenContractArtifact)).id;
|
|
12
|
+
const target = { classId: tokenClassId };
|
|
13
|
+
return Promise.all([
|
|
14
|
+
// Token: needed for private transfers via FPC (transfer_to_public enqueues this)
|
|
15
|
+
buildAllowedElement(TokenContractArtifact, target, '_increase_public_balance', { onlySelf: true }),
|
|
16
|
+
// Token: needed for public transfers via FPC (fee_entrypoint_public enqueues this)
|
|
17
|
+
buildAllowedElement(TokenContractArtifact, target, 'transfer_in_public'),
|
|
18
|
+
]);
|
|
19
|
+
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export declare const getCliVersion: () => any;
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsZWFzZV92ZXJzaW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL3JlbGVhc2VfdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxlQUFPLE1BQU0sYUFBYSxXQWV6QixDQUFDIn0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"release_version.d.ts","sourceRoot":"","sources":["../../src/cli/release_version.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa,WAezB,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { fileURLToPath } from '@aztec/foundation/url';
|
|
2
|
-
import { readFileSync } from 'fs';
|
|
3
|
-
import { dirname, resolve } from 'path';
|
|
4
|
-
export const getCliVersion = ()=>{
|
|
5
|
-
const packageJsonPath = resolve(dirname(fileURLToPath(import.meta.url)), '../../package.json');
|
|
6
|
-
const cliVersion = JSON.parse(readFileSync(packageJsonPath).toString()).version;
|
|
7
|
-
// If the version is 0.1.0, this is a placeholder version and we are in a docker container; query release please for the latest version
|
|
8
|
-
if (cliVersion === '0.1.0') {
|
|
9
|
-
const releasePleasePath = resolve(dirname(fileURLToPath(import.meta.url)), '../../../../.release-please-manifest.json');
|
|
10
|
-
const releaseVersion = JSON.parse(readFileSync(releasePleasePath).toString())['.'];
|
|
11
|
-
return releaseVersion;
|
|
12
|
-
}
|
|
13
|
-
return cliVersion;
|
|
14
|
-
};
|
|
@@ -1,124 +0,0 @@
|
|
|
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
|
-
|
|
10
|
-
if [ -z "$package_name" ]; then
|
|
11
|
-
echo "Error: package name is required"
|
|
12
|
-
exit 1
|
|
13
|
-
fi
|
|
14
|
-
|
|
15
|
-
if [ -f "Nargo.toml" ]; then
|
|
16
|
-
echo "Error: Nargo.toml already exists in the current directory"
|
|
17
|
-
exit 1
|
|
18
|
-
fi
|
|
19
|
-
|
|
20
|
-
# Get the actual aztec version for the git tag.
|
|
21
|
-
AZTEC_VERSION=$(jq -r '.version' $(dirname $0)/../package.json)
|
|
22
|
-
|
|
23
|
-
# Create workspace root Nargo.toml
|
|
24
|
-
cat > Nargo.toml << 'EOF'
|
|
25
|
-
[workspace]
|
|
26
|
-
members = ["contract", "test"]
|
|
27
|
-
EOF
|
|
28
|
-
|
|
29
|
-
# Create contract crate
|
|
30
|
-
mkdir -p contract/src
|
|
31
|
-
cat > contract/Nargo.toml << CEOF
|
|
32
|
-
[package]
|
|
33
|
-
name = "${package_name}"
|
|
34
|
-
type = "contract"
|
|
35
|
-
|
|
36
|
-
[dependencies]
|
|
37
|
-
aztec = { git="https://github.com/AztecProtocol/aztec-nr", tag="v${AZTEC_VERSION}", directory="aztec" }
|
|
38
|
-
CEOF
|
|
39
|
-
|
|
40
|
-
cat > contract/src/main.nr << 'EOF'
|
|
41
|
-
use aztec::macros::aztec;
|
|
42
|
-
|
|
43
|
-
#[aztec]
|
|
44
|
-
pub contract Main {
|
|
45
|
-
use aztec::macros::functions::{external, initializer};
|
|
46
|
-
|
|
47
|
-
#[initializer]
|
|
48
|
-
#[external("private")]
|
|
49
|
-
fn constructor() {}
|
|
50
|
-
}
|
|
51
|
-
EOF
|
|
52
|
-
|
|
53
|
-
# Create test crate
|
|
54
|
-
mkdir -p test/src
|
|
55
|
-
cat > test/Nargo.toml << TEOF
|
|
56
|
-
[package]
|
|
57
|
-
name = "${package_name}_test"
|
|
58
|
-
type = "lib"
|
|
59
|
-
|
|
60
|
-
[dependencies]
|
|
61
|
-
aztec = { git="https://github.com/AztecProtocol/aztec-nr", tag="v${AZTEC_VERSION}", directory="aztec" }
|
|
62
|
-
${package_name} = { path = "../contract" }
|
|
63
|
-
TEOF
|
|
64
|
-
|
|
65
|
-
cat > test/src/lib.nr << 'NOIR'
|
|
66
|
-
use aztec::test::helpers::test_environment::TestEnvironment;
|
|
67
|
-
use __PACKAGE_NAME__::Main;
|
|
68
|
-
|
|
69
|
-
#[test]
|
|
70
|
-
unconstrained fn test_constructor() {
|
|
71
|
-
let mut env = TestEnvironment::new();
|
|
72
|
-
let deployer = env.create_light_account();
|
|
73
|
-
|
|
74
|
-
// Deploy the contract with the default constructor:
|
|
75
|
-
let contract_address = env.deploy("@__PACKAGE_NAME__/Main").with_private_initializer(
|
|
76
|
-
deployer,
|
|
77
|
-
Main::interface().constructor(),
|
|
78
|
-
);
|
|
79
|
-
|
|
80
|
-
// Deploy without an initializer:
|
|
81
|
-
let contract_address = env.deploy("@__PACKAGE_NAME__/Main").without_initializer();
|
|
82
|
-
}
|
|
83
|
-
NOIR
|
|
84
|
-
|
|
85
|
-
sed -i "s/__PACKAGE_NAME__/${package_name}/g" test/src/lib.nr
|
|
86
|
-
|
|
87
|
-
# Create README
|
|
88
|
-
cat > README.md << REOF
|
|
89
|
-
# ${package_name}
|
|
90
|
-
|
|
91
|
-
An Aztec Noir contract project.
|
|
92
|
-
|
|
93
|
-
## Compile
|
|
94
|
-
|
|
95
|
-
\`\`\`bash
|
|
96
|
-
aztec compile
|
|
97
|
-
\`\`\`
|
|
98
|
-
|
|
99
|
-
This compiles the contract in \`contract/\` and outputs artifacts to \`target/\`.
|
|
100
|
-
|
|
101
|
-
## Test
|
|
102
|
-
|
|
103
|
-
\`\`\`bash
|
|
104
|
-
aztec test
|
|
105
|
-
\`\`\`
|
|
106
|
-
|
|
107
|
-
This runs the tests in \`test/\`.
|
|
108
|
-
|
|
109
|
-
## Generate TypeScript bindings
|
|
110
|
-
|
|
111
|
-
\`\`\`bash
|
|
112
|
-
aztec codegen target -o src/artifacts
|
|
113
|
-
\`\`\`
|
|
114
|
-
|
|
115
|
-
This generates TypeScript contract artifacts from the compiled output in \`target/\` into \`src/artifacts/\`.
|
|
116
|
-
REOF
|
|
117
|
-
|
|
118
|
-
# Create .gitignore
|
|
119
|
-
cat > .gitignore << 'GEOF'
|
|
120
|
-
target/
|
|
121
|
-
codegenCache.json
|
|
122
|
-
GEOF
|
|
123
|
-
|
|
124
|
-
echo "Created Aztec contract workspace with crates '${package_name}' and '${package_name}_test'"
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { fileURLToPath } from '@aztec/foundation/url';
|
|
2
|
-
|
|
3
|
-
import { readFileSync } from 'fs';
|
|
4
|
-
import { dirname, resolve } from 'path';
|
|
5
|
-
|
|
6
|
-
export const getCliVersion = () => {
|
|
7
|
-
const packageJsonPath = resolve(dirname(fileURLToPath(import.meta.url)), '../../package.json');
|
|
8
|
-
const cliVersion: string = JSON.parse(readFileSync(packageJsonPath).toString()).version;
|
|
9
|
-
|
|
10
|
-
// If the version is 0.1.0, this is a placeholder version and we are in a docker container; query release please for the latest version
|
|
11
|
-
if (cliVersion === '0.1.0') {
|
|
12
|
-
const releasePleasePath = resolve(
|
|
13
|
-
dirname(fileURLToPath(import.meta.url)),
|
|
14
|
-
'../../../../.release-please-manifest.json',
|
|
15
|
-
);
|
|
16
|
-
const releaseVersion = JSON.parse(readFileSync(releasePleasePath).toString())['.'];
|
|
17
|
-
return releaseVersion;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
return cliVersion;
|
|
21
|
-
};
|