@proto-kit/protocol 0.1.1-develop.2024 → 0.1.1-develop.2137
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/dist/settlement/ContractArgsRegistry.d.ts +1 -1
- package/dist/settlement/ContractArgsRegistry.d.ts.map +1 -1
- package/dist/settlement/ContractArgsRegistry.js +6 -1
- package/dist/settlement/ContractArgsRegistry.js.map +1 -1
- package/dist/settlement/contracts/BridgeContract.d.ts +2 -7
- package/dist/settlement/contracts/BridgeContract.d.ts.map +1 -1
- package/dist/settlement/contracts/BridgeContract.js +28 -27
- package/dist/settlement/contracts/BridgeContract.js.map +1 -1
- package/dist/settlement/contracts/TokenBridgeTree.d.ts +2 -2
- package/dist/settlement/contracts/TokenBridgeTree.d.ts.map +1 -1
- package/dist/settlement/contracts/TokenBridgeTree.js +4 -4
- package/dist/settlement/contracts/TokenBridgeTree.js.map +1 -1
- package/dist/settlement/messages/OutgoingMessageArgument.d.ts +109 -15
- package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -1
- package/dist/settlement/messages/OutgoingMessageArgument.js +3 -1
- package/dist/settlement/messages/OutgoingMessageArgument.js.map +1 -1
- package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts +4 -1
- package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts.map +1 -1
- package/dist/settlement/modularity/OutgoingMessageProcessor.js +11 -2
- package/dist/settlement/modularity/OutgoingMessageProcessor.js.map +1 -1
- package/dist/state/WitnessBlockContext.js +12 -6
- package/dist/state/WitnessBlockContext.js.map +1 -1
- package/package.json +2 -2
- package/src/settlement/ContractArgsRegistry.ts +6 -2
- package/src/settlement/contracts/BridgeContract.ts +31 -33
- package/src/settlement/contracts/TokenBridgeTree.ts +17 -4
- package/src/settlement/messages/OutgoingMessageArgument.ts +10 -1
- package/src/settlement/modularity/OutgoingMessageProcessor.ts +15 -2
- package/src/state/WitnessBlockContext.ts +10 -6
|
@@ -7,7 +7,7 @@ export type NaiveObjectSchema<Obj> = {
|
|
|
7
7
|
export declare class ContractArgsRegistry {
|
|
8
8
|
args: Record<string, any>;
|
|
9
9
|
addArgs<Type>(name: string, addition: Partial<Type>): void;
|
|
10
|
-
resetArgs(name
|
|
10
|
+
resetArgs(name?: string): void;
|
|
11
11
|
getArgs<Type>(name: string, schema: NaiveObjectSchema<Type>): Type;
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=ContractArgsRegistry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContractArgsRegistry.d.ts","sourceRoot":"","sources":["../../src/settlement/ContractArgsRegistry.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,4BAA4B,CAAC,IAAI;IAChD,qBAAqB,IAAI,IAAI,CAAC;CAC/B;AAED,MAAM,MAAM,iBAAiB,CAAC,GAAG,IAAI;KAClC,GAAG,IAAI,MAAM,GAAG,GAAG,SAAS,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU;CACzE,CAAC;AAcF,qBAEa,oBAAoB;IAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAExB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC;IAMnD,SAAS,CAAC,IAAI,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"ContractArgsRegistry.d.ts","sourceRoot":"","sources":["../../src/settlement/ContractArgsRegistry.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,4BAA4B,CAAC,IAAI;IAChD,qBAAqB,IAAI,IAAI,CAAC;CAC/B;AAED,MAAM,MAAM,iBAAiB,CAAC,GAAG,IAAI;KAClC,GAAG,IAAI,MAAM,GAAG,GAAG,SAAS,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU;CACzE,CAAC;AAcF,qBAEa,oBAAoB;IAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAExB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC;IAMnD,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM;IAQvB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,GAAG,IAAI;CAqB1E"}
|
|
@@ -27,7 +27,12 @@ export let ContractArgsRegistry = class ContractArgsRegistry {
|
|
|
27
27
|
this.args[name] = merge(args, addition);
|
|
28
28
|
}
|
|
29
29
|
resetArgs(name) {
|
|
30
|
-
|
|
30
|
+
if (name !== undefined) {
|
|
31
|
+
delete this.args[name];
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this.args = {};
|
|
35
|
+
}
|
|
31
36
|
}
|
|
32
37
|
getArgs(name, schema) {
|
|
33
38
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContractArgsRegistry.js","sourceRoot":"","sources":["../../src/settlement/ContractArgsRegistry.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,MAAM,cAAc,CAAC;AAUjC;;;;;;;;;;EAUE;AAIK,WAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAA1B;QACL,SAAI,GAAwB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ContractArgsRegistry.js","sourceRoot":"","sources":["../../src/settlement/ContractArgsRegistry.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,MAAM,cAAc,CAAC;AAUjC;;;;;;;;;;EAUE;AAIK,WAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAA1B;QACL,SAAI,GAAwB,EAAE,CAAC;IAqCjC,CAAC;IAnCQ,OAAO,CAAO,IAAY,EAAE,QAAuB;QACxD,mEAAmE;QACnE,MAAM,IAAI,GAAkB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAEM,SAAS,CAAC,IAAa;QAC5B,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxB;aAAM;YACL,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;SAChB;IACH,CAAC;IAEM,OAAO,CAAO,IAAY,EAAE,MAA+B;QAChE,mEAAmE;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAEnC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAA0B,MAAM,CAAC,CAAC,MAAM,CACpE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;YACd,0DAA0D;YAC1D,OAAO,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;QACxD,CAAC,CACF,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YAChD,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,qBAAqB,WAAW,cAAc,CACxE,CAAC;SACH;aAAM;YACL,yEAAyE;YACzE,OAAO,IAAY,CAAC;SACrB;IACH,CAAC;CACF,CAAA;AAtCY,oBAAoB;IAFhC,UAAU,EAAE;IACZ,SAAS,EAAE;GACC,oBAAoB,CAsChC"}
|
|
@@ -67,13 +67,8 @@ declare const OutgoingMessageKey_base: (new (value: {
|
|
|
67
67
|
};
|
|
68
68
|
export declare class OutgoingMessageKey extends OutgoingMessageKey_base {
|
|
69
69
|
}
|
|
70
|
-
export declare class BridgeContractContext {
|
|
71
|
-
data: {
|
|
72
|
-
messageInputs: any[][];
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
70
|
export interface BridgeContractArgs {
|
|
76
|
-
SettlementContract: TypedClass<BridgingSettlementContractType
|
|
71
|
+
SettlementContract: TypedClass<Pick<BridgingSettlementContractType, "assertStateRoot">> & typeof SmartContract;
|
|
77
72
|
messageProcessors: OutgoingMessageProcessor<unknown>[];
|
|
78
73
|
batchSize?: number;
|
|
79
74
|
}
|
|
@@ -95,7 +90,7 @@ export declare abstract class BridgeContractBase extends TokenContract implement
|
|
|
95
90
|
updateStateRootBase(root: Field): Promise<void>;
|
|
96
91
|
private batchSize;
|
|
97
92
|
private executeProcessors;
|
|
98
|
-
processMessage(
|
|
93
|
+
processMessage(args: OutgoingMessageArgument, isDummy: Bool): {
|
|
99
94
|
messageType: import("o1js/dist/node/lib/provable/field").Field;
|
|
100
95
|
result: {
|
|
101
96
|
accountUpdates: AccountUpdate[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BridgeContract.d.ts","sourceRoot":"","sources":["../../../src/settlement/contracts/BridgeContract.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,IAAI,
|
|
1
|
+
{"version":3,"file":"BridgeContract.d.ts","sourceRoot":"","sources":["../../../src/settlement/contracts/BridgeContract.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,9 +7,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
|
-
import { AccountUpdate, Bool,
|
|
10
|
+
import { AccountUpdate, Bool, Field, method, Poseidon, Provable, PublicKey, State, state, Struct, TokenContract, TokenId, } from "o1js";
|
|
11
11
|
import { noop, range } from "@proto-kit/common";
|
|
12
|
-
import { container
|
|
12
|
+
import { container } from "tsyringe";
|
|
13
13
|
import { OUTGOING_MESSAGE_BATCH_SIZE, OutgoingMessageArgumentBatch, createMessageStruct, } from "../messages/OutgoingMessageArgument";
|
|
14
14
|
import { Path } from "../../model/Path";
|
|
15
15
|
import { PROTOKIT_FIELD_PREFIXES } from "../../hashing/protokit-prefixes";
|
|
@@ -20,15 +20,6 @@ export class OutgoingMessageKey extends Struct({
|
|
|
20
20
|
tokenId: Field,
|
|
21
21
|
}) {
|
|
22
22
|
}
|
|
23
|
-
export let BridgeContractContext = class BridgeContractContext {
|
|
24
|
-
constructor() {
|
|
25
|
-
this.data = { messageInputs: [] };
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
BridgeContractContext = __decorate([
|
|
29
|
-
injectable(),
|
|
30
|
-
singleton()
|
|
31
|
-
], BridgeContractContext);
|
|
32
23
|
export const BridgeContractArgsSchema = {
|
|
33
24
|
batchSize: "Optional",
|
|
34
25
|
SettlementContract: "Required",
|
|
@@ -90,32 +81,42 @@ export class BridgeContractBase extends TokenContract {
|
|
|
90
81
|
batchSize() {
|
|
91
82
|
return (this.getInitializationArgs().batchSize ?? OUTGOING_MESSAGE_BATCH_SIZE);
|
|
92
83
|
}
|
|
93
|
-
executeProcessors(
|
|
84
|
+
executeProcessors(args) {
|
|
94
85
|
const { messageProcessors } = this.getInitializationArgs();
|
|
95
86
|
return messageProcessors.map((processor, j) => {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
87
|
+
const messageType = processor.getMessageType();
|
|
88
|
+
// Create the message struct from unconstrained message argument Field[]
|
|
89
|
+
const value = Provable.witness(processor.type, () => {
|
|
90
|
+
if (args.messageType.toString() === messageType.toString()) {
|
|
91
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
92
|
+
const fieldData = args.data.get();
|
|
93
|
+
return processor.type.fromFields(fieldData);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
return processor.dummy();
|
|
97
|
+
}
|
|
99
98
|
});
|
|
100
99
|
const MessageType = createMessageStruct(processor.type);
|
|
101
100
|
const message = new MessageType({
|
|
102
|
-
messageType
|
|
101
|
+
messageType,
|
|
103
102
|
value,
|
|
104
103
|
});
|
|
104
|
+
const result = processor.processMessage(value, {
|
|
105
|
+
bridgeContract: {
|
|
106
|
+
publicKey: this.address,
|
|
107
|
+
tokenId: this.tokenId,
|
|
108
|
+
},
|
|
109
|
+
});
|
|
105
110
|
return {
|
|
106
|
-
messageType
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
publicKey: this.address,
|
|
110
|
-
tokenId: this.tokenId,
|
|
111
|
-
},
|
|
112
|
-
}),
|
|
111
|
+
// messageType is authenticated via the hash, which is checked again
|
|
112
|
+
messageType,
|
|
113
|
+
result,
|
|
113
114
|
hash: Poseidon.hash(MessageType.toFields(message)),
|
|
114
115
|
};
|
|
115
116
|
});
|
|
116
117
|
}
|
|
117
|
-
processMessage(
|
|
118
|
-
const results = this.executeProcessors(
|
|
118
|
+
processMessage(args, isDummy) {
|
|
119
|
+
const results = this.executeProcessors(args);
|
|
119
120
|
const maxAccountUpdates = Math.max(0, ...results.map(({ result: { accountUpdates } }) => accountUpdates.length));
|
|
120
121
|
const AccountUpdateArray = Provable.Array(AccountUpdate, maxAccountUpdates);
|
|
121
122
|
const dummyMessageType = PROTOKIT_FIELD_PREFIXES.OUTGOING_MESSAGE_DUMMY_TYPE;
|
|
@@ -170,7 +171,7 @@ export class BridgeContractBase extends TokenContract {
|
|
|
170
171
|
for (let i = 0; i < this.batchSize(); i++) {
|
|
171
172
|
const args = batch.arguments[i];
|
|
172
173
|
const isDummy = batch.isDummys[i];
|
|
173
|
-
const message = this.processMessage(
|
|
174
|
+
const message = this.processMessage(args, isDummy);
|
|
174
175
|
// Check witness
|
|
175
176
|
const path = Path.fromKey(PROTOKIT_FIELD_PREFIXES.OUTGOING_MESSAGE_BASE_PATH, OutgoingMessageKey, {
|
|
176
177
|
index: counter,
|
|
@@ -192,7 +193,7 @@ export class BridgeContractBase extends TokenContract {
|
|
|
192
193
|
const isNew = accountUpdate.account.isNew.getAndRequireEquals();
|
|
193
194
|
return Provable.if(isNew, Field(1), Field(0));
|
|
194
195
|
})
|
|
195
|
-
.reduce((a, b) => a.add(b));
|
|
196
|
+
.reduce((a, b) => a.add(b), Field(0));
|
|
196
197
|
accountCreationFeePaid = accountCreationFeePaid.add(newAccounts);
|
|
197
198
|
}
|
|
198
199
|
this.outgoingMessageCursor.set(counter);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BridgeContract.js","sourceRoot":"","sources":["../../../src/settlement/contracts/BridgeContract.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,aAAa,EACb,IAAI,EACJ,
|
|
1
|
+
{"version":3,"file":"BridgeContract.js","sourceRoot":"","sources":["../../../src/settlement/contracts/BridgeContract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Field, PublicKey, SmartContract } from "o1js";
|
|
1
|
+
import { Field, PublicKey, SmartContract, UInt32 } from "o1js";
|
|
2
2
|
declare const TokenBridgeTree_base: import("@proto-kit/common").AbstractMerkleTreeClass;
|
|
3
3
|
/**
|
|
4
4
|
* Merkle tree that contains all the deployed token bridges as a mapping of
|
|
@@ -17,7 +17,7 @@ export declare class TokenBridgeTree extends TokenBridgeTree_base {
|
|
|
17
17
|
events: {
|
|
18
18
|
"token-bridge-added": typeof TokenBridgeTreeAddition;
|
|
19
19
|
};
|
|
20
|
-
}): Promise<TokenBridgeTree>;
|
|
20
|
+
}, endHeight?: UInt32): Promise<TokenBridgeTree>;
|
|
21
21
|
getIndex(tokenId: Field): bigint;
|
|
22
22
|
}
|
|
23
23
|
export declare class TokenBridgeTreeWitness extends TokenBridgeTree.WITNESS {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenBridgeTree.d.ts","sourceRoot":"","sources":["../../../src/settlement/contracts/TokenBridgeTree.ts"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"TokenBridgeTree.d.ts","sourceRoot":"","sources":["../../../src/settlement/contracts/TokenBridgeTree.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,EAEL,SAAS,EACT,aAAa,EAEb,MAAM,EACP,MAAM,MAAM,CAAC;;AAEd;;;;;;GAMG;AACH,qBAAa,eAAgB,SAAQ,oBAAqB;IACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAE5C;;;OAGG;WACiB,mBAAmB,CACrC,QAAQ,EAAE,aAAa,GAAG;QACxB,MAAM,EAAE;YAAE,oBAAoB,EAAE,OAAO,uBAAuB,CAAA;SAAE,CAAC;KAClE,EACD,SAAS,CAAC,EAAE,MAAM;IA6Bb,QAAQ,CAAC,OAAO,EAAE,KAAK,GAAG,MAAM;CAGxC;AAED,qBAAa,sBAAuB,SAAQ,eAAe,CAAC,OAAO;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtE,qBAAa,gBAAiB,SAAQ,qBAGpC;IACO,IAAI;CAGZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,sBAAuB,SAAQ,2BAG1C;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,uBAAwB,SAAQ,4BAG3C;CAAG"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createMerkleTree, InMemoryMerkleTreeStorage, log, } from "@proto-kit/common";
|
|
2
|
-
import { Field, Poseidon, PublicKey, Struct } from "o1js";
|
|
2
|
+
import { Field, Poseidon, PublicKey, Struct, UInt32, } from "o1js";
|
|
3
3
|
/**
|
|
4
4
|
* Merkle tree that contains all the deployed token bridges as a mapping of
|
|
5
5
|
* tokenId => PublicKey
|
|
@@ -16,9 +16,9 @@ export class TokenBridgeTree extends createMerkleTree(256) {
|
|
|
16
16
|
* Initializes and fills the tree based on all on-chain events that have been
|
|
17
17
|
* emitted by every emit
|
|
18
18
|
*/
|
|
19
|
-
static async buildTreeFromEvents(contract) {
|
|
20
|
-
const events = await contract.fetchEvents();
|
|
21
|
-
log.debug(`Found ${events.length} token bridge add events`);
|
|
19
|
+
static async buildTreeFromEvents(contract, endHeight) {
|
|
20
|
+
const events = await contract.fetchEvents(UInt32.from(0), endHeight?.add(1));
|
|
21
|
+
log.debug(`Found ${events.length} token bridge add events (height: ${endHeight?.toString() ?? "open end"})`);
|
|
22
22
|
const tree = new TokenBridgeTree(new InMemoryMerkleTreeStorage());
|
|
23
23
|
const indizes = {};
|
|
24
24
|
events.forEach(({ type, event }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenBridgeTree.js","sourceRoot":"","sources":["../../../src/settlement/contracts/TokenBridgeTree.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,GAAG,GACJ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,
|
|
1
|
+
{"version":3,"file":"TokenBridgeTree.js","sourceRoot":"","sources":["../../../src/settlement/contracts/TokenBridgeTree.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,GAAG,GACJ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,EACL,QAAQ,EACR,SAAS,EAET,MAAM,EACN,MAAM,GACP,MAAM,MAAM,CAAC;AAEd;;;;;;GAMG;AACH,MAAM,OAAO,eAAgB,SAAQ,gBAAgB,CAAC,GAAG,CAAC;IAA1D;;QACS,YAAO,GAA2B,EAAE,CAAC;IA0C9C,CAAC;IAxCC;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,mBAAmB,CACrC,QAEC,EACD,SAAkB;QAElB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CACvC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EACd,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAClB,CAAC;QAEF,GAAG,CAAC,KAAK,CACP,SAAS,MAAM,CAAC,MAAM,qCAAqC,SAAS,EAAE,QAAQ,EAAE,IAAI,UAAU,GAAG,CAClG,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC,IAAI,yBAAyB,EAAE,CAAC,CAAC;QAClE,MAAM,OAAO,GAA2B,EAAE,CAAC;QAE3C,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YACjC,IAAI,IAAI,KAAK,oBAAoB,EAAE;gBACjC,MAAM,QAAQ;gBACZ,yEAAyE;gBACzE,KAAK,CAAC,IAA0C,CAAC;gBAEnD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAE/D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;aACxE;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,QAAQ,CAAC,OAAc;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,eAAe,CAAC,OAAO;CAAG;AAEtE,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC;IAC3C,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,KAAK;CACf,CAAC;IACO,IAAI;QACT,OAAO,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC;IACjD,OAAO,EAAE,sBAAsB;IAC/B,KAAK,EAAE,KAAK;CACb,CAAC;CAAG;AAEL,MAAM,OAAO,uBAAwB,SAAQ,MAAM,CAAC;IAClD,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,gBAAgB;CACxB,CAAC;CAAG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FlexibleProvablePure } from "o1js";
|
|
1
|
+
import { FlexibleProvablePure, Provable, Unconstrained } from "o1js";
|
|
2
2
|
import { LinkedMerkleTreeReadWitness } from "@proto-kit/common";
|
|
3
3
|
export declare const OUTGOING_MESSAGE_BATCH_SIZE = 1;
|
|
4
4
|
export declare function createMessageStruct<T>(type: FlexibleProvablePure<T>): {
|
|
@@ -278,14 +278,17 @@ export declare function createMessageStruct<T>(type: FlexibleProvablePure<T>): {
|
|
|
278
278
|
declare const OutgoingMessageArgument_base: (new (value: {
|
|
279
279
|
witness: LinkedMerkleTreeReadWitness;
|
|
280
280
|
messageType: import("o1js/dist/node/lib/provable/field").Field;
|
|
281
|
+
data: Unconstrained<any>;
|
|
281
282
|
}) => {
|
|
282
283
|
witness: LinkedMerkleTreeReadWitness;
|
|
283
284
|
messageType: import("o1js/dist/node/lib/provable/field").Field;
|
|
285
|
+
data: Unconstrained<any>;
|
|
284
286
|
}) & {
|
|
285
287
|
_isStruct: true;
|
|
286
|
-
} &
|
|
288
|
+
} & Provable<{
|
|
287
289
|
witness: LinkedMerkleTreeReadWitness;
|
|
288
290
|
messageType: import("o1js/dist/node/lib/provable/field").Field;
|
|
291
|
+
data: Unconstrained<any>;
|
|
289
292
|
}, {
|
|
290
293
|
witness: {
|
|
291
294
|
leaf: {
|
|
@@ -299,12 +302,8 @@ declare const OutgoingMessageArgument_base: (new (value: {
|
|
|
299
302
|
};
|
|
300
303
|
};
|
|
301
304
|
messageType: bigint;
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
witness: LinkedMerkleTreeReadWitness;
|
|
305
|
-
messageType: import("o1js/dist/node/lib/provable/field").Field;
|
|
306
|
-
};
|
|
307
|
-
} & {
|
|
305
|
+
data: any;
|
|
306
|
+
}> & {
|
|
308
307
|
fromValue: (value: {
|
|
309
308
|
witness: LinkedMerkleTreeReadWitness | {
|
|
310
309
|
leaf: import("@proto-kit/common").LinkedLeafStruct | {
|
|
@@ -329,13 +328,16 @@ declare const OutgoingMessageArgument_base: (new (value: {
|
|
|
329
328
|
};
|
|
330
329
|
};
|
|
331
330
|
messageType: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
|
|
331
|
+
data: any;
|
|
332
332
|
}) => {
|
|
333
333
|
witness: LinkedMerkleTreeReadWitness;
|
|
334
334
|
messageType: import("o1js/dist/node/lib/provable/field").Field;
|
|
335
|
+
data: Unconstrained<any>;
|
|
335
336
|
};
|
|
336
337
|
toInput: (x: {
|
|
337
338
|
witness: LinkedMerkleTreeReadWitness;
|
|
338
339
|
messageType: import("o1js/dist/node/lib/provable/field").Field;
|
|
340
|
+
data: Unconstrained<any>;
|
|
339
341
|
}) => {
|
|
340
342
|
fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
|
|
341
343
|
packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
|
|
@@ -343,6 +345,7 @@ declare const OutgoingMessageArgument_base: (new (value: {
|
|
|
343
345
|
toJSON: (x: {
|
|
344
346
|
witness: LinkedMerkleTreeReadWitness;
|
|
345
347
|
messageType: import("o1js/dist/node/lib/provable/field").Field;
|
|
348
|
+
data: Unconstrained<any>;
|
|
346
349
|
}) => {
|
|
347
350
|
witness: {
|
|
348
351
|
leaf: {
|
|
@@ -356,6 +359,29 @@ declare const OutgoingMessageArgument_base: (new (value: {
|
|
|
356
359
|
};
|
|
357
360
|
};
|
|
358
361
|
messageType: string;
|
|
362
|
+
data: {
|
|
363
|
+
prototype: {
|
|
364
|
+
get: {};
|
|
365
|
+
set: {};
|
|
366
|
+
setTo: {};
|
|
367
|
+
updateAsProver: {};
|
|
368
|
+
};
|
|
369
|
+
from: {};
|
|
370
|
+
witness: {};
|
|
371
|
+
provable: {
|
|
372
|
+
toFields: {};
|
|
373
|
+
toAuxiliary: {};
|
|
374
|
+
fromFields: {};
|
|
375
|
+
sizeInFields: {};
|
|
376
|
+
check: {};
|
|
377
|
+
toValue: {};
|
|
378
|
+
fromValue: {};
|
|
379
|
+
toCanonical?: {} | null | undefined;
|
|
380
|
+
toInput: {};
|
|
381
|
+
empty: {};
|
|
382
|
+
};
|
|
383
|
+
withEmpty: {};
|
|
384
|
+
};
|
|
359
385
|
};
|
|
360
386
|
fromJSON: (x: {
|
|
361
387
|
witness: {
|
|
@@ -370,13 +396,38 @@ declare const OutgoingMessageArgument_base: (new (value: {
|
|
|
370
396
|
};
|
|
371
397
|
};
|
|
372
398
|
messageType: string;
|
|
399
|
+
data: {
|
|
400
|
+
prototype: {
|
|
401
|
+
get: {};
|
|
402
|
+
set: {};
|
|
403
|
+
setTo: {};
|
|
404
|
+
updateAsProver: {};
|
|
405
|
+
};
|
|
406
|
+
from: {};
|
|
407
|
+
witness: {};
|
|
408
|
+
provable: {
|
|
409
|
+
toFields: {};
|
|
410
|
+
toAuxiliary: {};
|
|
411
|
+
fromFields: {};
|
|
412
|
+
sizeInFields: {};
|
|
413
|
+
check: {};
|
|
414
|
+
toValue: {};
|
|
415
|
+
fromValue: {};
|
|
416
|
+
toCanonical?: {} | null | undefined;
|
|
417
|
+
toInput: {};
|
|
418
|
+
empty: {};
|
|
419
|
+
};
|
|
420
|
+
withEmpty: {};
|
|
421
|
+
};
|
|
373
422
|
}) => {
|
|
374
423
|
witness: LinkedMerkleTreeReadWitness;
|
|
375
424
|
messageType: import("o1js/dist/node/lib/provable/field").Field;
|
|
425
|
+
data: Unconstrained<any>;
|
|
376
426
|
};
|
|
377
427
|
empty: () => {
|
|
378
428
|
witness: LinkedMerkleTreeReadWitness;
|
|
379
429
|
messageType: import("o1js/dist/node/lib/provable/field").Field;
|
|
430
|
+
data: Unconstrained<any>;
|
|
380
431
|
};
|
|
381
432
|
};
|
|
382
433
|
export declare class OutgoingMessageArgument extends OutgoingMessageArgument_base {
|
|
@@ -390,7 +441,7 @@ declare const OutgoingMessageArgumentBatch_base: (new (value: {
|
|
|
390
441
|
isDummys: import("o1js/dist/node/lib/provable/bool").Bool[];
|
|
391
442
|
}) & {
|
|
392
443
|
_isStruct: true;
|
|
393
|
-
} &
|
|
444
|
+
} & Provable<{
|
|
394
445
|
arguments: OutgoingMessageArgument[];
|
|
395
446
|
isDummys: import("o1js/dist/node/lib/provable/bool").Bool[];
|
|
396
447
|
}, {
|
|
@@ -407,14 +458,10 @@ declare const OutgoingMessageArgumentBatch_base: (new (value: {
|
|
|
407
458
|
};
|
|
408
459
|
};
|
|
409
460
|
messageType: bigint;
|
|
461
|
+
data: any;
|
|
410
462
|
}[];
|
|
411
463
|
isDummys: boolean[];
|
|
412
|
-
}
|
|
413
|
-
fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
|
|
414
|
-
arguments: OutgoingMessageArgument[];
|
|
415
|
-
isDummys: import("o1js/dist/node/lib/provable/bool").Bool[];
|
|
416
|
-
};
|
|
417
|
-
} & {
|
|
464
|
+
}> & {
|
|
418
465
|
fromValue: (value: {
|
|
419
466
|
arguments: OutgoingMessageArgument[] | {
|
|
420
467
|
witness: {
|
|
@@ -429,6 +476,7 @@ declare const OutgoingMessageArgumentBatch_base: (new (value: {
|
|
|
429
476
|
};
|
|
430
477
|
};
|
|
431
478
|
messageType: bigint;
|
|
479
|
+
data: any;
|
|
432
480
|
}[];
|
|
433
481
|
isDummys: import("o1js/dist/node/lib/provable/bool").Bool[] | boolean[];
|
|
434
482
|
}) => {
|
|
@@ -459,6 +507,29 @@ declare const OutgoingMessageArgumentBatch_base: (new (value: {
|
|
|
459
507
|
};
|
|
460
508
|
};
|
|
461
509
|
messageType: string;
|
|
510
|
+
data: {
|
|
511
|
+
prototype: {
|
|
512
|
+
get: {};
|
|
513
|
+
set: {};
|
|
514
|
+
setTo: {};
|
|
515
|
+
updateAsProver: {};
|
|
516
|
+
};
|
|
517
|
+
from: {};
|
|
518
|
+
witness: {};
|
|
519
|
+
provable: {
|
|
520
|
+
toFields: {};
|
|
521
|
+
toAuxiliary: {};
|
|
522
|
+
fromFields: {};
|
|
523
|
+
sizeInFields: {};
|
|
524
|
+
check: {};
|
|
525
|
+
toValue: {};
|
|
526
|
+
fromValue: {};
|
|
527
|
+
toCanonical?: {} | null | undefined;
|
|
528
|
+
toInput: {};
|
|
529
|
+
empty: {};
|
|
530
|
+
};
|
|
531
|
+
withEmpty: {};
|
|
532
|
+
};
|
|
462
533
|
}[];
|
|
463
534
|
isDummys: boolean[];
|
|
464
535
|
};
|
|
@@ -476,6 +547,29 @@ declare const OutgoingMessageArgumentBatch_base: (new (value: {
|
|
|
476
547
|
};
|
|
477
548
|
};
|
|
478
549
|
messageType: string;
|
|
550
|
+
data: {
|
|
551
|
+
prototype: {
|
|
552
|
+
get: {};
|
|
553
|
+
set: {};
|
|
554
|
+
setTo: {};
|
|
555
|
+
updateAsProver: {};
|
|
556
|
+
};
|
|
557
|
+
from: {};
|
|
558
|
+
witness: {};
|
|
559
|
+
provable: {
|
|
560
|
+
toFields: {};
|
|
561
|
+
toAuxiliary: {};
|
|
562
|
+
fromFields: {};
|
|
563
|
+
sizeInFields: {};
|
|
564
|
+
check: {};
|
|
565
|
+
toValue: {};
|
|
566
|
+
fromValue: {};
|
|
567
|
+
toCanonical?: {} | null | undefined;
|
|
568
|
+
toInput: {};
|
|
569
|
+
empty: {};
|
|
570
|
+
};
|
|
571
|
+
withEmpty: {};
|
|
572
|
+
};
|
|
479
573
|
}[];
|
|
480
574
|
isDummys: boolean[];
|
|
481
575
|
}) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutgoingMessageArgument.d.ts","sourceRoot":"","sources":["../../../src/settlement/messages/OutgoingMessageArgument.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"OutgoingMessageArgument.d.ts","sourceRoot":"","sources":["../../../src/settlement/messages/OutgoingMessageArgument.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,oBAAoB,EACpB,QAAQ,EAER,aAAa,EACd,MAAM,MAAM,CAAC;AACd,OAAO,EAEL,2BAA2B,EAC5B,MAAM,mBAAmB,CAAC;AAK3B,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,uBAAwB,SAAQ,4BAI3C;WACc,KAAK,IAAI,uBAAuB;CAO/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,4BAA6B,SAAQ,iCAOhD;WACc,YAAY,CAAC,iBAAiB,EAAE,uBAAuB,EAAE;CAcxE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Bool, Field, Provable, Struct } from "o1js";
|
|
1
|
+
import { Bool, Field, Provable, Struct, Unconstrained, } from "o1js";
|
|
2
2
|
import { LinkedMerkleTree, LinkedMerkleTreeReadWitness, } from "@proto-kit/common";
|
|
3
3
|
// TODO Make that dynamic based on processors configured
|
|
4
4
|
export const OUTGOING_MESSAGE_BATCH_SIZE = 1;
|
|
@@ -12,11 +12,13 @@ export function createMessageStruct(type) {
|
|
|
12
12
|
export class OutgoingMessageArgument extends Struct({
|
|
13
13
|
witness: LinkedMerkleTreeReadWitness,
|
|
14
14
|
messageType: Field,
|
|
15
|
+
data: (Unconstrained),
|
|
15
16
|
}) {
|
|
16
17
|
static dummy() {
|
|
17
18
|
return new OutgoingMessageArgument({
|
|
18
19
|
witness: LinkedMerkleTree.dummyReadWitness(),
|
|
19
20
|
messageType: Field(0),
|
|
21
|
+
data: Unconstrained.from([]),
|
|
20
22
|
});
|
|
21
23
|
}
|
|
22
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutgoingMessageArgument.js","sourceRoot":"","sources":["../../../src/settlement/messages/OutgoingMessageArgument.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"OutgoingMessageArgument.js","sourceRoot":"","sources":["../../../src/settlement/messages/OutgoingMessageArgument.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,KAAK,EAEL,QAAQ,EACR,MAAM,EACN,aAAa,GACd,MAAM,MAAM,CAAC;AACd,OAAO,EACL,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAI3B,wDAAwD;AACxD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAE7C,MAAM,UAAU,mBAAmB,CAAI,IAA6B;IAClE,OAAO,MAAM,aAAc,SAAQ,MAAM,CAAC;QACxC,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,KAAK;KACnB,CAAC;KAAsD,CAAC;AAC3D,CAAC;AAED,MAAM,OAAO,uBAAwB,SAAQ,MAAM,CAAC;IAClD,OAAO,EAAE,2BAA2B;IACpC,WAAW,EAAE,KAAK;IAClB,IAAI,EAAE,CAAA,aAAsB,CAAA;CAC7B,CAAC;IACO,MAAM,CAAC,KAAK;QACjB,OAAO,IAAI,uBAAuB,CAAC;YACjC,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,EAAE;YAC5C,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;YACrB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;SAC7B,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,4BAA6B,SAAQ,MAAM,CAAC;IACvD,SAAS,EAAE,QAAQ,CAAC,KAAK,CACvB,uBAAuB,EACvB,2BAA2B,CAC5B;IAED,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,2BAA2B,CAAC;CAC5D,CAAC;IACO,MAAM,CAAC,YAAY,CAAC,iBAA4C;QACrE,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9C,OAAO,KAAK,CAAC,MAAM,GAAG,2BAA2B,EAAE;YACjD,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC3B;QAED,OAAO,IAAI,4BAA4B,CAAC;YACtC,SAAS,EAAE,KAAK;YAChB,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -17,7 +17,10 @@ export declare abstract class OutgoingMessageProcessor<T, Config = NoConfig> ext
|
|
|
17
17
|
status: Bool;
|
|
18
18
|
statusMessage?: string;
|
|
19
19
|
};
|
|
20
|
-
|
|
20
|
+
getMessageType(): Field;
|
|
21
|
+
abstract type: FlexibleProvablePure<T> & {
|
|
22
|
+
name: string;
|
|
23
|
+
};
|
|
21
24
|
abstract messageType: string;
|
|
22
25
|
abstract dummy(): T;
|
|
23
26
|
abstract process(message: T, args: MessageProcessorArgs): AccountUpdate[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutgoingMessageProcessor.d.ts","sourceRoot":"","sources":["../../../src/settlement/modularity/OutgoingMessageProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,IAAI,EACJ,KAAK,EACL,oBAAoB,
|
|
1
|
+
{"version":3,"file":"OutgoingMessageProcessor.d.ts","sourceRoot":"","sources":["../../../src/settlement/modularity/OutgoingMessageProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,IAAI,EACJ,KAAK,EACL,oBAAoB,EAEpB,SAAS,EACV,MAAM,MAAM,CAAC;AACd,OAAO,EAAa,QAAQ,EAAiB,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,wBAAgB,wBAAwB,sEAEvC;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,cAAc,EAAE;QACd,SAAS,EAAE,SAAS,CAAC;QACrB,OAAO,EAAE,KAAK,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,8BAAsB,wBAAwB,CAC5C,CAAC,EACD,MAAM,GAAG,QAAQ,CACjB,SAAQ,cAAc,CAAC,MAAM,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAqB;IAEnC,OAAO,CAAC,aAAa,CAAC,CAAqB;IAEpC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM;IAOvC,cAAc,CACZ,OAAO,EAAE,CAAC,EACV,IAAI,EAAE,oBAAoB,GACzB;QACD,cAAc,EAAE,aAAa,EAAE,CAAC;QAChC,MAAM,EAAE,IAAI,CAAC;QACb,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;IAaM,cAAc,IAAI,KAAK;IAY9B,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAE1D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,KAAK,IAAI,CAAC;IAEnB,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,GAAG,aAAa,EAAE;CAC1E"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Bool, } from "o1js";
|
|
2
|
-
import { implement } from "@proto-kit/common";
|
|
1
|
+
import { Bool, Poseidon, } from "o1js";
|
|
2
|
+
import { implement, prefixToField } from "@proto-kit/common";
|
|
3
3
|
import { ProtocolModule } from "../../protocol/ProtocolModule";
|
|
4
4
|
export function outgoingMessageProcessor() {
|
|
5
5
|
return implement("OutgoingMessageProcessor");
|
|
@@ -26,5 +26,14 @@ export class OutgoingMessageProcessor extends ProtocolModule {
|
|
|
26
26
|
statusMessage: this.statusMessage,
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
|
+
getMessageType() {
|
|
30
|
+
// TODO static salt/prefix
|
|
31
|
+
// This executes the bigint poseidon behind the scenes, therefore creates a constant
|
|
32
|
+
const messageType = Poseidon.hash([prefixToField(this.messageType)]);
|
|
33
|
+
if (!messageType.isConstant()) {
|
|
34
|
+
throw new Error("Underlying poseidon implementation has changed and doesn't create a constant anymore");
|
|
35
|
+
}
|
|
36
|
+
return messageType;
|
|
37
|
+
}
|
|
29
38
|
}
|
|
30
39
|
//# sourceMappingURL=OutgoingMessageProcessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutgoingMessageProcessor.js","sourceRoot":"","sources":["../../../src/settlement/modularity/OutgoingMessageProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,IAAI,
|
|
1
|
+
{"version":3,"file":"OutgoingMessageProcessor.js","sourceRoot":"","sources":["../../../src/settlement/modularity/OutgoingMessageProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,IAAI,EAGJ,QAAQ,GAET,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,SAAS,EAAY,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,UAAU,wBAAwB;IACtC,OAAO,SAAS,CAAC,0BAA0B,CAAC,CAAC;AAC/C,CAAC;AASD,MAAM,OAAgB,wBAGpB,SAAQ,cAAsB;IAHhC;;QAIU,WAAM,GAAS,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3B,kBAAa,GAAY,SAAS,CAAC;IAgD7C,CAAC;IA9CQ,UAAU,CAAC,CAAO,EAAE,GAAY;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;YACpC,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;SAC1B;IACH,CAAC;IAED,cAAc,CACZ,OAAU,EACV,IAA0B;QAM1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAE/B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEnD,OAAO;YACL,cAAc;YACd,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;IACJ,CAAC;IAEM,cAAc;QACnB,0BAA0B;QAC1B,oFAAoF;QACpF,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE;YAC7B,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;SACH;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;CASF"}
|
|
@@ -21,18 +21,24 @@ const asyncProxyWitnessFunction = (originalFuncDef) => {
|
|
|
21
21
|
return async (...args) => {
|
|
22
22
|
const context = container.resolve(WitnessBlockContext);
|
|
23
23
|
context.witnessBlockDepth += 1;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
try {
|
|
25
|
+
return await originalFuncDef(...args);
|
|
26
|
+
}
|
|
27
|
+
finally {
|
|
28
|
+
context.witnessBlockDepth -= 1;
|
|
29
|
+
}
|
|
27
30
|
};
|
|
28
31
|
};
|
|
29
32
|
const proxySyncWitnessFunction = (originalFuncDef) => {
|
|
30
33
|
return (...args) => {
|
|
31
34
|
const context = container.resolve(WitnessBlockContext);
|
|
32
35
|
context.witnessBlockDepth += 1;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
try {
|
|
37
|
+
return originalFuncDef(...args);
|
|
38
|
+
}
|
|
39
|
+
finally {
|
|
40
|
+
context.witnessBlockDepth -= 1;
|
|
41
|
+
}
|
|
36
42
|
};
|
|
37
43
|
};
|
|
38
44
|
Provable.witnessAsync = asyncProxyWitnessFunction(Provable.witnessAsync);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WitnessBlockContext.js","sourceRoot":"","sources":["../../src/state/WitnessBlockContext.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGzB,WAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAAzB;QACE,sBAAiB,GAAW,CAAC,CAAC;IAKvC,CAAC;IAHC,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;IACpC,CAAC;CACF,CAAA;AANY,mBAAmB;IAD/B,SAAS,EAAE;GACC,mBAAmB,CAM/B;AAED,MAAM,yBAAyB,GAAG,CAIhC,eAAkB,EAClB,EAAE;IACF,OAAO,KAAK,EAAE,GAAG,IAAmB,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACvD,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAC/B,
|
|
1
|
+
{"version":3,"file":"WitnessBlockContext.js","sourceRoot":"","sources":["../../src/state/WitnessBlockContext.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGzB,WAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAAzB;QACE,sBAAiB,GAAW,CAAC,CAAC;IAKvC,CAAC;IAHC,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;IACpC,CAAC;CACF,CAAA;AANY,mBAAmB;IAD/B,SAAS,EAAE;GACC,mBAAmB,CAM/B;AAED,MAAM,yBAAyB,GAAG,CAIhC,eAAkB,EAClB,EAAE;IACF,OAAO,KAAK,EAAE,GAAG,IAAmB,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACvD,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAC/B,IAAI;YACF,OAAO,MAAM,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;SACvC;gBAAS;YACR,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;SAChC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAK/B,eAAkB,EAClB,EAAE;IACF,OAAO,CAAC,GAAG,IAAY,EAAO,EAAE;QAC9B,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACvD,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAC/B,IAAI;YACF,OAAO,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;SACjC;gBAAS;YACR,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;SAChC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,QAAQ,CAAC,YAAY,GAAG,yBAAyB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAEzE,QAAQ,CAAC,OAAO,GAAG,wBAAwB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAE9D,QAAQ,CAAC,aAAa,GAAG,wBAAwB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAE1E,QAAQ,CAAC,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
|
-
"version": "0.1.1-develop.
|
|
6
|
+
"version": "0.1.1-develop.2137+8a7eca31",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"build": "tsc -p tsconfig.json",
|
|
9
9
|
"dev": "tsc -p tsconfig.json --watch",
|
|
@@ -32,5 +32,5 @@
|
|
|
32
32
|
"@jest/globals": "^29.5.0",
|
|
33
33
|
"@types/lodash": "^4.14.194"
|
|
34
34
|
},
|
|
35
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "8a7eca319272a15162dc4ad04bdc134b1017716d"
|
|
36
36
|
}
|
|
@@ -32,8 +32,12 @@ export class ContractArgsRegistry {
|
|
|
32
32
|
this.args[name] = merge(args, addition);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
public resetArgs(name
|
|
36
|
-
|
|
35
|
+
public resetArgs(name?: string) {
|
|
36
|
+
if (name !== undefined) {
|
|
37
|
+
delete this.args[name];
|
|
38
|
+
} else {
|
|
39
|
+
this.args = {};
|
|
40
|
+
}
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
public getArgs<Type>(name: string, schema: NaiveObjectSchema<Type>): Type {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AccountUpdate,
|
|
3
3
|
Bool,
|
|
4
|
-
Experimental,
|
|
5
4
|
Field,
|
|
6
5
|
method,
|
|
7
6
|
Permissions,
|
|
@@ -14,10 +13,11 @@ import {
|
|
|
14
13
|
Struct,
|
|
15
14
|
TokenContract,
|
|
16
15
|
TokenId,
|
|
16
|
+
Unconstrained,
|
|
17
17
|
VerificationKey,
|
|
18
18
|
} from "o1js";
|
|
19
19
|
import { noop, range, TypedClass } from "@proto-kit/common";
|
|
20
|
-
import { container
|
|
20
|
+
import { container } from "tsyringe";
|
|
21
21
|
|
|
22
22
|
import {
|
|
23
23
|
OUTGOING_MESSAGE_BATCH_SIZE,
|
|
@@ -61,16 +61,10 @@ export class OutgoingMessageKey extends Struct({
|
|
|
61
61
|
tokenId: Field,
|
|
62
62
|
}) {}
|
|
63
63
|
|
|
64
|
-
@injectable()
|
|
65
|
-
@singleton()
|
|
66
|
-
export class BridgeContractContext {
|
|
67
|
-
public data: {
|
|
68
|
-
messageInputs: any[][];
|
|
69
|
-
} = { messageInputs: [] };
|
|
70
|
-
}
|
|
71
|
-
|
|
72
64
|
export interface BridgeContractArgs {
|
|
73
|
-
SettlementContract: TypedClass<
|
|
65
|
+
SettlementContract: TypedClass<
|
|
66
|
+
Pick<BridgingSettlementContractType, "assertStateRoot">
|
|
67
|
+
> &
|
|
74
68
|
typeof SmartContract;
|
|
75
69
|
messageProcessors: OutgoingMessageProcessor<unknown>[];
|
|
76
70
|
batchSize?: number;
|
|
@@ -171,40 +165,44 @@ export abstract class BridgeContractBase
|
|
|
171
165
|
);
|
|
172
166
|
}
|
|
173
167
|
|
|
174
|
-
private executeProcessors(
|
|
168
|
+
private executeProcessors(args: OutgoingMessageArgument) {
|
|
175
169
|
const { messageProcessors } = this.getInitializationArgs();
|
|
176
170
|
return messageProcessors.map((processor, j) => {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
171
|
+
const messageType = processor.getMessageType();
|
|
172
|
+
|
|
173
|
+
// Create the message struct from unconstrained message argument Field[]
|
|
174
|
+
const value = Provable.witness(processor.type, () => {
|
|
175
|
+
if (args.messageType.toString() === messageType.toString()) {
|
|
176
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
177
|
+
const fieldData = (args.data as Unconstrained<Field[]>).get();
|
|
178
|
+
return processor.type.fromFields(fieldData);
|
|
179
|
+
} else {
|
|
180
|
+
return processor.dummy();
|
|
181
|
+
}
|
|
182
182
|
});
|
|
183
183
|
|
|
184
184
|
const MessageType = createMessageStruct(processor.type);
|
|
185
185
|
const message = new MessageType({
|
|
186
|
-
messageType
|
|
186
|
+
messageType,
|
|
187
187
|
value,
|
|
188
188
|
});
|
|
189
|
+
const result = processor.processMessage(value, {
|
|
190
|
+
bridgeContract: {
|
|
191
|
+
publicKey: this.address,
|
|
192
|
+
tokenId: this.tokenId,
|
|
193
|
+
},
|
|
194
|
+
});
|
|
189
195
|
return {
|
|
190
|
-
messageType
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
publicKey: this.address,
|
|
194
|
-
tokenId: this.tokenId,
|
|
195
|
-
},
|
|
196
|
-
}),
|
|
196
|
+
// messageType is authenticated via the hash, which is checked again
|
|
197
|
+
messageType,
|
|
198
|
+
result,
|
|
197
199
|
hash: Poseidon.hash(MessageType.toFields(message)),
|
|
198
200
|
};
|
|
199
201
|
});
|
|
200
202
|
}
|
|
201
203
|
|
|
202
|
-
public processMessage(
|
|
203
|
-
|
|
204
|
-
args: OutgoingMessageArgument,
|
|
205
|
-
isDummy: Bool
|
|
206
|
-
) {
|
|
207
|
-
const results = this.executeProcessors(batchIndex, args);
|
|
204
|
+
public processMessage(args: OutgoingMessageArgument, isDummy: Bool) {
|
|
205
|
+
const results = this.executeProcessors(args);
|
|
208
206
|
|
|
209
207
|
const maxAccountUpdates = Math.max(
|
|
210
208
|
0,
|
|
@@ -290,7 +288,7 @@ export abstract class BridgeContractBase
|
|
|
290
288
|
|
|
291
289
|
const isDummy = batch.isDummys[i];
|
|
292
290
|
|
|
293
|
-
const message = this.processMessage(
|
|
291
|
+
const message = this.processMessage(args, isDummy);
|
|
294
292
|
|
|
295
293
|
// Check witness
|
|
296
294
|
const path = Path.fromKey(
|
|
@@ -321,7 +319,7 @@ export abstract class BridgeContractBase
|
|
|
321
319
|
const isNew = accountUpdate.account.isNew.getAndRequireEquals();
|
|
322
320
|
return Provable.if(isNew, Field(1), Field(0));
|
|
323
321
|
})
|
|
324
|
-
.reduce((a, b) => a.add(b));
|
|
322
|
+
.reduce((a, b) => a.add(b), Field(0));
|
|
325
323
|
accountCreationFeePaid = accountCreationFeePaid.add(newAccounts);
|
|
326
324
|
}
|
|
327
325
|
|
|
@@ -3,7 +3,14 @@ import {
|
|
|
3
3
|
InMemoryMerkleTreeStorage,
|
|
4
4
|
log,
|
|
5
5
|
} from "@proto-kit/common";
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
Field,
|
|
8
|
+
Poseidon,
|
|
9
|
+
PublicKey,
|
|
10
|
+
SmartContract,
|
|
11
|
+
Struct,
|
|
12
|
+
UInt32,
|
|
13
|
+
} from "o1js";
|
|
7
14
|
|
|
8
15
|
/**
|
|
9
16
|
* Merkle tree that contains all the deployed token bridges as a mapping of
|
|
@@ -22,11 +29,17 @@ export class TokenBridgeTree extends createMerkleTree(256) {
|
|
|
22
29
|
public static async buildTreeFromEvents(
|
|
23
30
|
contract: SmartContract & {
|
|
24
31
|
events: { "token-bridge-added": typeof TokenBridgeTreeAddition };
|
|
25
|
-
}
|
|
32
|
+
},
|
|
33
|
+
endHeight?: UInt32
|
|
26
34
|
) {
|
|
27
|
-
const events = await contract.fetchEvents(
|
|
35
|
+
const events = await contract.fetchEvents(
|
|
36
|
+
UInt32.from(0),
|
|
37
|
+
endHeight?.add(1)
|
|
38
|
+
);
|
|
28
39
|
|
|
29
|
-
log.debug(
|
|
40
|
+
log.debug(
|
|
41
|
+
`Found ${events.length} token bridge add events (height: ${endHeight?.toString() ?? "open end"})`
|
|
42
|
+
);
|
|
30
43
|
|
|
31
44
|
const tree = new TokenBridgeTree(new InMemoryMerkleTreeStorage());
|
|
32
45
|
const indizes: Record<string, bigint> = {};
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
Bool,
|
|
3
|
+
Field,
|
|
4
|
+
FlexibleProvablePure,
|
|
5
|
+
Provable,
|
|
6
|
+
Struct,
|
|
7
|
+
Unconstrained,
|
|
8
|
+
} from "o1js";
|
|
2
9
|
import {
|
|
3
10
|
LinkedMerkleTree,
|
|
4
11
|
LinkedMerkleTreeReadWitness,
|
|
@@ -19,11 +26,13 @@ export function createMessageStruct<T>(type: FlexibleProvablePure<T>) {
|
|
|
19
26
|
export class OutgoingMessageArgument extends Struct({
|
|
20
27
|
witness: LinkedMerkleTreeReadWitness,
|
|
21
28
|
messageType: Field,
|
|
29
|
+
data: Unconstrained<Field[]>,
|
|
22
30
|
}) {
|
|
23
31
|
public static dummy(): OutgoingMessageArgument {
|
|
24
32
|
return new OutgoingMessageArgument({
|
|
25
33
|
witness: LinkedMerkleTree.dummyReadWitness(),
|
|
26
34
|
messageType: Field(0),
|
|
35
|
+
data: Unconstrained.from([]),
|
|
27
36
|
});
|
|
28
37
|
}
|
|
29
38
|
}
|
|
@@ -3,9 +3,10 @@ import {
|
|
|
3
3
|
Bool,
|
|
4
4
|
Field,
|
|
5
5
|
FlexibleProvablePure,
|
|
6
|
+
Poseidon,
|
|
6
7
|
PublicKey,
|
|
7
8
|
} from "o1js";
|
|
8
|
-
import { implement, NoConfig } from "@proto-kit/common";
|
|
9
|
+
import { implement, NoConfig, prefixToField } from "@proto-kit/common";
|
|
9
10
|
|
|
10
11
|
import { ProtocolModule } from "../../protocol/ProtocolModule";
|
|
11
12
|
|
|
@@ -55,7 +56,19 @@ export abstract class OutgoingMessageProcessor<
|
|
|
55
56
|
};
|
|
56
57
|
}
|
|
57
58
|
|
|
58
|
-
|
|
59
|
+
public getMessageType(): Field {
|
|
60
|
+
// TODO static salt/prefix
|
|
61
|
+
// This executes the bigint poseidon behind the scenes, therefore creates a constant
|
|
62
|
+
const messageType = Poseidon.hash([prefixToField(this.messageType)]);
|
|
63
|
+
if (!messageType.isConstant()) {
|
|
64
|
+
throw new Error(
|
|
65
|
+
"Underlying poseidon implementation has changed and doesn't create a constant anymore"
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
return messageType;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
abstract type: FlexibleProvablePure<T> & { name: string };
|
|
59
72
|
|
|
60
73
|
abstract messageType: string;
|
|
61
74
|
|
|
@@ -19,9 +19,11 @@ const asyncProxyWitnessFunction = <
|
|
|
19
19
|
return async (...args: Parameters<F>) => {
|
|
20
20
|
const context = container.resolve(WitnessBlockContext);
|
|
21
21
|
context.witnessBlockDepth += 1;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
try {
|
|
23
|
+
return await originalFuncDef(...args);
|
|
24
|
+
} finally {
|
|
25
|
+
context.witnessBlockDepth -= 1;
|
|
26
|
+
}
|
|
25
27
|
};
|
|
26
28
|
};
|
|
27
29
|
|
|
@@ -35,9 +37,11 @@ const proxySyncWitnessFunction = <
|
|
|
35
37
|
return (...args: Params): Ret => {
|
|
36
38
|
const context = container.resolve(WitnessBlockContext);
|
|
37
39
|
context.witnessBlockDepth += 1;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
try {
|
|
41
|
+
return originalFuncDef(...args);
|
|
42
|
+
} finally {
|
|
43
|
+
context.witnessBlockDepth -= 1;
|
|
44
|
+
}
|
|
41
45
|
};
|
|
42
46
|
};
|
|
43
47
|
|