Skip to content

Commit 0b61626

Browse files
Indexer updates
Signed-off-by: Peter Broadhurst <peter.broadhurst@kaleido.io>
1 parent c45a3da commit 0b61626

2 files changed

Lines changed: 31 additions & 31 deletions

File tree

packages/workflow-engine-sdk/templates/btc-indexer/src/bitcoin/indexer.ts

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import {
2323

2424
// import type { BTCTransactionEvent } from '@kaleido-io/workflow-engine-sdk/types/btc';
2525
import { AssetManagerClient } from '../clients/asset-manager/client.js';
26-
import type { Address, BalanceChange, Fragment, Transfer } from '../clients/asset-manager/models.js';
26+
import type { Address, BalanceChange, Fragment, Pool, Transfer } from '../clients/asset-manager/models.js';
2727
import type { BTCConfig } from '../config/provider-config.js';
2828
import { BTCTransactionEvent, TxSummary, TxSummaryVOut } from '../../../../dist/src/types/btc/index.js';
2929
import { BulkQueryInput, BulkQueryOutput } from '../clients/asset-manager/bulkquery.js';
@@ -41,11 +41,8 @@ import { BulkQueryInput, BulkQueryOutput } from '../clients/asset-manager/bulkqu
4141
export class BTCIndexer {
4242
private amClient!: AssetManagerClient;
4343
private networkId!: number;
44-
private networkIdHex!: string;
4544
private tokenName!: string;
4645
private networkName!: string;
47-
private poolName!: string;
48-
private assetName!: string;
4946

5047
name(): string {
5148
return 'bitcoin-indexer';
@@ -68,35 +65,32 @@ export class BTCIndexer {
6865
async setup(amClient: AssetManagerClient, bitcoinConfig: BTCConfig): Promise<void> {
6966
this.amClient = amClient;
7067
this.networkId = bitcoinConfig.netId;
71-
this.networkIdHex = `0x${bitcoinConfig.netId.toString(16)}`;
72-
this.tokenName = bitcoinConfig.tokenName;
73-
this.networkName = bitcoinConfig.networkName;
74-
this.poolName = this.tokenName.toLowerCase();
68+
this.tokenName = bitcoinConfig.tokenName.toLowerCase();
69+
this.networkName = bitcoinConfig.chain;
7570

7671
const symbol = bitcoinConfig.tokenSymbol ?? this.tokenName;
77-
this.assetName = `bitcoin_${this.tokenName.toLowerCase()}_${this.networkIdHex.toLowerCase()}`;
7872

7973
await this.amClient.bulkUpsert({
8074
assets: [
8175
{
82-
name: this.assetName,
76+
name: this.tokenName,
8377
displayName: this.tokenName,
84-
info: { symbol, contractAddress: this.networkIdHex },
78+
info: { symbol },
8579
updateType: 'create_or_ignore',
8680
},
8781
],
8882
addresses: [
8983
{
90-
address: this.networkIdHex,
84+
address: this.tokenName,
9185
contract: true,
9286
updateType: 'create_or_ignore',
9387
},
9488
],
9589
pools: [
9690
{
97-
name: this.poolName,
98-
asset: this.assetName,
99-
address: this.networkIdHex,
91+
name: this.tokenName,
92+
asset: this.tokenName,
93+
address: this.tokenName,
10094
standard: 'bitcoin',
10195
displayName: `${this.tokenName} on ${this.networkName}`,
10296
labels: { networkName: this.networkName, symbol },
@@ -206,12 +200,12 @@ export class BTCIndexer {
206200

207201
// This is a misconfiguration, we don't want to miss events or fail to insert
208202
if (network.name != this.networkName || network.net != this.networkId) {
209-
throw new Error(`Network mismatch configured[name='${this.networkName}',net=${this.networkIdHex}] event[name='${network.name}',net=0x${network.net.toString(16)}}]`)
203+
throw new Error(`Network mismatch configured[name='${this.networkName}',net=${this.networkId}] event[name='${network.name}',net=0x${network.net.toString(16)}}]`)
210204
}
211205

212206
const xferOrdered: Transfer[] = []
213207
const xferByWallet: Record<string,Transfer> = {};
214-
const xferForAddr = (addr?: string): (Transfer|undefined) => {
208+
const xferForAddr = (addr?: string): ({walletId: string, transfer: Transfer}|undefined) => {
215209
const walletId = addr && addressWallets[addr];
216210
if (!walletId) {
217211
return undefined;
@@ -226,23 +220,27 @@ export class BTCIndexer {
226220
balanceChanges: [],
227221
parent: {
228222
type: "pool",
229-
ref: `testnet4-btc/${safeWallet}`
223+
ref: `${this.tokenName}/${this.tokenName}`
230224
}
231225
}
232226
xferOrdered.push(xfer);
233227
xferByWallet[safeWallet] = xfer;
234228
}
235-
return xfer;
229+
230+
return {
231+
walletId: safeWallet,
232+
transfer: xfer,
233+
};
236234
}
237235

238236
for (let iInput = 0; iInput < tx.vin.length; iInput++) {
239237
const vin = tx.vin[iInput];
240238
const name = `${this.networkName}_${vin.txid}_${vin.vout}`;
241239
fragments.push({
242240
updateType: 'create_or_update',
243-
address: this.networkIdHex,
241+
address: this.tokenName,
244242
name,
245-
asset: this.assetName,
243+
asset: this.tokenName,
246244
labels: {
247245
networkName: this.networkName,
248246
mint_tx: vin.txid,
@@ -260,11 +258,12 @@ export class BTCIndexer {
260258
value = String(Math.floor(detail.value * 100_000_000))
261259
}
262260
if (value) {
263-
xfer.balanceChanges.push({
264-
address: detail.scriptPubKey?.address!,
261+
xfer.transfer.balanceChanges.push({
262+
address: `${this.tokenName}_${xfer.walletId}`,
265263
amount: value,
266264
operation: "subtract",
267265
})
266+
xfer.transfer.from = `${this.tokenName}_${xfer.walletId}`;
268267
}
269268
}
270269
}
@@ -288,20 +287,21 @@ export class BTCIndexer {
288287
}
289288
fragments.push({
290289
updateType: 'create_or_update',
291-
address: this.networkIdHex,
290+
address: this.tokenName,
292291
info: vout,
293292
name: `${this.networkName}_${tx.txid}_${vout.n}`,
294-
asset: this.assetName,
293+
asset: this.tokenName,
295294
value,
296295
labels,
297296
})
298297
const xfer = xferForAddr(vout.scriptPubKey?.address);
299298
if (value && xfer) {
300-
xfer.balanceChanges.push({
301-
address: vout.scriptPubKey?.address!,
299+
xfer.transfer.balanceChanges.push({
300+
address: `${this.tokenName}_${xfer.walletId}`,
302301
amount: value,
303302
operation: "add",
304303
})
304+
xfer.transfer.to = `${this.tokenName}_${xfer.walletId}`;
305305
}
306306
}
307307

packages/workflow-engine-sdk/templates/btc-indexer/src/config/provider-config.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export interface BTCConfig {
3737
netId: number;
3838
tokenSymbol: string;
3939
tokenName: string;
40-
networkName: string;
40+
chain: string;
4141
fromBlock: string;
4242
}
4343

@@ -82,9 +82,9 @@ function parseBTC(raw: unknown): BTCConfig {
8282
return {
8383
fromBlock: typeof o.fromBlock === 'string' ? o.fromBlock : typeof o.fromBlock === 'number' ? String(o.fromBlock) : 'latest',
8484
netId: typeof o.netId === 'number' ? o.netId : 0x283f161c,
85-
tokenSymbol: typeof o.chain === 'string' ? o.chain : 'tBTC',
86-
tokenName: typeof o.chain === 'string' ? o.chain : 'test_bitcoin',
87-
networkName: typeof o.chain === 'string' ? o.chain : 'testnet4',
85+
tokenSymbol: typeof o.symbol === 'string' ? o.symbol : 'tBTC',
86+
tokenName: typeof o.tokenName === 'string' ? o.tokenName : 'test_bitcoin',
87+
chain: typeof o.chain === 'string' ? o.chain : 'testnet4',
8888
};
8989
}
9090

0 commit comments

Comments
 (0)