diff --git a/bindings/generated/latest/ccip/burnminttokenpool/burnminttokenpool.go b/bindings/generated/latest/ccip/burnminttokenpool/burnminttokenpool.go index 09025401f..eb0fc2084 100644 --- a/bindings/generated/latest/ccip/burnminttokenpool/burnminttokenpool.go +++ b/bindings/generated/latest/ccip/burnminttokenpool/burnminttokenpool.go @@ -1271,8 +1271,8 @@ func (t *CalculateFeeMCMSParams) UnmarshalHex(data string) error { // ChainUpdate is a Record type type ChainUpdate struct { RemoteChainSelector types.NUMERIC `json:"remoteChainSelector"` - RemotePools []types.TEXT `json:"remotePools"` - RemoteTokenAddress types.TEXT `json:"remoteTokenAddress"` + RemotePools []types.TEXT `json:"remotePools" hex:"[]bytes"` + RemoteTokenAddress types.TEXT `json:"remoteTokenAddress" hex:"bytes"` InboundCCVs []chainlinkapi.RawInstanceAddress `json:"inboundCCVs"` OutboundCCVs []chainlinkapi.RawInstanceAddress `json:"outboundCCVs"` FinalityConfig core.FinalityConfig `json:"finalityConfig"` @@ -1723,8 +1723,8 @@ func (t *ReleaseFromTicketMCMSParams) UnmarshalHex(data string) error { // RemoteChainConfig is a Record type type RemoteChainConfig struct { - RemotePools []types.TEXT `json:"remotePools"` - RemoteTokenAddress types.TEXT `json:"remoteTokenAddress"` + RemotePools []types.TEXT `json:"remotePools" hex:"[]bytes"` + RemoteTokenAddress types.TEXT `json:"remoteTokenAddress" hex:"bytes"` InboundCCVs []chainlinkapi.RawInstanceAddress `json:"inboundCCVs"` OutboundCCVs []chainlinkapi.RawInstanceAddress `json:"outboundCCVs"` FinalityConfig core.FinalityConfig `json:"finalityConfig"` diff --git a/bindings/generated/latest/ccip/committeeverifier/committeeverifier.go b/bindings/generated/latest/ccip/committeeverifier/committeeverifier.go index 9e3e50469..8fd8d6c52 100644 --- a/bindings/generated/latest/ccip/committeeverifier/committeeverifier.go +++ b/bindings/generated/latest/ccip/committeeverifier/committeeverifier.go @@ -1570,7 +1570,7 @@ func (t *SetDynamicConfigParams) UnmarshalHex(data string) error { type SignatureConfig struct { SourceChainSelector types.NUMERIC `json:"sourceChainSelector"` Threshold types.INT64 `json:"threshold"` - SignerKeys []types.TEXT `json:"signerKeys"` + SignerKeys []types.TEXT `json:"signerKeys" hex:"[]bytes"` } // ToMap converts SignatureConfig to a map for DAML arguments diff --git a/bindings/generated/latest/ccip/core/core.go b/bindings/generated/latest/ccip/core/core.go index 829d0dee8..48861d990 100644 --- a/bindings/generated/latest/ccip/core/core.go +++ b/bindings/generated/latest/ccip/core/core.go @@ -1700,7 +1700,7 @@ func (t *ConsumeReceiveTicketMCMSParams) UnmarshalHex(data string) error { // Curse is a Record type type Curse struct { - Subject types.TEXT `json:"subject"` + Subject types.TEXT `json:"subject" hex:"bytes"` } // ToMap converts Curse to a map for DAML arguments @@ -1840,7 +1840,7 @@ func (t *CurseGlobal) UnmarshalHex(data string) error { // CurseMultiple is a Record type type CurseMultiple struct { - Subjects []types.TEXT `json:"subjects"` + Subjects []types.TEXT `json:"subjects" hex:"[]bytes"` } // ToMap converts CurseMultiple to a map for DAML arguments @@ -1882,7 +1882,7 @@ func (t *CurseMultiple) UnmarshalHex(data string) error { // CurseMultipleParams is a Record type type CurseMultipleParams struct { - Subjects []types.TEXT `json:"subjects"` + Subjects []types.TEXT `json:"subjects" hex:"[]bytes"` } // ToMap converts CurseMultipleParams to a map for DAML arguments @@ -1924,7 +1924,7 @@ func (t *CurseMultipleParams) UnmarshalHex(data string) error { // CurseParams is a Record type type CurseParams struct { - Subject types.TEXT `json:"subject"` + Subject types.TEXT `json:"subject" hex:"bytes"` } // ToMap converts CurseParams to a map for DAML arguments @@ -2003,7 +2003,7 @@ type DestChainConfig struct { AddressBytesLength types.INT64 `json:"addressBytesLength"` TokenReceiverAllowed types.BOOL `json:"tokenReceiverAllowed"` BaseExecutionGasCost types.INT64 `json:"baseExecutionGasCost"` - OffRampAddress types.TEXT `json:"offRampAddress"` + OffRampAddress types.TEXT `json:"offRampAddress" hex:"bytes"` DefaultExecutor *chainlinkapi.RawInstanceAddress `json:"defaultExecutor" hex:"optional"` LaneMandatedCCVs []chainlinkapi.RawInstanceAddress `json:"laneMandatedCCVs"` DefaultCCVs []chainlinkapi.RawInstanceAddress `json:"defaultCCVs"` @@ -2089,7 +2089,7 @@ type DestChainConfigArgs struct { AddressBytesLength types.INT64 `json:"addressBytesLength"` TokenReceiverAllowed types.BOOL `json:"tokenReceiverAllowed"` BaseExecutionGasCost types.INT64 `json:"baseExecutionGasCost"` - OffRampAddress types.TEXT `json:"offRampAddress"` + OffRampAddress types.TEXT `json:"offRampAddress" hex:"bytes"` DefaultExecutor *chainlinkapi.RawInstanceAddress `json:"defaultExecutor" hex:"optional"` LaneMandatedCCVs []chainlinkapi.RawInstanceAddress `json:"laneMandatedCCVs"` DefaultCCVs []chainlinkapi.RawInstanceAddress `json:"defaultCCVs"` @@ -5343,7 +5343,7 @@ type MessageV1 struct { Finality DecodedFinality `json:"finality"` CcvAndExecutorHash types.TEXT `json:"ccvAndExecutorHash"` OnRampAddress types.TEXT `json:"onRampAddress"` - OffRampAddress types.TEXT `json:"offRampAddress"` + OffRampAddress types.TEXT `json:"offRampAddress" hex:"bytes"` Sender types.TEXT `json:"sender"` Receiver types.TEXT `json:"receiver"` DestBlob types.TEXT `json:"destBlob"` @@ -5787,7 +5787,7 @@ type RMNRemote struct { RmnOwner types.PARTY `json:"rmnOwner"` CcipOwner types.PARTY `json:"ccipOwner"` CustomObservers []types.PARTY `json:"customObservers"` - CursedSubjects []types.TEXT `json:"cursedSubjects"` + CursedSubjects []types.TEXT `json:"cursedSubjects" hex:"[]bytes"` } // GetTemplateID returns the template ID for this template using the package name @@ -6977,7 +6977,7 @@ type SendingMessageV1 struct { CcipReceiveGasLimit types.INT64 `json:"ccipReceiveGasLimit"` CcvAndExecutorHash types.TEXT `json:"ccvAndExecutorHash"` OnRampAddress types.TEXT `json:"onRampAddress"` - OffRampAddress types.TEXT `json:"offRampAddress"` + OffRampAddress types.TEXT `json:"offRampAddress" hex:"bytes"` TokenReceiver types.TEXT `json:"tokenReceiver"` TokenArgs types.TEXT `json:"tokenArgs"` FeeToken splice_api_token_holding_v1.InstrumentId `json:"feeToken"` @@ -8298,7 +8298,7 @@ func (t *SetTransferFactoryParams) UnmarshalHex(data string) error { // SourceChainConfig is a Record type type SourceChainConfig struct { IsEnabled types.BOOL `json:"isEnabled"` - OnRampAddresses []types.TEXT `json:"onRampAddresses"` + OnRampAddresses []types.TEXT `json:"onRampAddresses" hex:"[]bytes"` DefaultCCVs []chainlinkapi.RawInstanceAddress `json:"defaultCCVs"` LaneMandatedCCVs []chainlinkapi.RawInstanceAddress `json:"laneMandatedCCVs"` } @@ -8362,7 +8362,7 @@ func (t *SourceChainConfig) UnmarshalHex(data string) error { type SourceChainConfigArgs struct { SourceChainSelector types.NUMERIC `json:"sourceChainSelector"` IsEnabled types.BOOL `json:"isEnabled"` - OnRampAddresses []types.TEXT `json:"onRampAddresses"` + OnRampAddresses []types.TEXT `json:"onRampAddresses" hex:"[]bytes"` DefaultCCVs []chainlinkapi.RawInstanceAddress `json:"defaultCCVs"` LaneMandatedCCVs []chainlinkapi.RawInstanceAddress `json:"laneMandatedCCVs"` } @@ -10121,7 +10121,7 @@ func (t *TransferAdminRoleMCMSParams) UnmarshalHex(data string) error { // Uncurse is a Record type type Uncurse struct { - Subject types.TEXT `json:"subject"` + Subject types.TEXT `json:"subject" hex:"bytes"` } // ToMap converts Uncurse to a map for DAML arguments @@ -10261,7 +10261,7 @@ func (t *UncurseGlobal) UnmarshalHex(data string) error { // UncurseMultiple is a Record type type UncurseMultiple struct { - Subjects []types.TEXT `json:"subjects"` + Subjects []types.TEXT `json:"subjects" hex:"[]bytes"` } // ToMap converts UncurseMultiple to a map for DAML arguments @@ -10303,7 +10303,7 @@ func (t *UncurseMultiple) UnmarshalHex(data string) error { // UncurseMultipleParams is a Record type type UncurseMultipleParams struct { - Subjects []types.TEXT `json:"subjects"` + Subjects []types.TEXT `json:"subjects" hex:"[]bytes"` } // ToMap converts UncurseMultipleParams to a map for DAML arguments @@ -10345,7 +10345,7 @@ func (t *UncurseMultipleParams) UnmarshalHex(data string) error { // UncurseParams is a Record type type UncurseParams struct { - Subject types.TEXT `json:"subject"` + Subject types.TEXT `json:"subject" hex:"bytes"` } // ToMap converts UncurseParams to a map for DAML arguments diff --git a/bindings/generated/latest/ccip/factory/factory.go b/bindings/generated/latest/ccip/factory/factory.go index f90ea08ac..4953e4ae9 100644 --- a/bindings/generated/latest/ccip/factory/factory.go +++ b/bindings/generated/latest/ccip/factory/factory.go @@ -1500,7 +1500,7 @@ type DeployRMNRemoteParams struct { RmnOwner types.PARTY `json:"rmnOwner"` CcipOwner types.PARTY `json:"ccipOwner"` CustomObservers []types.PARTY `json:"customObservers"` - CursedSubjects []types.TEXT `json:"cursedSubjects"` + CursedSubjects []types.TEXT `json:"cursedSubjects" hex:"[]bytes"` } // ToMap converts DeployRMNRemoteParams to a map for DAML arguments diff --git a/bindings/generated/latest/ccip/lockreleasetokenpool/lockreleasetokenpool.go b/bindings/generated/latest/ccip/lockreleasetokenpool/lockreleasetokenpool.go index e87580e8b..2dcd9215e 100644 --- a/bindings/generated/latest/ccip/lockreleasetokenpool/lockreleasetokenpool.go +++ b/bindings/generated/latest/ccip/lockreleasetokenpool/lockreleasetokenpool.go @@ -505,8 +505,8 @@ func (t *CalculateFeeMCMSParams) UnmarshalHex(data string) error { // ChainUpdate is a Record type type ChainUpdate struct { RemoteChainSelector types.NUMERIC `json:"remoteChainSelector"` - RemotePools []types.TEXT `json:"remotePools"` - RemoteTokenAddress types.TEXT `json:"remoteTokenAddress"` + RemotePools []types.TEXT `json:"remotePools" hex:"[]bytes"` + RemoteTokenAddress types.TEXT `json:"remoteTokenAddress" hex:"bytes"` InboundCCVs []chainlinkapi.RawInstanceAddress `json:"inboundCCVs"` OutboundCCVs []chainlinkapi.RawInstanceAddress `json:"outboundCCVs"` FinalityConfig core.FinalityConfig `json:"finalityConfig"` @@ -1724,8 +1724,8 @@ func (t *ReleaseFromTicketMCMSParams) UnmarshalHex(data string) error { // RemoteChainConfig is a Record type type RemoteChainConfig struct { - RemotePools []types.TEXT `json:"remotePools"` - RemoteTokenAddress types.TEXT `json:"remoteTokenAddress"` + RemotePools []types.TEXT `json:"remotePools" hex:"[]bytes"` + RemoteTokenAddress types.TEXT `json:"remoteTokenAddress" hex:"bytes"` InboundCCVs []chainlinkapi.RawInstanceAddress `json:"inboundCCVs"` OutboundCCVs []chainlinkapi.RawInstanceAddress `json:"outboundCCVs"` FinalityConfig core.FinalityConfig `json:"finalityConfig"` diff --git a/contracts/cmd/bindings/main.go b/contracts/cmd/bindings/main.go index 350fcc5f7..0c46b0bb6 100644 --- a/contracts/cmd/bindings/main.go +++ b/contracts/cmd/bindings/main.go @@ -70,6 +70,14 @@ func main() { "root": true, // Merkle root hash (32 bytes) "newRoot": true, // New merkle root hash (32 bytes) "versionTag": true, // CCV version tag is a 4-byte BytesHex field + "onRampAddresses": true, // Daml [BytesHex] → hex:"[]bytes" on []types.TEXT + "signerKeys": true, // Daml [BytesHex] → hex:"[]bytes" on []types.TEXT + "offRampAddress": true, // Daml BytesHex scalar → hex:"bytes" on types.TEXT + "subject": true, // Daml BytesHex scalar → hex:"bytes"; RMNRemote Curse/Uncurse subject (chain selector hash) + "remoteTokenAddress": true, // Daml BytesHex scalar → hex:"bytes"; token pool remote token address on dest chain + "subjects": true, // Daml [BytesHex] → hex:"[]bytes"; RMNRemote CurseMultiple/UncurseMultiple + "cursedSubjects": true, // Daml [BytesHex] → hex:"[]bytes"; Factory DeployRMNRemote initial cursed subjects + "remotePools": true, // Daml [BytesHex] → hex:"[]bytes"; token pool allowed remote pool addresses per chain }, // hex:"bytes16" — fields that may exceed 255 bytes (uint16 length prefix) BytesHexFields: map[string]bool{ diff --git a/deployment/utils/mcms/proposal.go b/deployment/utils/mcms/proposal.go index 1f42e3977..9565fb2ab 100644 --- a/deployment/utils/mcms/proposal.go +++ b/deployment/utils/mcms/proposal.go @@ -74,16 +74,14 @@ func GenerateTimelockProposal( return nil, fmt.Errorf("failed to get MCMS contract state: %w", err) } - txCount := countTransactions(batchOps) multisigId := makeMultisigId(string(mcmsContract.InstanceId), string(mcmsContract.Owner), config.Role) + // postOpCount and overridePreviousRoot are applied at sign/execute time by mcms (encoder + executor), not in chainMetadata. metadata, err := cantonsdk.NewChainMetadata( opCount, - opCount+txCount, int64(mcmsContract.ChainId), multisigId, mcmsAddrHex, - config.OverridePreviousRoot, string(mcmsContract.InstanceId), ) if err != nil { @@ -109,6 +107,7 @@ func GenerateTimelockProposal( SetVersion("v1"). SetValidUntil(validUntil). SetDescription(config.Description). + SetOverridePreviousRoot(config.OverridePreviousRoot). AddTimelockAddress(config.ChainSelector, timelockAddr). AddChainMetadata(config.ChainSelector, metadata). SetAction(config.Action) diff --git a/go.mod b/go.mod index a1301fbe2..8917da87b 100644 --- a/go.mod +++ b/go.mod @@ -41,7 +41,7 @@ require ( github.com/smartcontractkit/chainlink-deployments-framework v0.108.0 github.com/smartcontractkit/chainlink-testing-framework/framework v0.16.4 github.com/smartcontractkit/chainlink-testing-framework/wasp v1.51.3 - github.com/smartcontractkit/go-daml v0.0.0-20260601190909-414e6d9dc2bd + github.com/smartcontractkit/go-daml v0.0.0-20260604143752-c6f6567940ba github.com/stretchr/testify v1.11.1 github.com/testcontainers/testcontainers-go v0.42.0 go.opentelemetry.io/otel v1.44.0 @@ -451,7 +451,7 @@ require ( github.com/smartcontractkit/freeport v0.1.3-0.20250828155247-add56fa28aad // indirect github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 // indirect github.com/smartcontractkit/libocr v0.0.0-20260304194147-a03701e2c02e // indirect - github.com/smartcontractkit/mcms v0.45.2-0.20260602204056-81248906ce6a + github.com/smartcontractkit/mcms v0.45.2-0.20260604053848-48d8a8691ced github.com/smartcontractkit/wsrpc v0.8.5-0.20250502134807-c57d3d995945 // indirect github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect github.com/speakeasy-api/jsonpath v0.6.0 // indirect diff --git a/go.sum b/go.sum index 687fb1e8f..90e892061 100644 --- a/go.sum +++ b/go.sum @@ -1230,14 +1230,14 @@ github.com/smartcontractkit/chainlink/v2 v2.29.0 h1:MyvQ/LAhHw//yDXgo2EvH7jq4NH3 github.com/smartcontractkit/chainlink/v2 v2.29.0/go.mod h1:6SHH9QHlKh1mKuEhG8Y7nGutUzhQwu1Qrpp/0qLzaR0= github.com/smartcontractkit/freeport v0.1.3-0.20250828155247-add56fa28aad h1:lgHxTHuzJIF3Vj6LSMOnjhqKgRqYW+0MV2SExtCYL1Q= github.com/smartcontractkit/freeport v0.1.3-0.20250828155247-add56fa28aad/go.mod h1:T4zH9R8R8lVWKfU7tUvYz2o2jMv1OpGCdpY2j2QZXzU= -github.com/smartcontractkit/go-daml v0.0.0-20260601190909-414e6d9dc2bd h1:t8V2eqMZFoVXFMf+BHeti0zHeMDQ2ss4QngGtyFbGMs= -github.com/smartcontractkit/go-daml v0.0.0-20260601190909-414e6d9dc2bd/go.mod h1:SqWfl3Bp9NleC9jhzFUaOGzOZeKfldpY4QOW6A6NSNM= +github.com/smartcontractkit/go-daml v0.0.0-20260604143752-c6f6567940ba h1:peYJwUWOv54aigdk1VFzkmXdZmZK4xixfxv0Af1l6/I= +github.com/smartcontractkit/go-daml v0.0.0-20260604143752-c6f6567940ba/go.mod h1:SqWfl3Bp9NleC9jhzFUaOGzOZeKfldpY4QOW6A6NSNM= github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 h1:12ijqMM9tvYVEm+nR826WsrNi6zCKpwBhuApq127wHs= github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7/go.mod h1:FX7/bVdoep147QQhsOPkYsPEXhGZjeYx6lBSaSXtZOA= github.com/smartcontractkit/libocr v0.0.0-20260304194147-a03701e2c02e h1:poXTj5cFVM6XfC4HICIDYkDVc/A6OYB0eeID0wU2JQE= github.com/smartcontractkit/libocr v0.0.0-20260304194147-a03701e2c02e/go.mod h1:PLdNK6GlqfxIWXzziPkU7dCAVlVFeYkyyW7AQY0R+4Q= -github.com/smartcontractkit/mcms v0.45.2-0.20260602204056-81248906ce6a h1:iUSbJqRa4pqmm4v4yvRUqFB4I9mW1zj/yNkkd6I/k0w= -github.com/smartcontractkit/mcms v0.45.2-0.20260602204056-81248906ce6a/go.mod h1:asEx9cQTOCz6p6KJececNlqVdVS72IX3x8Xpha9+nqw= +github.com/smartcontractkit/mcms v0.45.2-0.20260604053848-48d8a8691ced h1:pGCTXKk/EwBO5qgwR4LM9B+aWJA0hZj0JIj0Y3bME3w= +github.com/smartcontractkit/mcms v0.45.2-0.20260604053848-48d8a8691ced/go.mod h1:asEx9cQTOCz6p6KJececNlqVdVS72IX3x8Xpha9+nqw= github.com/smartcontractkit/wsrpc v0.8.5-0.20250502134807-c57d3d995945 h1:zxcODLrFytOKmAd8ty8S/XK6WcIEJEgRBaL7sY/7l4Y= github.com/smartcontractkit/wsrpc v0.8.5-0.20250502134807-c57d3d995945/go.mod h1:m3pdp17i4bD50XgktkzWetcV5yaLsi7Gunbv4ZgN6qg= github.com/sony/gobreaker/v2 v2.1.0 h1:av2BnjtRmVPWBvy5gSFPytm1J8BmN5AGhq875FfGKDM= diff --git a/integration-tests/go.mod b/integration-tests/go.mod index 3100902fc..f6dc11f16 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -32,8 +32,8 @@ require ( github.com/smartcontractkit/chainlink-common v0.11.2-0.20260506120607-7f10be016c89 github.com/smartcontractkit/chainlink-deployments-framework v0.108.0 github.com/smartcontractkit/freeport v0.1.3-0.20250828155247-add56fa28aad - github.com/smartcontractkit/go-daml v0.0.0-20260601190909-414e6d9dc2bd - github.com/smartcontractkit/mcms v0.45.2-0.20260602204056-81248906ce6a + github.com/smartcontractkit/go-daml v0.0.0-20260604143752-c6f6567940ba + github.com/smartcontractkit/mcms v0.45.2-0.20260604053848-48d8a8691ced github.com/stretchr/testify v1.11.1 google.golang.org/protobuf v1.36.11 ) diff --git a/integration-tests/go.sum b/integration-tests/go.sum index a7bab67b3..ffc901815 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -770,14 +770,14 @@ github.com/smartcontractkit/chainlink-tron/relayer/gotron-sdk v0.0.5-0.202510141 github.com/smartcontractkit/chainlink-tron/relayer/gotron-sdk v0.0.5-0.20251014120029-d73d15cc23f7/go.mod h1:ea1LESxlSSOgc2zZBqf1RTkXTMthHaspdqUHd7W4lF0= github.com/smartcontractkit/freeport v0.1.3-0.20250828155247-add56fa28aad h1:lgHxTHuzJIF3Vj6LSMOnjhqKgRqYW+0MV2SExtCYL1Q= github.com/smartcontractkit/freeport v0.1.3-0.20250828155247-add56fa28aad/go.mod h1:T4zH9R8R8lVWKfU7tUvYz2o2jMv1OpGCdpY2j2QZXzU= -github.com/smartcontractkit/go-daml v0.0.0-20260601190909-414e6d9dc2bd h1:t8V2eqMZFoVXFMf+BHeti0zHeMDQ2ss4QngGtyFbGMs= -github.com/smartcontractkit/go-daml v0.0.0-20260601190909-414e6d9dc2bd/go.mod h1:SqWfl3Bp9NleC9jhzFUaOGzOZeKfldpY4QOW6A6NSNM= +github.com/smartcontractkit/go-daml v0.0.0-20260604143752-c6f6567940ba h1:peYJwUWOv54aigdk1VFzkmXdZmZK4xixfxv0Af1l6/I= +github.com/smartcontractkit/go-daml v0.0.0-20260604143752-c6f6567940ba/go.mod h1:SqWfl3Bp9NleC9jhzFUaOGzOZeKfldpY4QOW6A6NSNM= github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 h1:12ijqMM9tvYVEm+nR826WsrNi6zCKpwBhuApq127wHs= github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7/go.mod h1:FX7/bVdoep147QQhsOPkYsPEXhGZjeYx6lBSaSXtZOA= github.com/smartcontractkit/libocr v0.0.0-20260304194147-a03701e2c02e h1:poXTj5cFVM6XfC4HICIDYkDVc/A6OYB0eeID0wU2JQE= github.com/smartcontractkit/libocr v0.0.0-20260304194147-a03701e2c02e/go.mod h1:PLdNK6GlqfxIWXzziPkU7dCAVlVFeYkyyW7AQY0R+4Q= -github.com/smartcontractkit/mcms v0.45.2-0.20260602204056-81248906ce6a h1:iUSbJqRa4pqmm4v4yvRUqFB4I9mW1zj/yNkkd6I/k0w= -github.com/smartcontractkit/mcms v0.45.2-0.20260602204056-81248906ce6a/go.mod h1:asEx9cQTOCz6p6KJececNlqVdVS72IX3x8Xpha9+nqw= +github.com/smartcontractkit/mcms v0.45.2-0.20260604053848-48d8a8691ced h1:pGCTXKk/EwBO5qgwR4LM9B+aWJA0hZj0JIj0Y3bME3w= +github.com/smartcontractkit/mcms v0.45.2-0.20260604053848-48d8a8691ced/go.mod h1:asEx9cQTOCz6p6KJececNlqVdVS72IX3x8Xpha9+nqw= github.com/smartcontractkit/wsrpc v0.8.5-0.20250502134807-c57d3d995945 h1:zxcODLrFytOKmAd8ty8S/XK6WcIEJEgRBaL7sY/7l4Y= github.com/smartcontractkit/wsrpc v0.8.5-0.20250502134807-c57d3d995945/go.mod h1:m3pdp17i4bD50XgktkzWetcV5yaLsi7Gunbv4ZgN6qg= github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw=