Compare commits

..

1 Commits

Author SHA1 Message Date
49a5ba7a2d
Add BaseMultiTornadoService 2024-11-19 00:38:46 +00:00
5 changed files with 48 additions and 21 deletions

16
dist/index.js vendored
View File

@ -2484,10 +2484,16 @@ class BaseMultiTornadoService extends BaseEventsService {
events, events,
newEvents newEvents
}) { }) {
const instancesWithNewEvents = Object.keys(this.instances).filter( const instancesWithNewEvents = [
(i) => newEvents.find(({ instanceAddress, event }) => instanceAddress === i && event === "Deposit") ...new Set(
); newEvents.filter(({ event }) => event === "Deposit").map(({ instanceAddress }) => instanceAddress)
)
];
let tree; let tree;
const requiredTree = this.merkleTreeService?.Tornado?.target;
if (requiredTree && !instancesWithNewEvents.includes(requiredTree)) {
instancesWithNewEvents.push(requiredTree);
}
for (const instance of instancesWithNewEvents) { for (const instance of instancesWithNewEvents) {
const depositEvents = events.filter( const depositEvents = events.filter(
({ instanceAddress, event }) => instanceAddress === instance && event === "Deposit" ({ instanceAddress, event }) => instanceAddress === instance && event === "Deposit"
@ -2497,8 +2503,8 @@ class BaseMultiTornadoService extends BaseEventsService {
const errMsg = `Invalid deposit events for ${instance} wants ${depositEvents.length - 1} leafIndex have ${lastEvent.leafIndex}`; const errMsg = `Invalid deposit events for ${instance} wants ${depositEvents.length - 1} leafIndex have ${lastEvent.leafIndex}`;
throw new Error(errMsg); throw new Error(errMsg);
} }
if (this.merkleTreeService?.Tornado?.target === instance && !this.optionalTree) { if (requiredTree === instance && !this.optionalTree) {
tree = await this.merkleTreeService.verifyTree(depositEvents); tree = await this.merkleTreeService?.verifyTree(depositEvents);
} }
} }
return tree; return tree;

16
dist/index.mjs vendored
View File

@ -2462,10 +2462,16 @@ class BaseMultiTornadoService extends BaseEventsService {
events, events,
newEvents newEvents
}) { }) {
const instancesWithNewEvents = Object.keys(this.instances).filter( const instancesWithNewEvents = [
(i) => newEvents.find(({ instanceAddress, event }) => instanceAddress === i && event === "Deposit") ...new Set(
); newEvents.filter(({ event }) => event === "Deposit").map(({ instanceAddress }) => instanceAddress)
)
];
let tree; let tree;
const requiredTree = this.merkleTreeService?.Tornado?.target;
if (requiredTree && !instancesWithNewEvents.includes(requiredTree)) {
instancesWithNewEvents.push(requiredTree);
}
for (const instance of instancesWithNewEvents) { for (const instance of instancesWithNewEvents) {
const depositEvents = events.filter( const depositEvents = events.filter(
({ instanceAddress, event }) => instanceAddress === instance && event === "Deposit" ({ instanceAddress, event }) => instanceAddress === instance && event === "Deposit"
@ -2475,8 +2481,8 @@ class BaseMultiTornadoService extends BaseEventsService {
const errMsg = `Invalid deposit events for ${instance} wants ${depositEvents.length - 1} leafIndex have ${lastEvent.leafIndex}`; const errMsg = `Invalid deposit events for ${instance} wants ${depositEvents.length - 1} leafIndex have ${lastEvent.leafIndex}`;
throw new Error(errMsg); throw new Error(errMsg);
} }
if (this.merkleTreeService?.Tornado?.target === instance && !this.optionalTree) { if (requiredTree === instance && !this.optionalTree) {
tree = await this.merkleTreeService.verifyTree(depositEvents); tree = await this.merkleTreeService?.verifyTree(depositEvents);
} }
} }
return tree; return tree;

16
dist/tornado.umd.js vendored
View File

@ -90754,10 +90754,16 @@ class BaseMultiTornadoService extends BaseEventsService {
events, events,
newEvents newEvents
}) { }) {
const instancesWithNewEvents = Object.keys(this.instances).filter( const instancesWithNewEvents = [
(i) => newEvents.find(({ instanceAddress, event }) => instanceAddress === i && event === "Deposit") ...new Set(
); newEvents.filter(({ event }) => event === "Deposit").map(({ instanceAddress }) => instanceAddress)
)
];
let tree; let tree;
const requiredTree = this.merkleTreeService?.Tornado?.target;
if (requiredTree && !instancesWithNewEvents.includes(requiredTree)) {
instancesWithNewEvents.push(requiredTree);
}
for (const instance of instancesWithNewEvents) { for (const instance of instancesWithNewEvents) {
const depositEvents = events.filter( const depositEvents = events.filter(
({ instanceAddress, event }) => instanceAddress === instance && event === "Deposit" ({ instanceAddress, event }) => instanceAddress === instance && event === "Deposit"
@ -90767,8 +90773,8 @@ class BaseMultiTornadoService extends BaseEventsService {
const errMsg = `Invalid deposit events for ${instance} wants ${depositEvents.length - 1} leafIndex have ${lastEvent.leafIndex}`; const errMsg = `Invalid deposit events for ${instance} wants ${depositEvents.length - 1} leafIndex have ${lastEvent.leafIndex}`;
throw new Error(errMsg); throw new Error(errMsg);
} }
if (this.merkleTreeService?.Tornado?.target === instance && !this.optionalTree) { if (requiredTree === instance && !this.optionalTree) {
tree = await this.merkleTreeService.verifyTree(depositEvents); tree = await this.merkleTreeService?.verifyTree(depositEvents);
} }
} }
return tree; return tree;

File diff suppressed because one or more lines are too long

View File

@ -566,12 +566,21 @@ export class BaseMultiTornadoService extends BaseEventsService<MultiDepositEvent
}: BaseEvents<MultiDepositEvents | MultiWithdrawalsEvents> & { }: BaseEvents<MultiDepositEvents | MultiWithdrawalsEvents> & {
newEvents: (MultiDepositEvents | MultiWithdrawalsEvents)[]; newEvents: (MultiDepositEvents | MultiWithdrawalsEvents)[];
}) { }) {
const instancesWithNewEvents = Object.keys(this.instances).filter((i) => const instancesWithNewEvents = [
newEvents.find(({ instanceAddress, event }) => instanceAddress === i && event === 'Deposit'), ...new Set(
); newEvents.filter(({ event }) => event === 'Deposit').map(({ instanceAddress }) => instanceAddress),
),
];
let tree: S | undefined; let tree: S | undefined;
const requiredTree = this.merkleTreeService?.Tornado?.target as string | undefined;
// Audit and create deposit tree
if (requiredTree && !instancesWithNewEvents.includes(requiredTree)) {
instancesWithNewEvents.push(requiredTree);
}
for (const instance of instancesWithNewEvents) { for (const instance of instancesWithNewEvents) {
const depositEvents = events.filter( const depositEvents = events.filter(
({ instanceAddress, event }) => instanceAddress === instance && event === 'Deposit', ({ instanceAddress, event }) => instanceAddress === instance && event === 'Deposit',
@ -584,8 +593,8 @@ export class BaseMultiTornadoService extends BaseEventsService<MultiDepositEvent
throw new Error(errMsg); throw new Error(errMsg);
} }
if (this.merkleTreeService?.Tornado?.target === instance && !this.optionalTree) { if (requiredTree === instance && !this.optionalTree) {
tree = (await this.merkleTreeService.verifyTree(depositEvents)) as S; tree = (await this.merkleTreeService?.verifyTree(depositEvents)) as S;
} }
} }