@@ -23,7 +23,7 @@ import {
2323
2424// import type { BTCTransactionEvent } from '@kaleido-io/workflow-engine-sdk/types/btc';
2525import { 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' ;
2727import type { BTCConfig } from '../config/provider-config.js' ;
2828import { BTCTransactionEvent , TxSummary , TxSummaryVOut } from '../../../../dist/src/types/btc/index.js' ;
2929import { BulkQueryInput , BulkQueryOutput } from '../clients/asset-manager/bulkquery.js' ;
@@ -41,11 +41,8 @@ import { BulkQueryInput, BulkQueryOutput } from '../clients/asset-manager/bulkqu
4141export 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
0 commit comments