dequanto 0.2.42 → 0.2.43
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.
|
@@ -15,6 +15,7 @@ const SafeTx_1 = require("../../safe/SafeTx.js");
|
|
|
15
15
|
const TimelockController_1 = require("../../prebuilt/openzeppelin/TimelockController.js");
|
|
16
16
|
const TimelockService_1 = require("../../services/TimelockService/TimelockService.js");
|
|
17
17
|
const _contract_1 = require("../../utils/$contract.js");
|
|
18
|
+
const _require_1 = require("../../utils/$require.js");
|
|
18
19
|
class BatchAgent {
|
|
19
20
|
constructor(options) {
|
|
20
21
|
this.options = options;
|
|
@@ -41,6 +42,7 @@ class BatchAgent {
|
|
|
41
42
|
};
|
|
42
43
|
});
|
|
43
44
|
}
|
|
45
|
+
// Called by TxWriter for regular transactions. Prevents on-chain submission and keeps the transaction in the batch.
|
|
44
46
|
async process(senderMix, account, outerWriter) {
|
|
45
47
|
if (outerWriter.builder.data.to == null && this.options?.ignoreContractCreation != false) {
|
|
46
48
|
return null;
|
|
@@ -55,6 +57,7 @@ class BatchAgent {
|
|
|
55
57
|
await inner.process();
|
|
56
58
|
return inner;
|
|
57
59
|
}
|
|
60
|
+
// Submits queued transactions on-chain. If the account is Safe or Timelock, prepares the corresponding calldata and submits as batch transaction.
|
|
58
61
|
async execute() {
|
|
59
62
|
this.disable();
|
|
60
63
|
let groupStart = 0;
|
|
@@ -62,11 +65,14 @@ class BatchAgent {
|
|
|
62
65
|
for (let i = 0; i < this.transactions.length; i++) {
|
|
63
66
|
let tx = this.transactions[i];
|
|
64
67
|
let next = i < this.transactions.length - 1
|
|
65
|
-
? this.transactions[i +
|
|
68
|
+
? this.transactions[i + 1]
|
|
66
69
|
: null;
|
|
67
|
-
|
|
70
|
+
let acc0 = tx.account?.address ?? tx.sender?.address;
|
|
71
|
+
let acc1 = next?.account?.address ?? next?.sender?.address;
|
|
72
|
+
if (next == null || _address_1.$address.eq(acc0, acc1) === false) {
|
|
68
73
|
let arr = await this.executeGroup(this.transactions.slice(groupStart, i + 1));
|
|
69
74
|
writers.push(...arr);
|
|
75
|
+
groupStart = i + 1;
|
|
70
76
|
}
|
|
71
77
|
}
|
|
72
78
|
this.enable();
|
|
@@ -74,24 +80,27 @@ class BatchAgent {
|
|
|
74
80
|
}
|
|
75
81
|
async executeGroup(txs) {
|
|
76
82
|
let { account, sender } = txs[0];
|
|
77
|
-
|
|
78
|
-
|
|
83
|
+
let acc = account ?? sender;
|
|
84
|
+
if (acc.name.includes('safe/')) {
|
|
85
|
+
let tx = await this.executeBatchSafe(acc, txs);
|
|
79
86
|
return [tx];
|
|
80
87
|
}
|
|
81
|
-
if (
|
|
88
|
+
if (acc.name.includes('timelock/')) {
|
|
82
89
|
let tx = await this.executeBatchTimelock(sender, account, txs);
|
|
83
90
|
return [tx];
|
|
84
91
|
}
|
|
85
92
|
let writers = [];
|
|
86
93
|
for (let i = 0; i < txs.length; i++) {
|
|
87
|
-
let
|
|
88
|
-
|
|
89
|
-
|
|
94
|
+
let writer = txs[i].outerWriter;
|
|
95
|
+
writer.tx = null;
|
|
96
|
+
writer.txs = [];
|
|
97
|
+
writer.receipt = null;
|
|
90
98
|
writers.push(writer);
|
|
99
|
+
await writer.send().wait();
|
|
91
100
|
}
|
|
92
101
|
return writers;
|
|
93
102
|
}
|
|
94
|
-
async executeBatchSafe(
|
|
103
|
+
async executeBatchSafe(account, txs) {
|
|
95
104
|
let client = txs[0].outerWriter.client;
|
|
96
105
|
let safe = new SafeTx_1.SafeTx(account, client);
|
|
97
106
|
let calls = txs.map(x => x.outerWriter.builder.getTxData());
|
|
@@ -100,6 +109,8 @@ class BatchAgent {
|
|
|
100
109
|
return writer;
|
|
101
110
|
}
|
|
102
111
|
async executeBatchTimelock(sender, account, txs) {
|
|
112
|
+
_require_1.$require.notNull(sender, `Sender is undefined`);
|
|
113
|
+
_require_1.$require.notNull(account, `Timelock is undefined`);
|
|
103
114
|
let client = txs[0].outerWriter.client;
|
|
104
115
|
let timelock = new TimelockController_1.TimelockController(account.address, client);
|
|
105
116
|
let service = new TimelockService_1.TimelockService(timelock, {});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BatchAgent.js","sourceRoot":"","sources":["../../../../src/txs/agents/BatchAgent.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAGxB,0CAAgG;AAEhG,uEAAoE;AACpE,2CAA2D;AAE3D,iDAA8C;AAE9C,uDAAoD;AACpD,qDAAkD;AAClD,kDAA+C;AAC/C,2FAAwF;AACxF,wFAAqF;AAErF,yDAAsD;
|
|
1
|
+
{"version":3,"file":"BatchAgent.js","sourceRoot":"","sources":["../../../../src/txs/agents/BatchAgent.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAGxB,0CAAgG;AAEhG,uEAAoE;AACpE,2CAA2D;AAE3D,iDAA8C;AAE9C,uDAAoD;AACpD,qDAAkD;AAClD,kDAA+C;AAC/C,2FAAwF;AACxF,wFAAqF;AAErF,yDAAsD;AACtD,uDAAoD;AAEpD,MAAa,UAAU;IAInB,YAAoB,OAGnB;QAHmB,YAAO,GAAP,OAAO,CAG1B;QALM,iBAAY,GAAmB,EAAE,CAAA;IAOxC,CAAC;IAED,MAAM;QACF,mBAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;QAC/B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO;QACH,mBAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;QAC/B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAC9B,IAAI,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC9C,OAAO;gBACH,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBAErB,MAAM,EAAE,EAAE,CAAC,MAAM;gBACjB,OAAO,EAAE,EAAE,CAAC,OAAO;aACtB,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED,oHAAoH;IACpH,KAAK,CAAC,OAAO,CAAE,SAA6B,EAAE,OAAsB,EAAE,WAAqB;QAEvF,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,sBAAsB,IAAI,KAAK,EAAE;YACtF,OAAO,IAAI,CAAC;SACf;QAED,IAAI,MAAM,GAAG,OAAO,SAAS,KAAK,QAAQ;YACtC,CAAC,CAAC,MAAM,yCAAmB,CAAC,GAAG,CAAC,SAAS,CAAc;YACvD,CAAC,CAAC,SAAS,CAAC;QAEhB,IAAI,KAAK,GAAG,IAAI,YAAY,CACxB,MAAM,EACN,OAAO,EACP,WAAW,CACd,CAAC;QAEF,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrD,iBAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;QAErC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,kJAAkJ;IAClJ,KAAK,CAAC,OAAO;QACT,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/C,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBACvC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC1B,CAAC,CAAC,IAAI,CAAC;YAEX,IAAI,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;YACrD,IAAI,IAAI,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC;YAE3D,IAAI,IAAI,IAAI,IAAI,IAAI,mBAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,EAAE;gBACnD,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC9E,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBACrB,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;aACtB;SACJ;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,YAAY,CAAE,GAAmB;QAC3C,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,GAAG,GAAG,OAAO,IAAI,MAAM,CAAC;QAC5B,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC5B,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC/C,OAAO,CAAE,EAAE,CAAE,CAAC;SACjB;QACD,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YAChC,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YAC/D,OAAO,CAAE,EAAE,CAAE,CAAC;SACjB;QACD,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;YAChC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;YACjB,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;YAChB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;SAC9B;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IACO,KAAK,CAAC,gBAAgB,CAAE,OAAsB,EAAE,GAAmB;QACvE,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;QACvC,IAAI,IAAI,GAAG,IAAI,eAAM,CAAC,OAA2B,EAAE,MAAM,CAAC,CAAC;QAE3D,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAC5D,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC;QAC/C,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC;IAClB,CAAC;IACO,KAAK,CAAC,oBAAoB,CAAE,MAAsB,EAAE,OAAsB,EAAE,GAAmB;QACnG,mBAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QAChD,mBAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;QACnD,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;QACvC,IAAI,QAAQ,GAAG,IAAI,uCAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/D,IAAI,OAAO,GAAG,IAAI,iCAAe,CAAC,QAAQ,EAAE,EAE3C,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,MAAM,IAAA,cAAI,EAAC,GAAG,CAAC;aACvB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAC9C,YAAY,EAAE,CAAC;QACpB,IAAI,QAAQ,GAAG,qBAAS,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5D,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAE5D,IAAI,EAAE,EAAE,EAAE,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACjE,IAAI,EAAE,IAAI,IAAI,EAAE;YACZ,kBAAkB;YAClB,OAAO,IAAI,CAAC;SACf;QACD,OAAO,mBAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAE,OAAsB;QAC1C,IAAI,UAAU,GAAG,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAClD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,UAAU,EAAE,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,IAAI,EAAE,CAAC,IAAI,CAAA;IACpG,CAAC;CACJ;AA/ID,gCA+IC;AAED,MAAa,YAAa,SAAQ,+BAAmC;IAOjE,YACW,MAAsB,EACtB,OAAsB,EACtB,WAAqB;QAE5B,KAAK,EAAE,CAAC;QAJD,WAAM,GAAN,MAAM,CAAgB;QACtB,YAAO,GAAP,OAAO,CAAe;QACtB,gBAAW,GAAX,WAAW,CAAU;QARhC,WAAM,GAAG,IAAI,sBAAS,EAAqB,CAAA;QAC3C,gBAAW,GAAG,IAAI,sBAAS,EAAkB,CAAA;IAU7C,CAAC;IAED,KAAK,CAAC,OAAO;QACT,IAAI,OAAO,GAAG;YACV,MAAM,EAAE,CAAC;YACT,eAAe,EAAE,IAAI;YACrB,gBAAgB,EAAE,EAAE;YACpB,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,mBAAQ,CAAC,IAAI;YACnB,EAAE,EAAE,mBAAQ,CAAC,IAAI;YACjB,iBAAiB,EAAE,EAAE;YACrB,OAAO,EAAE,EAAE;YACX,iBAAiB,EAAE,EAAE;YACrB,IAAI,EAAE,EAAE;YACR,SAAS,EAAE,IAAI;SACA,CAAC;QAEpB,IAAI,EAAE,GAAG;YACL,SAAS,EAAE,aAAK,CAAC,eAAe,EAAE;YAClC,aAAa,EAAE,CAAC;YAChB,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,IAAI;YACX,SAAS,EAAE,IAAI;SACM,CAAC;QAE1B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IAEhB,CAAC;CACJ;AA/CD,oCA+CC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BatchAgent.js","sourceRoot":"","sources":["../../../../src/txs/agents/BatchAgent.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAGxB,0CAAgG;AAEhG,uEAAoE;AACpE,2CAA2D;AAE3D,iDAA8C;AAE9C,uDAAoD;AACpD,qDAAkD;AAClD,kDAA+C;AAC/C,2FAAwF;AACxF,wFAAqF;AAErF,yDAAsD;
|
|
1
|
+
{"version":3,"file":"BatchAgent.js","sourceRoot":"","sources":["../../../../src/txs/agents/BatchAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import { SafeTx } from '../../safe/SafeTx.mjs';
|
|
|
9
9
|
import { TimelockController } from '../../prebuilt/openzeppelin/TimelockController.mjs';
|
|
10
10
|
import { TimelockService } from '../../services/TimelockService/TimelockService.mjs';
|
|
11
11
|
import { $contract } from '../../utils/$contract.mjs';
|
|
12
|
+
import { $require } from '../../utils/$require.mjs';
|
|
12
13
|
export class BatchAgent {
|
|
13
14
|
constructor(options) {
|
|
14
15
|
this.options = options;
|
|
@@ -35,6 +36,7 @@ export class BatchAgent {
|
|
|
35
36
|
};
|
|
36
37
|
});
|
|
37
38
|
}
|
|
39
|
+
// Called by TxWriter for regular transactions. Prevents on-chain submission and keeps the transaction in the batch.
|
|
38
40
|
async process(senderMix, account, outerWriter) {
|
|
39
41
|
if (outerWriter.builder.data.to == null && this.options?.ignoreContractCreation != false) {
|
|
40
42
|
return null;
|
|
@@ -49,6 +51,7 @@ export class BatchAgent {
|
|
|
49
51
|
await inner.process();
|
|
50
52
|
return inner;
|
|
51
53
|
}
|
|
54
|
+
// Submits queued transactions on-chain. If the account is Safe or Timelock, prepares the corresponding calldata and submits as batch transaction.
|
|
52
55
|
async execute() {
|
|
53
56
|
this.disable();
|
|
54
57
|
let groupStart = 0;
|
|
@@ -56,11 +59,14 @@ export class BatchAgent {
|
|
|
56
59
|
for (let i = 0; i < this.transactions.length; i++) {
|
|
57
60
|
let tx = this.transactions[i];
|
|
58
61
|
let next = i < this.transactions.length - 1
|
|
59
|
-
? this.transactions[i +
|
|
62
|
+
? this.transactions[i + 1]
|
|
60
63
|
: null;
|
|
61
|
-
|
|
64
|
+
let acc0 = tx.account?.address ?? tx.sender?.address;
|
|
65
|
+
let acc1 = next?.account?.address ?? next?.sender?.address;
|
|
66
|
+
if (next == null || $address.eq(acc0, acc1) === false) {
|
|
62
67
|
let arr = await this.executeGroup(this.transactions.slice(groupStart, i + 1));
|
|
63
68
|
writers.push(...arr);
|
|
69
|
+
groupStart = i + 1;
|
|
64
70
|
}
|
|
65
71
|
}
|
|
66
72
|
this.enable();
|
|
@@ -68,24 +74,27 @@ export class BatchAgent {
|
|
|
68
74
|
}
|
|
69
75
|
async executeGroup(txs) {
|
|
70
76
|
let { account, sender } = txs[0];
|
|
71
|
-
|
|
72
|
-
|
|
77
|
+
let acc = account ?? sender;
|
|
78
|
+
if (acc.name.includes('safe/')) {
|
|
79
|
+
let tx = await this.executeBatchSafe(acc, txs);
|
|
73
80
|
return [tx];
|
|
74
81
|
}
|
|
75
|
-
if (
|
|
82
|
+
if (acc.name.includes('timelock/')) {
|
|
76
83
|
let tx = await this.executeBatchTimelock(sender, account, txs);
|
|
77
84
|
return [tx];
|
|
78
85
|
}
|
|
79
86
|
let writers = [];
|
|
80
87
|
for (let i = 0; i < txs.length; i++) {
|
|
81
|
-
let
|
|
82
|
-
|
|
83
|
-
|
|
88
|
+
let writer = txs[i].outerWriter;
|
|
89
|
+
writer.tx = null;
|
|
90
|
+
writer.txs = [];
|
|
91
|
+
writer.receipt = null;
|
|
84
92
|
writers.push(writer);
|
|
93
|
+
await writer.send().wait();
|
|
85
94
|
}
|
|
86
95
|
return writers;
|
|
87
96
|
}
|
|
88
|
-
async executeBatchSafe(
|
|
97
|
+
async executeBatchSafe(account, txs) {
|
|
89
98
|
let client = txs[0].outerWriter.client;
|
|
90
99
|
let safe = new SafeTx(account, client);
|
|
91
100
|
let calls = txs.map(x => x.outerWriter.builder.getTxData());
|
|
@@ -94,6 +103,8 @@ export class BatchAgent {
|
|
|
94
103
|
return writer;
|
|
95
104
|
}
|
|
96
105
|
async executeBatchTimelock(sender, account, txs) {
|
|
106
|
+
$require.notNull(sender, `Sender is undefined`);
|
|
107
|
+
$require.notNull(account, `Timelock is undefined`);
|
|
97
108
|
let client = txs[0].outerWriter.client;
|
|
98
109
|
let timelock = new TimelockController(account.address, client);
|
|
99
110
|
let service = new TimelockService(timelock, {});
|
package/package.json
CHANGED
|
@@ -15,6 +15,7 @@ import { TimelockController } from '@dequanto/prebuilt/openzeppelin/TimelockCont
|
|
|
15
15
|
import { TimelockService } from '@dequanto/services/TimelockService/TimelockService';
|
|
16
16
|
import { TxDataBuilder } from '../TxDataBuilder';
|
|
17
17
|
import { $contract } from '@dequanto/utils/$contract';
|
|
18
|
+
import { $require } from '@dequanto/utils/$require';
|
|
18
19
|
|
|
19
20
|
export class BatchAgent implements ITxWriterAgent {
|
|
20
21
|
|
|
@@ -52,6 +53,7 @@ export class BatchAgent implements ITxWriterAgent {
|
|
|
52
53
|
});
|
|
53
54
|
}
|
|
54
55
|
|
|
56
|
+
// Called by TxWriter for regular transactions. Prevents on-chain submission and keeps the transaction in the batch.
|
|
55
57
|
async process (senderMix: string | EoAccount, account: TEth.IAccount, outerWriter: TxWriter) {
|
|
56
58
|
|
|
57
59
|
if (outerWriter.builder.data.to == null && this.options?.ignoreContractCreation != false) {
|
|
@@ -76,6 +78,7 @@ export class BatchAgent implements ITxWriterAgent {
|
|
|
76
78
|
return inner;
|
|
77
79
|
}
|
|
78
80
|
|
|
81
|
+
// Submits queued transactions on-chain. If the account is Safe or Timelock, prepares the corresponding calldata and submits as batch transaction.
|
|
79
82
|
async execute (): Promise<TxWriter[]> {
|
|
80
83
|
this.disable();
|
|
81
84
|
|
|
@@ -84,12 +87,16 @@ export class BatchAgent implements ITxWriterAgent {
|
|
|
84
87
|
for (let i = 0; i < this.transactions.length; i++) {
|
|
85
88
|
let tx = this.transactions[i];
|
|
86
89
|
let next = i < this.transactions.length - 1
|
|
87
|
-
? this.transactions[i +
|
|
90
|
+
? this.transactions[i + 1]
|
|
88
91
|
: null;
|
|
89
92
|
|
|
90
|
-
|
|
93
|
+
let acc0 = tx.account?.address ?? tx.sender?.address;
|
|
94
|
+
let acc1 = next?.account?.address ?? next?.sender?.address;
|
|
95
|
+
|
|
96
|
+
if (next == null || $address.eq(acc0, acc1) === false) {
|
|
91
97
|
let arr = await this.executeGroup(this.transactions.slice(groupStart, i + 1));
|
|
92
98
|
writers.push(...arr);
|
|
99
|
+
groupStart = i + 1;
|
|
93
100
|
}
|
|
94
101
|
}
|
|
95
102
|
this.enable();
|
|
@@ -98,24 +105,27 @@ export class BatchAgent implements ITxWriterAgent {
|
|
|
98
105
|
|
|
99
106
|
private async executeGroup (txs: MockTxWriter[]) {
|
|
100
107
|
let { account, sender } = txs[0];
|
|
101
|
-
|
|
102
|
-
|
|
108
|
+
let acc = account ?? sender;
|
|
109
|
+
if (acc.name.includes('safe/')) {
|
|
110
|
+
let tx = await this.executeBatchSafe(acc, txs);
|
|
103
111
|
return [ tx ];
|
|
104
112
|
}
|
|
105
|
-
if (
|
|
113
|
+
if (acc.name.includes('timelock/')) {
|
|
106
114
|
let tx = await this.executeBatchTimelock(sender, account, txs);
|
|
107
115
|
return [ tx ];
|
|
108
116
|
}
|
|
109
117
|
let writers = [];
|
|
110
118
|
for (let i = 0; i < txs.length; i++) {
|
|
111
|
-
let
|
|
112
|
-
|
|
113
|
-
|
|
119
|
+
let writer = txs[i].outerWriter;
|
|
120
|
+
writer.tx = null;
|
|
121
|
+
writer.txs = [];
|
|
122
|
+
writer.receipt = null;
|
|
114
123
|
writers.push(writer);
|
|
124
|
+
await writer.send().wait();
|
|
115
125
|
}
|
|
116
126
|
return writers;
|
|
117
127
|
}
|
|
118
|
-
private async executeBatchSafe (
|
|
128
|
+
private async executeBatchSafe (account: TEth.IAccount, txs: MockTxWriter[]) {
|
|
119
129
|
let client = txs[0].outerWriter.client;
|
|
120
130
|
let safe = new SafeTx(account as TEth.SafeAccount, client);
|
|
121
131
|
|
|
@@ -125,6 +135,8 @@ export class BatchAgent implements ITxWriterAgent {
|
|
|
125
135
|
return writer;
|
|
126
136
|
}
|
|
127
137
|
private async executeBatchTimelock (sender: TEth.EoAccount, account: TEth.IAccount, txs: MockTxWriter[]) {
|
|
138
|
+
$require.notNull(sender, `Sender is undefined`);
|
|
139
|
+
$require.notNull(account, `Timelock is undefined`);
|
|
128
140
|
let client = txs[0].outerWriter.client;
|
|
129
141
|
let timelock = new TimelockController(account.address, client);
|
|
130
142
|
let service = new TimelockService(timelock, {
|