 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Overview ¶
Package offchain provides client abstractions and provider interfaces for interacting with off-chain services in the Chainlink Deployments Framework ecosystem.
Overview ¶
The offchain package serves as the main entry point for managing off-chain client connections and providers. It provides unified interfaces for connecting to various off-chain services such as Job Distributors (JD) and other Chainlink infrastructure components.
Architecture ¶
The package consists of two main components:
- Client (offchain.go) - Client interface for off-chain service interactions
- Provider Interface (provider.go) - Abstraction for different off-chain service providers
Basic Usage ¶
Provider Interface ¶
The Provider interface allows for pluggable off-chain service implementations:
import (
	"context"
	"github.com/smartcontractkit/chainlink-deployments-framework/offchain"
)
// Example provider usage
func connectToOffchainService(provider offchain.Provider) error {
	ctx := context.Background()
	// Initialize the provider
	client, err := provider.Initialize(ctx)
	if err != nil {
		return err
	}
	// Get provider name for logging
	providerName := provider.Name()
	log.Printf("Connected to provider: %s", providerName)
	// Use the client for operations
	offchainClient := provider.OffchainClient()
	// ... perform operations with offchainClient
	return nil
}
Available Providers ¶
The offchain package includes several specialized providers:
Job Distributor (JD) Provider ¶
Located in the jd subpackage, providing:
- Client Provider - Connects to existing JD services 
- CTF Provider - Creates JD Docker containers for testing 
Provider Implementation ¶
To implement a custom off-chain provider, satisfy the Provider interface:
type CustomProvider struct {
	client offchain.Client
	name   string
}
func (p *CustomProvider) Initialize(ctx context.Context) (offchain.Client, error) {
	// Initialize your custom client
	// ... setup logic
	return p.client, nil
}
func (p *CustomProvider) Name() string {
	return p.name
}
func (p *CustomProvider) OffchainClient() offchain.Client {
	return p.client
}
Integration with Deployment Framework ¶
The offchain package integrates seamlessly with the deployment framework:
import (
	"github.com/smartcontractkit/chainlink-deployments-framework/deployment"
	"github.com/smartcontractkit/chainlink-deployments-framework/offchain"
)
// Create environment with offchain client
env := &deployment.Environment{
	Offchain: offchainClient, // offchain.Client is compatible
	// ... other environment fields
}
This compatibility ensures that existing deployment workflows can leverage the new offchain provider abstractions without breaking changes.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶ added in v0.21.0
type Client interface {
	jobv1.JobServiceClient
	nodev1.NodeServiceClient
	csav1.CSAServiceClient
}
    Client is an offchain interface which interacts with job-distributor for performing DON operations.
type Provider ¶
type Provider interface {
	// Initialize sets up the offchain client and returns the instance.
	Initialize(ctx context.Context) (Client, error)
	// Name returns a human-readable name for this provider.
	Name() string
	// OffchainClient returns the initialized offchain client instance.
	// You must call Initialize before using this method.
	OffchainClient() Client
}
    Provider interface for offchain client providers.
       Directories
      ¶
      Directories
      ¶
    
    | Path | Synopsis | 
|---|---|
| internal
       | |
| 
          
            p2pkey
            
            
          
           Package p2pkey contains code adapted from the Chainlink core node with minor modifications. | Package p2pkey contains code adapted from the Chainlink core node with minor modifications. | 
| Package jd provides a comprehensive framework for interacting with Job Distributor (JD) services in the Chainlink Deployments Framework ecosystem. | Package jd provides a comprehensive framework for interacting with Job Distributor (JD) services in the Chainlink Deployments Framework ecosystem. |