@@ -24,7 +24,7 @@ import (
2424 "github.com/blinklabs-io/gouroboros/cbor"
2525 "github.com/blinklabs-io/gouroboros/ledger/common"
2626 "github.com/blinklabs-io/gouroboros/ledger/mary"
27- cardano "github.com/utxorpc/go-codegen/utxorpc/v1alpha/cardano"
27+ utxorpc "github.com/utxorpc/go-codegen/utxorpc/v1alpha/cardano"
2828)
2929
3030// Constants for Plutus version mapping
@@ -274,59 +274,73 @@ func (u *AlonzoProtocolParameterUpdate) UnmarshalCBOR(cborData []byte) error {
274274 return nil
275275}
276276
277- func (p * AlonzoProtocolParameters ) Utxorpc () (* cardano .PParams , error ) {
277+ func (p * AlonzoProtocolParameters ) Utxorpc () (* utxorpc .PParams , error ) {
278278 // sanity check
279- if p .A0 .Num ().Int64 () > math .MaxInt32 ||
279+ if p .A0 == nil ||
280+ p .A0 .Num ().Int64 () < math .MinInt32 ||
281+ p .A0 .Num ().Int64 () > math .MaxInt32 ||
280282 p .A0 .Denom ().Int64 () < 0 ||
281283 p .A0 .Denom ().Int64 () > math .MaxUint32 {
282284 return nil , errors .New ("invalid A0 rational number values" )
283285 }
284- if p .Rho .Num ().Int64 () > math .MaxInt32 ||
286+ if p .Rho == nil ||
287+ p .Rho .Num ().Int64 () < math .MinInt32 ||
288+ p .Rho .Num ().Int64 () > math .MaxInt32 ||
285289 p .Rho .Denom ().Int64 () < 0 ||
286290 p .Rho .Denom ().Int64 () > math .MaxUint32 {
287291 return nil , errors .New ("invalid Rho rational number values" )
288292 }
289- if p .Tau .Num ().Int64 () > math .MaxInt32 ||
293+ if p .Tau == nil ||
294+ p .Tau .Num ().Int64 () < math .MinInt32 ||
295+ p .Tau .Num ().Int64 () > math .MaxInt32 ||
290296 p .Tau .Denom ().Int64 () < 0 ||
291297 p .Tau .Denom ().Int64 () > math .MaxUint32 {
292298 return nil , errors .New ("invalid Tau rational number values" )
293299 }
294- if p .ExecutionCosts .MemPrice .Num ().Int64 () > math .MaxInt32 ||
300+ if p .ExecutionCosts .MemPrice == nil ||
301+ p .ExecutionCosts .MemPrice .Num ().Int64 () < math .MinInt32 ||
302+ p .ExecutionCosts .MemPrice .Num ().Int64 () > math .MaxInt32 ||
295303 p .ExecutionCosts .MemPrice .Denom ().Int64 () < 0 ||
296304 p .ExecutionCosts .MemPrice .Denom ().Int64 () > math .MaxUint32 {
297305 return nil , errors .New ("invalid memory price rational number values" )
298306 }
299- if p .ExecutionCosts .StepPrice .Num ().Int64 () > math .MaxInt32 ||
307+ if p .ExecutionCosts .StepPrice == nil ||
308+ p .ExecutionCosts .StepPrice .Num ().Int64 () < math .MinInt32 ||
309+ p .ExecutionCosts .StepPrice .Num ().Int64 () > math .MaxInt32 ||
300310 p .ExecutionCosts .StepPrice .Denom ().Int64 () < 0 ||
301311 p .ExecutionCosts .StepPrice .Denom ().Int64 () > math .MaxUint32 {
302312 return nil , errors .New ("invalid step price rational number values" )
303313 }
314+ if p .MaxTxExUnits .Memory < 0 || p .MaxTxExUnits .Steps < 0 ||
315+ p .MaxBlockExUnits .Memory < 0 || p .MaxBlockExUnits .Steps < 0 {
316+ return nil , errors .New ("invalid execution unit values" )
317+ }
304318 // #nosec G115
305- return & cardano .PParams {
306- CoinsPerUtxoByte : p .AdaPerUtxoByte ,
319+ return & utxorpc .PParams {
320+ CoinsPerUtxoByte : common . ToUtxorpcBigInt ( p .AdaPerUtxoByte ) ,
307321 MaxTxSize : uint64 (p .MaxTxSize ),
308- MinFeeCoefficient : uint64 (p .MinFeeA ),
309- MinFeeConstant : uint64 (p .MinFeeB ),
322+ MinFeeCoefficient : common . ToUtxorpcBigInt ( uint64 (p .MinFeeA ) ),
323+ MinFeeConstant : common . ToUtxorpcBigInt ( uint64 (p .MinFeeB ) ),
310324 MaxBlockBodySize : uint64 (p .MaxBlockBodySize ),
311325 MaxBlockHeaderSize : uint64 (p .MaxBlockHeaderSize ),
312- StakeKeyDeposit : uint64 (p .KeyDeposit ),
313- PoolDeposit : uint64 (p .PoolDeposit ),
326+ StakeKeyDeposit : common .ToUtxorpcBigInt (uint64 (p .KeyDeposit )),
327+ PoolDeposit : common .ToUtxorpcBigInt (uint64 (p .PoolDeposit )),
328+ MinPoolCost : common .ToUtxorpcBigInt (p .MinPoolCost ),
314329 PoolRetirementEpochBound : uint64 (p .MaxEpoch ),
315330 DesiredNumberOfPools : uint64 (p .NOpt ),
316- PoolInfluence : & cardano .RationalNumber {
331+ PoolInfluence : & utxorpc .RationalNumber {
317332 Numerator : int32 (p .A0 .Num ().Int64 ()),
318333 Denominator : uint32 (p .A0 .Denom ().Int64 ()),
319334 },
320- MonetaryExpansion : & cardano .RationalNumber {
335+ MonetaryExpansion : & utxorpc .RationalNumber {
321336 Numerator : int32 (p .Rho .Num ().Int64 ()),
322337 Denominator : uint32 (p .Rho .Denom ().Int64 ()),
323338 },
324- TreasuryExpansion : & cardano .RationalNumber {
339+ TreasuryExpansion : & utxorpc .RationalNumber {
325340 Numerator : int32 (p .Tau .Num ().Int64 ()),
326341 Denominator : uint32 (p .Tau .Denom ().Int64 ()),
327342 },
328- MinPoolCost : p .MinPoolCost ,
329- ProtocolVersion : & cardano.ProtocolVersion {
343+ ProtocolVersion : & utxorpc.ProtocolVersion {
330344 Major : uint32 (p .ProtocolMajor ),
331345 Minor : uint32 (p .ProtocolMinor ),
332346 },
@@ -336,21 +350,21 @@ func (p *AlonzoProtocolParameters) Utxorpc() (*cardano.PParams, error) {
336350 CostModels : common .ConvertToUtxorpcCardanoCostModels (
337351 p .CostModels ,
338352 ),
339- Prices : & cardano .ExPrices {
340- Memory : & cardano .RationalNumber {
353+ Prices : & utxorpc .ExPrices {
354+ Memory : & utxorpc .RationalNumber {
341355 Numerator : int32 (p .ExecutionCosts .MemPrice .Num ().Int64 ()),
342356 Denominator : uint32 (p .ExecutionCosts .MemPrice .Denom ().Int64 ()),
343357 },
344- Steps : & cardano .RationalNumber {
358+ Steps : & utxorpc .RationalNumber {
345359 Numerator : int32 (p .ExecutionCosts .StepPrice .Num ().Int64 ()),
346360 Denominator : uint32 (p .ExecutionCosts .StepPrice .Denom ().Int64 ()),
347361 },
348362 },
349- MaxExecutionUnitsPerTransaction : & cardano .ExUnits {
363+ MaxExecutionUnitsPerTransaction : & utxorpc .ExUnits {
350364 Memory : uint64 (p .MaxTxExUnits .Memory ),
351365 Steps : uint64 (p .MaxTxExUnits .Steps ),
352366 },
353- MaxExecutionUnitsPerBlock : & cardano .ExUnits {
367+ MaxExecutionUnitsPerBlock : & utxorpc .ExUnits {
354368 Memory : uint64 (p .MaxBlockExUnits .Memory ),
355369 Steps : uint64 (p .MaxBlockExUnits .Steps ),
356370 },
0 commit comments