77 "sync"
88 "time"
99
10+ "github.com/btcsuite/btcd/btcec/v2"
1011 "github.com/davecgh/go-spew/spew"
1112 "github.com/lightninglabs/taproot-assets/address"
1213 "github.com/lightninglabs/taproot-assets/asset"
@@ -807,10 +808,21 @@ func (f *FederationEnvoy) tryFetchServers() ([]ServerAddr, error) {
807808// SyncAssetInfo queries the universes in our federation for genesis and asset
808809// group information about the given asset ID.
809810func (f * FederationEnvoy ) SyncAssetInfo (ctx context.Context ,
810- assetID * asset.ID ) error {
811+ assetID * asset.ID , groupKey * btcec. PublicKey ) error {
811812
812- if assetID == nil {
813- return fmt .Errorf ("no asset ID provided" )
813+ uniID := Identifier {
814+ ProofType : ProofTypeIssuance ,
815+ }
816+
817+ switch {
818+ case assetID != nil :
819+ uniID .AssetID = * assetID
820+
821+ case groupKey != nil :
822+ uniID .GroupKey = groupKey
823+
824+ default :
825+ return fmt .Errorf ("no asset ID or group key provided" )
814826 }
815827
816828 // Fetch the set of universe servers in our federation.
@@ -820,16 +832,14 @@ func (f *FederationEnvoy) SyncAssetInfo(ctx context.Context,
820832 }
821833
822834 assetConfig := FedUniSyncConfig {
823- UniverseID : Identifier {
824- AssetID : * assetID ,
825- ProofType : ProofTypeIssuance ,
826- },
835+ UniverseID : uniID ,
827836 AllowSyncInsert : true ,
828837 AllowSyncExport : false ,
829838 }
830839 fullConfig := SyncConfigs {
831840 UniSyncConfigs : []* FedUniSyncConfig {& assetConfig },
832841 }
842+
833843 // We'll sync with Universe servers in parallel and collect the diffs
834844 // from any successful syncs. There can only be one diff per server, as
835845 // we're only syncing one universe root.
@@ -846,8 +856,8 @@ func (f *FederationEnvoy) SyncAssetInfo(ctx context.Context,
846856 // Sync failures are expected from Universe servers that do not
847857 // have a relevant universe root.
848858 if err != nil {
849- log .Warnf ("Asset lookup failed: asset_id =%v, " +
850- "remote_server=%v: %v" , assetID .String (),
859+ log .Warnf ("Asset lookup failed: id =%v, " +
860+ "remote_server=%v: %v" , uniID .String (),
851861 addr .HostStr (), err )
852862
853863 // We don't want to abort syncing here, as this might
@@ -863,8 +873,8 @@ func (f *FederationEnvoy) SyncAssetInfo(ctx context.Context,
863873 if len (syncDiff ) != 1 {
864874 log .Warnf ("Unexpected number of sync diffs " +
865875 "when looking up asset: num_diffs=%d, " +
866- "asset_id =%v, remote_server=%v" ,
867- len (syncDiff ), assetID .String (),
876+ "id =%v, remote_server=%v" ,
877+ len (syncDiff ), uniID .String (),
868878 addr .HostStr ())
869879
870880 // We don't want to abort syncing here, as this
@@ -891,12 +901,11 @@ func (f *FederationEnvoy) SyncAssetInfo(ctx context.Context,
891901
892902 syncDiffs := fn .Collect (returnedSyncDiffs )
893903 log .Infof ("Synced new Universe leaves for asset %v, diff_size=%v" ,
894- assetID .String (), len (syncDiffs ))
904+ uniID .String (), len (syncDiffs ))
895905
896- // TODO(jhb): Log successful syncs?
897906 if len (syncDiffs ) == 0 {
898907 return fmt .Errorf ("asset lookup failed for asset: %v" ,
899- assetID .String ())
908+ uniID .String ())
900909 }
901910
902911 return nil
0 commit comments