Documentation ¶
Overview ¶
Package models contain the key job components used by the Chainlink application.
Common ¶
Common contains types and functions that are useful across the application. Particularly dealing with the URL field, dates, and time.
Eth ¶
Eth creates transactions and tracks transaction attempts on the Ethereum blockchain.
JobSpec ¶
A JobSpec is the largest unit of work that a Chainlink node can take on. It will have Initiators, which is how a JobRun is started from the job definition, and Tasks, which are the specific instructions for what work needs to be performed. The BridgeType is also located here, and is used to define the location (URL) of external adapters.
ORM ¶
The ORM is the wrapper around the database. It gives a limited set of functions to allow for safe storing and withdrawing of information.
Run ¶
A Run is the actual invocation of work being done on the Job and Task. This comprises of JobRuns and TaskRuns. A JobRun is like a workflow where the steps are the TaskRuns.
i.e. We have a Scheduler Initiator that creates a JobRun every monday based on a JobDefinition. And in turn, those JobRuns have TaskRuns based on the JobDefinition's TaskDefinitions.
Index ¶
- Constants
- Variables
- func AuthenticateBridgeType(bt *BridgeType, token string) (bool, error)
- func AuthenticateExternalInitiator(eia *ExternalInitiatorAuthentication, ea *ExternalInitiator) (bool, error)
- func FilterQueryFactory(i Initiator, from *big.Int) (ethereum.FilterQuery, error)
- func HashedSecret(eia *ExternalInitiatorAuthentication, salt string) (string, error)
- func NewBridgeType(btr *BridgeTypeRequest) (*BridgeTypeAuthentication, *BridgeType, error)
- func NewDatabaseAccessError(msg string) error
- func NewSecret() string
- func NewValidationError(msg string, values ...interface{}) error
- func TopicFiltersForRunLog(logTopics []common.Hash, jobID string) ([][]common.Hash, error)
- func ValidateBulkDeleteRunRequest(request *BulkDeleteRunRequest) error
- type AddressCollection
- type AnyTime
- type Big
- func (b *Big) Hex() string
- func (b *Big) MarshalJSON() ([]byte, error)
- func (b *Big) MarshalText() ([]byte, error)
- func (b *Big) Scan(value interface{}) error
- func (b *Big) String() string
- func (b *Big) ToInt() *big.Int
- func (b *Big) UnmarshalJSON(input []byte) error
- func (b *Big) UnmarshalText(input []byte) error
- func (b Big) Value() (driver.Value, error)
- type BlockHeader
- type BridgeRunResult
- type BridgeType
- type BridgeTypeAuthentication
- type BridgeTypeRequest
- type BulkDeleteRunRequest
- type BulkTaskStatus
- type ChangePasswordRequest
- type CreateKeyRequest
- type Cron
- type DatabaseAccessError
- type EIP55Address
- func (a EIP55Address) Address() common.Address
- func (a EIP55Address) Big() *big.Int
- func (a EIP55Address) Bytes() []byte
- func (a EIP55Address) Format(s fmt.State, c rune)
- func (a EIP55Address) Hash() common.Hash
- func (a *EIP55Address) Scan(value interface{}) error
- func (a EIP55Address) String() string
- func (a *EIP55Address) UnmarshalJSON(input []byte) error
- func (a *EIP55Address) UnmarshalText(input []byte) error
- func (a EIP55Address) Value() (driver.Value, error)
- type EIP55AddressCollection
- type Encumbrance
- type EthLogEvent
- type EthSubscription
- type ExternalInitiator
- type ExternalInitiatorAuthentication
- type FunctionSelector
- type Head
- type Initiator
- type InitiatorLogEvent
- func (le InitiatorLogEvent) BlockNumber() *big.Int
- func (le InitiatorLogEvent) ContractPayment() (*assets.Link, error)
- func (le InitiatorLogEvent) ForLogger(kvs ...interface{}) []interface{}
- func (le InitiatorLogEvent) GetInitiator() Initiator
- func (le InitiatorLogEvent) GetJobSpec() JobSpec
- func (le InitiatorLogEvent) GetLog() Log
- func (le InitiatorLogEvent) JSON() (JSON, error)
- func (le InitiatorLogEvent) LogRequest() LogRequest
- func (le InitiatorLogEvent) RunRequest() (RunRequest, error)
- func (le InitiatorLogEvent) ToDebug()
- func (le InitiatorLogEvent) Validate() bool
- func (le InitiatorLogEvent) ValidateRequester() error
- type InitiatorParams
- type InitiatorRequest
- type JSON
- func (j JSON) Add(key string, val interface{}) (JSON, error)
- func (j JSON) Bytes() []byte
- func (j JSON) CBOR() ([]byte, error)
- func (j JSON) Delete(key string) (JSON, error)
- func (j JSON) Empty() bool
- func (j JSON) MarshalJSON() ([]byte, error)
- func (j JSON) Merge(j2 JSON) (JSON, error)
- func (j *JSON) Scan(value interface{}) error
- func (j *JSON) UnmarshalJSON(b []byte) error
- func (j JSON) Value() (driver.Value, error)
- type JSONAPIError
- type JSONAPIErrors
- type JobRun
- func (jr *JobRun) ApplyResult(result RunResult)
- func (jr JobRun) ForLogger(kvs ...interface{}) []interface{}
- func (jr JobRun) GetID() string
- func (jr JobRun) GetName() string
- func (jr *JobRun) NextTaskRun() *TaskRun
- func (jr *JobRun) NextTaskRunIndex() (int, bool)
- func (jr *JobRun) PreviousTaskRun() *TaskRun
- func (jr *JobRun) SetError(err error)
- func (jr *JobRun) SetFinishedAt()
- func (jr *JobRun) SetID(value string) error
- func (jr *JobRun) TasksRemain() bool
- type JobSpec
- func (j JobSpec) Ended(t time.Time) bool
- func (j JobSpec) GetID() string
- func (j JobSpec) GetName() string
- func (j JobSpec) InitiatorsFor(types ...string) []Initiator
- func (j JobSpec) IsLogInitiated() bool
- func (j JobSpec) NewRun(i Initiator) JobRun
- func (j *JobSpec) SetID(value string) error
- func (j JobSpec) Started(t time.Time) bool
- func (j JobSpec) WebAuthorized() bool
- type JobSpecRequest
- type Key
- type Log
- type LogRequest
- type RunLogEvent
- type RunRequest
- type RunResult
- func (rr *RunResult) Add(key string, result interface{})
- func (rr *RunResult) ApplyResult(val interface{})
- func (rr *RunResult) CompleteWithResult(val interface{})
- func (rr *RunResult) Error() string
- func (rr *RunResult) Get(path string) gjson.Result
- func (rr *RunResult) GetError() error
- func (rr *RunResult) HasError() bool
- func (rr *RunResult) MarkPendingBridge()
- func (rr *RunResult) MarkPendingConfirmations()
- func (rr *RunResult) MarkPendingConnection()
- func (rr *RunResult) Merge(in RunResult) error
- func (rr *RunResult) Result() gjson.Result
- func (rr *RunResult) ResultString() (string, error)
- func (rr *RunResult) SetError(err error)
- type RunStatus
- func (s RunStatus) CanStart() bool
- func (s RunStatus) Completed() bool
- func (s RunStatus) Errored() bool
- func (s RunStatus) Finished() bool
- func (s RunStatus) Pending() bool
- func (s RunStatus) PendingBridge() bool
- func (s RunStatus) PendingConfirmations() bool
- func (s RunStatus) PendingConnection() bool
- func (s RunStatus) PendingSleep() bool
- func (s RunStatus) Runnable() bool
- func (s *RunStatus) Scan(value interface{}) error
- func (s RunStatus) Unstarted() bool
- func (s RunStatus) Value() (driver.Value, error)
- type RunStatusCollection
- type SendEtherRequest
- type ServiceAgreement
- type Session
- type SessionRequest
- type Signature
- func (s Signature) Big() *big.Int
- func (s Signature) Bytes() []byte
- func (s Signature) Format(state fmt.State, c rune)
- func (s Signature) Hex() string
- func (s Signature) MarshalJSON() ([]byte, error)
- func (s Signature) MarshalText() ([]byte, error)
- func (s *Signature) Scan(value interface{}) error
- func (s *Signature) SetBytes(b []byte)
- func (s Signature) String() string
- func (s *Signature) UnmarshalJSON(input []byte) error
- func (s *Signature) UnmarshalText(input []byte) error
- func (s Signature) Value() (driver.Value, error)
- type Signer
- type SyncEvent
- type TaskRun
- type TaskSpec
- type TaskSpecRequest
- type TaskType
- type Tx
- type TxAttempt
- type TxReceipt
- type UnsignedServiceAgreement
- type User
- type ValidationError
- type WebURL
- type WithdrawalRequest
Constants ¶
const ( // BulkTaskStatusInProgress is the default state of any run status. BulkTaskStatusInProgress = BulkTaskStatus("") // BulkTaskStatusErrored means a bulk task stopped because it encountered an error. BulkTaskStatusErrored = BulkTaskStatus("errored") // BulkTaskStatusCompleted means a bulk task finished. BulkTaskStatusCompleted = BulkTaskStatus("completed") )
const ( // RunStatusUnstarted is the default state of any run status. RunStatusUnstarted = RunStatus("") // RunStatusInProgress is used for when a run is actively being executed. RunStatusInProgress = RunStatus("in_progress") // RunStatusPendingConfirmations is used for when a run is awaiting for block confirmations. RunStatusPendingConfirmations = RunStatus("pending_confirmations") // RunStatusPendingConnection states that the run is waiting on a connection to the block chain. RunStatusPendingConnection = RunStatus("pending_connection") // RunStatusPendingBridge is used for when a run is waiting on the completion // of another event. RunStatusPendingBridge = RunStatus("pending_bridge") // RunStatusPendingSleep is used for when a run is waiting on a sleep function to finish. RunStatusPendingSleep = RunStatus("pending_sleep") // RunStatusErrored is used for when a run has errored and will not complete. RunStatusErrored = RunStatus("errored") // RunStatusCompleted is used for when a run has successfully completed execution. RunStatusCompleted = RunStatus("completed") )
const ( // InitiatorRunLog for tasks in a job to watch an ethereum address // and expect a JSON payload from a log event. InitiatorRunLog = "runlog" // InitiatorCron for tasks in a job to be ran on a schedule. InitiatorCron = "cron" // InitiatorEthLog for tasks in a job to use the Ethereum blockchain. InitiatorEthLog = "ethlog" // InitiatorRunAt for tasks in a job to be ran once. InitiatorRunAt = "runat" // InitiatorWeb for tasks in a job making a web request. InitiatorWeb = "web" // InitiatorServiceAgreementExecutionLog for tasks in a job to watch a // Solidity Coordinator contract and expect a payload from a log event. InitiatorServiceAgreementExecutionLog = "execagreement" )
Types of Initiators (see Initiator struct just below.)
const ( RequestLogTopicSignature = iota RequestLogTopicJobID RequestLogTopicRequester RequestLogTopicPayment )
Descriptive indices of a RunLog's Topic array
const FunctionSelectorLength = 4
FunctionSelectorLength should always be a length of 4 as a byte.
const ( // SignatureLength is the length of the signature in bytes: v = 1, r = 32, s // = 32; v + r + s = 65 SignatureLength = 65 )
Variables ¶
var ( // RunLogTopic0original was the original topic to filter for Oracle.sol RunRequest events. RunLogTopic0original = utils.MustHash("RunRequest(bytes32,address,uint256,uint256,uint256,bytes)") // RunLogTopic20190123withFullfillmentParams was the new RunRequest filter topic as of 2019-01-23, // when callback address, callback function, and expiration were added to the data payload. RunLogTopic20190123withFullfillmentParams = utils.MustHash("RunRequest(bytes32,address,uint256,uint256,uint256,address,bytes4,uint256,bytes)") // RunLogTopic20190207withoutIndexes was the new RunRequest filter topic as of 2019-01-28, // after renaming Solidity variables, moving data version, and removing the cast of requestId to uint256 RunLogTopic20190207withoutIndexes = utils.MustHash("OracleRequest(bytes32,address,bytes32,uint256,address,bytes4,uint256,uint256,bytes)") // ServiceAgreementExecutionLogTopic is the signature for the // Coordinator.RunRequest(...) events which Chainlink nodes watch for. See // https://github.com/smartcontractkit/chainlink/blob/master/evm/contracts/Coordinator.sol#RunRequest ServiceAgreementExecutionLogTopic = utils.MustHash("ServiceAgreementExecution(bytes32,address,uint256,uint256,uint256,bytes)") // ChainlinkFulfilled is the signature for the event emitted after calling // ChainlinkClient.validateChainlinkCallback(requestId). // https://github.com/smartcontractkit/chainlink/blob/master/evm/contracts/ChainlinkClient.sol ChainlinkFulfilledTopic = utils.MustHash("ChainlinkFulfilled(bytes32)") // OracleFullfillmentFunctionID0original is the original function selector for fulfilling Ethereum requests. OracleFullfillmentFunctionID0original = utils.MustHash("fulfillData(uint256,bytes32)").Hex()[:10] // OracleFulfillmentFunctionID20190123withFulfillmentParams is the function selector for fulfilling Ethereum requests, // as updated on 2019-01-23, accepting all fulfillment callback parameters. OracleFulfillmentFunctionID20190123withFulfillmentParams = utils.MustHash("fulfillData(uint256,uint256,address,bytes4,uint256,bytes32)").Hex()[:10] // OracleFulfillmentFunctionID20190128withoutCast is the function selector for fulfilling Ethereum requests, // as updated on 2019-01-28, removing the cast to uint256 for the requestId. OracleFulfillmentFunctionID20190128withoutCast = utils.MustHash("fulfillOracleRequest(bytes32,uint256,address,bytes4,uint256,bytes32)").Hex()[:10] )
var ( // ErrorCannotMergeNonObject is returned if a Merge was attempted on a string // or array JSON value ErrorCannotMergeNonObject = errors.New("Cannot merge, expected object '{}'") )
Functions ¶
func AuthenticateBridgeType ¶
func AuthenticateBridgeType(bt *BridgeType, token string) (bool, error)
AuthenticateBridgeType returns true if the passed token matches its IncomingToken, or returns false with an error.
func AuthenticateExternalInitiator ¶
func AuthenticateExternalInitiator(eia *ExternalInitiatorAuthentication, ea *ExternalInitiator) (bool, error)
AuthenticateExternalInitiator compares an auth against an initiator and returns true if the password hashes match
func FilterQueryFactory ¶
FilterQueryFactory returns the ethereum FilterQuery for this initiator.
func HashedSecret ¶
func HashedSecret(eia *ExternalInitiatorAuthentication, salt string) (string, error)
HashedSecret generates a hashed password for an external initiator authentication
func NewBridgeType ¶
func NewBridgeType(btr *BridgeTypeRequest) (*BridgeTypeAuthentication, *BridgeType, error)
NewBridgeType returns a bridge bridge type authentication (with plaintext password) and a bridge type (with hashed password, for persisting)
func NewDatabaseAccessError ¶
NewDatabaseAccessError returns a database access error.
func NewSecret ¶
func NewSecret() string
NewSecret returns a new secret for use for authenticating external initiators
func NewValidationError ¶
NewValidationError returns a validation error.
func TopicFiltersForRunLog ¶
TopicFiltersForRunLog generates the two variations of RunLog IDs that could possibly be entered on a RunLog or a ServiceAgreementExecutionLog. There is the ID, hex encoded and the ID zero padded.
func ValidateBulkDeleteRunRequest ¶
func ValidateBulkDeleteRunRequest(request *BulkDeleteRunRequest) error
ValidateBulkDeleteRunRequest returns a task from a request to make a task
Types ¶
type AddressCollection ¶
AddressCollection is an array of common.Address serializable to and from a database.
func (*AddressCollection) Scan ¶
func (r *AddressCollection) Scan(value interface{}) error
Scan parses the database value as a string.
func (AddressCollection) ToStrings ¶
func (r AddressCollection) ToStrings() []string
ToStrings returns this address collection as an array of strings.
type AnyTime ¶
AnyTime holds a common field for time, and serializes it as a json number.
func AnyTimeFromNull ¶
AnyTimeFromNull returns an AnyTime from a null.Time.
func (AnyTime) MarshalJSON ¶
MarshalJSON implements json.Marshaler. It will encode null if this time is null.
func (AnyTime) MarshalText ¶
MarshalText returns null if not set, or the time.
func (*AnyTime) UnmarshalJSON ¶
UnmarshalJSON parses the raw time stored in JSON-encoded data and stores it to the Time field.
func (*AnyTime) UnmarshalText ¶
UnmarshalText parses null or a valid time.
type Big ¶
Big stores large integers and can deserialize a variety of inputs.
func (*Big) MarshalJSON ¶
MarshalJSON marshals this instance to base 10 number as string.
func (*Big) MarshalText ¶
MarshalText marshals this instance to base 10 number as string.
func (*Big) UnmarshalJSON ¶
UnmarshalJSON implements encoding.JSONUnmarshaler.
func (*Big) UnmarshalText ¶
UnmarshalText implements encoding.TextUnmarshaler.
type BlockHeader ¶
type BlockHeader struct { ParentHash common.Hash `json:"parentHash"` UncleHash common.Hash `json:"sha3Uncles"` Coinbase common.Address `json:"miner"` Root common.Hash `json:"stateRoot"` TxHash common.Hash `json:"transactionsRoot"` ReceiptHash common.Hash `json:"receiptsRoot"` Bloom types.Bloom `json:"logsBloom"` Difficulty hexutil.Big `json:"difficulty"` Number hexutil.Big `json:"number"` GasLimit hexutil.Uint64 `json:"gasLimit"` GasUsed hexutil.Uint64 `json:"gasUsed"` Time hexutil.Big `json:"timestamp"` Extra hexutil.Bytes `json:"extraData"` Nonce types.BlockNonce `json:"nonce"` GethHash common.Hash `json:"mixHash"` ParityHash common.Hash `json:"hash"` }
BlockHeader represents a block header in the Ethereum blockchain. Deliberately does not have required fields because some fields aren't present depending on the Ethereum node. i.e. Parity does not always send mixHash
func (BlockHeader) Hash ¶
func (h BlockHeader) Hash() common.Hash
Hash will return GethHash if it exists otherwise it returns the ParityHash
func (BlockHeader) ToHead ¶
func (h BlockHeader) ToHead() *Head
ToHead converts a given BlockHeader to a Head instance.
type BridgeRunResult ¶
type BridgeRunResult struct { RunResult ExternalPending bool `json:"pending"` AccessToken string `json:"accessToken"` }
BridgeRunResult handles the parsing of RunResults from external adapters.
func (*BridgeRunResult) UnmarshalJSON ¶
func (brr *BridgeRunResult) UnmarshalJSON(input []byte) error
UnmarshalJSON parses the given input and updates the BridgeRunResult in the external adapter format.
type BridgeType ¶
type BridgeType struct { Name TaskType `json:"name" gorm:"primary_key"` URL WebURL `json:"url"` Confirmations uint32 `json:"confirmations"` IncomingTokenHash string `json:"-"` Salt string `json:"-"` OutgoingToken string `json:"outgoingToken"` MinimumContractPayment *assets.Link `json:"minimumContractPayment" gorm:"type:varchar(255)"` }
BridgeType is used for external adapters and has fields for the name of the adapter and its URL.
func (BridgeType) GetID ¶
func (bt BridgeType) GetID() string
GetID returns the ID of this structure for jsonapi serialization.
func (BridgeType) GetName ¶
func (bt BridgeType) GetName() string
GetName returns the pluralized "type" of this structure for jsonapi serialization.
func (*BridgeType) SetID ¶
func (bt *BridgeType) SetID(value string) error
SetID is used to set the ID of this structure when deserializing from jsonapi documents.
type BridgeTypeAuthentication ¶
type BridgeTypeAuthentication struct { Name TaskType `json:"name"` URL WebURL `json:"url"` Confirmations uint32 `json:"confirmations"` IncomingToken string `json:"incomingToken"` OutgoingToken string `json:"outgoingToken"` MinimumContractPayment *assets.Link `json:"minimumContractPayment"` }
BridgeTypeAuthentication is the record returned in response to a request to create a BridgeType
func (BridgeTypeAuthentication) GetID ¶
func (bt BridgeTypeAuthentication) GetID() string
GetID returns the ID of this structure for jsonapi serialization.
func (BridgeTypeAuthentication) GetName ¶
func (bt BridgeTypeAuthentication) GetName() string
GetName returns the pluralized "type" of this structure for jsonapi serialization.
func (*BridgeTypeAuthentication) SetID ¶
func (bt *BridgeTypeAuthentication) SetID(value string) error
SetID is used to set the ID of this structure when deserializing from jsonapi documents.
type BridgeTypeRequest ¶
type BridgeTypeRequest struct { Name TaskType `json:"name"` URL WebURL `json:"url"` Confirmations uint32 `json:"confirmations"` MinimumContractPayment *assets.Link `json:"minimumContractPayment"` }
BridgeTypeRequest is the incoming record used to create a BridgeType
func (BridgeTypeRequest) GetID ¶
func (bt BridgeTypeRequest) GetID() string
GetID returns the ID of this structure for jsonapi serialization.
func (BridgeTypeRequest) GetName ¶
func (bt BridgeTypeRequest) GetName() string
GetName returns the pluralized "type" of this structure for jsonapi serialization.
func (*BridgeTypeRequest) SetID ¶
func (bt *BridgeTypeRequest) SetID(value string) error
SetID is used to set the ID of this structure when deserializing from jsonapi documents.
type BulkDeleteRunRequest ¶
type BulkDeleteRunRequest struct { ID uint `gorm:"primary_key"` Status RunStatusCollection `json:"status" gorm:"type:text"` UpdatedBefore time.Time `json:"updatedBefore"` }
BulkDeleteRunRequest describes the query for deletion of runs
type BulkTaskStatus ¶
type BulkTaskStatus string
BulkTaskStatus indicates what a bulk task is doing.
func (*BulkTaskStatus) Scan ¶
func (t *BulkTaskStatus) Scan(value interface{}) error
Scan reads the database value and returns an instance.
type ChangePasswordRequest ¶
type ChangePasswordRequest struct { OldPassword string `json:"oldPassword"` NewPassword string `json:"newPassword"` }
ChangePasswordRequest sets a new password for the current Session's User.
type CreateKeyRequest ¶
type CreateKeyRequest struct {
CurrentPassword string `json:"current_password"`
}
CreateKeyRequest represents a request to add an ethereum key.
type Cron ¶
type Cron string
Cron holds the string that will represent the spec of the cron-job. It uses 6 fields to represent the seconds (1), minutes (2), hours (3), day of the month (4), month (5), and day of the week (6).
func (*Cron) UnmarshalJSON ¶
UnmarshalJSON parses the raw spec stored in JSON-encoded data and stores it to the Cron string.
type DatabaseAccessError ¶
type DatabaseAccessError struct {
// contains filtered or unexported fields
}
DatabaseAccessError is an error that occurs during database access.
func (*DatabaseAccessError) Error ¶
func (e *DatabaseAccessError) Error() string
type EIP55Address ¶
type EIP55Address string
EIP55Address is a newtype for string which persists an ethereum address in its original string representation which includes a leading 0x, and EIP55 checksum which is represented by the case of digits A-F.
func NewEIP55Address ¶
func NewEIP55Address(s string) (EIP55Address, error)
NewEIP55Address creates an EIP55Address from a string, an error is returned if:
1) There is no leading 0x 2) The length is wrong 3) There are any non hexadecimal characters 4) The checksum fails
func (EIP55Address) Address ¶
func (a EIP55Address) Address() common.Address
Address returns EIP55Address as a go-ethereum Address type
func (EIP55Address) Format ¶
func (a EIP55Address) Format(s fmt.State, c rune)
Format implements fmt.Formatter
func (*EIP55Address) Scan ¶
func (a *EIP55Address) Scan(value interface{}) error
Scan reads the database value and returns an instance.
func (EIP55Address) String ¶
func (a EIP55Address) String() string
String implements the stringer interface and is used also by the logger.
func (*EIP55Address) UnmarshalJSON ¶
func (a *EIP55Address) UnmarshalJSON(input []byte) error
UnmarshalJSON parses a hash from a JSON string
func (*EIP55Address) UnmarshalText ¶
func (a *EIP55Address) UnmarshalText(input []byte) error
UnmarshalText parses a hash from plain text
type EIP55AddressCollection ¶
type EIP55AddressCollection []EIP55Address
EIP55AddressCollection is an array of EIP55Addresses.
func (*EIP55AddressCollection) Scan ¶
func (c *EIP55AddressCollection) Scan(value interface{}) error
Scan reads the database value and returns an instance.
type Encumbrance ¶
type Encumbrance struct { ID uint `json:"-" gorm:"primary_key;auto_increment"` Payment *assets.Link `json:"payment" gorm:"type:varchar(255)"` Expiration uint64 `json:"expiration"` EndAt AnyTime `json:"endAt"` Oracles EIP55AddressCollection `json:"oracles" gorm:"type:text"` }
Encumbrance connects job specifications with on-chain encumbrances.
func (Encumbrance) ABI ¶
func (e Encumbrance) ABI() ([]byte, error)
ABI packs the encumberance as a byte array using the same technique as abi.encodePacked, meaning that addresses are padded with left 0s to match hashes in the oracle list
type EthLogEvent ¶
type EthLogEvent struct {
InitiatorLogEvent
}
EthLogEvent provides functionality specific to a log event emitted for an eth log initiator.
type EthSubscription ¶
type EthSubscription interface { Err() <-chan error Unsubscribe() }
EthSubscription should implement Err() <-chan error and Unsubscribe()
type ExternalInitiator ¶
ExternalInitiator represents a user that can initiate runs remotely
func NewExternalInitiator ¶
func NewExternalInitiator(eia *ExternalInitiatorAuthentication) (*ExternalInitiator, error)
NewExternalInitiator generates an ExternalInitiator from an ExternalInitiatorAuthentication, hashing the password for storage
type ExternalInitiatorAuthentication ¶
ExternalInitiatorAuthentication represents the credentials needed to authenticate as an external initiator
func NewExternalInitiatorAuthentication ¶
func NewExternalInitiatorAuthentication() *ExternalInitiatorAuthentication
NewExternalInitiatorAuthentication returns a new ExternalInitiatorAuthentication with a freshly generated access key and secret, this is intended to be supplied to the user and saved, as it cannot be regenerated in the future.
func (*ExternalInitiatorAuthentication) GetID ¶
func (eia *ExternalInitiatorAuthentication) GetID() string
GetID returns the ID of this structure for jsonapi serialization.
func (*ExternalInitiatorAuthentication) GetName ¶
func (eia *ExternalInitiatorAuthentication) GetName() string
GetName returns the pluralized "type" of this structure for jsonapi serialization.
func (*ExternalInitiatorAuthentication) SetID ¶
func (eia *ExternalInitiatorAuthentication) SetID(id string) error
SetID returns the ID of this structure for jsonapi serialization.
type FunctionSelector ¶
type FunctionSelector [FunctionSelectorLength]byte
FunctionSelector is the first four bytes of the call data for a function call and specifies the function to be called.
func BytesToFunctionSelector ¶
func BytesToFunctionSelector(b []byte) FunctionSelector
BytesToFunctionSelector converts the given bytes to a FunctionSelector.
func HexToFunctionSelector ¶
func HexToFunctionSelector(s string) FunctionSelector
HexToFunctionSelector converts the given string to a FunctionSelector.
func (FunctionSelector) Bytes ¶
func (f FunctionSelector) Bytes() []byte
Bytes returns the FunctionSelector as a byte slice
func (*FunctionSelector) SetBytes ¶
func (f *FunctionSelector) SetBytes(b []byte)
SetBytes sets the FunctionSelector to that of the given bytes (will trim).
func (FunctionSelector) String ¶
func (f FunctionSelector) String() string
String returns the FunctionSelector as a string type.
func (*FunctionSelector) UnmarshalJSON ¶
func (f *FunctionSelector) UnmarshalJSON(input []byte) error
UnmarshalJSON parses the raw FunctionSelector and sets the FunctionSelector type to the given input.
func (FunctionSelector) WithoutPrefix ¶
func (f FunctionSelector) WithoutPrefix() string
WithoutPrefix returns the FunctionSelector as a string without the '0x' prefix.
type Head ¶
type Head struct { ID uint64 `gorm:"primary_key;auto_increment"` Hash common.Hash `gorm:"not null"` Number int64 `gorm:"index;not null"` }
Head represents a BlockNumber, BlockHash.
func (*Head) GreaterThan ¶
GreaterThan compares BlockNumbers and returns true if the reciever BlockNumber is greater than the supplied BlockNumber
func (*Head) NextInt ¶
NextInt returns the next BlockNumber as big.int, or nil if nil to represent latest.
type Initiator ¶
type Initiator struct { ID uint `json:"id" gorm:"primary_key;auto_increment"` JobSpecID string `json:"jobSpecId" gorm:"index;type:varchar(36) REFERENCES job_specs(id)"` // Type is one of the Initiator* string constants defined just above. Type string `json:"type" gorm:"index;not null"` CreatedAt time.Time `gorm:"index"` InitiatorParams `json:"params,omitempty"` DeletedAt null.Time `json:"-" gorm:"index"` }
Initiator could be thought of as a trigger, defines how a Job can be started, or rather, how a JobRun can be created from a Job. Initiators will have their own unique ID, but will be associated to a parent JobID.
func (Initiator) IsLogInitiated ¶
IsLogInitiated Returns true if triggered by event logs.
func (*Initiator) UnmarshalJSON ¶
UnmarshalJSON parses the raw initiator data and updates the initiator as long as the type is valid.
type InitiatorLogEvent ¶
InitiatorLogEvent encapsulates all information as a result of a received log from an InitiatorSubscription.
func (InitiatorLogEvent) BlockNumber ¶
func (le InitiatorLogEvent) BlockNumber() *big.Int
BlockNumber returns the block number for the given InitiatorSubscriptionLogEvent.
func (InitiatorLogEvent) ContractPayment ¶
func (le InitiatorLogEvent) ContractPayment() (*assets.Link, error)
ContractPayment returns the amount attached to a contract to pay the Oracle upon fulfillment.
func (InitiatorLogEvent) ForLogger ¶
func (le InitiatorLogEvent) ForLogger(kvs ...interface{}) []interface{}
ForLogger formats the InitiatorSubscriptionLogEvent for easy common formatting in logs (trace statements, not ethereum events).
func (InitiatorLogEvent) GetInitiator ¶
func (le InitiatorLogEvent) GetInitiator() Initiator
GetInitiator returns the initiator.
func (InitiatorLogEvent) GetJobSpec ¶
func (le InitiatorLogEvent) GetJobSpec() JobSpec
GetJobSpec returns the associated JobSpec
func (InitiatorLogEvent) JSON ¶
func (le InitiatorLogEvent) JSON() (JSON, error)
JSON returns the eth log as JSON.
func (InitiatorLogEvent) LogRequest ¶
func (le InitiatorLogEvent) LogRequest() LogRequest
LogRequest is a factory method that coerces this log event to the correct type based on Initiator.Type, exposed by the LogRequest interface.
func (InitiatorLogEvent) RunRequest ¶
func (le InitiatorLogEvent) RunRequest() (RunRequest, error)
RunRequest returns a run request instance with the transaction hash, present on all log initiated runs.
func (InitiatorLogEvent) ToDebug ¶
func (le InitiatorLogEvent) ToDebug()
ToDebug prints this event via logger.Debug.
func (InitiatorLogEvent) Validate ¶
func (le InitiatorLogEvent) Validate() bool
Validate returns true, no validation on this log event type.
func (InitiatorLogEvent) ValidateRequester ¶
func (le InitiatorLogEvent) ValidateRequester() error
ValidateRequester returns true since all requests are valid for base initiator log events.
type InitiatorParams ¶
type InitiatorParams struct { Schedule Cron `json:"schedule,omitempty"` Time AnyTime `json:"time,omitempty"` Ran bool `json:"ran,omitempty"` Address common.Address `json:"address,omitempty" gorm:"index"` Requesters AddressCollection `json:"requesters,omitempty" gorm:"type:text"` }
InitiatorParams is a collection of the possible parameters that different Initiators may require.
type InitiatorRequest ¶
type InitiatorRequest struct { Type string `json:"type"` InitiatorParams `json:"params,omitempty"` }
InitiatorRequest represents a schema for incoming initiator requests as used by the API.
type JSON ¶
JSON stores the json types string, number, bool, and null. Arrays and Objects are returned as their raw json types.
func ParseCBOR ¶
ParseCBOR attempts to coerce the input byte array into valid CBOR and then coerces it into a JSON object.
func ParseJSON ¶
ParseJSON attempts to coerce the input byte array into valid JSON and parse it into a JSON object.
func ParseRunLog ¶
ParseRunLog decodes the CBOR in the ABI of the log event.
func (JSON) MarshalJSON ¶
MarshalJSON returns the JSON data if it already exists, returns an empty JSON object as bytes if not.
func (*JSON) UnmarshalJSON ¶
UnmarshalJSON parses the JSON bytes and stores in the *JSON pointer.
type JSONAPIError ¶
type JSONAPIError struct {
Detail string `json:"detail"`
}
JSONAPIError is an individual JSONAPI Error.
type JSONAPIErrors ¶
type JSONAPIErrors struct {
Errors []JSONAPIError `json:"errors"`
}
JSONAPIErrors holds errors conforming to the JSONAPI spec.
func NewJSONAPIErrors ¶
func NewJSONAPIErrors() *JSONAPIErrors
NewJSONAPIErrors creates an instance of JSONAPIErrors, with the intention of managing a collection of them.
func NewJSONAPIErrorsWith ¶
func NewJSONAPIErrorsWith(detail string) *JSONAPIErrors
NewJSONAPIErrorsWith creates an instance of JSONAPIErrors populated with this single detail.
func (*JSONAPIErrors) Add ¶
func (jae *JSONAPIErrors) Add(detail string)
Add adds a new error to JSONAPIErrors with the passed detail.
func (*JSONAPIErrors) CoerceEmptyToNil ¶
func (jae *JSONAPIErrors) CoerceEmptyToNil() error
CoerceEmptyToNil will return nil if JSONAPIErrors has no errors.
func (*JSONAPIErrors) Error ¶
func (jae *JSONAPIErrors) Error() string
Error collapses the collection of errors into a collection of comma separated strings.
func (*JSONAPIErrors) Merge ¶
func (jae *JSONAPIErrors) Merge(e error)
Merge combines the arrays of the passed error if it is of type JSONAPIErrors, otherwise simply adds a single error with the error string as detail.
type JobRun ¶
type JobRun struct { ID string `json:"id" gorm:"primary_key;not null"` JobSpecID string `json:"jobId" gorm:"index;not null;type:varchar(36) REFERENCES job_specs(id)"` Result RunResult `json:"result"` ResultID uint `json:"-"` RunRequest RunRequest `json:"-"` RunRequestID uint `json:"-"` Status RunStatus `json:"status" gorm:"index"` TaskRuns []TaskRun `json:"taskRuns"` CreatedAt time.Time `json:"createdAt" gorm:"index"` FinishedAt null.Time `json:"finishedAt"` UpdatedAt time.Time `json:"updatedAt"` Initiator Initiator `json:"initiator" gorm:"association_autoupdate:false;association_autocreate:false"` InitiatorID uint `json:"-"` CreationHeight *Big `json:"creationHeight" gorm:"type:varchar(255)"` ObservedHeight *Big `json:"observedHeight" gorm:"type:varchar(255)"` Overrides RunResult `json:"overrides"` OverridesID uint `json:"-"` DeletedAt null.Time `json:"-" gorm:"index"` }
JobRun tracks the status of a job by holding its TaskRuns and the Result of each Run.
func JobRunsWithStatus ¶
JobRunsWithStatus filters passed job runs returning those that have the desired status, entirely in memory.
func (*JobRun) ApplyResult ¶
ApplyResult updates the JobRun's Result and Status
func (JobRun) ForLogger ¶
func (jr JobRun) ForLogger(kvs ...interface{}) []interface{}
ForLogger formats the JobRun for a common formatting in the log.
func (JobRun) GetName ¶
GetName returns the pluralized "type" of this structure for jsonapi serialization.
func (*JobRun) NextTaskRun ¶
NextTaskRun returns the next immediate TaskRun in the list of unfinished TaskRuns.
func (*JobRun) NextTaskRunIndex ¶
NextTaskRunIndex returns the position of the next unfinished task
func (*JobRun) PreviousTaskRun ¶
PreviousTaskRun returns the last task to be processed, if it exists
func (*JobRun) SetFinishedAt ¶
func (jr *JobRun) SetFinishedAt()
SetFinishedAt sets the JobRun's finished at time to now.
func (*JobRun) SetID ¶
SetID is used to set the ID of this structure when deserializing from jsonapi documents.
func (*JobRun) TasksRemain ¶
TasksRemain returns true if there are unfinished tasks left for this job run
type JobSpec ¶
type JobSpec struct { ID string `json:"id,omitempty" gorm:"primary_key;not null"` CreatedAt time.Time `json:"createdAt" gorm:"index"` Initiators []Initiator `json:"initiators"` Tasks []TaskSpec `json:"tasks"` StartAt null.Time `json:"startAt" gorm:"index"` EndAt null.Time `json:"endAt" gorm:"index"` DeletedAt null.Time `json:"-" gorm:"index"` }
JobSpec is the definition for all the work to be carried out by the node for a given contract. It contains the Initiators, Tasks (which are the individual steps to be carried out), StartAt, EndAt, and CreatedAt fields.
func NewJob ¶
func NewJob() JobSpec
NewJob initializes a new job by generating a unique ID and setting the CreatedAt field to the time of invokation.
func NewJobFromRequest ¶
func NewJobFromRequest(jsr JobSpecRequest) JobSpec
NewJobFromRequest creates a JobSpec from the corresponding parameters in a JobSpecRequest
func (JobSpec) GetName ¶
GetName returns the pluralized "type" of this structure for jsonapi serialization.
func (JobSpec) InitiatorsFor ¶
InitiatorsFor returns an array of Initiators for the given list of Initiator types.
func (JobSpec) IsLogInitiated ¶
IsLogInitiated Returns true if any of the job's initiators are triggered by event logs.
func (JobSpec) NewRun ¶
NewRun initializes the job by creating the IDs for the job and all associated tasks, and setting the CreatedAt field.
func (*JobSpec) SetID ¶
SetID is used to set the ID of this structure when deserializing from jsonapi documents.
func (JobSpec) WebAuthorized ¶
WebAuthorized returns true if the "web" initiator is present.
type JobSpecRequest ¶
type JobSpecRequest struct { Initiators []InitiatorRequest `json:"initiators"` Tasks []TaskSpecRequest `json:"tasks"` StartAt null.Time `json:"startAt"` EndAt null.Time `json:"endAt"` }
JobSpecRequest represents a schema for the incoming job spec request as used by the API.
type Key ¶
type Key struct { Address EIP55Address `gorm:"primary_key;type:varchar(64)"` JSON JSON `gorm:"type:text"` }
Key holds the private key metadata for a given address that is used to unlock said key when given a password.
func NewKeyFromFile ¶
NewKeyFromFile creates an instance in memory from a key file on disk.
func (*Key) WriteToDisk ¶
WriteToDisk writes this key to disk at the passed path.
type Log ¶
type Log struct { // Consensus fields: // address of the contract that generated the event Address common.Address `json:"address" gencodec:"required"` // list of topics provided by the contract. Topics []common.Hash `json:"topics" gencodec:"required"` // supplied by the contract, usually ABI-encoded Data []byte `json:"data" gencodec:"required"` // Derived fields. These fields are filled in by the node // but not secured by consensus. // block in which the transaction was included BlockNumber uint64 `json:"blockNumber"` // hash of the transaction TxHash common.Hash `json:"transactionHash"` // index of the transaction in the block TxIndex uint `json:"transactionIndex"` // hash of the block in which the transaction was included BlockHash common.Hash `json:"blockHash"` // index of the log in the receipt Index uint `json:"logIndex"` // The Removed field is true if this log was reverted due to a chain reorganisation. // You must pay attention to this field if you receive logs through a filter query. Removed bool `json:"removed"` }
Log represents a contract log event. These events are generated by the LOG opcode and stored/indexed by the node.
func (*Log) UnmarshalJSON ¶
UnmarshalJSON unmarshals from JSON.
type LogRequest ¶
type LogRequest interface { GetLog() Log GetJobSpec() JobSpec GetInitiator() Initiator Validate() bool JSON() (JSON, error) ToDebug() ForLogger(kvs ...interface{}) []interface{} ContractPayment() (*assets.Link, error) ValidateRequester() error BlockNumber() *big.Int RunRequest() (RunRequest, error) }
LogRequest is the interface to allow polymorphic functionality of different types of LogEvents. i.e. EthLogEvent, RunLogEvent, ServiceAgreementLogEvent, OracleLogEvent
type RunLogEvent ¶
type RunLogEvent struct {
InitiatorLogEvent
}
RunLogEvent provides functionality specific to a log event emitted for a run log initiator.
func (RunLogEvent) ContractPayment ¶
func (le RunLogEvent) ContractPayment() (*assets.Link, error)
ContractPayment returns the amount attached to a contract to pay the Oracle upon fulfillment.
func (RunLogEvent) JSON ¶
func (le RunLogEvent) JSON() (JSON, error)
JSON decodes the RunLogEvent's data converts it to a JSON object.
func (RunLogEvent) Requester ¶
func (le RunLogEvent) Requester() common.Address
Requester pulls the requesting address out of the LogEvent's topics.
func (RunLogEvent) RunRequest ¶
func (le RunLogEvent) RunRequest() (RunRequest, error)
RunRequest returns an RunRequest instance with all parameters from a run log topic, like RequestID.
func (RunLogEvent) Validate ¶
func (le RunLogEvent) Validate() bool
Validate returns whether or not the contained log has a properly encoded job id.
func (RunLogEvent) ValidateRequester ¶
func (le RunLogEvent) ValidateRequester() error
ValidateRequester returns true if the requester matches the one associated with the initiator.
type RunRequest ¶
type RunRequest struct { ID uint `gorm:"primary_key"` RequestID *string TxHash *common.Hash Requester *common.Address CreatedAt time.Time }
RunRequest stores the fields used to initiate the parent job run.
func NewRunRequest ¶
func NewRunRequest() RunRequest
NewRunRequest returns a new RunRequest instance.
type RunResult ¶
type RunResult struct { ID uint `json:"-" gorm:"primary_key;auto_increment"` CachedJobRunID string `json:"jobRunId"` CachedTaskRunID string `json:"taskRunId"` Data JSON `json:"data" gorm:"type:text"` Status RunStatus `json:"status"` ErrorMessage null.String `json:"error"` Amount *assets.Link `json:"amount,omitempty" gorm:"type:varchar(255)"` }
RunResult keeps track of the outcome of a TaskRun or JobRun. It stores the Data and ErrorMessage, and contains a field to track the status.
func (*RunResult) ApplyResult ¶
func (rr *RunResult) ApplyResult(val interface{})
ApplyResult saves a value to a RunResult with the key result.
func (*RunResult) CompleteWithResult ¶
func (rr *RunResult) CompleteWithResult(val interface{})
CompleteWithResult saves a value to a RunResult and marks it as completed
func (*RunResult) MarkPendingBridge ¶
func (rr *RunResult) MarkPendingBridge()
MarkPendingBridge sets the status to pending_bridge
func (*RunResult) MarkPendingConfirmations ¶
func (rr *RunResult) MarkPendingConfirmations()
MarkPendingConfirmations sets the status to pending_confirmations.
func (*RunResult) MarkPendingConnection ¶
func (rr *RunResult) MarkPendingConnection()
MarkPendingConnection sets the status to pending_connection.
func (*RunResult) Merge ¶
Merge saves the specified result's data onto the receiving RunResult. The input result's data takes preference over the receivers'.
func (*RunResult) ResultString ¶
ResultString returns the string result of the Data JSON field.
type RunStatus ¶
type RunStatus string
RunStatus is a string that represents the run status
func (RunStatus) PendingBridge ¶
PendingBridge returns true if the status is pending_bridge.
func (RunStatus) PendingConfirmations ¶
PendingConfirmations returns true if the status is pending_confirmations.
func (RunStatus) PendingConnection ¶
PendingConnection returns true if the status is pending_connection.
func (RunStatus) PendingSleep ¶
PendingSleep returns true if the status is pending_sleep.
type RunStatusCollection ¶
type RunStatusCollection []RunStatus
RunStatusCollection is an array of RunStatus.
func (*RunStatusCollection) Scan ¶
func (r *RunStatusCollection) Scan(value interface{}) error
Scan reads the database value and returns an instance.
func (RunStatusCollection) ToStrings ¶
func (r RunStatusCollection) ToStrings() []string
ToStrings returns a copy of RunStatusCollection as an array of strings.
type SendEtherRequest ¶
type SendEtherRequest struct { DestinationAddress common.Address `json:"address"` FromAddress common.Address `json:"from"` Amount *assets.Eth `json:"amount"` }
SendEtherRequest represents a request to transfer ETH.
type ServiceAgreement ¶
type ServiceAgreement struct { ID string `json:"id" gorm:"primary_key"` CreatedAt time.Time `json:"createdAt" gorm:"index"` Encumbrance Encumbrance `json:"encumbrance"` EncumbranceID uint `json:"-"` RequestBody string `json:"requestBody"` Signature Signature `json:"signature" gorm:"type:varchar(255)"` JobSpec JobSpec `gorm:"foreignkey:JobSpecID"` JobSpecID string `json:"jobSpecId" gorm:"index;not null;type:varchar(36) REFERENCES job_specs(id)"` }
ServiceAgreement connects job specifications with on-chain encumbrances.
func BuildServiceAgreement ¶
func BuildServiceAgreement(us UnsignedServiceAgreement, signer Signer) (ServiceAgreement, error)
BuildServiceAgreement builds a signed service agreement
func (ServiceAgreement) GetID ¶
func (sa ServiceAgreement) GetID() string
GetID returns the ID of this structure for jsonapi serialization.
func (ServiceAgreement) GetName ¶
func (sa ServiceAgreement) GetName() string
GetName returns the pluralized "type" of this structure for jsonapi serialization.
func (*ServiceAgreement) SetID ¶
func (sa *ServiceAgreement) SetID(value string) error
SetID is used to set the ID of this structure when deserializing from jsonapi documents.
type Session ¶
type Session struct { ID string `json:"id" gorm:"primary_key"` LastUsed time.Time `json:"lastUsed" gorm:"index"` CreatedAt time.Time `json:"createdAt" gorm:"index"` }
Session holds the unique id for the authenticated session.
func NewSession ¶
func NewSession() Session
NewSession returns a session instance with ID set to a random ID and LastUsed to to now.
type SessionRequest ¶
SessionRequest encapsulates the fields needed to generate a new SessionID, including the hashed password.
type Signature ¶
type Signature [SignatureLength]byte
Signature is a byte array fixed to the size of a signature
func BytesToSignature ¶
BytesToSignature converts an arbitrary length byte array to a Signature
func NewSignature ¶
NewSignature returns a new Signature
func (Signature) MarshalJSON ¶
MarshalJSON prints the signature as a hexadecimal encoded string
func (Signature) MarshalText ¶
MarshalText encodes the signature in hexadecimal
func (*Signature) UnmarshalJSON ¶
UnmarshalJSON parses a signature from a JSON string
func (*Signature) UnmarshalText ¶
UnmarshalText parses the signature from a hexadecimal representation
type SyncEvent ¶
type SyncEvent struct { ID uint `gorm:"primary_key"` CreatedAt time.Time UpdatedAt time.Time Body string }
SyncEvent represents an event sourcing style event, which is used to sync data upstream with another service
type TaskRun ¶
type TaskRun struct { ID string `json:"id" gorm:"primary_key;not null"` JobRunID string `json:"-" gorm:"index;not null;type:varchar(36) REFERENCES job_runs(id) ON DELETE CASCADE"` Result RunResult `json:"result"` ResultID uint `json:"-"` Status RunStatus `json:"status"` TaskSpec TaskSpec `json:"task" gorm:"association_autoupdate:false;association_autocreate:false"` TaskSpecID uint `json:"-" gorm:"index;not null REFERENCES task_specs(id)"` MinimumConfirmations clnull.Uint32 `json:"minimumConfirmations"` Confirmations clnull.Uint32 `json:"confirmations"` CreatedAt time.Time `json:"-" gorm:"index"` }
TaskRun stores the Task and represents the status of the Task to be ran.
func (*TaskRun) ApplyResult ¶
ApplyResult updates the TaskRun's Result and Status
func (*TaskRun) ForLogger ¶
func (tr *TaskRun) ForLogger(kvs ...interface{}) []interface{}
ForLogger formats the TaskRun info for a common formatting in the log.
func (*TaskRun) MarkPendingConfirmations ¶
func (tr *TaskRun) MarkPendingConfirmations()
MarkPendingConfirmations marks the task's status as blocked.
type TaskSpec ¶
type TaskSpec struct { gorm.Model JobSpecID string `json:"-" gorm:"index;type:varchar(36) REFERENCES job_specs(id)"` Type TaskType `json:"type" gorm:"index;not null"` Confirmations clnull.Uint32 `json:"confirmations"` Params JSON `json:"params" gorm:"type:text"` }
TaskSpec is the definition of work to be carried out. The Type will be an adapter, and the Params will contain any additional information that adapter would need to operate.
type TaskSpecRequest ¶
type TaskSpecRequest struct { Type TaskType `json:"type"` Confirmations clnull.Uint32 `json:"confirmations"` Params JSON `json:"params"` }
TaskSpecRequest represents a schema for incoming TaskSpec requests as used by the API.
type TaskType ¶
type TaskType string
TaskType defines what Adapter a TaskSpec will use.
func MustNewTaskType ¶
MustNewTaskType instantiates a new TaskType, and panics if a bad input is provided.
func NewTaskType ¶
NewTaskType returns a formatted Task type.
func (TaskType) MarshalJSON ¶
MarshalJSON converts a TaskType to a JSON byte slice.
func (*TaskType) UnmarshalJSON ¶
UnmarshalJSON converts a bytes slice of JSON to a TaskType.
type Tx ¶
type Tx struct { ID uint64 `gorm:"primary_key;auto_increment"` // SurrogateID is used to look up a transaction using a secondary ID, used to // associate jobs with transactions so that we don't double spend in certain // failure scenarios SurrogateID null.String `gorm:"index;unique"` Attempts []*TxAttempt `json:"-"` From common.Address `gorm:"index;not null"` To common.Address `gorm:"not null"` Data []byte `gorm:"not null"` Nonce uint64 `gorm:"index;not null"` Value *Big `gorm:"type:varchar(78);not null"` GasLimit uint64 `gorm:"not null"` // TxAttempt fields manually included; can't embed another primary_key Hash common.Hash `gorm:"not null"` GasPrice *Big `gorm:"type:varchar(78);not null"` Confirmed bool `gorm:"not null"` SentAt uint64 `gorm:"not null"` SignedRawTx string `gorm:"type:text;not null"` }
Tx contains fields necessary for an Ethereum transaction with an additional field for the TxAttempt.
type TxAttempt ¶
type TxAttempt struct { ID uint64 `gorm:"primary_key;auto_increment"` TxID uint64 `gorm:"index;type:bigint REFERENCES txes(id) ON DELETE CASCADE"` Tx *Tx `json:"-" gorm:"PRELOAD:false;foreignkey:TxID"` CreatedAt time.Time `gorm:"index;not null"` Hash common.Hash `gorm:"index;not null"` GasPrice *Big `gorm:"type:varchar(78);not null"` Confirmed bool `gorm:"not null"` SentAt uint64 `gorm:"not null"` SignedRawTx string `gorm:"type:text;not null"` }
TxAttempt is used for keeping track of transactions that have been written to the Ethereum blockchain. This makes it so that if the network is busy, a transaction can be resubmitted with a higher GasPrice.
func (TxAttempt) GetName ¶
GetName returns the pluralized "type" of this structure for jsonapi serialization.
type TxReceipt ¶
type TxReceipt struct { BlockNumber *Big `json:"blockNumber" gorm:"type:numeric"` Hash common.Hash `json:"transactionHash"` Logs []Log `json:"logs"` }
TxReceipt holds the block number and the transaction hash of a signed transaction that has been written to the blockchain.
func (TxReceipt) FulfilledRunLog ¶
func (*TxReceipt) Unconfirmed ¶
Unconfirmed returns true if the transaction is not confirmed.
type UnsignedServiceAgreement ¶
type UnsignedServiceAgreement struct { Encumbrance Encumbrance ID common.Hash RequestBody string JobSpecRequest JobSpecRequest }
UnsignedServiceAgreement contains the information to sign a service agreement
func NewUnsignedServiceAgreementFromRequest ¶
func NewUnsignedServiceAgreementFromRequest(reader io.Reader) (UnsignedServiceAgreement, error)
NewUnsignedServiceAgreementFromRequest builds the information required to sign a service agreement
type User ¶
type User struct { Email string `json:"email" gorm:"primary_key"` HashedPassword string `json:"hashedPassword"` CreatedAt time.Time `json:"createdAt" gorm:"index"` }
User holds the credentials for API user.
type ValidationError ¶
type ValidationError struct {
// contains filtered or unexported fields
}
ValidationError is an error that occurs during validation.
func (*ValidationError) Error ¶
func (e *ValidationError) Error() string
type WebURL ¶
WebURL contains the URL of the endpoint.
func (WebURL) MarshalJSON ¶
MarshalJSON returns the JSON-encoded string of the given data.
func (*WebURL) UnmarshalJSON ¶
UnmarshalJSON parses the raw URL stored in JSON-encoded data to a URL structure and sets it to the URL field.