@@ -22,7 +22,8 @@ import (
22
22
23
23
"github.com/blinklabs-io/gouroboros/cbor"
24
24
"github.com/blinklabs-io/gouroboros/ledger/common"
25
- "github.com/blinklabs-io/gouroboros/ledger/mary"
25
+
26
+ //"github.com/blinklabs-io/gouroboros/ledger/mary"
26
27
cardano "github.com/utxorpc/go-codegen/utxorpc/v1alpha/cardano"
27
28
)
28
29
@@ -327,22 +328,37 @@ func (p *AlonzoProtocolParameters) Utxorpc() *cardano.PParams {
327
328
return nil
328
329
}
329
330
330
- // Helper function to safely check rational number bounds
331
- safeRatCheck := func (rat * cbor.Rat ) bool {
331
+ // Helper function to safely convert rational numbers with bounds checking
332
+ safeRatConvert := func (rat * cbor.Rat ) * cardano. RationalNumber {
332
333
if rat == nil || rat .Rat == nil {
333
- return false
334
+ return nil
334
335
}
335
336
num := rat .Num ().Int64 ()
336
337
denom := rat .Denom ().Int64 ()
337
- return num <= math .MaxInt32 && denom > 0 && denom <= math .MaxUint32
338
- }
339
338
340
- // Validate all rational numbers
341
- if ! safeRatCheck (p .A0 ) || ! safeRatCheck (p .Rho ) || ! safeRatCheck (p .Tau ) {
342
- return nil
339
+ // Check bounds for int32 numerator and uint32 denominator
340
+ if num < math .MinInt32 || num > math .MaxInt32 {
341
+ return nil
342
+ }
343
+ if denom <= 0 || denom > math .MaxUint32 {
344
+ return nil
345
+ }
346
+
347
+ return & cardano.RationalNumber {
348
+ Numerator : int32 (num ),
349
+ Denominator : uint32 (denom ),
350
+ }
343
351
}
344
- if p .ExecutionCosts .MemPrice == nil || p .ExecutionCosts .StepPrice == nil ||
345
- ! safeRatCheck (p .ExecutionCosts .MemPrice ) || ! safeRatCheck (p .ExecutionCosts .StepPrice ) {
352
+
353
+ // Convert all rational numbers with safety checks
354
+ a0 := safeRatConvert (p .A0 )
355
+ rho := safeRatConvert (p .Rho )
356
+ tau := safeRatConvert (p .Tau )
357
+ memPrice := safeRatConvert (p .ExecutionCosts .MemPrice )
358
+ stepPrice := safeRatConvert (p .ExecutionCosts .StepPrice )
359
+
360
+ // Return nil if any conversion failed
361
+ if a0 == nil || rho == nil || tau == nil || memPrice == nil || stepPrice == nil {
346
362
return nil
347
363
}
348
364
@@ -391,19 +407,10 @@ func (p *AlonzoProtocolParameters) Utxorpc() *cardano.PParams {
391
407
PoolDeposit : uint64 (p .PoolDeposit ),
392
408
PoolRetirementEpochBound : uint64 (p .MaxEpoch ),
393
409
DesiredNumberOfPools : uint64 (p .NOpt ),
394
- PoolInfluence : & cardano.RationalNumber {
395
- Numerator : int32 (p .A0 .Num ().Int64 ()),
396
- Denominator : uint32 (p .A0 .Denom ().Int64 ()),
397
- },
398
- MonetaryExpansion : & cardano.RationalNumber {
399
- Numerator : int32 (p .Rho .Num ().Int64 ()),
400
- Denominator : uint32 (p .Rho .Denom ().Int64 ()),
401
- },
402
- TreasuryExpansion : & cardano.RationalNumber {
403
- Numerator : int32 (p .Tau .Num ().Int64 ()),
404
- Denominator : uint32 (p .Tau .Denom ().Int64 ()),
405
- },
406
- MinPoolCost : p .MinPoolCost ,
410
+ PoolInfluence : a0 ,
411
+ MonetaryExpansion : rho ,
412
+ TreasuryExpansion : tau ,
413
+ MinPoolCost : p .MinPoolCost ,
407
414
ProtocolVersion : & cardano.ProtocolVersion {
408
415
Major : uint32 (p .ProtocolMajor ),
409
416
Minor : uint32 (p .ProtocolMinor ),
@@ -413,14 +420,8 @@ func (p *AlonzoProtocolParameters) Utxorpc() *cardano.PParams {
413
420
MaxCollateralInputs : uint64 (p .MaxCollateralInputs ),
414
421
CostModels : costModels ,
415
422
Prices : & cardano.ExPrices {
416
- Memory : & cardano.RationalNumber {
417
- Numerator : int32 (p .ExecutionCosts .MemPrice .Num ().Int64 ()),
418
- Denominator : uint32 (p .ExecutionCosts .MemPrice .Denom ().Int64 ()),
419
- },
420
- Steps : & cardano.RationalNumber {
421
- Numerator : int32 (p .ExecutionCosts .StepPrice .Num ().Int64 ()),
422
- Denominator : uint32 (p .ExecutionCosts .StepPrice .Denom ().Int64 ()),
423
- },
423
+ Memory : memPrice ,
424
+ Steps : stepPrice ,
424
425
},
425
426
MaxExecutionUnitsPerTransaction : & cardano.ExUnits {
426
427
Memory : p .MaxTxExUnits .Memory ,
@@ -432,27 +433,3 @@ func (p *AlonzoProtocolParameters) Utxorpc() *cardano.PParams {
432
433
},
433
434
}
434
435
}
435
-
436
- func UpgradePParams (
437
- prevPParams mary.MaryProtocolParameters ,
438
- ) AlonzoProtocolParameters {
439
- return AlonzoProtocolParameters {
440
- MinFeeA : prevPParams .MinFeeA ,
441
- MinFeeB : prevPParams .MinFeeB ,
442
- MaxBlockBodySize : prevPParams .MaxBlockBodySize ,
443
- MaxTxSize : prevPParams .MaxTxSize ,
444
- MaxBlockHeaderSize : prevPParams .MaxBlockHeaderSize ,
445
- KeyDeposit : prevPParams .KeyDeposit ,
446
- PoolDeposit : prevPParams .PoolDeposit ,
447
- MaxEpoch : prevPParams .MaxEpoch ,
448
- NOpt : prevPParams .NOpt ,
449
- A0 : prevPParams .A0 ,
450
- Rho : prevPParams .Rho ,
451
- Tau : prevPParams .Tau ,
452
- Decentralization : prevPParams .Decentralization ,
453
- ExtraEntropy : prevPParams .ExtraEntropy ,
454
- ProtocolMajor : prevPParams .ProtocolMajor ,
455
- ProtocolMinor : prevPParams .ProtocolMinor ,
456
- MinUtxoValue : prevPParams .MinUtxoValue ,
457
- }
458
- }
0 commit comments