@pushchain/core 4.0.11 → 4.0.12-alpha.1
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/package.json +1 -1
- package/src/lib/constants/chain.d.ts +1 -1
- package/src/lib/constants/chain.js +27 -8
- package/src/lib/constants/chain.js.map +1 -1
- package/src/lib/constants/tokens.d.ts +7 -1
- package/src/lib/constants/tokens.js +50 -8
- package/src/lib/constants/tokens.js.map +1 -1
- package/src/lib/orchestrator/orchestrator.js +209 -80
- package/src/lib/orchestrator/orchestrator.js.map +1 -1
- package/src/lib/orchestrator/orchestrator.types.d.ts +6 -0
- package/src/lib/orchestrator/payload-builders.d.ts +2 -1
- package/src/lib/orchestrator/payload-builders.js +38 -6
- package/src/lib/orchestrator/payload-builders.js.map +1 -1
- package/src/lib/push-client/push-client.d.ts +9 -3
- package/src/lib/push-client/push-client.js +98 -61
- package/src/lib/push-client/push-client.js.map +1 -1
|
@@ -21,7 +21,7 @@ export declare class PushClient extends EvmClient {
|
|
|
21
21
|
};
|
|
22
22
|
} & {
|
|
23
23
|
denom: string;
|
|
24
|
-
tendermintRpc: string;
|
|
24
|
+
tendermintRpc: string[];
|
|
25
25
|
prefix: string;
|
|
26
26
|
factoryAddress: `0x${string}`;
|
|
27
27
|
pushDecimals: bigint;
|
|
@@ -30,7 +30,13 @@ export declare class PushClient extends EvmClient {
|
|
|
30
30
|
pushToUsdcDenominator: bigint;
|
|
31
31
|
};
|
|
32
32
|
private readonly ephemeralKey;
|
|
33
|
+
private currentRpcIndex;
|
|
33
34
|
constructor(clientOptions: PushClientOptions);
|
|
35
|
+
/**
|
|
36
|
+
* Executes an operation with automatic fallback to next RPC endpoint on failure.
|
|
37
|
+
* Follows the same pattern as SvmClient.executeWithFallback().
|
|
38
|
+
*/
|
|
39
|
+
private executeWithRpcFallback;
|
|
34
40
|
/**
|
|
35
41
|
* Converts nPUSH (1e18) to USDC (1e8), fixed rate: 1 PUSH = 0.1 USDC
|
|
36
42
|
*/
|
|
@@ -59,9 +65,9 @@ export declare class PushClient extends EvmClient {
|
|
|
59
65
|
getUniversalTxById(id: string): Promise<QueryGetUniversalTxResponse>;
|
|
60
66
|
/**
|
|
61
67
|
* Fetches a Cosmos transaction by its hash.
|
|
62
|
-
* @param txHash The hex‐encoded transaction hash (without
|
|
68
|
+
* @param txHash The hex‐encoded transaction hash (without "0x" or with—both work).
|
|
63
69
|
* @returns The indexed transaction (height, logs, events, etc.).
|
|
64
|
-
* @throws If the tx isn
|
|
70
|
+
* @throws If the tx isn't found.
|
|
65
71
|
*/
|
|
66
72
|
getCosmosTx(txHash: string): Promise<DeliverTxResponse>;
|
|
67
73
|
}
|
|
@@ -20,6 +20,7 @@ const enums_1 = require("../constants/enums");
|
|
|
20
20
|
class PushClient extends evm_client_1.EvmClient {
|
|
21
21
|
constructor(clientOptions) {
|
|
22
22
|
super(clientOptions);
|
|
23
|
+
this.currentRpcIndex = 0;
|
|
23
24
|
this.pushChainInfo =
|
|
24
25
|
clientOptions.network === enums_1.PUSH_NETWORK.MAINNET
|
|
25
26
|
? chain_1.PUSH_CHAIN_INFO[enums_1.CHAIN.PUSH_MAINNET]
|
|
@@ -38,6 +39,35 @@ class PushClient extends evm_client_1.EvmClient {
|
|
|
38
39
|
}
|
|
39
40
|
this.ephemeralKey = (0, accounts_1.generatePrivateKey)();
|
|
40
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Executes an operation with automatic fallback to next RPC endpoint on failure.
|
|
44
|
+
* Follows the same pattern as SvmClient.executeWithFallback().
|
|
45
|
+
*/
|
|
46
|
+
executeWithRpcFallback(operation_1) {
|
|
47
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* (operation, operationName = 'operation') {
|
|
48
|
+
const rpcUrls = this.pushChainInfo.tendermintRpc;
|
|
49
|
+
let lastError = null;
|
|
50
|
+
for (let attempt = 0; attempt < rpcUrls.length; attempt++) {
|
|
51
|
+
const rpcIndex = (this.currentRpcIndex + attempt) % rpcUrls.length;
|
|
52
|
+
const rpcUrl = rpcUrls[rpcIndex];
|
|
53
|
+
try {
|
|
54
|
+
const result = yield operation(rpcUrl);
|
|
55
|
+
if (rpcIndex !== this.currentRpcIndex) {
|
|
56
|
+
this.currentRpcIndex = rpcIndex;
|
|
57
|
+
}
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
lastError = error;
|
|
62
|
+
if (attempt === rpcUrls.length - 1) {
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
yield new Promise((resolve) => setTimeout(resolve, 100));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
throw new Error(`All RPC endpoints failed for ${operationName}. Last error: ${lastError === null || lastError === void 0 ? void 0 : lastError.message}`);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
41
71
|
/**
|
|
42
72
|
* Converts nPUSH (1e18) to USDC (1e8), fixed rate: 1 PUSH = 0.1 USDC
|
|
43
73
|
*/
|
|
@@ -93,49 +123,53 @@ class PushClient extends evm_client_1.EvmClient {
|
|
|
93
123
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
94
124
|
const account = (0, accounts_1.privateKeyToAccount)(this.ephemeralKey);
|
|
95
125
|
const sender = (0, encoding_1.toBech32)(this.pushChainInfo.prefix, (0, viem_1.hexToBytes)(account.address));
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
126
|
+
return this.executeWithRpcFallback((rpcUrl) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
// 🔍 Get on-chain account info
|
|
128
|
+
const tmClient = yield tendermint_rpc_1.Tendermint34Client.connect(rpcUrl);
|
|
129
|
+
const status = yield tmClient.status();
|
|
130
|
+
const chainId = status.nodeInfo.network;
|
|
131
|
+
const queryClient = stargate_1.QueryClient.withExtensions(tmClient, stargate_1.setupAuthExtension);
|
|
132
|
+
let baseAccount = null;
|
|
133
|
+
try {
|
|
134
|
+
const accountResp = yield queryClient.auth.account(sender);
|
|
135
|
+
baseAccount = auth_1.BaseAccount.decode(accountResp.value);
|
|
136
|
+
}
|
|
137
|
+
catch (err) {
|
|
138
|
+
// Ignore
|
|
139
|
+
}
|
|
140
|
+
// 📦 Encode pubkey
|
|
141
|
+
const uncompressedPubKey = (0, viem_1.hexToBytes)(account.publicKey);
|
|
142
|
+
const compressedPubKey = crypto_1.Secp256k1.compressPubkey(uncompressedPubKey);
|
|
143
|
+
const pubkeyEncoded = {
|
|
144
|
+
typeUrl: '/cosmos.evm.crypto.v1.ethsecp256k1.PubKey',
|
|
145
|
+
value: protobufjs_1.Writer.create().uint32(10).bytes(compressedPubKey).finish(),
|
|
146
|
+
};
|
|
147
|
+
const authInfoBytes = (0, proto_signing_1.makeAuthInfoBytes)([
|
|
148
|
+
{
|
|
149
|
+
pubkey: pubkeyEncoded,
|
|
150
|
+
sequence: baseAccount ? Number(baseAccount.sequence) : 0,
|
|
151
|
+
},
|
|
152
|
+
], [], 100000000000, // gas
|
|
153
|
+
undefined, undefined);
|
|
154
|
+
const txBodyBytes = tx_2.TxBody.encode(txBody).finish();
|
|
155
|
+
const signDoc = (0, proto_signing_1.makeSignDoc)(txBodyBytes, authInfoBytes, chainId, baseAccount ? Number(baseAccount.accountNumber) : 0);
|
|
156
|
+
const digest = (0, viem_1.keccak256)(tx_2.SignDoc.encode(signDoc).finish());
|
|
157
|
+
const signature = yield account.sign({ hash: digest });
|
|
158
|
+
return tx_2.TxRaw.fromPartial({
|
|
159
|
+
bodyBytes: txBodyBytes,
|
|
160
|
+
authInfoBytes,
|
|
161
|
+
signatures: [(0, viem_1.hexToBytes)(signature)],
|
|
162
|
+
});
|
|
163
|
+
}), 'signCosmosTx');
|
|
132
164
|
});
|
|
133
165
|
}
|
|
134
166
|
broadcastCosmosTx(txRaw) {
|
|
135
167
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
168
|
+
return this.executeWithRpcFallback((rpcUrl) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
169
|
+
const client = yield stargate_1.StargateClient.connect(rpcUrl);
|
|
170
|
+
const result = yield client.broadcastTx(tx_2.TxRaw.encode(txRaw).finish());
|
|
171
|
+
return result;
|
|
172
|
+
}), 'broadcastCosmosTx');
|
|
139
173
|
});
|
|
140
174
|
}
|
|
141
175
|
/**
|
|
@@ -143,36 +177,39 @@ class PushClient extends evm_client_1.EvmClient {
|
|
|
143
177
|
*/
|
|
144
178
|
getUniversalTxById(id) {
|
|
145
179
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
180
|
+
return this.executeWithRpcFallback((rpcUrl) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
181
|
+
const tmClient = yield tendermint_rpc_1.Tendermint34Client.connect(rpcUrl);
|
|
182
|
+
const queryClient = new stargate_1.QueryClient(tmClient);
|
|
183
|
+
const rpc = (0, stargate_1.createProtobufRpcClient)(queryClient);
|
|
184
|
+
const request = query_1.QueryGetUniversalTxRequest.fromPartial({ id });
|
|
185
|
+
const responseBytes = yield rpc.request('uexecutor.v1.Query', 'GetUniversalTx', query_1.QueryGetUniversalTxRequest.encode(request).finish());
|
|
186
|
+
const response = query_1.QueryGetUniversalTxResponse.decode(responseBytes);
|
|
187
|
+
return response;
|
|
188
|
+
}), 'getUniversalTxById');
|
|
153
189
|
});
|
|
154
190
|
}
|
|
155
191
|
/**
|
|
156
192
|
* Fetches a Cosmos transaction by its hash.
|
|
157
|
-
* @param txHash The hex‐encoded transaction hash (without
|
|
193
|
+
* @param txHash The hex‐encoded transaction hash (without "0x" or with—both work).
|
|
158
194
|
* @returns The indexed transaction (height, logs, events, etc.).
|
|
159
|
-
* @throws If the tx isn
|
|
195
|
+
* @throws If the tx isn't found.
|
|
160
196
|
*/
|
|
161
197
|
getCosmosTx(txHash) {
|
|
162
198
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
199
|
+
return this.executeWithRpcFallback((rpcUrl) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
200
|
+
const client = yield stargate_1.StargateClient.connect(rpcUrl);
|
|
201
|
+
// Raw string query—must be one string, not a KV array:
|
|
202
|
+
const query = `ethereum_tx.ethereumTxHash='${txHash}'`;
|
|
203
|
+
const results = yield client.searchTx(query);
|
|
204
|
+
// Convert bigint values to strings in the results. This is done to avoid JSON.stringify()
|
|
205
|
+
// from converting bigint to string when on the client side.
|
|
206
|
+
// On documentation, one thing very common was to use JSON.stringify() to log the results, then we would get an error.
|
|
207
|
+
const convertedResults = results.map((result) => JSON.parse(JSON.stringify(result, (key, value) => typeof value === 'bigint' ? value.toString() : value)));
|
|
208
|
+
if (convertedResults.length === 0) {
|
|
209
|
+
throw new Error(`No Cosmos-indexed tx for EVM hash ${txHash}`);
|
|
210
|
+
}
|
|
211
|
+
return Object.assign(Object.assign({}, convertedResults[0]), { transactionHash: txHash });
|
|
212
|
+
}), 'getCosmosTx');
|
|
176
213
|
});
|
|
177
214
|
}
|
|
178
215
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push-client.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/push-client/push-client.ts"],"names":[],"mappings":";;;;AAAA,+BAA6C;AAC7C,2CAAgF;AAEhF,0DAA2E;AAC3E,2CAAoC;AACpC,yDAAuE;AACvE,+CAM0B;AAC1B,2DAGyC;AACzC,2CAA2C;AAC3C,2DAA4D;AAC5D,gEAAoE;AACpE,4CAAwE;AACxE,+CAA4C;AAC5C,wDAAoD;AAEpD,8CAAqD;AACrD,8CAAyD;AAEzD,MAAa,UAAW,SAAQ,sBAAS;
|
|
1
|
+
{"version":3,"file":"push-client.js","sourceRoot":"","sources":["../../../../../../packages/core/src/lib/push-client/push-client.ts"],"names":[],"mappings":"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"}
|