From a770792467e4d243c11be1882b6e4d9d6210a268 Mon Sep 17 00:00:00 2001 From: JAG-UK Date: Tue, 24 Mar 2026 13:23:26 +0100 Subject: [PATCH 1/2] GetRail handle tuple output --- contracts/payments.go | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/contracts/payments.go b/contracts/payments.go index 0ab187b..4b81337 100644 --- a/contracts/payments.go +++ b/contracts/payments.go @@ -354,13 +354,45 @@ func (p *PaymentsContract) GetRail(ctx context.Context, railId *big.Int) (*RailV return nil, fmt.Errorf("getRail call failed: %w", err) } - var rail RailViewResult - err = p.abi.UnpackIntoInterface(&rail, "getRail", result) + values, err := p.abi.Unpack("getRail", result) if err != nil { return nil, fmt.Errorf("failed to unpack getRail result: %w", err) } + if len(values) != 1 { + return nil, fmt.Errorf("unexpected getRail result length: %d", len(values)) + } + rawRail, ok := values[0].(struct { + Token common.Address `json:"token"` + From common.Address `json:"from"` + To common.Address `json:"to"` + Operator common.Address `json:"operator"` + Validator common.Address `json:"validator"` + PaymentRate *big.Int `json:"paymentRate"` + LockupPeriod *big.Int `json:"lockupPeriod"` + LockupFixed *big.Int `json:"lockupFixed"` + SettledUpTo *big.Int `json:"settledUpTo"` + EndEpoch *big.Int `json:"endEpoch"` + CommissionRateBps *big.Int `json:"commissionRateBps"` + ServiceFeeRecipient common.Address `json:"serviceFeeRecipient"` + }) + if !ok { + return nil, fmt.Errorf("unexpected getRail tuple type: %T", values[0]) + } - return &rail, nil + return &RailViewResult{ + Token: rawRail.Token, + From: rawRail.From, + To: rawRail.To, + Operator: rawRail.Operator, + Validator: rawRail.Validator, + PaymentRate: rawRail.PaymentRate, + LockupPeriod: rawRail.LockupPeriod, + LockupFixed: rawRail.LockupFixed, + SettledUpTo: rawRail.SettledUpTo, + EndEpoch: rawRail.EndEpoch, + CommissionRateBps: rawRail.CommissionRateBps, + ServiceFeeRecipient: rawRail.ServiceFeeRecipient, + }, nil } From d8cef58c0c6863e98c71e31f1abe6dc0b237e1e1 Mon Sep 17 00:00:00 2001 From: JAG-UK Date: Tue, 24 Mar 2026 13:32:08 +0100 Subject: [PATCH 2/2] Update addresses --- constants/addresses_generated.go | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/constants/addresses_generated.go b/constants/addresses_generated.go index 4ef4de7..9564ecf 100644 --- a/constants/addresses_generated.go +++ b/constants/addresses_generated.go @@ -1,5 +1,5 @@ // Code generated by go generate; DO NOT EDIT. -// Source: FWSS contracts on mainnet, calibration, and devnet +// Source: FWSS contracts on mainnet, calibration package constants @@ -9,14 +9,12 @@ import "github.com/ethereum/go-ethereum/common" var ( FWSSAddressMainnet = common.HexToAddress("0x8408502033C418E1bbC97cE9ac48E5528F371A9f") FWSSAddressCalibration = common.HexToAddress("0x02925630df557F957f70E112bA06e50965417CA0") - FWSSAddressDevnet = common.HexToAddress("0x4A8a81765bFBe09D6fDd167EF954a1D3401340e5") ) // WarmStorageAddresses aliases the FWSS addresses (root of trust) var WarmStorageAddresses = map[Network]common.Address{ NetworkMainnet: FWSSAddressMainnet, NetworkCalibration: FWSSAddressCalibration, - NetworkDevnet: FWSSAddressDevnet, } // derived addresses - read from FWSS contracts @@ -24,30 +22,25 @@ var ( PaymentsAddresses = map[Network]common.Address{ NetworkMainnet: common.HexToAddress("0x23b1e018F08BB982348b15a86ee926eEBf7F4DAa"), NetworkCalibration: common.HexToAddress("0x09a0fDc2723fAd1A7b8e3e00eE5DF73841df55a0"), - NetworkDevnet: common.HexToAddress("0xFD61fA68CB8F70dfC35a4AB244703e39BaB9F352"), } WarmStorageStateViewAddresses = map[Network]common.Address{ - NetworkMainnet: common.HexToAddress("0x638a4986332bF9B889E5D7435B966C5ecdE077Fa"), - NetworkCalibration: common.HexToAddress("0x53d235D474585EC102ccaB7e0cdcE951dD00f716"), - NetworkDevnet: common.HexToAddress("0xfcDDd1E5BC2658fB7483B8e2fa72d8368756F5A3"), + NetworkMainnet: common.HexToAddress("0xB1B3A3d979c1f233c1021EF98dff9c0932FF1bb9"), + NetworkCalibration: common.HexToAddress("0x537320bd004a7FDd3c1932ca64BD88268301322A"), } PDPVerifierAddresses = map[Network]common.Address{ NetworkMainnet: common.HexToAddress("0xBADd0B92C1c71d02E7d520f64c0876538fa2557F"), NetworkCalibration: common.HexToAddress("0x85e366Cf9DD2c0aE37E963d9556F5f4718d6417C"), - NetworkDevnet: common.HexToAddress("0xc72B3D661fcCeBfDf95d3377C2133dCE7bc5cb2e"), } SPRegistryAddresses = map[Network]common.Address{ NetworkMainnet: common.HexToAddress("0xf55dDbf63F1b55c3F1D4FA7e339a68AB7b64A5eB"), NetworkCalibration: common.HexToAddress("0x839e5c9988e4e9977d40708d0094103c0839Ac9D"), - NetworkDevnet: common.HexToAddress("0x123DeEe2aD1d87757cb59eFA77b4975CbfB8be9d"), } SessionKeyRegistryAddresses = map[Network]common.Address{ NetworkMainnet: common.HexToAddress("0x74FD50525A958aF5d484601E252271f9625231aB"), NetworkCalibration: common.HexToAddress("0x518411c2062E119Aaf7A8B12A2eDf9a939347655"), - NetworkDevnet: common.HexToAddress("0xaF69542d01111EdfB7B63Aa974E6A2c9A31EA1E9"), } )