@@ -22,8 +22,16 @@ import (
2222
2323 connect "connectrpc.com/connect"
2424 "github.com/blinklabs-io/gouroboros/ledger"
25+ "github.com/blinklabs-io/gouroboros/ledger/allegra"
26+ "github.com/blinklabs-io/gouroboros/ledger/alonzo"
27+ "github.com/blinklabs-io/gouroboros/ledger/babbage"
28+ "github.com/blinklabs-io/gouroboros/ledger/conway"
29+ "github.com/blinklabs-io/gouroboros/ledger/mary"
30+ "github.com/blinklabs-io/gouroboros/ledger/shelley"
2531
2632 // ocommon "github.com/blinklabs-io/gouroboros/protocol/common"
33+
34+ "github.com/utxorpc/go-codegen/utxorpc/v1alpha/cardano"
2735 query "github.com/utxorpc/go-codegen/utxorpc/v1alpha/query"
2836 "github.com/utxorpc/go-codegen/utxorpc/v1alpha/query/queryconnect"
2937
@@ -63,23 +71,58 @@ func (s *queryServiceServer) ReadParams(
6371 return nil , err
6472 }
6573
74+ log .Printf ("Get protoParams type: %T" , protoParams )
75+
76+ // // Check if the pointer satisfies the ProtocolParametersUtxorpc interface
77+ // if pp, ok := protoParams.(common.ProtocolParametersUtxorpc); ok {
78+ // utxoParams := pp.Utxorpc()
79+ // log.Printf("Got Utxorpc protocol parameters: %+v", utxoParams)
80+ // } else {
81+ // log.Printf("ERROR: Utxorpc method not supported")
82+ // return nil, fmt.Errorf("Utxorpc method not supported for current protocol parameters")
83+ // }
84+
85+ // Determine the correct type and call Utxorpc() based on the era
86+ var utxoParams * cardano.PParams
87+ switch p := protoParams .(type ) {
88+ case conway.ConwayProtocolParameters :
89+ utxoParams = (& p ).Utxorpc ()
90+ case babbage.BabbageProtocolParameters :
91+ utxoParams = (& p ).Utxorpc ()
92+ case alonzo.AlonzoProtocolParameters :
93+ utxoParams = (& p ).Utxorpc ()
94+ case mary.MaryProtocolParameters :
95+ utxoParams = (& p ).Utxorpc ()
96+ case allegra.AllegraProtocolParameters :
97+ utxoParams = (& p ).Utxorpc ()
98+ case shelley.ShelleyProtocolParameters :
99+ utxoParams = (& p ).Utxorpc ()
100+ default :
101+ log .Printf ("ERROR: Utxorpc method not supported for current protocol parameters type: %T" , protoParams )
102+ return nil , fmt .Errorf ("Utxorpc method not supported for current protocol parameters" )
103+ }
104+
105+ log .Printf ("Converted protocol parameters to Cardano PParams: %+v" , utxoParams )
106+
66107 // Get chain point (slot and hash)
67108 point , err := oConn .LocalStateQuery ().Client .GetChainPoint ()
68109 if err != nil {
69110 return nil , err
70111 }
71- var acp query.AnyChainParams
72- // var acpc query.AnyChainParams_Cardano
73- acpc := & query.AnyChainParams_Cardano {}
74- log .Printf ("protocol parameters: %v" , protoParams )
75- // acpc.Cardano = protoParams.Utxorpc()
112+
113+ // Set up response parameters
114+ acpc := & query.AnyChainParams_Cardano {
115+ Cardano : utxoParams ,
116+ }
117+
76118 resp .LedgerTip = & query.ChainPoint {
77119 Slot : point .Slot ,
78120 Hash : point .Hash ,
79121 }
80- // acp.Params = &acpc
81- acp .Params = acpc
82- resp .Values = & acp
122+ resp .Values = & query.AnyChainParams {
123+ Params : acpc ,
124+ }
125+
83126 return connect .NewResponse (resp ), nil
84127}
85128
0 commit comments