@ocap/tx-protocols 1.18.165 → 1.19.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.
Files changed (37) hide show
  1. package/lib/execute.js +2 -2
  2. package/lib/pipes/ensure-cost.js +6 -2
  3. package/lib/pipes/ensure-gas.js +3 -13
  4. package/lib/protocols/account/delegate.js +2 -2
  5. package/lib/protocols/account/revoke-delegate.js +2 -1
  6. package/lib/protocols/asset/acquire-v2.js +2 -2
  7. package/lib/protocols/asset/acquire-v3.js +2 -2
  8. package/lib/protocols/asset/calls/transfer-token.js +1 -1
  9. package/lib/protocols/asset/calls/transfer.js +1 -1
  10. package/lib/protocols/asset/consume.js +2 -2
  11. package/lib/protocols/asset/create.js +2 -2
  12. package/lib/protocols/asset/mint.js +2 -2
  13. package/lib/protocols/asset/update.js +3 -3
  14. package/lib/protocols/factory/create.js +2 -2
  15. package/lib/protocols/governance/claim-stake.js +2 -2
  16. package/lib/protocols/governance/return-stake.js +2 -2
  17. package/lib/protocols/governance/revoke-stake.js +2 -1
  18. package/lib/protocols/governance/slash-stake.js +2 -2
  19. package/lib/protocols/governance/stake.js +3 -3
  20. package/lib/protocols/rollup/claim-reward.js +3 -3
  21. package/lib/protocols/rollup/close.js +2 -2
  22. package/lib/protocols/rollup/create-block.js +2 -2
  23. package/lib/protocols/rollup/create.js +2 -2
  24. package/lib/protocols/rollup/join.js +2 -2
  25. package/lib/protocols/rollup/leave.js +2 -2
  26. package/lib/protocols/rollup/migrate.js +2 -1
  27. package/lib/protocols/rollup/pause.js +2 -1
  28. package/lib/protocols/rollup/pipes/verify-evidence.js +3 -2
  29. package/lib/protocols/rollup/resume.js +2 -1
  30. package/lib/protocols/rollup/update.js +2 -1
  31. package/lib/protocols/token/create.js +2 -2
  32. package/lib/protocols/token/deposit-v2.js +2 -2
  33. package/lib/protocols/token/withdraw-v2.js +2 -2
  34. package/lib/protocols/trade/exchange-v2.js +2 -2
  35. package/lib/protocols/trade/transfer-v2.js +2 -2
  36. package/lib/protocols/trade/transfer-v3.js +2 -2
  37. package/package.json +14 -14
package/lib/execute.js CHANGED
@@ -64,14 +64,14 @@ module.exports = ({ filter, runAsLambda }) => {
64
64
  context.states.account.update(senderState, { nonce: tx.nonce, pk: tx.pk, ...senderUpdates }, context),
65
65
  context
66
66
  ),
67
-
68
- updateVaults(),
69
67
  ]);
68
+ await updateVaults();
70
69
  } catch (err) {
71
70
  context.logger?.error('Failed to charge gas fee for errored tx', { error: err, txHash: context.txHash });
72
71
  }
73
72
  };
74
73
 
74
+ // eslint-disable-next-line require-await
75
75
  const execute = async (context, protocols, isRetrySupported = false) =>
76
76
  new Promise((resolve, reject) => {
77
77
  pre.run(context, (err) => {
@@ -24,8 +24,7 @@ module.exports = function CreateEnsureTxCostPipe({
24
24
  } = {}) {
25
25
  return async function EnsureTxCost(context, next) {
26
26
  // TODO: we are using the sender as gas payer, this may change in future
27
- const { config, statedb, txType, senderState, gasEstimate, gasVaultState, totalGas } = context;
28
- const feeVaultState = await statedb.account.get(config.vaults.txFee, context);
27
+ const { config, statedb, txType, senderState, gasEstimate, gasVault, totalGas } = context;
29
28
 
30
29
  // verify gas staking headers
31
30
  const { tx, extra = {}, txHash } = context;
@@ -96,6 +95,11 @@ module.exports = function CreateEnsureTxCostPipe({
96
95
 
97
96
  // to be called in later pipes
98
97
  context.updateVaults = async function updateVaults() {
98
+ const [feeVaultState, gasVaultState] = await Promise.all([
99
+ statedb.account.get(config.vaults.txFee, context),
100
+ statedb.account.get(gasVault, context),
101
+ ]);
102
+
99
103
  const [newFeeVaultState, newGasVaultState] = await Promise.all([
100
104
  changes.fee
101
105
  ? statedb.account.update(
@@ -1,4 +1,3 @@
1
- const { CustomError: Error } = require('@ocap/util/lib/error');
2
1
  const { BN, hexToNumber } = require('@ocap/util');
3
2
 
4
3
  // eslint-disable-next-line global-require
@@ -11,8 +10,8 @@ const debug = require('debug')(`${require('../../package.json').name}:pipes:ensu
11
10
  // - update: state updating ops
12
11
  // - payment: sender payment amount of the gas token
13
12
  module.exports = function CreateGasEnsureFn(estimateTxGas) {
14
- return async function EnsureTxGas(context, next) {
15
- const { txHash, statedb, config } = context;
13
+ return function EnsureTxGas(context, next) {
14
+ const { txHash, config } = context;
16
15
 
17
16
  // total gas in native token
18
17
  const { txGas } = config.transaction;
@@ -30,16 +29,7 @@ module.exports = function CreateGasEnsureFn(estimateTxGas) {
30
29
  const { txGas: gasVaults } = config.vaults;
31
30
  const index = hexToNumber(txHash.slice(txHash.length - 4)) % gasVaults.length;
32
31
  const gasVault = gasVaults[index];
33
-
34
- // extract gasReceiver
35
- if (gasVault) {
36
- const gasVaultState = await statedb.account.get(gasVault, context);
37
- if (!gasVaultState) {
38
- return next(new Error('INVALID_GAS_VAULT', `Can not find gas vault state: ${gasVault}`));
39
- }
40
-
41
- context.gasVaultState = gasVaultState;
42
- }
32
+ context.gasVault = gasVault;
43
33
 
44
34
  debug({
45
35
  txType: context.txType,
@@ -193,10 +193,10 @@ runner.use(
193
193
  delegationState
194
194
  ? statedb.delegation.update(itx.address, delegation.update(delegationState, { ...itx, from: sender, ops: merged }, context), context) // prettier-ignore
195
195
  : statedb.delegation.create(itx.address, delegation.create({ ...itx, from: sender, ops: merged }, context), context), // prettier-ignore
196
-
197
- updateVaults(),
198
196
  ]);
199
197
 
198
+ await updateVaults();
199
+
200
200
  debug(delegationState ? 'update' : 'create', newDelegationState);
201
201
 
202
202
  // Update context
@@ -89,9 +89,10 @@ runner.use(
89
89
  delegation.update(context.delegationState, { ops: newOps }, context),
90
90
  context
91
91
  ),
92
- updateVaults(),
93
92
  ]);
94
93
 
94
+ await updateVaults();
95
+
95
96
  // Update context
96
97
  context.senderState = newSenderState;
97
98
  context.delegationState = newDelegationState;
@@ -219,10 +219,10 @@ runner.use(
219
219
  context.delegatorState
220
220
  ? statedb.account.update(assetOwner.address, account.update(assetOwner, ownerUpdates, context), context)
221
221
  : null,
222
-
223
- updateVaults(),
224
222
  ]);
225
223
 
224
+ await updateVaults();
225
+
226
226
  context.senderState = newSenderState;
227
227
  context.assetState = assetState;
228
228
  context.factoryState = newFactoryState;
@@ -289,10 +289,10 @@ runner.use(
289
289
  statedb.asset.update(x.address, asset.update(x, { consumedTime: txTime }, context), context)
290
290
  )
291
291
  ),
292
-
293
- updateVaults(),
294
292
  ]);
295
293
 
294
+ await updateVaults();
295
+
296
296
  context.senderState = newSenderState;
297
297
  context.receiverState = newReceiverState;
298
298
  context.signerStates = isAlsoSigner ? newSignerStates.concat(newSenderState) : newSignerStates;
@@ -9,7 +9,7 @@ const runner = new Runner();
9
9
 
10
10
  runner.use(pipes.ExtractState({ from: 'args.to', to: 'receiverState', status: 'INVALID_RECEIVER_STATE' }));
11
11
 
12
- runner.use(async (context, next) => {
12
+ runner.use((context, next) => {
13
13
  const { states, receiverState, args } = context;
14
14
  const { tokenAddress, amount } = args;
15
15
 
@@ -8,7 +8,7 @@ const runner = new Runner();
8
8
 
9
9
  runner.use(pipes.ExtractState({ from: 'args.to', to: 'receiverState', status: 'INVALID_RECEIVER_STATE' }));
10
10
 
11
- runner.use(async (context, next) => {
11
+ runner.use((context, next) => {
12
12
  const { states, receiverState, args } = context;
13
13
 
14
14
  const old = new BN(receiverState.balance);
@@ -81,10 +81,10 @@ runner.use(
81
81
 
82
82
  // update asset state
83
83
  statedb.asset.update(itx.address, asset.update(assetState, { consumedTime: txTime }, context), context),
84
-
85
- updateVaults(),
86
84
  ]);
87
85
 
86
+ await updateVaults();
87
+
88
88
  context.senderState = newSenderState;
89
89
  context.assetState = newAssetState;
90
90
 
@@ -125,14 +125,14 @@ runner.use(
125
125
  context
126
126
  ),
127
127
 
128
- updateVaults(),
129
-
130
128
  // Update delegation state
131
129
  context.isDelegationChanged
132
130
  ? statedb.delegation.update(delegationState.address, delegation.update(delegationState, {}, context), context)
133
131
  : delegationState,
134
132
  ]);
135
133
 
134
+ await updateVaults();
135
+
136
136
  context.senderState = newSenderState;
137
137
  context.assetState = assetState;
138
138
  context.delegationState = newDelegationState;
@@ -161,10 +161,10 @@ runner.use(
161
161
  statedb.asset.update(x.address, asset.update(x, { consumedTime: txTime }, context), context)
162
162
  )
163
163
  ),
164
-
165
- updateVaults(),
166
164
  ]);
167
165
 
166
+ await updateVaults();
167
+
168
168
  context.senderState = newSenderState;
169
169
  context.receiverState = newReceiverState;
170
170
  context.assetState = assetState;
@@ -65,7 +65,7 @@ runner.use(
65
65
  );
66
66
 
67
67
  // Ensure we are in append-only mode update proposed by issuer
68
- runner.use(async (context, next) => {
68
+ runner.use((context, next) => {
69
69
  const { itx, newData, senderState, assetState, issuerState } = context;
70
70
  if (issuerState && senderState.address === issuerState.address) {
71
71
  if (itx.moniker !== assetState.moniker) {
@@ -111,10 +111,10 @@ runner.use(
111
111
 
112
112
  // update asset state
113
113
  statedb.asset.update(itx.address, asset.update(assetState, updates, context), context),
114
-
115
- updateVaults(),
116
114
  ]);
117
115
 
116
+ await updateVaults();
117
+
118
118
  context.senderState = newSenderState;
119
119
  context.assetState = newAssetState;
120
120
 
@@ -158,10 +158,10 @@ runner.use(
158
158
  context.isDelegationChanged
159
159
  ? statedb.delegation.update(delegationState.address, delegation.update(delegationState, {}, context), context)
160
160
  : delegationState,
161
-
162
- updateVaults(),
163
161
  ]);
164
162
 
163
+ await updateVaults();
164
+
165
165
  context.senderState = newSenderState;
166
166
  context.factoryState = factoryState;
167
167
  context.delegationState = newDelegationState;
@@ -239,10 +239,10 @@ runner.use(
239
239
  evidence.create({ hash: itx.evidence.hash, data: 'claim-stake' }, context),
240
240
  context
241
241
  ),
242
-
243
- updateVaults(),
244
242
  ]);
245
243
 
244
+ await updateVaults();
245
+
246
246
  context.senderState = newSenderState;
247
247
  context.receiverStates = isAlsoSigner ? newReceiverStates.concat(newSenderState) : newReceiverStates;
248
248
  context.stakeState = newStakeState;
@@ -222,10 +222,10 @@ runner.use(
222
222
  statedb.asset.update(x.address, asset.update(x, assetUpdates[x.address], context), context)
223
223
  )
224
224
  ),
225
-
226
- updateVaults(),
227
225
  ]);
228
226
 
227
+ await updateVaults();
228
+
229
229
  context.senderState = newSenderState;
230
230
  context.receiverStates = newReceiverStates;
231
231
  context.stakeState = newStakeState;
@@ -148,9 +148,10 @@ runner.use(
148
148
  context
149
149
  ),
150
150
  statedb.stake.update(stakeState.address, stake.update(stakeState, stakeUpdates, context), context),
151
- updateVaults(),
152
151
  ]);
153
152
 
153
+ await updateVaults();
154
+
154
155
  context.senderState = newSenderState;
155
156
  context.stakeState = newStakeState;
156
157
 
@@ -238,10 +238,10 @@ runner.use(
238
238
  statedb.asset.update(x.address, asset.update(x, assetUpdates[x.address], context), context)
239
239
  )
240
240
  ),
241
-
242
- updateVaults(),
243
241
  ]);
244
242
 
243
+ await updateVaults();
244
+
245
245
  context.senderState = newSenderState;
246
246
  context.receiverStates = newReceiverStates;
247
247
  context.stakeState = newStakeState;
@@ -114,7 +114,7 @@ runner.use(pipes.ExtractState({ from: 'itx.slashersList', to: 'slasherStates', s
114
114
  runner.use(pipes.VerifyAccountMigration({ stateKey: 'slasherStates', addressKey: 'itx.slashersList' }));
115
115
 
116
116
  // 8. handle tx gas stakes
117
- runner.use(async (context, next) => {
117
+ runner.use((context, next) => {
118
118
  const { tx, itx, inputs, config } = context;
119
119
  const { token, transaction } = config;
120
120
  const { minStake, maxStake } = transaction.txGas;
@@ -266,10 +266,10 @@ runner.use(
266
266
  statedb.asset.update(x.address, asset.update(x, { owner: itx.address }, context), context)
267
267
  )
268
268
  ),
269
-
270
- updateVaults(),
271
269
  ]);
272
270
 
271
+ await updateVaults();
272
+
273
273
  context.senderState = newSenderState;
274
274
  context.signerStates = isAlsoSigner ? newSignerStates.concat(newSenderState) : newSignerStates;
275
275
  context.stakeState = newStakeState;
@@ -104,7 +104,7 @@ runner.use(pipes.ExtractState({ from: 'rollupState.tokenAddress', to: 'tokenStat
104
104
 
105
105
  // 8. split and aggregate block reward for each tx and the block
106
106
  runner.use(pipes.ExtractState({ from: 'blockState.txs', to: 'txs', status: 'INVALID_TX', table: 'tx' }));
107
- runner.use(async (context, next) => {
107
+ runner.use((context, next) => {
108
108
  const { itx, txs, rollupState, blockState, lockerState, tokenState, stakeState } = context;
109
109
  const { proposerFeeShare, publisherFeeShare } = rollupState;
110
110
 
@@ -306,10 +306,10 @@ runner.use(
306
306
  evidence.create({ hash: itx.blockHash, data: 'rollup-claim-block-reward' }, context),
307
307
  context
308
308
  ),
309
-
310
- updateVaults(),
311
309
  ]);
312
310
 
311
+ await updateVaults();
312
+
313
313
  // to avoid this to be incorrectly indexed
314
314
  delete context.stakeState;
315
315
 
@@ -82,10 +82,10 @@ runner.use(
82
82
  )
83
83
  )
84
84
  ),
85
-
86
- updateVaults(),
87
85
  ]);
88
86
 
87
+ await updateVaults();
88
+
89
89
  context.senderState = newSenderState;
90
90
  context.rollupState = newRollupState;
91
91
  context.stakeStates = newStakeStates;
@@ -381,10 +381,10 @@ runner.use(
381
381
  Promise.all(
382
382
  txStates.map((x) => statedb.tx.update(x.hash, Tx.update(x, { finalized: true, tx: x.tx }), context))
383
383
  ),
384
-
385
- updateVaults(),
386
384
  ]);
387
385
 
386
+ await updateVaults();
387
+
388
388
  context.senderState = newSenderState;
389
389
  context.stakeStates = newStakeStates.filter((x) => context.stakeUpdates[x.address]);
390
390
  context.newSenderStates = newSenderStates;
@@ -165,10 +165,10 @@ runner.use(
165
165
  context.isDelegationChanged
166
166
  ? statedb.delegation.update(delegationState.address, delegation.update(delegationState, {}, context), context)
167
167
  : delegationState,
168
-
169
- updateVaults(),
170
168
  ]);
171
169
 
170
+ await updateVaults();
171
+
172
172
  // FIXME: create-rollup 的时候不能校验 stake,还是在这里创建 stake?如果在这里创建 stake,是否需要多签?
173
173
  // FIXME: account migration 也需要测试下
174
174
 
@@ -163,10 +163,10 @@ runner.use(
163
163
  evidence.create({ hash: itx.evidence.hash, data: 'rollup-join' }, context),
164
164
  context
165
165
  ),
166
-
167
- updateVaults(),
168
166
  ]);
169
167
 
168
+ await updateVaults();
169
+
170
170
  context.senderState = newSenderState;
171
171
  context.rollupState = newRollupState;
172
172
  context.stakeState = newStakeState;
@@ -126,10 +126,10 @@ runner.use(
126
126
  evidence.create({ hash: itx.evidence.hash, data: 'rollup-leave' }, context),
127
127
  context
128
128
  ),
129
-
130
- updateVaults(),
131
129
  ]);
132
130
 
131
+ await updateVaults();
132
+
133
133
  context.senderState = newSenderState;
134
134
  context.rollupState = newRollupState;
135
135
  context.stakeState = newStakeState;
@@ -64,9 +64,10 @@ runner.use(
64
64
  context
65
65
  ),
66
66
  statedb.rollup.update(itx.rollup, updates, context),
67
- updateVaults(),
68
67
  ]);
69
68
 
69
+ await updateVaults();
70
+
70
71
  context.senderState = newSenderState;
71
72
  context.rollupState = newRollupState;
72
73
 
@@ -54,9 +54,10 @@ runner.use(
54
54
  context
55
55
  ),
56
56
  statedb.rollup.update(itx.rollup, rollup.pause(rollupState, context), context),
57
- updateVaults(),
58
57
  ]);
59
58
 
59
+ await updateVaults();
60
+
60
61
  context.senderState = newSenderState;
61
62
  context.rollupState = newRollupState;
62
63
 
@@ -9,7 +9,7 @@ module.exports = function CreateVerifyEvidencePipe({ evidenceKey, signaturesKey,
9
9
  throw new Error(`Invalid verify method: ${verifyMethod}, supported methods are: verify, ethVerify`);
10
10
  }
11
11
 
12
- return (context, next) => {
12
+ return async (context, next) => {
13
13
  const evidence = get(context, evidenceKey);
14
14
  const signatures = get(context, signaturesKey);
15
15
 
@@ -22,7 +22,8 @@ module.exports = function CreateVerifyEvidencePipe({ evidenceKey, signaturesKey,
22
22
  const wallet = fromPublicKey(pk, toTypeInfo(address));
23
23
 
24
24
  try {
25
- if (wallet[verifyMethod](toHex(evidence), toHex(signature)) === false) {
25
+ // eslint-disable-next-line no-await-in-loop
26
+ if ((await wallet[verifyMethod](toHex(evidence), toHex(signature))) === false) {
26
27
  return next(new Error('INVALID_SIGNATURE', `Signature for evidence from ${address} is not valid`));
27
28
  }
28
29
  } catch (err) {
@@ -54,9 +54,10 @@ runner.use(
54
54
  context
55
55
  ),
56
56
  statedb.rollup.update(itx.rollup, rollup.resume(rollupState, context), context),
57
- updateVaults(),
58
57
  ]);
59
58
 
59
+ await updateVaults();
60
+
60
61
  context.senderState = newSenderState;
61
62
  context.rollupState = newRollupState;
62
63
 
@@ -100,9 +100,10 @@ runner.use(
100
100
  context
101
101
  ),
102
102
  statedb.rollup.update(itx.rollup, rollup.update(rollupState, { ...itx, data }, context), context),
103
- updateVaults(),
104
103
  ]);
105
104
 
105
+ await updateVaults();
106
+
106
107
  context.senderState = newSenderState;
107
108
  context.rollupState = newRollupState;
108
109
 
@@ -161,10 +161,10 @@ runner.use(
161
161
  context.isDelegationChanged
162
162
  ? statedb.delegation.update(delegationState.address, delegation.update(delegationState, {}, context), context)
163
163
  : delegationState,
164
-
165
- updateVaults(),
166
164
  ]);
167
165
 
166
+ await updateVaults();
167
+
168
168
  context.senderState = newSenderState;
169
169
  context.tokenState = tokenState;
170
170
  context.delegatorState = newDelegatorState;
@@ -256,10 +256,10 @@ runner.use(
256
256
  evidence.create({ hash: itx.evidence.hash, data: 'rollup-deposit' }, context),
257
257
  context
258
258
  ),
259
-
260
- updateVaults(),
261
259
  ]);
262
260
 
261
+ await updateVaults();
262
+
263
263
  context.senderState = newSenderState;
264
264
  context.stakeState = newStakeState;
265
265
  context.evidenceState = evidenceState;
@@ -275,10 +275,10 @@ runner.use(
275
275
  ),
276
276
  context
277
277
  ),
278
-
279
- updateVaults(),
280
278
  ]);
281
279
 
280
+ await updateVaults();
281
+
282
282
  context.senderState = newSenderState;
283
283
  context.stakeState = newStakeState;
284
284
  context.lockerState = newLockerState;
@@ -200,10 +200,10 @@ runner.use(
200
200
  account.update(receiverState, { tokens: receiverStateTokens }, context),
201
201
  context
202
202
  ),
203
-
204
- updateVaults(),
205
203
  ]);
206
204
 
205
+ await updateVaults();
206
+
207
207
  context.senderState = newSenderState;
208
208
  context.receiverState = newReceiverState;
209
209
 
@@ -194,10 +194,10 @@ runner.use(
194
194
  context.isDelegationChanged
195
195
  ? statedb.delegation.update(delegationState.address, delegation.update(delegationState, {}, context), context)
196
196
  : delegationState,
197
-
198
- updateVaults(),
199
197
  ]);
200
198
 
199
+ await updateVaults();
200
+
201
201
  context.senderState = newSenderState;
202
202
  context.receiverState = newReceiverState;
203
203
  context.delegationState = newDelegationState;
@@ -287,10 +287,10 @@ runner.use(
287
287
  statedb.asset.update(x.address, asset.update(x, assetUpdates[x.address], context), context)
288
288
  )
289
289
  ),
290
-
291
- updateVaults(),
292
290
  ]);
293
291
 
292
+ await updateVaults();
293
+
294
294
  context.senderState = newSenderState;
295
295
  context.signerStates = isAlsoSigner ? newSignerStates.concat(newSenderState) : newSignerStates;
296
296
  context.receiverStates = isAlsoReceiver ? newReceiverStates.concat(newSenderState) : newReceiverStates;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.18.165",
6
+ "version": "1.19.0",
7
7
  "description": "Predefined tx pipeline sets to execute certain type of transactions",
8
8
  "main": "lib/index.js",
9
9
  "files": [
@@ -21,18 +21,18 @@
21
21
  "author": "wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)",
22
22
  "license": "MIT",
23
23
  "dependencies": {
24
- "@arcblock/did": "1.18.165",
25
- "@arcblock/did-util": "1.18.165",
26
- "@arcblock/jwt": "1.18.165",
27
- "@arcblock/validator": "1.18.165",
28
- "@ocap/asset": "1.18.165",
29
- "@ocap/mcrypto": "1.18.165",
30
- "@ocap/merkle-tree": "1.18.165",
31
- "@ocap/message": "1.18.165",
32
- "@ocap/state": "1.18.165",
33
- "@ocap/tx-pipeline": "1.18.165",
34
- "@ocap/util": "1.18.165",
35
- "@ocap/wallet": "1.18.165",
24
+ "@arcblock/did": "1.19.0",
25
+ "@arcblock/did-util": "1.19.0",
26
+ "@arcblock/jwt": "1.19.0",
27
+ "@arcblock/validator": "1.19.0",
28
+ "@ocap/asset": "1.19.0",
29
+ "@ocap/mcrypto": "1.19.0",
30
+ "@ocap/merkle-tree": "1.19.0",
31
+ "@ocap/message": "1.19.0",
32
+ "@ocap/state": "1.19.0",
33
+ "@ocap/tx-pipeline": "1.19.0",
34
+ "@ocap/util": "1.19.0",
35
+ "@ocap/wallet": "1.19.0",
36
36
  "debug": "^4.3.6",
37
37
  "deep-diff": "^1.0.2",
38
38
  "empty-value": "^1.0.1",
@@ -47,5 +47,5 @@
47
47
  "jest": "^29.7.0",
48
48
  "start-server-and-test": "^1.14.0"
49
49
  },
50
- "gitHead": "e1a9e9e807ca049f67ffbb5ac556b014461cb7a1"
50
+ "gitHead": "1b6fac03988fb18507c8ef4c21de282762005f87"
51
51
  }