Table of Contents

Class ContractService

Namespace
NArk.Core.Services
Assembly
NArk.Core.dll
public class ContractService : IContractService
Inheritance
ContractService
Implements
Inherited Members

Constructors

ContractService(IWalletProvider, IContractStorage, IClientTransport)

public ContractService(IWalletProvider walletProvider, IContractStorage contractStorage, IClientTransport transport)

Parameters

walletProvider IWalletProvider
contractStorage IContractStorage
transport IClientTransport

ContractService(IWalletProvider, IContractStorage, IClientTransport, ILogger<ContractService>)

public ContractService(IWalletProvider walletProvider, IContractStorage contractStorage, IClientTransport transport, ILogger<ContractService> logger)

Parameters

walletProvider IWalletProvider
contractStorage IContractStorage
transport IClientTransport
logger ILogger<ContractService>

ContractService(IWalletProvider, IContractStorage, IClientTransport, IEnumerable<IEventHandler<NewContractActionEvent>>, ILogger<ContractService>?)

public ContractService(IWalletProvider walletProvider, IContractStorage contractStorage, IClientTransport transport, IEnumerable<IEventHandler<NewContractActionEvent>> eventHandlers, ILogger<ContractService>? logger = null)

Parameters

walletProvider IWalletProvider
contractStorage IContractStorage
transport IClientTransport
eventHandlers IEnumerable<IEventHandler<NewContractActionEvent>>
logger ILogger<ContractService>

Methods

DeriveContract(string, NextContractPurpose, ArkContract[], ContractActivityState, Dictionary<string, string>?, CancellationToken)

Derives a new contract for the specified purpose, with optional input contracts for descriptor recycling. When inputContracts are provided and purpose is SendToSelf, HD wallets may reuse a descriptor from the inputs to avoid index bloat and reduce contract data accumulation. Inputs the wallet is still advertising as an inbound destination are skipped, since recycling deactivates the reused script — see GetNextContract(NextContractPurpose, ContractActivityState, ArkContract[]?, CancellationToken).

public Task<ArkContract> DeriveContract(string walletId, NextContractPurpose purpose, ArkContract[] inputContracts, ContractActivityState activityState = ContractActivityState.Active, Dictionary<string, string>? metadata = null, CancellationToken cancellationToken = default)

Parameters

walletId string
purpose NextContractPurpose
inputContracts ArkContract[]
activityState ContractActivityState
metadata Dictionary<string, string>
cancellationToken CancellationToken

Returns

Task<ArkContract>

DeriveContract(string, NextContractPurpose, ContractActivityState, Dictionary<string, string>?, CancellationToken)

Derives a new contract for the specified purpose.

public Task<ArkContract> DeriveContract(string walletId, NextContractPurpose purpose, ContractActivityState activityState = ContractActivityState.Active, Dictionary<string, string>? metadata = null, CancellationToken cancellationToken = default)

Parameters

walletId string
purpose NextContractPurpose
activityState ContractActivityState
metadata Dictionary<string, string>
cancellationToken CancellationToken

Returns

Task<ArkContract>

ImportContract(string, ArkContract, ContractActivityState, Dictionary<string, string>?, CancellationToken)

public Task ImportContract(string walletId, ArkContract contract, ContractActivityState activityState = ContractActivityState.Active, Dictionary<string, string>? metadata = null, CancellationToken cancellationToken = default)

Parameters

walletId string
contract ArkContract
activityState ContractActivityState
metadata Dictionary<string, string>
cancellationToken CancellationToken

Returns

Task