@ocap/tx-protocols 1.18.161 → 1.18.163

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 (34) hide show
  1. package/lib/protocols/account/declare.js +5 -0
  2. package/lib/protocols/account/delegate.js +5 -0
  3. package/lib/protocols/account/migrate.js +6 -1
  4. package/lib/protocols/account/revoke-delegate.js +5 -0
  5. package/lib/protocols/asset/acquire-v2.js +5 -0
  6. package/lib/protocols/asset/acquire-v3.js +5 -0
  7. package/lib/protocols/asset/consume.js +5 -0
  8. package/lib/protocols/asset/create.js +5 -0
  9. package/lib/protocols/asset/mint.js +5 -0
  10. package/lib/protocols/asset/pipes/exec-mint-hook.js +4 -1
  11. package/lib/protocols/asset/update.js +5 -0
  12. package/lib/protocols/factory/create.js +5 -0
  13. package/lib/protocols/governance/claim-stake.js +5 -0
  14. package/lib/protocols/governance/return-stake.js +5 -0
  15. package/lib/protocols/governance/revoke-stake.js +5 -0
  16. package/lib/protocols/governance/slash-stake.js +5 -0
  17. package/lib/protocols/governance/stake.js +5 -0
  18. package/lib/protocols/rollup/claim-reward.js +5 -0
  19. package/lib/protocols/rollup/close.js +5 -0
  20. package/lib/protocols/rollup/create-block.js +5 -0
  21. package/lib/protocols/rollup/create.js +5 -0
  22. package/lib/protocols/rollup/join.js +5 -0
  23. package/lib/protocols/rollup/leave.js +5 -0
  24. package/lib/protocols/rollup/migrate.js +5 -0
  25. package/lib/protocols/rollup/pause.js +5 -0
  26. package/lib/protocols/rollup/resume.js +5 -0
  27. package/lib/protocols/rollup/update.js +5 -0
  28. package/lib/protocols/token/create.js +5 -0
  29. package/lib/protocols/token/deposit-v2.js +5 -0
  30. package/lib/protocols/token/withdraw-v2.js +5 -0
  31. package/lib/protocols/trade/exchange-v2.js +5 -0
  32. package/lib/protocols/trade/transfer-v2.js +5 -0
  33. package/lib/protocols/trade/transfer-v3.js +5 -0
  34. package/package.json +14 -14
@@ -32,6 +32,9 @@ runner.use(pipes.VerifyAccountMigration({ stateKey: 'senderState', addressKey: '
32
32
  // The issuer must exist in the ledger
33
33
  runner.use(pipes.ExtractState({ from: 'itx.issuer', to: 'issuerState', status: 'INVALID_TX' }));
34
34
 
35
+ // Save context snapshot before updating states
36
+ runner.use(pipes.TakeStateSnapshot());
37
+
35
38
  // Create account state
36
39
  runner.use(
37
40
  async (context, next) => {
@@ -53,4 +56,6 @@ runner.use(
53
56
  { persistError: true }
54
57
  );
55
58
 
59
+ runner.use(pipes.VerifyStateDiff());
60
+
56
61
  module.exports = runner;
@@ -128,6 +128,9 @@ runner.use(
128
128
  );
129
129
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
130
130
 
131
+ // Save context snapshot before updating states
132
+ runner.use(pipes.TakeStateSnapshot());
133
+
131
134
  // Create delegation state
132
135
  runner.use(
133
136
  async (context, next) => {
@@ -206,4 +209,6 @@ runner.use(
206
209
  { persistError: true }
207
210
  );
208
211
 
212
+ runner.use(pipes.VerifyStateDiff());
213
+
209
214
  module.exports = runner;
@@ -52,6 +52,9 @@ runner.use(
52
52
  );
53
53
  runner.use(EnsureTxCost({ attachSenderChanges: true, throwOnInsufficientFund: false }));
54
54
 
55
+ // Save context snapshot before updating states
56
+ runner.use(pipes.TakeStateSnapshot());
57
+
55
58
  // Create account state, and update old accounts
56
59
  runner.use(
57
60
  async (context, next) => {
@@ -104,11 +107,13 @@ runner.use(
104
107
 
105
108
  // Update context
106
109
  context.receiverState = newAccount;
107
- context.senderState = states.find((x) => x.address === sender.from);
110
+ context.senderState = states.find((x) => x.address === sender.address);
108
111
 
109
112
  return next();
110
113
  },
111
114
  { persistError: true }
112
115
  );
113
116
 
117
+ runner.use(pipes.VerifyStateDiff());
118
+
114
119
  module.exports = runner;
@@ -65,6 +65,9 @@ runner.use(pipes.VerifyAccountMigration({ stateKey: 'senderState', addressKey: '
65
65
  runner.use(EnsureTxGas(() => ({ create: 0, update: 2, payment: 0 })));
66
66
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
67
67
 
68
+ // Save context snapshot before updating states
69
+ runner.use(pipes.TakeStateSnapshot());
70
+
68
71
  // Update delegation state
69
72
  runner.use(
70
73
  async (context, next) => {
@@ -98,4 +101,6 @@ runner.use(
98
101
  { persistError: true }
99
102
  );
100
103
 
104
+ runner.use(pipes.VerifyStateDiff());
105
+
101
106
  module.exports = runner;
@@ -144,6 +144,9 @@ runner.use(
144
144
  );
145
145
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
146
146
 
147
+ // Save context snapshot before updating states
148
+ runner.use(pipes.TakeStateSnapshot());
149
+
147
150
  // update statedb
148
151
  runner.use(
149
152
  async (context, next) => {
@@ -236,4 +239,6 @@ runner.use(
236
239
  // run minting hooks for instant settlement
237
240
  runner.use(execMintHook, { persistError: true });
238
241
 
242
+ runner.use(pipes.VerifyStateDiff());
243
+
239
244
  module.exports = runner;
@@ -194,6 +194,9 @@ runner.use(
194
194
  );
195
195
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
196
196
 
197
+ // Save context snapshot before updating states
198
+ runner.use(pipes.TakeStateSnapshot());
199
+
197
200
  // update statedb
198
201
  runner.use(
199
202
  async (context, next) => {
@@ -307,4 +310,6 @@ runner.use(
307
310
  // run minting hooks for instant settlement
308
311
  runner.use(execMintHook, { persistError: true });
309
312
 
313
+ runner.use(pipes.VerifyStateDiff());
314
+
310
315
  module.exports = runner;
@@ -63,6 +63,9 @@ runner.use(pipes.VerifyAccountMigration({ signerKey: 'signerStates' }));
63
63
  runner.use(EnsureTxGas(() => ({ create: 0, update: 2, payment: 0 })));
64
64
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
65
65
 
66
+ // Save context snapshot before updating states
67
+ runner.use(pipes.TakeStateSnapshot());
68
+
66
69
  // Update asset state
67
70
  runner.use(
68
71
  async (context, next) => {
@@ -92,4 +95,6 @@ runner.use(
92
95
  { persistError: true }
93
96
  );
94
97
 
98
+ runner.use(pipes.VerifyStateDiff());
99
+
95
100
  module.exports = runner;
@@ -102,6 +102,9 @@ runner.use(pipes.ExtractState({ from: 'itx.parent', to: 'parentAsset', status: '
102
102
  runner.use(EnsureTxGas(() => ({ create: 1, update: 2, payment: 0 })));
103
103
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
104
104
 
105
+ // Save context snapshot before updating states
106
+ runner.use(pipes.TakeStateSnapshot());
107
+
105
108
  // Update asset state
106
109
  runner.use(
107
110
  async (context, next) => {
@@ -141,4 +144,6 @@ runner.use(
141
144
  { persistError: true }
142
145
  );
143
146
 
147
+ runner.use(pipes.VerifyStateDiff());
148
+
144
149
  module.exports = runner;
@@ -108,6 +108,9 @@ runner.use(
108
108
  );
109
109
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
110
110
 
111
+ // Save context snapshot before updating states
112
+ runner.use(pipes.TakeStateSnapshot());
113
+
111
114
  // update statedb
112
115
  runner.use(
113
116
  async (context, next) => {
@@ -175,4 +178,6 @@ runner.use(
175
178
  { persistError: true }
176
179
  );
177
180
 
181
+ runner.use(pipes.VerifyStateDiff());
182
+
178
183
  module.exports = runner;
@@ -19,6 +19,7 @@ module.exports = async (context, next) => {
19
19
 
20
20
  // These calls must be run sequentially, because different calls may update same account
21
21
  const clone = cloneDeep(mintHook.compiled);
22
+ const mintHookStates = {};
22
23
  for (const x of clone) {
23
24
  // Convert transfer to transferToken call for backwards compatibility
24
25
  if (x.call === 'transfer') {
@@ -36,9 +37,11 @@ module.exports = async (context, next) => {
36
37
  args: x.args,
37
38
  });
38
39
 
39
- await statedb.account.update(updateSet.address, updateSet.updates, context);
40
+ mintHookStates[updateSet.address] = await statedb.account.update(updateSet.address, updateSet.updates, context);
40
41
  context.updatedAccounts.push(updateSet);
41
42
  }
43
+
44
+ context.mintHookStates = Object.values(mintHookStates);
42
45
  }
43
46
  } else {
44
47
  context.receipts = [
@@ -88,6 +88,9 @@ runner.use(async (context, next) => {
88
88
  runner.use(EnsureTxGas(() => ({ create: 0, update: 2, payment: 0 })));
89
89
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
90
90
 
91
+ // Save context snapshot before updating states
92
+ runner.use(pipes.TakeStateSnapshot());
93
+
91
94
  // Update asset state
92
95
  runner.use(
93
96
  async (context, next) => {
@@ -122,4 +125,6 @@ runner.use(
122
125
  { persistError: true }
123
126
  );
124
127
 
128
+ runner.use(pipes.VerifyStateDiff());
129
+
125
130
  module.exports = runner;
@@ -123,6 +123,9 @@ runner.use(pipes.VerifyAccountMigration({ stateKey: 'issuerStates', addressKey:
123
123
  runner.use(EnsureTxGas(() => ({ create: 1, update: 2, payment: 0 })));
124
124
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
125
125
 
126
+ // Save context snapshot before updating states
127
+ runner.use(pipes.TakeStateSnapshot());
128
+
126
129
  // Create factory state
127
130
  runner.use(
128
131
  async (context, next) => {
@@ -170,4 +173,6 @@ runner.use(
170
173
  { persistError: true }
171
174
  );
172
175
 
176
+ runner.use(pipes.VerifyStateDiff());
177
+
173
178
  module.exports = runner;
@@ -150,6 +150,9 @@ runner.use(
150
150
  );
151
151
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
152
152
 
153
+ // Save context snapshot before updating states
154
+ runner.use(pipes.TakeStateSnapshot());
155
+
153
156
  // 8. update statedb
154
157
  runner.use(
155
158
  async (context, next) => {
@@ -253,4 +256,6 @@ runner.use(
253
256
  { persistError: true }
254
257
  );
255
258
 
259
+ runner.use(pipes.VerifyStateDiff());
260
+
256
261
  module.exports = runner;
@@ -145,6 +145,9 @@ runner.use(
145
145
  );
146
146
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
147
147
 
148
+ // Save context snapshot before updating states
149
+ runner.use(pipes.TakeStateSnapshot());
150
+
148
151
  // 8. update statedb
149
152
  runner.use(
150
153
  async (context, next) => {
@@ -235,4 +238,6 @@ runner.use(
235
238
  { persistError: true }
236
239
  );
237
240
 
241
+ runner.use(pipes.VerifyStateDiff());
242
+
238
243
  module.exports = runner;
@@ -113,6 +113,9 @@ runner.use(pipes.VerifyUpdater({ assetKey: 'assetStates', ownerKey: 'stakeState'
113
113
  runner.use(EnsureTxGas(() => ({ create: 0, update: 2, payment: 0 })));
114
114
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
115
115
 
116
+ // Save context snapshot before updating states
117
+ runner.use(pipes.TakeStateSnapshot());
118
+
116
119
  // 8. update statedb
117
120
  runner.use(
118
121
  async (context, next) => {
@@ -158,4 +161,6 @@ runner.use(
158
161
  { persistError: true }
159
162
  );
160
163
 
164
+ runner.use(pipes.VerifyStateDiff());
165
+
161
166
  module.exports = runner;
@@ -148,6 +148,9 @@ runner.use(
148
148
  );
149
149
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
150
150
 
151
+ // Save context snapshot before updating states
152
+ runner.use(pipes.TakeStateSnapshot());
153
+
151
154
  // 8. update statedb
152
155
  runner.use(
153
156
  async (context, next) => {
@@ -251,4 +254,6 @@ runner.use(
251
254
  { persistError: true }
252
255
  );
253
256
 
257
+ runner.use(pipes.VerifyStateDiff());
258
+
254
259
  module.exports = runner;
@@ -179,6 +179,9 @@ runner.use(
179
179
  );
180
180
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
181
181
 
182
+ // Save context snapshot before updating states
183
+ runner.use(pipes.TakeStateSnapshot());
184
+
182
185
  // update statedb
183
186
  runner.use(
184
187
  async (context, next) => {
@@ -279,4 +282,6 @@ runner.use(
279
282
  { persistError: true }
280
283
  );
281
284
 
285
+ runner.use(pipes.VerifyStateDiff());
286
+
282
287
  module.exports = runner;
@@ -241,6 +241,9 @@ runner.use(
241
241
  );
242
242
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
243
243
 
244
+ // Save context snapshot before updating states
245
+ runner.use(pipes.TakeStateSnapshot());
246
+
244
247
  // 10. update state
245
248
  runner.use(
246
249
  async (context, next) => {
@@ -324,4 +327,6 @@ runner.use(
324
327
  { persistError: true }
325
328
  );
326
329
 
330
+ runner.use(pipes.VerifyStateDiff());
331
+
327
332
  module.exports = runner;
@@ -53,6 +53,9 @@ runner.use(pipes.ExtractState({ from: 'stakes', to: 'stakeStates', status: 'INVA
53
53
  runner.use(EnsureTxGas((context) => ({ create: 0, update: context.stakeStates.length + 2, payment: 0 })));
54
54
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
55
55
 
56
+ // Save context snapshot before updating states
57
+ runner.use(pipes.TakeStateSnapshot());
58
+
56
59
  // 7. update rollup state
57
60
  runner.use(
58
61
  async (context, next) => {
@@ -92,4 +95,6 @@ runner.use(
92
95
  { persistError: true }
93
96
  );
94
97
 
98
+ runner.use(pipes.VerifyStateDiff());
99
+
95
100
  module.exports = runner;
@@ -301,6 +301,9 @@ runner.use(
301
301
  );
302
302
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
303
303
 
304
+ // Save context snapshot before updating states
305
+ runner.use(pipes.TakeStateSnapshot());
306
+
304
307
  // 11. update state: mint tokens for deposits, burn tokens for withdraws
305
308
  runner.use(
306
309
  async (context, next) => {
@@ -399,4 +402,6 @@ runner.use(
399
402
  { persistError: true }
400
403
  );
401
404
 
405
+ runner.use(pipes.VerifyStateDiff());
406
+
402
407
  module.exports = runner;
@@ -121,6 +121,9 @@ runner.use(
121
121
  runner.use(EnsureTxGas(() => ({ create: 1, update: 2, payment: 0 })));
122
122
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
123
123
 
124
+ // Save context snapshot before updating states
125
+ runner.use(pipes.TakeStateSnapshot());
126
+
124
127
  // 5. create rollup state
125
128
  runner.use(
126
129
  async (context, next) => {
@@ -180,4 +183,6 @@ runner.use(
180
183
  { persistError: true }
181
184
  );
182
185
 
186
+ runner.use(pipes.VerifyStateDiff());
187
+
183
188
  module.exports = runner;
@@ -116,6 +116,9 @@ runner.use(pipes.VerifyAccountMigration({ signerKey: 'signerStates', stateKey: '
116
116
  runner.use(EnsureTxGas(() => ({ create: 1, update: 3, payment: 0 })));
117
117
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
118
118
 
119
+ // Save context snapshot before updating states
120
+ runner.use(pipes.TakeStateSnapshot());
121
+
119
122
  // 8. update state
120
123
  runner.use(
121
124
  async (context, next) => {
@@ -176,4 +179,6 @@ runner.use(
176
179
  { persistError: true }
177
180
  );
178
181
 
182
+ runner.use(pipes.VerifyStateDiff());
183
+
179
184
  module.exports = runner;
@@ -93,6 +93,9 @@ runner.use(pipes.VerifyAccountMigration({ signerKey: 'signerStates', stateKey: '
93
93
  runner.use(EnsureTxGas(() => ({ create: 1, update: 3, payment: 0 })));
94
94
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
95
95
 
96
+ // Save context snapshot before updating states
97
+ runner.use(pipes.TakeStateSnapshot());
98
+
96
99
  // 8. update state
97
100
  runner.use(
98
101
  async (context, next) => {
@@ -139,4 +142,6 @@ runner.use(
139
142
  { persistError: true }
140
143
  );
141
144
 
145
+ runner.use(pipes.VerifyStateDiff());
146
+
142
147
  module.exports = runner;
@@ -42,6 +42,9 @@ runner.use(pipes.VerifyAccountMigration({ signerKey: 'signerStates', stateKey: '
42
42
  runner.use(EnsureTxGas(() => ({ create: 0, update: 2, payment: 0 })));
43
43
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
44
44
 
45
+ // Save context snapshot before updating states
46
+ runner.use(pipes.TakeStateSnapshot());
47
+
45
48
  // 5. update state
46
49
  runner.use(
47
50
  async (context, next) => {
@@ -72,4 +75,6 @@ runner.use(
72
75
  { persistError: true }
73
76
  );
74
77
 
78
+ runner.use(pipes.VerifyStateDiff());
79
+
75
80
  module.exports = runner;
@@ -39,6 +39,9 @@ runner.use(pipes.VerifyAccountMigration({ signerKey: 'signerStates', stateKey: '
39
39
  runner.use(EnsureTxGas(() => ({ create: 0, update: 2, payment: 0 })));
40
40
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
41
41
 
42
+ // Save context snapshot before updating states
43
+ runner.use(pipes.TakeStateSnapshot());
44
+
42
45
  // 5. update rollup state
43
46
  runner.use(
44
47
  async (context, next) => {
@@ -62,4 +65,6 @@ runner.use(
62
65
  { persistError: true }
63
66
  );
64
67
 
68
+ runner.use(pipes.VerifyStateDiff());
69
+
65
70
  module.exports = runner;
@@ -39,6 +39,9 @@ runner.use(pipes.VerifyAccountMigration({ signerKey: 'signerStates', stateKey: '
39
39
  runner.use(EnsureTxGas(() => ({ create: 0, update: 2, payment: 0 })));
40
40
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
41
41
 
42
+ // Save context snapshot before updating states
43
+ runner.use(pipes.TakeStateSnapshot());
44
+
42
45
  // 5. update rollup state
43
46
  runner.use(
44
47
  async (context, next) => {
@@ -62,4 +65,6 @@ runner.use(
62
65
  { persistError: true }
63
66
  );
64
67
 
68
+ runner.use(pipes.VerifyStateDiff());
69
+
65
70
  module.exports = runner;
@@ -84,6 +84,9 @@ runner.use(pipes.VerifyAccountMigration({ signerKey: 'signerStates', stateKey: '
84
84
  runner.use(EnsureTxGas(() => ({ create: 0, update: 2, payment: 0 })));
85
85
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
86
86
 
87
+ // Save context snapshot before updating states
88
+ runner.use(pipes.TakeStateSnapshot());
89
+
87
90
  // 5. update rollup state
88
91
  runner.use(
89
92
  async (context, next) => {
@@ -110,4 +113,6 @@ runner.use(
110
113
  { persistError: true }
111
114
  );
112
115
 
116
+ runner.use(pipes.VerifyStateDiff());
117
+
113
118
  module.exports = runner;
@@ -118,6 +118,9 @@ runner.use(
118
118
  );
119
119
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
120
120
 
121
+ // Save context snapshot before updating states
122
+ runner.use(pipes.TakeStateSnapshot());
123
+
121
124
  // Update sender state, token state
122
125
  runner.use(
123
126
  async (context, next) => {
@@ -174,4 +177,6 @@ runner.use(
174
177
  { persistError: true }
175
178
  );
176
179
 
180
+ runner.use(pipes.VerifyStateDiff());
181
+
177
182
  module.exports = runner;
@@ -183,6 +183,9 @@ runner.use(
183
183
  );
184
184
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
185
185
 
186
+ // Save context snapshot before updating states
187
+ runner.use(pipes.TakeStateSnapshot());
188
+
186
189
  // 8. update state: the token minting is done when deposit finalized in rollup-block
187
190
  runner.use(
188
191
  async (context, next) => {
@@ -278,4 +281,6 @@ runner.use(
278
281
  { persistError: true }
279
282
  );
280
283
 
284
+ runner.use(pipes.VerifyStateDiff());
285
+
281
286
  module.exports = runner;
@@ -187,6 +187,9 @@ runner.use(
187
187
  );
188
188
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
189
189
 
190
+ // Save context snapshot before updating states
191
+ runner.use(pipes.TakeStateSnapshot());
192
+
190
193
  // 8. update state: the fee splitting and token burning is done when withdraw finalized in rollup-block
191
194
  runner.use(
192
195
  async (context, next) => {
@@ -294,4 +297,6 @@ runner.use(
294
297
  { persistError: true }
295
298
  );
296
299
 
300
+ runner.use(pipes.VerifyStateDiff());
301
+
297
302
  module.exports = runner;
@@ -147,6 +147,9 @@ runner.use(EnsureTxCost({ attachSenderChanges: true }));
147
147
  runner.use(pipes.UpdateOwner({ assets: 'priv.senderAssets', owner: 'receiverState' }));
148
148
  runner.use(pipes.UpdateOwner({ assets: 'priv.receiverAssets', owner: 'senderState' }));
149
149
 
150
+ // Save context snapshot before updating states
151
+ runner.use(pipes.TakeStateSnapshot());
152
+
150
153
  // update statedb
151
154
  runner.use(
152
155
  async (context, next) => {
@@ -216,4 +219,6 @@ runner.use(
216
219
  { persistError: true }
217
220
  );
218
221
 
222
+ runner.use(pipes.VerifyStateDiff());
223
+
219
224
  module.exports = runner;
@@ -144,6 +144,9 @@ runner.use((context, next) => {
144
144
  });
145
145
  runner.use(pipes.UpdateOwner({ assets: 'assetStates', owner: 'receiverAddr' }));
146
146
 
147
+ // Save context snapshot before updating states
148
+ runner.use(pipes.TakeStateSnapshot());
149
+
147
150
  // update statedb: transfer tokens to new owner
148
151
  runner.use(
149
152
  async (context, next) => {
@@ -206,4 +209,6 @@ runner.use(
206
209
  { persistError: true }
207
210
  );
208
211
 
212
+ runner.use(pipes.VerifyStateDiff());
213
+
209
214
  module.exports = runner;
@@ -183,6 +183,9 @@ runner.use(
183
183
  );
184
184
  runner.use(EnsureTxCost({ attachSenderChanges: true }));
185
185
 
186
+ // Save context snapshot before updating states
187
+ runner.use(pipes.TakeStateSnapshot());
188
+
186
189
  // Update statedb
187
190
  runner.use(
188
191
  async (context, next) => {
@@ -300,4 +303,6 @@ runner.use(
300
303
  { persistError: true }
301
304
  );
302
305
 
306
+ runner.use(pipes.VerifyStateDiff());
307
+
303
308
  module.exports = runner;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.18.161",
6
+ "version": "1.18.163",
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.161",
25
- "@arcblock/did-util": "1.18.161",
26
- "@arcblock/jwt": "1.18.161",
27
- "@arcblock/validator": "1.18.161",
28
- "@ocap/asset": "1.18.161",
29
- "@ocap/mcrypto": "1.18.161",
30
- "@ocap/merkle-tree": "1.18.161",
31
- "@ocap/message": "1.18.161",
32
- "@ocap/state": "1.18.161",
33
- "@ocap/tx-pipeline": "1.18.161",
34
- "@ocap/util": "1.18.161",
35
- "@ocap/wallet": "1.18.161",
24
+ "@arcblock/did": "1.18.163",
25
+ "@arcblock/did-util": "1.18.163",
26
+ "@arcblock/jwt": "1.18.163",
27
+ "@arcblock/validator": "1.18.163",
28
+ "@ocap/asset": "1.18.163",
29
+ "@ocap/mcrypto": "1.18.163",
30
+ "@ocap/merkle-tree": "1.18.163",
31
+ "@ocap/message": "1.18.163",
32
+ "@ocap/state": "1.18.163",
33
+ "@ocap/tx-pipeline": "1.18.163",
34
+ "@ocap/util": "1.18.163",
35
+ "@ocap/wallet": "1.18.163",
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": "5d8436fdf5218fcbf2218b77ae370d50617ba3d0"
50
+ "gitHead": "c4bb7fae24dbac7a56ffbb84d19f64b90ea770b7"
51
51
  }