@appliedblockchain/silentdatarollup-hardhat-plugin-fireblocks 1.0.9 → 1.0.10
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/index.js +28 -26
- package/dist/index.mjs +28 -26
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -65,8 +65,7 @@ var SilentDataFireblocksSigner = class extends import_plugins.ProviderWrapper {
|
|
|
65
65
|
log(".request()", JSON.stringify(args, null, 2));
|
|
66
66
|
const payload = {
|
|
67
67
|
jsonrpc: "2.0",
|
|
68
|
-
...args
|
|
69
|
-
id: Math.floor(Math.random() * 1e10)
|
|
68
|
+
...args
|
|
70
69
|
};
|
|
71
70
|
if (args.method === "eth_sendTransaction") {
|
|
72
71
|
return this.sendTransaction(payload);
|
|
@@ -92,7 +91,7 @@ var SilentDataFireblocksSigner = class extends import_plugins.ProviderWrapper {
|
|
|
92
91
|
}
|
|
93
92
|
sendAsync(payload, callback) {
|
|
94
93
|
log("Provider .sendAsync() method called:", payload.method);
|
|
95
|
-
this.request(payload).then(callback).catch(callback);
|
|
94
|
+
this.request(payload).then((result) => callback(null, result)).catch((error) => callback(error));
|
|
96
95
|
}
|
|
97
96
|
setupInterceptor(provider) {
|
|
98
97
|
log("Setting up silent data interceptor for Fireblocks");
|
|
@@ -100,23 +99,28 @@ var SilentDataFireblocksSigner = class extends import_plugins.ProviderWrapper {
|
|
|
100
99
|
provider.send = async (payload, callback) => {
|
|
101
100
|
;
|
|
102
101
|
(async () => {
|
|
103
|
-
const requiresAuthHeaders = SIGN_RPC_METHODS.includes(payload.method);
|
|
104
102
|
if (payload.method === "eth_sendTransaction") {
|
|
105
103
|
try {
|
|
106
|
-
const
|
|
107
|
-
callback(null,
|
|
104
|
+
const result = await this.sendTransaction(payload);
|
|
105
|
+
callback(null, result);
|
|
108
106
|
} catch (error) {
|
|
109
107
|
callback(error, null);
|
|
110
108
|
}
|
|
111
109
|
return;
|
|
112
110
|
}
|
|
113
|
-
|
|
111
|
+
const requestId = payload.id ?? Math.floor(Math.random() * 1e10);
|
|
112
|
+
const modifiedPayload = { ...payload, id: requestId };
|
|
113
|
+
log(
|
|
114
|
+
"Intercepted send method:",
|
|
115
|
+
JSON.stringify(modifiedPayload, null, 2)
|
|
116
|
+
);
|
|
117
|
+
const requiresAuthHeaders = SIGN_RPC_METHODS.includes(payload.method);
|
|
114
118
|
if (requiresAuthHeaders) {
|
|
115
119
|
log("Request requires auth headers");
|
|
116
120
|
const clonedEthereum = new import_fireblocks_web3_provider.FireblocksWeb3Provider(
|
|
117
121
|
provider.config
|
|
118
122
|
);
|
|
119
|
-
const authHeaders = await this.getAuthHeaders(
|
|
123
|
+
const authHeaders = await this.getAuthHeaders(modifiedPayload);
|
|
120
124
|
const allHeaders = [];
|
|
121
125
|
for (const [key, value] of Object.entries(authHeaders)) {
|
|
122
126
|
allHeaders.push({ name: key, value });
|
|
@@ -124,10 +128,12 @@ var SilentDataFireblocksSigner = class extends import_plugins.ProviderWrapper {
|
|
|
124
128
|
;
|
|
125
129
|
clonedEthereum.headers = allHeaders;
|
|
126
130
|
log("Auth headers set for cloned FireblocksWeb3Provider provider");
|
|
127
|
-
return originalSend.call(clonedEthereum,
|
|
131
|
+
return originalSend.call(clonedEthereum, modifiedPayload, callback);
|
|
128
132
|
}
|
|
129
|
-
const
|
|
130
|
-
|
|
133
|
+
const wrappedCallback = (error, response) => {
|
|
134
|
+
callback(error, response);
|
|
135
|
+
};
|
|
136
|
+
return originalSend.call(provider, modifiedPayload, wrappedCallback);
|
|
131
137
|
})();
|
|
132
138
|
};
|
|
133
139
|
}
|
|
@@ -159,12 +165,6 @@ var SilentDataFireblocksSigner = class extends import_plugins.ProviderWrapper {
|
|
|
159
165
|
}
|
|
160
166
|
async getAuthHeaders(payload) {
|
|
161
167
|
log("Getting auth headers for method:", JSON.stringify(payload, null, 2));
|
|
162
|
-
const requestId = this._wrappedProvider._provider._wrappedProvider._wrappedProvider._wrappedProvider._nextRequestId;
|
|
163
|
-
const rpcRequest = {
|
|
164
|
-
jsonrpc: "2.0",
|
|
165
|
-
...payload,
|
|
166
|
-
id: requestId
|
|
167
|
-
};
|
|
168
168
|
const xTimestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
169
169
|
const headers = {
|
|
170
170
|
[import_silentdatarollup_core2.HEADER_TIMESTAMP]: xTimestamp
|
|
@@ -176,7 +176,7 @@ var SilentDataFireblocksSigner = class extends import_plugins.ProviderWrapper {
|
|
|
176
176
|
case import_silentdatarollup_core2.SignatureType.Raw:
|
|
177
177
|
const preparedMessage = this.baseProvider.prepareMessage(
|
|
178
178
|
chainId.toString(),
|
|
179
|
-
|
|
179
|
+
payload,
|
|
180
180
|
xTimestamp
|
|
181
181
|
);
|
|
182
182
|
content = (0, import_ethers.hashMessage)(preparedMessage).slice(2);
|
|
@@ -298,18 +298,20 @@ var SilentDataFireblocksSigner = class extends import_plugins.ProviderWrapper {
|
|
|
298
298
|
return [maxPriorityFeePerGas, maxFeePerGas];
|
|
299
299
|
}
|
|
300
300
|
async estimateGasLimit(txParams) {
|
|
301
|
-
const gasLimitHex = await this.
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
});
|
|
301
|
+
const gasLimitHex = await this.send("eth_estimateGas", [
|
|
302
|
+
txParams
|
|
303
|
+
]);
|
|
305
304
|
return parseInt(gasLimitHex, 16);
|
|
306
305
|
}
|
|
306
|
+
async getTransactionReceipt(txHash) {
|
|
307
|
+
const receipt = await this.send("eth_getTransactionReceipt", [
|
|
308
|
+
txHash
|
|
309
|
+
]);
|
|
310
|
+
return receipt;
|
|
311
|
+
}
|
|
307
312
|
async waitForTransaction(txHash) {
|
|
308
313
|
for (let i = 0; i < this.maxRetries; i++) {
|
|
309
|
-
const receipt = await this.
|
|
310
|
-
method: "eth_getTransactionReceipt",
|
|
311
|
-
params: [txHash]
|
|
312
|
-
});
|
|
314
|
+
const receipt = await this.getTransactionReceipt(txHash);
|
|
313
315
|
if (receipt) {
|
|
314
316
|
log("Transaction mined, receipt:", JSON.stringify(receipt, null, 2));
|
|
315
317
|
if (receipt.status !== "0x1") {
|
package/dist/index.mjs
CHANGED
|
@@ -52,8 +52,7 @@ var SilentDataFireblocksSigner = class extends ProviderWrapper {
|
|
|
52
52
|
log(".request()", JSON.stringify(args, null, 2));
|
|
53
53
|
const payload = {
|
|
54
54
|
jsonrpc: "2.0",
|
|
55
|
-
...args
|
|
56
|
-
id: Math.floor(Math.random() * 1e10)
|
|
55
|
+
...args
|
|
57
56
|
};
|
|
58
57
|
if (args.method === "eth_sendTransaction") {
|
|
59
58
|
return this.sendTransaction(payload);
|
|
@@ -79,7 +78,7 @@ var SilentDataFireblocksSigner = class extends ProviderWrapper {
|
|
|
79
78
|
}
|
|
80
79
|
sendAsync(payload, callback) {
|
|
81
80
|
log("Provider .sendAsync() method called:", payload.method);
|
|
82
|
-
this.request(payload).then(callback).catch(callback);
|
|
81
|
+
this.request(payload).then((result) => callback(null, result)).catch((error) => callback(error));
|
|
83
82
|
}
|
|
84
83
|
setupInterceptor(provider) {
|
|
85
84
|
log("Setting up silent data interceptor for Fireblocks");
|
|
@@ -87,23 +86,28 @@ var SilentDataFireblocksSigner = class extends ProviderWrapper {
|
|
|
87
86
|
provider.send = async (payload, callback) => {
|
|
88
87
|
;
|
|
89
88
|
(async () => {
|
|
90
|
-
const requiresAuthHeaders = SIGN_RPC_METHODS.includes(payload.method);
|
|
91
89
|
if (payload.method === "eth_sendTransaction") {
|
|
92
90
|
try {
|
|
93
|
-
const
|
|
94
|
-
callback(null,
|
|
91
|
+
const result = await this.sendTransaction(payload);
|
|
92
|
+
callback(null, result);
|
|
95
93
|
} catch (error) {
|
|
96
94
|
callback(error, null);
|
|
97
95
|
}
|
|
98
96
|
return;
|
|
99
97
|
}
|
|
100
|
-
|
|
98
|
+
const requestId = payload.id ?? Math.floor(Math.random() * 1e10);
|
|
99
|
+
const modifiedPayload = { ...payload, id: requestId };
|
|
100
|
+
log(
|
|
101
|
+
"Intercepted send method:",
|
|
102
|
+
JSON.stringify(modifiedPayload, null, 2)
|
|
103
|
+
);
|
|
104
|
+
const requiresAuthHeaders = SIGN_RPC_METHODS.includes(payload.method);
|
|
101
105
|
if (requiresAuthHeaders) {
|
|
102
106
|
log("Request requires auth headers");
|
|
103
107
|
const clonedEthereum = new FireblocksWeb3Provider(
|
|
104
108
|
provider.config
|
|
105
109
|
);
|
|
106
|
-
const authHeaders = await this.getAuthHeaders(
|
|
110
|
+
const authHeaders = await this.getAuthHeaders(modifiedPayload);
|
|
107
111
|
const allHeaders = [];
|
|
108
112
|
for (const [key, value] of Object.entries(authHeaders)) {
|
|
109
113
|
allHeaders.push({ name: key, value });
|
|
@@ -111,10 +115,12 @@ var SilentDataFireblocksSigner = class extends ProviderWrapper {
|
|
|
111
115
|
;
|
|
112
116
|
clonedEthereum.headers = allHeaders;
|
|
113
117
|
log("Auth headers set for cloned FireblocksWeb3Provider provider");
|
|
114
|
-
return originalSend.call(clonedEthereum,
|
|
118
|
+
return originalSend.call(clonedEthereum, modifiedPayload, callback);
|
|
115
119
|
}
|
|
116
|
-
const
|
|
117
|
-
|
|
120
|
+
const wrappedCallback = (error, response) => {
|
|
121
|
+
callback(error, response);
|
|
122
|
+
};
|
|
123
|
+
return originalSend.call(provider, modifiedPayload, wrappedCallback);
|
|
118
124
|
})();
|
|
119
125
|
};
|
|
120
126
|
}
|
|
@@ -146,12 +152,6 @@ var SilentDataFireblocksSigner = class extends ProviderWrapper {
|
|
|
146
152
|
}
|
|
147
153
|
async getAuthHeaders(payload) {
|
|
148
154
|
log("Getting auth headers for method:", JSON.stringify(payload, null, 2));
|
|
149
|
-
const requestId = this._wrappedProvider._provider._wrappedProvider._wrappedProvider._wrappedProvider._nextRequestId;
|
|
150
|
-
const rpcRequest = {
|
|
151
|
-
jsonrpc: "2.0",
|
|
152
|
-
...payload,
|
|
153
|
-
id: requestId
|
|
154
|
-
};
|
|
155
155
|
const xTimestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
156
156
|
const headers = {
|
|
157
157
|
[HEADER_TIMESTAMP]: xTimestamp
|
|
@@ -163,7 +163,7 @@ var SilentDataFireblocksSigner = class extends ProviderWrapper {
|
|
|
163
163
|
case SignatureType.Raw:
|
|
164
164
|
const preparedMessage = this.baseProvider.prepareMessage(
|
|
165
165
|
chainId.toString(),
|
|
166
|
-
|
|
166
|
+
payload,
|
|
167
167
|
xTimestamp
|
|
168
168
|
);
|
|
169
169
|
content = hashMessage(preparedMessage).slice(2);
|
|
@@ -285,18 +285,20 @@ var SilentDataFireblocksSigner = class extends ProviderWrapper {
|
|
|
285
285
|
return [maxPriorityFeePerGas, maxFeePerGas];
|
|
286
286
|
}
|
|
287
287
|
async estimateGasLimit(txParams) {
|
|
288
|
-
const gasLimitHex = await this.
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
});
|
|
288
|
+
const gasLimitHex = await this.send("eth_estimateGas", [
|
|
289
|
+
txParams
|
|
290
|
+
]);
|
|
292
291
|
return parseInt(gasLimitHex, 16);
|
|
293
292
|
}
|
|
293
|
+
async getTransactionReceipt(txHash) {
|
|
294
|
+
const receipt = await this.send("eth_getTransactionReceipt", [
|
|
295
|
+
txHash
|
|
296
|
+
]);
|
|
297
|
+
return receipt;
|
|
298
|
+
}
|
|
294
299
|
async waitForTransaction(txHash) {
|
|
295
300
|
for (let i = 0; i < this.maxRetries; i++) {
|
|
296
|
-
const receipt = await this.
|
|
297
|
-
method: "eth_getTransactionReceipt",
|
|
298
|
-
params: [txHash]
|
|
299
|
-
});
|
|
301
|
+
const receipt = await this.getTransactionReceipt(txHash);
|
|
300
302
|
if (receipt) {
|
|
301
303
|
log("Transaction mined, receipt:", JSON.stringify(receipt, null, 2));
|
|
302
304
|
if (receipt.status !== "0x1") {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@appliedblockchain/silentdatarollup-hardhat-plugin-fireblocks",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.10",
|
|
4
4
|
"description": "Hardhat plugin for Silent Data with Fireblocks integration",
|
|
5
5
|
"author": "Applied Blockchain",
|
|
6
6
|
"homepage": "https://github.com/appliedblockchain/silent-data-rollup-providers#readme",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"debug": "4.3.7",
|
|
34
34
|
"ethers": "6.13.2",
|
|
35
35
|
"fireblocks-sdk": "5.31.2",
|
|
36
|
-
"@appliedblockchain/silentdatarollup-core": "1.0.
|
|
36
|
+
"@appliedblockchain/silentdatarollup-core": "1.0.10"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/debug": "4.1.12",
|