Skip to content

Commit 5383bfc

Browse files
committed
taprpc: Update ListAssetRequest to include additional filter options
1 parent e94fb87 commit 5383bfc

File tree

4 files changed

+1282
-1077
lines changed

4 files changed

+1282
-1077
lines changed

rpcserver.go

Lines changed: 54 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,9 +1059,57 @@ func (r *rpcServer) ListAssets(ctx context.Context,
10591059
"and include_leased")
10601060
}
10611061

1062+
constraints := tapfreighter.CommitmentConstraints{
1063+
MinAmt: req.MinAmount,
1064+
MaxAmt: req.MaxAmount,
1065+
CoinSelectType: tapsend.DefaultCoinSelectType,
1066+
}
1067+
1068+
if len(req.GroupKey) > 0 {
1069+
groupKey, err := btcec.ParsePubKey(req.GroupKey)
1070+
if err != nil {
1071+
return nil, fmt.Errorf("error parsing group key: %w",
1072+
err)
1073+
}
1074+
1075+
constraints.AssetSpecifier = asset.NewSpecifierFromGroupKey(
1076+
*groupKey,
1077+
)
1078+
}
1079+
1080+
filters := &tapdb.AssetQueryFilters{
1081+
CommitmentConstraints: constraints,
1082+
}
1083+
1084+
if req.ScriptKey != nil {
1085+
scriptKey, err := taprpc.UnmarshalScriptKey(req.ScriptKey)
1086+
if err != nil {
1087+
return nil, fmt.Errorf("unable to decode script key: "+
1088+
"%w", err)
1089+
}
1090+
1091+
filters.ScriptKey = scriptKey
1092+
}
1093+
1094+
if req.AnchorOutpoint != nil {
1095+
txid, err := chainhash.NewHash(req.AnchorOutpoint.Txid)
1096+
if err != nil {
1097+
return nil, fmt.Errorf("error parsing outpoint: %w",
1098+
err)
1099+
}
1100+
outPoint := &wire.OutPoint{
1101+
Hash: *txid,
1102+
Index: req.AnchorOutpoint.OutputIndex,
1103+
}
1104+
1105+
filters.AnchorPoint = outPoint
1106+
}
1107+
10621108
rpcAssets, err := r.fetchRpcAssets(
10631109
ctx, req.WithWitness, req.IncludeSpent, req.IncludeLeased,
1110+
filters,
10641111
)
1112+
10651113
if err != nil {
10661114
return nil, err
10671115
}
@@ -1114,10 +1162,11 @@ func (r *rpcServer) ListAssets(ctx context.Context,
11141162
}
11151163

11161164
func (r *rpcServer) fetchRpcAssets(ctx context.Context, withWitness,
1117-
includeSpent, includeLeased bool) ([]*taprpc.Asset, error) {
1165+
includeSpent, includeLeased bool,
1166+
queryFilters *tapdb.AssetQueryFilters) ([]*taprpc.Asset, error) {
11181167

11191168
assets, err := r.cfg.AssetStore.FetchAllAssets(
1120-
ctx, includeSpent, includeLeased, nil,
1169+
ctx, includeSpent, includeLeased, queryFilters,
11211170
)
11221171
if err != nil {
11231172
return nil, fmt.Errorf("unable to read chain assets: %w", err)
@@ -1243,7 +1292,9 @@ func (r *rpcServer) listBalancesByGroupKey(ctx context.Context,
12431292
func (r *rpcServer) ListUtxos(ctx context.Context,
12441293
req *taprpc.ListUtxosRequest) (*taprpc.ListUtxosResponse, error) {
12451294

1246-
rpcAssets, err := r.fetchRpcAssets(ctx, false, false, req.IncludeLeased)
1295+
rpcAssets, err := r.fetchRpcAssets(
1296+
ctx, false, false, req.IncludeLeased, nil,
1297+
)
12471298
if err != nil {
12481299
return nil, err
12491300
}

0 commit comments

Comments
 (0)