@aztec/accounts 0.55.1 → 0.57.0
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/artifacts/EcdsaKAccount.json +1 -1
- package/artifacts/EcdsaRAccount.json +1 -1
- package/artifacts/SchnorrAccount.json +1 -1
- package/artifacts/SchnorrSingleKeyAccount.json +1 -1
- package/dest/testing/configuration.d.ts.map +1 -1
- package/dest/testing/configuration.js +16 -13
- package/dest/testing/create_account.d.ts.map +1 -1
- package/dest/testing/create_account.js +9 -13
- package/package.json +11 -8
- package/src/testing/configuration.ts +15 -13
- package/src/testing/create_account.ts +12 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../src/testing/configuration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../src/testing/configuration.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,0BAA0B,EAAoB,MAAM,wBAAwB,CAAC;AAC3F,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C,eAAO,MAAM,wBAAwB,MAIpC,CAAC;AAEF,eAAO,MAAM,4BAA4B,gCAExC,CAAC;AAEF,eAAO,MAAM,yBAAyB,gCAA+B,CAAC;AAEtE,eAAO,MAAM,0BAA0B,MAA8B,CAAC;AAEtE;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAM7F;AAED;;;;GAIG;AACH,wBAAsB,8BAA8B,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAgBpG;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,GAAG;;;KAiCvD"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { generatePublicKey } from '@aztec/aztec.js';
|
|
2
|
+
import { registerContractClass } from '@aztec/aztec.js/deployment';
|
|
3
|
+
import { DefaultMultiCallEntrypoint } from '@aztec/aztec.js/entrypoint';
|
|
4
|
+
import { SignerlessWallet } from '@aztec/aztec.js/wallet';
|
|
2
5
|
import { deriveMasterIncomingViewingSecretKey, deriveSigningKey } from '@aztec/circuits.js/keys';
|
|
3
6
|
import { Fr } from '@aztec/foundation/fields';
|
|
4
|
-
import { getSchnorrAccount } from '../schnorr/index.js';
|
|
7
|
+
import { SchnorrAccountContractArtifact, getSchnorrAccount } from '../schnorr/index.js';
|
|
5
8
|
export const INITIAL_TEST_SECRET_KEYS = [
|
|
6
9
|
Fr.fromString('2153536ff6628eee01cf4024889ff977a18d9fa61d0e414422f7681cf085c281'),
|
|
7
10
|
Fr.fromString('aebd1b4be76efa44f5ee655c20bf9ea60f7ae44b9a7fd1fd9f189c7a0b0cdae'),
|
|
@@ -50,26 +53,26 @@ export async function deployInitialTestAccounts(pxe) {
|
|
|
50
53
|
secretKey,
|
|
51
54
|
};
|
|
52
55
|
});
|
|
56
|
+
// Register contract class to avoid duplicate nullifier errors
|
|
57
|
+
const { l1ChainId: chainId, protocolVersion } = await pxe.getNodeInfo();
|
|
58
|
+
const deployWallet = new SignerlessWallet(pxe, new DefaultMultiCallEntrypoint(chainId, protocolVersion));
|
|
59
|
+
await (await registerContractClass(deployWallet, SchnorrAccountContractArtifact)).send().wait();
|
|
53
60
|
// Attempt to get as much parallelism as possible
|
|
54
|
-
const
|
|
61
|
+
const deployTxs = await Promise.all(accounts.map(async (x) => {
|
|
55
62
|
const deployMethod = await x.account.getDeployMethod();
|
|
56
|
-
await deployMethod.
|
|
63
|
+
const tx = await deployMethod.prove({
|
|
57
64
|
contractAddressSalt: x.account.salt,
|
|
58
|
-
skipClassRegistration: true,
|
|
59
|
-
skipPublicDeployment: true,
|
|
60
65
|
universalDeploy: true,
|
|
61
66
|
});
|
|
62
|
-
|
|
63
|
-
return deployMethod;
|
|
67
|
+
return tx;
|
|
64
68
|
}));
|
|
65
69
|
// Send tx together to try and get them in the same rollup
|
|
66
|
-
const sentTxs =
|
|
67
|
-
return
|
|
70
|
+
const sentTxs = deployTxs.map(tx => {
|
|
71
|
+
return tx.send();
|
|
68
72
|
});
|
|
69
|
-
await Promise.all(sentTxs.map(
|
|
70
|
-
|
|
71
|
-
return tx.wait({ wallet });
|
|
73
|
+
await Promise.all(sentTxs.map(tx => {
|
|
74
|
+
return tx.wait();
|
|
72
75
|
}));
|
|
73
76
|
return accounts;
|
|
74
77
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL2NvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEUsT0FBTyxFQUFtQyxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTNGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxFQUFFLENBQUMsVUFBVSxDQUFDLGtFQUFrRSxDQUFDO0lBQ2pGLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUVBQWlFLENBQUM7SUFDaEYsRUFBRSxDQUFDLFVBQVUsQ0FBQyxrRUFBa0UsQ0FBQztDQUNsRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsd0JBQXdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQ25GLG9DQUFvQyxDQUFDLFNBQVMsQ0FBQyxDQUNoRCxDQUFDO0FBQ0Ysa0hBQWtIO0FBQ2xILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLDRCQUE0QixDQUFDO0FBRXRFLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV0RTs7OztH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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create_account.d.ts","sourceRoot":"","sources":["../../src/testing/create_account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,EAAE,EAAoB,MAAM,oBAAoB,CAAC;AAI1D;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAI3E;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,GAAG,EACR,gBAAgB,SAAI,EACpB,OAAO,GAAE,EAAE,EAAO,EAClB,QAAQ,GAAE,QAA4B,GACrC,OAAO,CAAC,0BAA0B,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"create_account.d.ts","sourceRoot":"","sources":["../../src/testing/create_account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,EAAE,EAAoB,MAAM,oBAAoB,CAAC;AAI1D;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAI3E;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,GAAG,EACR,gBAAgB,SAAI,EACpB,OAAO,GAAE,EAAE,EAAO,EAClB,QAAQ,GAAE,QAA4B,GACrC,OAAO,CAAC,0BAA0B,EAAE,CAAC,CA0BvC"}
|
|
@@ -19,7 +19,6 @@ export function createAccount(pxe) {
|
|
|
19
19
|
* @returns The created account wallets.
|
|
20
20
|
*/
|
|
21
21
|
export async function createAccounts(pxe, numberOfAccounts = 1, secrets = [], waitOpts = { interval: 0.1 }) {
|
|
22
|
-
const accounts = [];
|
|
23
22
|
if (secrets.length == 0) {
|
|
24
23
|
secrets = Array.from({ length: numberOfAccounts }, () => Fr.random());
|
|
25
24
|
}
|
|
@@ -27,23 +26,20 @@ export async function createAccounts(pxe, numberOfAccounts = 1, secrets = [], wa
|
|
|
27
26
|
throw new Error('Secrets array must be empty or have the same length as the number of accounts');
|
|
28
27
|
}
|
|
29
28
|
// Prepare deployments
|
|
30
|
-
|
|
29
|
+
const accountsAndDeployments = await Promise.all(secrets.map(async (secret) => {
|
|
31
30
|
const signingKey = deriveSigningKey(secret);
|
|
32
31
|
const account = getSchnorrAccount(pxe, secret, signingKey);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
// accounts being deployed in the same block because it makes the deploy() method basically instant.
|
|
36
|
-
await account.getDeployMethod().then(d => d.prove({
|
|
32
|
+
const deployMethod = await account.getDeployMethod();
|
|
33
|
+
const provenTx = await deployMethod.prove({
|
|
37
34
|
contractAddressSalt: account.salt,
|
|
38
35
|
skipClassRegistration: true,
|
|
39
36
|
skipPublicDeployment: true,
|
|
40
37
|
universalDeploy: true,
|
|
41
|
-
})
|
|
42
|
-
|
|
43
|
-
}
|
|
38
|
+
});
|
|
39
|
+
return { account, provenTx };
|
|
40
|
+
}));
|
|
44
41
|
// Send them and await them to be mined
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return Promise.all(accounts.map(account => account.getWallet()));
|
|
42
|
+
await Promise.all(accountsAndDeployments.map(({ provenTx }) => provenTx.send().wait(waitOpts)));
|
|
43
|
+
return Promise.all(accountsAndDeployments.map(({ account }) => account.getWallet()));
|
|
48
44
|
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX2FjY291bnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9jcmVhdGVfYWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBUTtJQUNwQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDOUIsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0MsT0FBTyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ25FLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQ2xDLEdBQVEsRUFDUixnQkFBZ0IsR0FBRyxDQUFDLEVBQ3BCLFVBQWdCLEVBQUUsRUFDbEIsV0FBcUIsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO0lBRXRDLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN4QixPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7U0FBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztRQUNyRSxNQUFNLElBQUksS0FBSyxDQUFDLCtFQUErRSxDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixNQUFNLHNCQUFzQixHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUMsTUFBTSxFQUFDLEVBQUU7UUFDekIsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMzRCxNQUFNLFlBQVksR0FBRyxNQUFNLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNyRCxNQUFNLFFBQVEsR0FBRyxNQUFNLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDeEMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDakMscUJBQXFCLEVBQUUsSUFBSTtZQUMzQixvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLGVBQWUsRUFBRSxJQUFJO1NBQ3RCLENBQUMsQ0FBQztRQUNILE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUVGLHVDQUF1QztJQUN2QyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkYsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@aztec/accounts",
|
|
3
3
|
"homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/yarn-project/accounts",
|
|
4
4
|
"description": "Implementation of sample account contracts for Aztec Network",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.57.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"exports": {
|
|
8
8
|
"./defaults": "./dest/defaults/index.js",
|
|
@@ -52,6 +52,9 @@
|
|
|
52
52
|
"parser": {
|
|
53
53
|
"syntax": "typescript",
|
|
54
54
|
"decorators": true
|
|
55
|
+
},
|
|
56
|
+
"transform": {
|
|
57
|
+
"decoratorVersion": "2022-03"
|
|
55
58
|
}
|
|
56
59
|
}
|
|
57
60
|
}
|
|
@@ -70,13 +73,13 @@
|
|
|
70
73
|
]
|
|
71
74
|
},
|
|
72
75
|
"dependencies": {
|
|
73
|
-
"@aztec/aztec.js": "0.
|
|
74
|
-
"@aztec/circuit-types": "0.
|
|
75
|
-
"@aztec/circuits.js": "0.
|
|
76
|
-
"@aztec/entrypoints": "0.
|
|
77
|
-
"@aztec/ethereum": "0.
|
|
78
|
-
"@aztec/foundation": "0.
|
|
79
|
-
"@aztec/types": "0.
|
|
76
|
+
"@aztec/aztec.js": "0.57.0",
|
|
77
|
+
"@aztec/circuit-types": "0.57.0",
|
|
78
|
+
"@aztec/circuits.js": "0.57.0",
|
|
79
|
+
"@aztec/entrypoints": "0.57.0",
|
|
80
|
+
"@aztec/ethereum": "0.57.0",
|
|
81
|
+
"@aztec/foundation": "0.57.0",
|
|
82
|
+
"@aztec/types": "0.57.0",
|
|
80
83
|
"tslib": "^2.4.0"
|
|
81
84
|
},
|
|
82
85
|
"devDependencies": {
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { generatePublicKey } from '@aztec/aztec.js';
|
|
2
|
-
import {
|
|
2
|
+
import { registerContractClass } from '@aztec/aztec.js/deployment';
|
|
3
|
+
import { DefaultMultiCallEntrypoint } from '@aztec/aztec.js/entrypoint';
|
|
4
|
+
import { type AccountWalletWithSecretKey, SignerlessWallet } from '@aztec/aztec.js/wallet';
|
|
3
5
|
import { type PXE } from '@aztec/circuit-types';
|
|
4
6
|
import { deriveMasterIncomingViewingSecretKey, deriveSigningKey } from '@aztec/circuits.js/keys';
|
|
5
7
|
import { Fr } from '@aztec/foundation/fields';
|
|
6
8
|
|
|
7
|
-
import { getSchnorrAccount } from '../schnorr/index.js';
|
|
9
|
+
import { SchnorrAccountContractArtifact, getSchnorrAccount } from '../schnorr/index.js';
|
|
8
10
|
|
|
9
11
|
export const INITIAL_TEST_SECRET_KEYS = [
|
|
10
12
|
Fr.fromString('2153536ff6628eee01cf4024889ff977a18d9fa61d0e414422f7681cf085c281'),
|
|
@@ -69,28 +71,28 @@ export async function deployInitialTestAccounts(pxe: PXE) {
|
|
|
69
71
|
secretKey,
|
|
70
72
|
};
|
|
71
73
|
});
|
|
74
|
+
// Register contract class to avoid duplicate nullifier errors
|
|
75
|
+
const { l1ChainId: chainId, protocolVersion } = await pxe.getNodeInfo();
|
|
76
|
+
const deployWallet = new SignerlessWallet(pxe, new DefaultMultiCallEntrypoint(chainId, protocolVersion));
|
|
77
|
+
await (await registerContractClass(deployWallet, SchnorrAccountContractArtifact)).send().wait();
|
|
72
78
|
// Attempt to get as much parallelism as possible
|
|
73
|
-
const
|
|
79
|
+
const deployTxs = await Promise.all(
|
|
74
80
|
accounts.map(async x => {
|
|
75
81
|
const deployMethod = await x.account.getDeployMethod();
|
|
76
|
-
await deployMethod.
|
|
82
|
+
const tx = await deployMethod.prove({
|
|
77
83
|
contractAddressSalt: x.account.salt,
|
|
78
|
-
skipClassRegistration: true,
|
|
79
|
-
skipPublicDeployment: true,
|
|
80
84
|
universalDeploy: true,
|
|
81
85
|
});
|
|
82
|
-
|
|
83
|
-
return deployMethod;
|
|
86
|
+
return tx;
|
|
84
87
|
}),
|
|
85
88
|
);
|
|
86
89
|
// Send tx together to try and get them in the same rollup
|
|
87
|
-
const sentTxs =
|
|
88
|
-
return
|
|
90
|
+
const sentTxs = deployTxs.map(tx => {
|
|
91
|
+
return tx.send();
|
|
89
92
|
});
|
|
90
93
|
await Promise.all(
|
|
91
|
-
sentTxs.map(
|
|
92
|
-
|
|
93
|
-
return tx.wait({ wallet });
|
|
94
|
+
sentTxs.map(tx => {
|
|
95
|
+
return tx.wait();
|
|
94
96
|
}),
|
|
95
97
|
);
|
|
96
98
|
return accounts;
|
|
@@ -30,8 +30,6 @@ export async function createAccounts(
|
|
|
30
30
|
secrets: Fr[] = [],
|
|
31
31
|
waitOpts: WaitOpts = { interval: 0.1 },
|
|
32
32
|
): Promise<AccountWalletWithSecretKey[]> {
|
|
33
|
-
const accounts = [];
|
|
34
|
-
|
|
35
33
|
if (secrets.length == 0) {
|
|
36
34
|
secrets = Array.from({ length: numberOfAccounts }, () => Fr.random());
|
|
37
35
|
} else if (secrets.length > 0 && secrets.length !== numberOfAccounts) {
|
|
@@ -39,25 +37,22 @@ export async function createAccounts(
|
|
|
39
37
|
}
|
|
40
38
|
|
|
41
39
|
// Prepare deployments
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
await account.getDeployMethod().then(d =>
|
|
49
|
-
d.prove({
|
|
40
|
+
const accountsAndDeployments = await Promise.all(
|
|
41
|
+
secrets.map(async secret => {
|
|
42
|
+
const signingKey = deriveSigningKey(secret);
|
|
43
|
+
const account = getSchnorrAccount(pxe, secret, signingKey);
|
|
44
|
+
const deployMethod = await account.getDeployMethod();
|
|
45
|
+
const provenTx = await deployMethod.prove({
|
|
50
46
|
contractAddressSalt: account.salt,
|
|
51
47
|
skipClassRegistration: true,
|
|
52
48
|
skipPublicDeployment: true,
|
|
53
49
|
universalDeploy: true,
|
|
54
|
-
})
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
50
|
+
});
|
|
51
|
+
return { account, provenTx };
|
|
52
|
+
}),
|
|
53
|
+
);
|
|
58
54
|
|
|
59
55
|
// Send them and await them to be mined
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
return Promise.all(accounts.map(account => account.getWallet()));
|
|
56
|
+
await Promise.all(accountsAndDeployments.map(({ provenTx }) => provenTx.send().wait(waitOpts)));
|
|
57
|
+
return Promise.all(accountsAndDeployments.map(({ account }) => account.getWallet()));
|
|
63
58
|
}
|