Skip to content
This repository was archived by the owner on Mar 16, 2023. It is now read-only.

Commit fed09a1

Browse files
authored
Merge pull request #526 from AztecProtocol/feat/hot-fixes
feat(sdk): return signature as well as proof with returnproof flag
2 parents 9aa5691 + 6bbdb23 commit fed09a1

File tree

20 files changed

+86
-31
lines changed

20 files changed

+86
-31
lines changed

packages/extension/src/background/services/ApiService/Prove/JoinSplit.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ const getAccountMapping = async ({
197197
user: {
198198
account,
199199
error,
200-
},
200+
} = {},
201201
} = await query(request, userQuery(`
202202
address
203203
linkedPublicKey
@@ -208,6 +208,7 @@ const getAccountMapping = async ({
208208
}
209209
}));
210210

211+
211212
accounts.forEach((account) => {
212213
accountMapping[account.address] = account;
213214
});

packages/extension/src/background/services/ApiService/Prove/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,14 +73,14 @@ export default async function prove(query, connection) {
7373
data: {
7474
args,
7575
},
76+
sender,
7677
} = query;
7778
const {
7879
proofType,
79-
returnProof,
8080
} = args;
8181

8282
let returnData = {};
83-
if (!returnProof) {
83+
if (sender === 'WEB_CLIENT') {
8484
returnData = await triggerProofUi(query, connection);
8585
} else {
8686
switch (proofType) {

packages/extension/src/background/services/ApiService/Prove/responseDataKeys.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
const fetchOutputNotes = ({ proofData }) => {
1+
const fetchOutputNotes = ({
2+
proofData,
3+
proof,
4+
signature,
5+
signature2,
6+
}) => {
27
const {
38
outputNotes,
49
remainderNote,
@@ -18,16 +23,28 @@ const fetchOutputNotes = ({ proofData }) => {
1823
noteHash,
1924
value,
2025
})),
26+
proof,
27+
signature,
28+
signature2,
29+
2130
};
2231
};
2332

33+
const returnProof = ({ proof, signature, signature2 }) => ({
34+
proof,
35+
signature,
36+
signature2,
37+
});
38+
2439
export default {
2540
DEPOSIT_PROOF: [
2641
fetchOutputNotes,
42+
returnProof,
2743
],
2844
WITHDRAW_PROOF: [],
2945
TRANSFER_PROOF: [
3046
fetchOutputNotes,
47+
returnProof,
3148
],
3249
CREATE_NOTE_FROM_BALANCE_PROOF: [
3350
(data) => {

packages/extension/src/background/services/EventService/helpers/AssetsSyncManager/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ class SyncManager {
1414
constructor() {
1515
this.config = {
1616
syncInterval: 5000, // ms
17+
blocksPerRequest: 50, // ~ per 3 months (~6000 per day)
18+
precisionDelta: 10, //
19+
maxNumberOfAttempts: 5,
1720
};
1821
this.syncConfig = undefined;
1922
this.networks = new Map();

packages/extension/src/background/services/EventService/helpers/NotesSyncManager/factory.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class NotesSyncManagerFactory {
55
managersByNetworks = {};
66

77
config = {
8-
blocksPerRequest: 5307319, // ~ per 3 months (~6000 per day)
8+
blocksPerRequest: 100, // ~ per 3 months (~6000 per day)
99
precisionDelta: 10, //
1010
networkId: null,
1111
};

packages/extension/src/background/services/EventService/helpers/NotesSyncManager/index.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@ const infuraLimitError = {
1717
message: 'query returned more than 10000 results',
1818
};
1919

20-
const isInfuraLimitError = error => error && error.code === infuraLimitError.code;
20+
21+
const uriTooLong = {
22+
code: -32603,
23+
};
24+
// eslint-disable-next-line
25+
const isInfuraLimitError = error => error && error.code === infuraLimitError.code || error.code === uriTooLong.code;
2126

2227
const SYNCING_STATUS = {
2328
ACTIVE: 'ACTIVE',
@@ -30,7 +35,7 @@ const SYNCING_STATUS = {
3035
class SyncManager {
3136
constructor() {
3237
this.config = {
33-
blocksPerRequest: 540000, // ~ per 3 months (~6000 per day)
38+
blocksPerRequest: 6000 * 30, // ~ per 3 months (~6000 per day)
3439
precisionDelta: 10, //
3540
maxNumberOfAttempts: 5,
3641
networkId: null,
@@ -134,7 +139,7 @@ class SyncManager {
134139
lastSyncedBlock,
135140
assets,
136141
progressCallbacks,
137-
retriedNumber = 0,
142+
retriedNumber = 5,
138143
} = options;
139144

140145
const syncAddress = this.addresses.get(address);

packages/extension/src/background/services/EventService/helpers/NotesWatcher/index.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,13 @@ class Watcher {
242242

243243
return subscription;
244244
}
245+
246+
handleFetchError = (error) => {
247+
errorLog('Failed to sync CreateNote / UpdateMetadata / DestroyNote with web3.', error);
248+
if (process.env.NODE_ENV === 'development') {
249+
this.paused = true;
250+
}
251+
};
245252
}
246253

247254
export default Watcher;

packages/extension/src/background/services/EventService/utils/note/fetchNotes.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
import Web3 from 'web3';
12
import Web3Service from '~/helpers/Web3Service';
23
import {
34
ZkAsset,
45
} from '~/config/contracts';
56
import decodeNoteLogs from './helpers/decodeNoteLogs';
7+
import { getProviderUrl } from '~/utils/network';
68

79
export default async function fetchNotes({
810
owner,
@@ -16,7 +18,9 @@ export default async function fetchNotes({
1618
ZkAsset.events.updateNoteMetaData,
1719
],
1820
} = {}) {
19-
const { abi, getPastLogs } = Web3Service.eth;
21+
// TODO require network selection
22+
const provider = new Web3.providers.HttpProvider(getProviderUrl(Web3Service.networkId));
23+
const { abi, getPastLogs } = new Web3(provider).eth;
2024

2125
const eventsTopics = events
2226
.map(e => ZkAsset.config.abi.find(({ name, type }) => name === e && type === 'event'))

packages/extension/src/background/services/EventService/utils/note/subscription.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import Web3 from 'web3';
12
import Web3Service from '~/helpers/Web3Service';
23
import {
34
ZkAsset,
@@ -6,6 +7,7 @@ import {
67
errorLog,
78
} from '~/utils/log';
89
import decodeNoteLogs from './helpers/decodeNoteLogs';
10+
import { getProviderUrl } from '~/utils/network';
911

1012
const subscribe = async ({
1113
owner,
@@ -18,10 +20,8 @@ const subscribe = async ({
1820
return null;
1921
}
2022

21-
const {
22-
abi,
23-
subscribe: subscribeOn,
24-
} = Web3Service.eth;
23+
const provider = getProviderUrl(Web3Service.networkId, true);
24+
const { abi, subscribe: subscribeOn } = new Web3(provider).eth;
2525

2626
const eventsTopics = [
2727
ZkAsset.events.createNote,

packages/extension/src/background/tasks/acceptConnection.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
errorLog,
1515
} from '~/utils/log';
1616
import Connection from '../utils/connection';
17-
import migrateIndexedDB from './migrateIndexedDB';
17+
// import migrateIndexedDB from './migrateIndexedDB';
1818
import setupNetworkConfig from './setupNetworkConfig';
1919

2020
const resourceOrigin = getResourceUrl('origin');
@@ -36,7 +36,7 @@ export default function acceptConnection() {
3636

3737
if (clientProfile) {
3838
try {
39-
await migrateIndexedDB();
39+
// await migrateIndexedDB();
4040
networkConfig = await setupNetworkConfig(clientProfile);
4141
connection.initUi();
4242
} catch (e) {

packages/extension/src/client/apis/ZkAsset.js

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@ export default class ZkAsset {
255255
returnProof,
256256
sender,
257257
publicOwner,
258+
...rest
258259
} = {}) => {
259260
if (!this.linkedTokenAddress) {
260261
throw new ApiError('zkAsset.private', {
@@ -288,6 +289,7 @@ export default class ZkAsset {
288289
}
289290

290291
return {
292+
...rest,
291293
success,
292294
outputNotes,
293295
proof,
@@ -330,6 +332,7 @@ export default class ZkAsset {
330332
inputNoteHashes,
331333
returnProof,
332334
sender,
335+
...rest
333336
} = {}) => {
334337
if (!this.linkedTokenAddress) {
335338
throw new ApiError('zkAsset.private', {
@@ -367,6 +370,7 @@ export default class ZkAsset {
367370
}
368371

369372
return {
373+
...rest,
370374
success,
371375
proof,
372376
};
@@ -431,6 +435,7 @@ export default class ZkAsset {
431435
success,
432436
outputNotes,
433437
proofData,
438+
...rest
434439
} = await ConnectionService.query(
435440
'constructProof',
436441
{
@@ -447,17 +452,10 @@ export default class ZkAsset {
447452
},
448453
);
449454

450-
let proof;
451-
if (proofData) {
452-
proof = proofData
453-
? await recoverJoinSplitProof(proofData)
454-
: null;
455-
}
456-
457455
return {
456+
...rest,
458457
success,
459458
outputNotes,
460-
proof,
461459
};
462460
};
463461

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
export const version = 1;
1+
export const version = 2;
22
export const sdkSettingDbName = 'aztec-sdk';
33
export const networkDbPrefix = 'aztec_network';
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
export const infuraProjectId = '09c4eed231c840d5ace14ba5389a1a7c';
22

3-
export const infuraProviderUrlPattern = 'wss://{networkName}.infura.io/ws/v3/{projectId}';
3+
export const infuraHttpProviderUrlPattern = 'https://{networkName}.infura.io/v3/{projectId}';
4+
export const infuraWsProviderUrlPattern = 'wss://{networkName}.infura.io/ws/v3/{projectId}';
45

56
export const defaultProviderUrl = 'ws://localhost:8545';
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
export default {
2-
'0x6B175474E89094C44Da98b954EedeAC495271d0F': true,
2+
// '0x6B175474E89094C44Da98b954EedeAC495271d0F': true,
33
};

packages/extension/src/ui/pages/Send.jsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const Send = ({
2121
numberOfOutputNotes,
2222
inputNoteHashes,
2323
userAccess,
24+
returnProof,
2425
}) => {
2526
const fetchInitialData = async () => {
2627
const gsnConfig = await getGSNConfig();
@@ -31,7 +32,10 @@ const Send = ({
3132
const {
3233
address: currentAddress,
3334
} = currentAccount;
34-
const steps = isGSNAvailable ? sendSteps.gsn : sendSteps.metamask;
35+
let steps = isGSNAvailable ? sendSteps.gsn : sendSteps.metamask;
36+
if (returnProof) {
37+
steps = sendSteps.returnProof;
38+
}
3539
const sender = proxyContract;
3640

3741
const asset = await makeAsset(assetAddress);
@@ -77,13 +81,15 @@ Send.propTypes = {
7781
numberOfOutputNotes: PropTypes.number,
7882
inputNoteHashes: PropTypes.arrayOf(PropTypes.string),
7983
userAccess: PropTypes.arrayOf(PropTypes.string),
84+
returnProof: PropTypes.bool,
8085
};
8186

8287
Send.defaultProps = {
8388
numberOfInputNotes: emptyIntValue,
8489
numberOfOutputNotes: emptyIntValue,
8590
inputNoteHashes: [],
8691
userAccess: [],
92+
returnProof: false,
8793
};
8894

8995
export default Send;

packages/extension/src/ui/steps/createNoteFromBalance.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,10 @@ const stepSendViaGSN = {
8888
};
8989

9090
export default {
91+
returnProof: {
92+
stepApprove,
93+
stepSign,
94+
},
9195
gsn: [
9296
stepApprove,
9397
stepSign,

packages/extension/src/ui/steps/send.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,10 @@ const stepSendViaGSN = {
8888
};
8989

9090
export default {
91+
returnProof: [
92+
stepApprove,
93+
stepSignNotes,
94+
],
9195
gsn: [
9296
stepApprove,
9397
stepSignNotes,

packages/extension/src/ui/steps/withdraw.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,10 @@ const stepSendViaGSN = {
9393
};
9494

9595
export default {
96+
returnProof: [
97+
stepApprove,
98+
stepSignNotes,
99+
],
96100
gsn: [
97101
stepApprove,
98102
stepSignNotes,

packages/extension/src/utils/Web3Service.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ class Web3Service {
390390
method: gsnContract.methods[methodName],
391391
fromAddress: signingInfo.address,
392392
args,
393-
gasPrice: gasPrice ? gasPrice * 2 : 18000000000, // set gas price 100% higher than last few blocks median to ensure we get in the block
393+
gasPrice: gasPrice ? gasPrice * 1 : 18000000000, // set gas price 100% higher than last few blocks median to ensure we get in the block
394394
web3,
395395
});
396396
},

packages/extension/src/utils/network/getProviderUrl.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import networks from '~/config/networks';
22
import {
33
infuraProjectId,
4-
infuraProviderUrlPattern,
4+
infuraHttpProviderUrlPattern,
5+
infuraWsProviderUrlPattern,
56
defaultProviderUrl,
67
} from '~/config/provider';
78
import {
89
formatStrPattern,
910
} from '~/utils/format';
1011

11-
export default function getProviderUrl(networkId, projectId = infuraProjectId) {
12+
export default function getProviderUrl(networkId, ws = false, projectId = infuraProjectId) {
1213
const networkKey = Object.keys(networks)
1314
.find(name => networks[name].id === networkId);
1415
const network = networks[networkKey];
@@ -20,7 +21,7 @@ export default function getProviderUrl(networkId, projectId = infuraProjectId) {
2021
networkName,
2122
} = network;
2223

23-
return formatStrPattern(infuraProviderUrlPattern, {
24+
return formatStrPattern(ws ? infuraWsProviderUrlPattern : infuraHttpProviderUrlPattern, {
2425
networkName: networkName.toLowerCase(),
2526
projectId,
2627
});

0 commit comments

Comments
 (0)