e2e

package module
v0.0.0-...-4ba4972 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 25, 2026 License: MIT Imports: 25 Imported by: 0

README

E2E Tests

These are end to end tests using the interchaintest framework. These tests spin up a live chain with a given number of nodes/validators in docker that you can run transactions and queries against.

QUICK START

make docker-image

or

make get-heighliner
make local-image

RUN TESTS

Run an individual test:
```sh
cd e2e
go test -v -run TestLayerFlow -timeout 10m

Note: do not reuse Layer Spinup

Example

package e2e

import (
	"testing"
	"context"
	"github.com/stretchr/testify/require"
)

func TestSomething(t *testing.T) {
	require := require.New(t)

	cosmos.SetSDKConfig("tellor")

	// Basic usage - uses default configuration
	chain, ic, ctx := SetupChain(t, 2, 0)
	defer ic.Close()

	// Get validators using the helper
	validators, err := GetValidators(ctx, chain)
	require.NoError(t, err)

	// Access validators easily
	val1 := validators[0].Node
	val2 := validators[1].Node

	// Get validator addresses
	val1Addr := validators[0].AccAddr
	val1ValAddr := validators[0].ValAddr

	// Print validator info for debugging
	PrintValidatorInfo(ctx, validators)

	// Your test logic here...
	require.Equal(t, 2, len(validators))
	require.NotEmpty(t, val1Addr)
	require.NotEmpty(t, val1ValAddr)
}

func TestCustomConfiguration(t *testing.T) {
	// Custom gas prices
	config := DefaultTestSetupConfig()
	config.GasPrices = "0.001loya"
	config.GlobalFeeMinGas = "0.00005"

	// Custom genesis modifications
	customGenesis := []cosmos.GenesisKV{
		cosmos.NewGenesisKV("app_state.dispute.params.team_address", sdk.MustAccAddressFromBech32("tellor14ncp4jg0d087l54pwnp8p036s0dc580xy4gavf").Bytes()),
		cosmos.NewGenesisKV("consensus.params.abci.vote_extensions_enable_height", "1"),
		cosmos.NewGenesisKV("app_state.gov.params.voting_period", "15s"),
		cosmos.NewGenesisKV("app_state.gov.params.max_deposit_period", "10s"),
		cosmos.NewGenesisKV("app_state.gov.params.min_deposit.0.denom", "loya"),
		cosmos.NewGenesisKV("app_state.gov.params.min_deposit.0.amount", "1"),
		cosmos.NewGenesisKV("app_state.globalfee.params.minimum_gas_prices.0.amount", "0.000025000000000000"),
		cosmos.NewGenesisKV("app_state.registry.dataspec.0.report_block_window", "5"),
	}
	config.ModifyGenesis = customGenesis
	chain, ic, ctx = SetupChainWithCustomConfig(t, config)
	defer ic.Close()

	// test logic here...
}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	DefaultGasPrice = "0.000025000000000000loya"
)

Functions

func CreateReporter

func CreateReporter(ctx context.Context, accountAddr string, validator *cosmos.ChainNode, moniker string) (string, error)

func CreateReporterFromValidator

func CreateReporterFromValidator(ctx context.Context, validator ValidatorInfo, reporterName string, stakeAmount math.Int) (string, error)

CreateReporterFromValidator creates a reporter from a validator with stake

func CreateStandardGenesis

func CreateStandardGenesis() []cosmos.GenesisKV

CreateStandardGenesis creates a standard genesis configuration

func CreateTestAccounts

func CreateTestAccounts(ctx context.Context, t *testing.T, chain *cosmos.CosmosChain, numAccounts int, fundAmt math.Int) ([]string, error)

func DelegateToValidator

func DelegateToValidator(ctx context.Context, userKey string, validator *cosmos.ChainNode, valAddr string, amount math.Int) (string, error)

func EncodeOracleAttestationData

func EncodeOracleAttestationData(
	queryId []byte,
	value string,
	timestamp uint64,
	aggregatePower uint64,
	previousTimestamp uint64,
	nextTimestamp uint64,
	checkpoint []byte,
	attestationTimestamp uint64,
	lastConsensusTimestamp uint64,
) ([]byte, error)

EncodeOracleAttestationData encodes oracle attestation data for bridge operations This must match keeper.EncodeOracleAttestationData exactly

func EncodeStringValue

func EncodeStringValue(value string) string

func ExecProposal

func ExecProposal(ctx context.Context, keyName string, prop Proposal, tn *cosmos.ChainNode) (string, error)

func GetTxHashFromExec

func GetTxHashFromExec(stdout []byte) (string, error)

func GetValAddresses

func GetValAddresses(ctx context.Context, layer *cosmos.CosmosChain) (validators []*cosmos.ChainNode, valAccAddresses, valAddresses []string, err error)

func LayerChainSpec

func LayerChainSpec(nv, nf int, chainId string) *interchaintest.ChainSpec

func LayerEncoding

func LayerEncoding() *testutil.TestEncodingConfig

func LayerSpinup

func LayerSpinup(t *testing.T) *cosmos.CosmosChain

func PrintValidatorInfo

func PrintValidatorInfo(ctx context.Context, validators []ValidatorInfo)

PrintValidatorInfo prints validator information for debugging

func QueryWithTimeout

func QueryWithTimeout(ctx context.Context, validatorI *cosmos.ChainNode, args ...string) ([]byte, []byte, error)

QueryWithTimeout executes a query with a 5-second timeout

func Retry

func Retry(t *testing.T, testName string, operation func() error) error

Retry executes a function with retry logic to handle Docker container cleanup race conditions

func SetupChain

func SetupChain(t *testing.T, numVals, numFullNodes int) (*cosmos.CosmosChain, *interchaintest.Interchain, context.Context)

SetupStandardTestChain creates a test chain with standard configuration

func SetupChainWithCustomConfig

func SetupChainWithCustomConfig(t *testing.T, config SetupConfig) (*cosmos.CosmosChain, *interchaintest.Interchain, context.Context)

SetupTestChainWithConfig creates a test chain with the given configuration

func SubmitBatchReport

func SubmitBatchReport(ctx context.Context, validator *cosmos.ChainNode, reports []string, fees string) (string, error)

SubmitBatchReport submits a batch of reports

func SubmitCycleList

func SubmitCycleList(ctx context.Context, node *cosmos.ChainNode, keyName, value, fees string) (string, error)

SubmitCycleList queries the current cycle list and submits a value for it Returns the tx hash if successful, retries up to 3 times total Does NOT wait for blocks - use SubmitCycleListSafe for safer timing

func SubmitCycleListSafe

func SubmitCycleListSafe(ctx context.Context, node *cosmos.ChainNode, keyName, value, fees string) (string, error)

SubmitCycleListSafe queries the current cycle list and submits a value for it Waits 1 block after submission for better timing guarantees Returns the tx hash if successful, retries up to 3 times total

func TipQuery

func TipQuery(ctx context.Context, validator *cosmos.ChainNode, queryData string, tipCoin sdk.Coin) (string, error)

TipQuery tips a query with the specified amount

func TurnOnMinting

func TurnOnMinting(ctx context.Context, layer *cosmos.CosmosChain, validatorI *cosmos.ChainNode) error

func WriteSecretsFile

func WriteSecretsFile(ctx context.Context, rpc, bridge string, tn *cosmos.ChainNode) error

WriteSecretsFile adds the secrets file required for bridging

Types

type Aggregate

type Aggregate struct {
	QueryId           string `protobuf:"bytes,1,opt,name=query_id,json=queryId,proto3" json:"query_id,omitempty"`
	AggregateValue    string `protobuf:"bytes,2,opt,name=aggregate_value,json=aggregateValue,proto3" json:"aggregate_value,omitempty"`
	AggregateReporter string `protobuf:"bytes,3,opt,name=aggregate_reporter,json=aggregateReporter,proto3" json:"aggregate_reporter,omitempty"`
	AggregatePower    string `protobuf:"varint,4,opt,name=aggregate_power,json=aggregatePower,proto3" json:"aggregate_power,omitempty"`
	Flagged           bool   `protobuf:"varint,5,opt,name=flagged,proto3" json:"flagged,omitempty"`
	Index             string `protobuf:"varint,6,opt,name=index,proto3" json:"index,omitempty"`
	Height            string `protobuf:"varint,7,opt,name=height,proto3" json:"height,omitempty"`
	MicroHeight       string `protobuf:"varint,8,opt,name=micro_height,json=microHeight,proto3" json:"micro_height,omitempty"`
	MetaId            string `protobuf:"varint,9,opt,name=meta_id,json=metaId,proto3" json:"meta_id,omitempty"`
}

type AggregateReport

type AggregateReport struct {
	Aggregate struct {
		QueryID           string `json:"query_id"`
		AggregateValue    string `json:"aggregate_value"`
		AggregateReporter string `json:"aggregate_reporter"`
		ReporterPower     string `json:"reporter_power"`
		Reporters         []struct {
			Reporter    string `json:"reporter"`
			Power       string `json:"power"`
			BlockNumber string `json:"block_number"`
		} `json:"reporters"`
		Index       string `json:"index"`
		Height      string `json:"height"`
		MicroHeight string `json:"micro_height"`
		MetaID      string `json:"meta_id"`
	} `json:"aggregate"`
	Timestamp string `json:"timestamp"`
}

type ChoiceTotal

type ChoiceTotal struct {
	Support string `protobuf:"varint,1,opt,name=support,proto3" json:"support,omitempty"`
	Against string `protobuf:"varint,2,opt,name=against,proto3" json:"against,omitempty"`
	Invalid string `protobuf:"varint,3,opt,name=invalid,proto3" json:"invalid,omitempty"`
}

type Commission

type Commission struct {
	CommissionRates CommissionRates `protobuf:"bytes,1,opt,name=commission_rates,json=commissionRates,proto3,embedded=commission_rates" json:"commission_rates"`
	UpdateTime      time.Time       `protobuf:"bytes,2,opt,name=update_time,json=updateTime,proto3,stdtime" json:"update_time"`
}

type CommissionRates

type CommissionRates struct {
	Rate          string `protobuf:"bytes,1,opt,name=rate,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"rate"`
	MaxRate       string `protobuf:"bytes,2,opt,name=max_rate,json=maxRate,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"max_rate"`
	MaxChangeRate string `` /* 131-byte string literal not displayed */
}

type CurrentTipsResponse

type CurrentTipsResponse struct {
	Tips string `json:"tips"`
}

func QueryTips

func QueryTips(queryData string, ctx context.Context, validatorI *cosmos.ChainNode) (CurrentTipsResponse, error)

type DataSpec

type DataSpec struct {
	DocumentHash      string                        `protobuf:"bytes,1,opt,name=document_hash,json=documentHash,proto3" json:"document_hash,omitempty"`
	ResponseValueType string                        `protobuf:"bytes,2,opt,name=response_value_type,json=responseValueType,proto3" json:"response_value_type,omitempty"`
	AbiComponents     []*registrytypes.ABIComponent `protobuf:"bytes,3,rep,name=abi_components,json=abiComponents,proto3" json:"abi_components,omitempty"`
	AggregationMethod string                        `protobuf:"bytes,4,opt,name=aggregation_method,json=aggregationMethod,proto3" json:"aggregation_method,omitempty"`
	Registrar         string                        `protobuf:"bytes,5,opt,name=registrar,proto3" json:"registrar,omitempty"`
	ReportBlockWindow string                        `protobuf:"varint,6,opt,name=report_block_window,json=reportBlockWindow,proto3" json:"report_block_window,omitempty"`
	QueryType         string                        `protobuf:"bytes,7,opt,name=query_type,json=queryType,proto3" json:"query_type,omitempty"`
}

type DataSpec2

type DataSpec2 struct {
	DocumentHash      string                        `protobuf:"bytes,1,opt,name=document_hash,json=documentHash,proto3" json:"document_hash,omitempty"`
	ResponseValueType string                        `protobuf:"bytes,2,opt,name=response_value_type,json=responseValueType,proto3" json:"response_value_type,omitempty"`
	AbiComponents     []*registrytypes.ABIComponent `protobuf:"bytes,3,rep,name=abi_components,json=abiComponents,proto3" json:"abi_components,omitempty"`
	AggregationMethod string                        `protobuf:"bytes,4,opt,name=aggregation_method,json=aggregationMethod,proto3" json:"aggregation_method,omitempty"`
	Registrar         string                        `protobuf:"bytes,5,opt,name=registrar,proto3" json:"registrar,omitempty"`
	ReportBlockWindow string                        `protobuf:"varint,6,opt,name=report_block_window,json=reportBlockWindow,proto3" json:"report_block_window,omitempty"`
	QueryType         string                        `protobuf:"bytes,7,opt,name=query_type,json=queryType,proto3" json:"query_type,omitempty"`
}

type DataSpecResponse

type DataSpecResponse struct {
	DocumentHash      string                        `json:"document_hash,omitempty"`
	ResponseValueType string                        `json:"response_value_type,omitempty"`
	AbiComponents     []*registrytypes.ABIComponent `json:"abi_components,omitempty"`
	AggregationMethod string                        `json:"aggregation_method,omitempty"`
	Registrar         string                        `json:"registrar,omitempty"`
	ReportBlockWindow string                        `json:"report_block_window,omitempty"`
}

type Description

type Description struct {
	Moniker         string `protobuf:"bytes,1,opt,name=moniker,proto3" json:"moniker,omitempty"`
	Identity        string `protobuf:"bytes,2,opt,name=identity,proto3" json:"identity,omitempty"`
	Website         string `protobuf:"bytes,3,opt,name=website,proto3" json:"website,omitempty"`
	SecurityContact string `protobuf:"bytes,4,opt,name=security_contact,json=securityContact,proto3" json:"security_contact,omitempty"`
	Details         string `protobuf:"bytes,5,opt,name=details,proto3" json:"details,omitempty"`
}

type Disputes

type Disputes struct {
	Disputes []struct {
		DisputeID string   `json:"disputeId"`
		Metadata  Metadata `json:"metadata"`
	} `json:"disputes"`
}

type Disputes2

type Disputes2 struct {
	Disputes []struct {
		DisputeID string    `json:"disputeId"`
		Metadata  MetaData2 `json:"metadata"`
	} `json:"disputes"`
}

type Evidence

type Evidence struct {
	Reporter        string `json:"reporter"`
	Power           string `json:"power"`
	QueryType       string `json:"query_type"`
	QueryID         string `json:"query_id"`
	AggregateMethod string `json:"aggregate_method"`
	Value           string `json:"value"`
	Timestamp       string `json:"timestamp"`
	BlockNumber     string `json:"block_number"`
}

type FormattedVoteCounts

type FormattedVoteCounts struct {
	Support string `protobuf:"varint,1,opt,name=support,proto3" json:"support,omitempty"`
	Against string `protobuf:"varint,2,opt,name=against,proto3" json:"against,omitempty"`
	Invalid string `protobuf:"varint,3,opt,name=invalid,proto3" json:"invalid,omitempty"`
}

type GenerateQueryDataResponse

type GenerateQueryDataResponse struct {
	QueryData []byte `json:"query_data"`
}

type GetDataSpecResponse

type GetDataSpecResponse struct {
	Registrar string           `json:"registrar"`
	QueryType string           `json:"query_type"`
	Spec      DataSpecResponse `json:"spec"`
}

type GroupTally

type GroupTally struct {
	VoteCount       *FormattedVoteCounts `protobuf:"bytes,1,opt,name=voteCount,proto3" json:"voteCount,omitempty"`
	TotalPowerVoted string               `protobuf:"varint,2,opt,name=totalPowerVoted,proto3" json:"totalPowerVoted,omitempty"`
	TotalGroupPower string               `protobuf:"varint,3,opt,name=totalGroupPower,proto3" json:"totalGroupPower,omitempty"`
}

type MetaData2

type MetaData2 struct {
	HashId             string     `protobuf:"bytes,1,opt,name=hash_id,json=hashId,proto3" json:"hash_id,omitempty"`
	DisputeId          string     `protobuf:"varint,2,opt,name=dispute_id,json=disputeId,proto3" json:"dispute_id,omitempty"`
	DisputeCategory    string     `` /* 142-byte string literal not displayed */
	DisputeFee         string     `protobuf:"bytes,4,opt,name=dispute_fee,json=disputeFee,proto3,customtype=cosmossdk.io/math.Int" json:"dispute_fee"`
	DisputeStatus      string     `` /* 134-byte string literal not displayed */
	DisputeStartTime   string     `protobuf:"bytes,6,opt,name=dispute_start_time,json=disputeStartTime,proto3,stdtime" json:"dispute_start_time"`
	DisputeEndTime     string     `protobuf:"bytes,7,opt,name=dispute_end_time,json=disputeEndTime,proto3,stdtime" json:"dispute_end_time"`
	DisputeStartBlock  string     `protobuf:"varint,8,opt,name=dispute_start_block,json=disputeStartBlock,proto3" json:"dispute_start_block,omitempty"`
	DisputeRound       string     `protobuf:"varint,9,opt,name=dispute_round,json=disputeRound,proto3" json:"dispute_round,omitempty"`
	SlashAmount        string     `protobuf:"bytes,10,opt,name=slash_amount,json=slashAmount,proto3,customtype=cosmossdk.io/math.Int" json:"slash_amount"`
	BurnAmount         string     `protobuf:"bytes,11,opt,name=burn_amount,json=burnAmount,proto3,customtype=cosmossdk.io/math.Int" json:"burn_amount"`
	InitialEvidence    Evidence   `protobuf:"bytes,12,opt,name=initial_evidence,json=initialEvidence,proto3" json:"initial_evidence"`
	FeeTotal           string     `protobuf:"bytes,13,opt,name=fee_total,json=feeTotal,proto3,customtype=cosmossdk.io/math.Int" json:"fee_total"`
	PrevDisputeIds     []string   `protobuf:"varint,14,rep,packed,name=prev_dispute_ids,json=prevDisputeIds,proto3" json:"prev_dispute_ids,omitempty"`
	BlockNumber        string     `protobuf:"varint,15,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"`
	Open               bool       `protobuf:"varint,16,opt,name=open,proto3" json:"open,omitempty"`
	AdditionalEvidence []Evidence `protobuf:"bytes,17,rep,name=additional_evidence,json=additionalEvidence,proto3" json:"additional_evidence,omitempty"`
	VoterReward        string     `protobuf:"bytes,18,opt,name=voter_reward,json=voterReward,proto3,customtype=cosmossdk.io/math.Int" json:"voter_reward"`
	PendingExecution   bool       `protobuf:"varint,19,opt,name=pending_execution,json=pendingExecution,proto3" json:"pending_execution,omitempty"`
}

type Metadata

type Metadata struct {
	HashID            string   `json:"hash_id"`
	DisputeID         string   `json:"dispute_id"`
	DisputeCategory   string   `json:"dispute_category"`
	DisputeFee        string   `json:"dispute_fee"`
	DisputeStatus     string   `json:"dispute_status"`
	DisputeStartTime  string   `json:"dispute_start_time"`
	DisputeEndTime    string   `json:"dispute_end_time"`
	DisputeStartBlock string   `json:"dispute_start_block"`
	DisputeRound      string   `json:"dispute_round"`
	SlashAmount       string   `json:"slash_amount"`
	BurnAmount        string   `json:"burn_amount"`
	InitialEvidence   Evidence `json:"initial_evidence"`
	FeeTotal          string   `json:"fee_total"`
	PrevDisputeIDs    []string `json:"prev_dispute_ids"`
	BlockNumber       string   `json:"block_number"`
	VoterReward       string   `json:"voter_reward"`
}

type MicroReport

type MicroReport struct {
	Reporter        string `json:"reporter"`
	Power           string `json:"power"`
	QueryType       string `json:"query_type"`
	QueryID         string `json:"query_id"`
	AggregateMethod string `json:"aggregate_method"`
	Value           string `json:"value"`
	Timestamp       string `json:"timestamp"`
	BlockNumber     string `json:"block_number"`
	MetaId          string `json:"meta_id"`
}

type NoStakeMicroReportStrings

type NoStakeMicroReportStrings struct {
	Reporter    string `protobuf:"bytes,1,opt,name=reporter,proto3" json:"reporter,omitempty"`
	Value       string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
	Timestamp   string `protobuf:"varint,4,opt,name=timestamp,json=timestamp,proto3" json:"timestamp,omitempty"`
	BlockNumber string `protobuf:"varint,5,opt,name=block_number,json=blockNumber,proto3" json:"block_number,omitempty"`
}

type OpenDisputes

type OpenDisputes struct {
	Ids []string `protobuf:"varint,1,rep,packed,name=ids,proto3" json:"ids,omitempty"`
}

type OracleReporter

type OracleReporter struct {
	CommissionRate string    `json:"commission_rate"`
	MinTokens      string    `json:"min_tokens_required"`
	Jailed         bool      `protobuf:"varint,3,opt,name=jailed,proto3" json:"jailed,omitempty"`
	JailedUntil    time.Time `protobuf:"bytes,4,opt,name=jailed_until,json=jailedUntil,proto3,stdtime" json:"jailed_until"`
	Moniker        string    `json:"moniker"`
}

type PageResponse

type PageResponse struct {
	NextKey string `protobuf:"bytes,1,opt,name=next_key,json=nextKey,proto3" json:"next_key,omitempty"`
	Total   string `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
}

type Proposal

type Proposal struct {
	Messages  []map[string]interface{} `json:"messages"`
	Metadata  string                   `json:"metadata"`
	Deposit   string                   `json:"deposit"`
	Title     string                   `json:"title"`
	Summary   string                   `json:"summary"`
	Expedited bool                     `json:"expedited"`
}

type QueryCurrentCyclelistQueryResponse

type QueryCurrentCyclelistQueryResponse struct {
	QueryData string     `protobuf:"bytes,1,opt,name=query_data,json=queryData,proto3" json:"query_data,omitempty"`
	QueryMeta *QueryMeta `protobuf:"bytes,2,opt,name=query_meta,json=queryMeta,proto3" json:"query_meta,omitempty"`
}

type QueryDelegatorDelegationsResponse

type QueryDelegatorDelegationsResponse struct {
	DelegationResponses []stakingtypes.DelegationResponse `json:"delegation_responses"`
	Pagination          struct {
		Total string `json:"total"`
	} `json:"pagination"`
}

type QueryDisputesTallyResponse

type QueryDisputesTallyResponse struct {
	Users       *GroupTally          `protobuf:"bytes,1,opt,name=users,proto3" json:"users,omitempty"`
	Reporters   *GroupTally          `protobuf:"bytes,2,opt,name=reporters,proto3" json:"reporters,omitempty"`
	Team        *FormattedVoteCounts `protobuf:"bytes,3,opt,name=team,proto3" json:"team,omitempty"`
	ChoiceTotal *ChoiceTotal         `protobuf:"bytes,4,opt,name=choiceTotal,proto3" json:"choiceTotal,omitempty"`
}

type QueryGenerateQuerydataResponse

type QueryGenerateQuerydataResponse struct {
	QueryData string `protobuf:"bytes,1,opt,name=query_data,json=queryData,proto3" json:"query_data,omitempty"`
}

type QueryGetAttestationBySnapshotResponse

type QueryGetAttestationBySnapshotResponse struct {
	Attestations []string `protobuf:"bytes,1,rep,name=attestations,proto3" json:"attestations,omitempty"`
}

type QueryGetAttestationDataBySnapshotResponse

type QueryGetAttestationDataBySnapshotResponse struct {
	QueryId                 string `protobuf:"bytes,1,opt,name=query_id,json=queryId,proto3" json:"query_id,omitempty"`
	Timestamp               string `protobuf:"bytes,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	AggregateValue          string `protobuf:"bytes,3,opt,name=aggregate_value,json=aggregateValue,proto3" json:"aggregate_value,omitempty"`
	AggregatePower          string `protobuf:"bytes,4,opt,name=aggregate_power,json=aggregatePower,proto3" json:"aggregate_power,omitempty"`
	Checkpoint              string `protobuf:"bytes,5,opt,name=checkpoint,proto3" json:"checkpoint,omitempty"`
	AttestationTimestamp    string `protobuf:"bytes,6,opt,name=attestation_timestamp,json=attestationTimestamp,proto3" json:"attestation_timestamp,omitempty"`
	PreviousReportTimestamp string `` /* 132-byte string literal not displayed */
	NextReportTimestamp     string `protobuf:"bytes,8,opt,name=next_report_timestamp,json=nextReportTimestamp,proto3" json:"next_report_timestamp,omitempty"`
	LastConsensusTimestamp  string `` /* 129-byte string literal not displayed */
}

type QueryGetCurrentAggregateReportResponse

type QueryGetCurrentAggregateReportResponse struct {
	Aggregate *Aggregate `protobuf:"bytes,1,opt,name=aggregate,proto3" json:"aggregate,omitempty"`
	Timestamp string     `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
}

type QueryGetDataSpecResponse

type QueryGetDataSpecResponse struct {
	Spec *DataSpec2 `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"`
}

type QueryGetDepositClaimedResponse

type QueryGetDepositClaimedResponse struct {
	Claimed bool `protobuf:"varint,1,opt,name=claimed,proto3" json:"claimed,omitempty"`
}

type QueryGetNoStakeReportsByQueryIdResponse

type QueryGetNoStakeReportsByQueryIdResponse struct {
	NoStakeReports []*NoStakeMicroReportStrings `protobuf:"bytes,1,rep,name=no_stake_reports,json=noStakeReports,proto3" json:"no_stake_reports,omitempty"`
	Pagination     *PageResponse                `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"`
}

type QueryGetReportersNoStakeReportsResponse

type QueryGetReportersNoStakeReportsResponse struct {
	NoStakeReports []*NoStakeMicroReportStrings `protobuf:"bytes,1,rep,name=no_stake_reports,json=noStakeReports,proto3" json:"no_stake_reports,omitempty"`
	Pagination     *PageResponse                `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"`
}

type QueryGetSnapshotsByReportResponse

type QueryGetSnapshotsByReportResponse struct {
	Snapshots []string `protobuf:"bytes,1,rep,name=snapshots,proto3" json:"snapshots,omitempty"`
}

type QueryGetTippedQueriesResponse

type QueryGetTippedQueriesResponse struct {
	ActiveQueries  []*QueryMetaButString `protobuf:"bytes,1,rep,name=active_queries,json=activeQueries,proto3" json:"active_queries,omitempty"`
	ExpiredQueries []*QueryMetaButString `protobuf:"bytes,2,rep,name=expired_queries,json=expiredQueries,proto3" json:"expired_queries,omitempty"`
	Pagination     *query.PageResponse   `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"`
}

type QueryMeta

type QueryMeta struct {
	Id                      string `json:"id,omitempty"`
	Amount                  string `json:"amount"`
	Expiration              string `json:"expiration,omitempty"`
	RegistrySpecBlockWindow string `json:"registry_spec_block_window,omitempty"`
	HasRevealedReports      bool   `json:"has_revealed_reports,omitempty"`
	QueryData               string `json:"query_data,omitempty"`
	QueryType               string `json:"query_type,omitempty"`
	CycleList               bool   `json:"cycle_list,omitempty"`
}

type QueryMetaButString

type QueryMetaButString struct {
	Id                      string `json:"id,omitempty"`
	Amount                  string `json:"amount"`
	Expiration              string `json:"expiration,omitempty"`
	RegistrySpecBlockWindow string `json:"registry_spec_block_window,omitempty"`
	HasRevealedReports      bool   `json:"has_revealed_reports,omitempty"`
	QueryData               string `json:"query_data,omitempty"`
	QueryType               string `json:"query_type,omitempty"`
	CycleList               bool   `json:"cycle_list,omitempty"`
}

type QueryMicroReportsResponse

type QueryMicroReportsResponse struct {
	MicroReports []MicroReport `protobuf:"bytes,1,rep,name=microReports,proto3" json:"microReports"`
}

type QueryOpenDisputesResponse

type QueryOpenDisputesResponse struct {
	OpenDisputes *OpenDisputes `protobuf:"bytes,1,opt,name=openDisputes,proto3" json:"openDisputes,omitempty"`
}

type QueryReportersResponse

type QueryReportersResponse struct {
	Reporters  []*Reporter `protobuf:"bytes,1,rep,name=reporters,proto3" json:"reporters,omitempty"`
	Pagination struct {
		Total string `json:"total"`
	} `json:"pagination"`
}

type QueryRetrieveDataResponse

type QueryRetrieveDataResponse struct {
	Aggregate *Aggregate `protobuf:"bytes,1,opt,name=aggregate,proto3" json:"aggregate,omitempty"`
}

type QuerySelectorReporterResponse

type QuerySelectorReporterResponse struct {
	Reporter string `json:"reporter"`
}

type QueryTeamAddressResponse

type QueryTeamAddressResponse struct {
	TeamAddress string `protobuf:"bytes,1,opt,name=team_address,json=teamAddress,proto3" json:"team_address,omitempty"`
}

type QueryTeamVoteResponse

type QueryTeamVoteResponse struct {
	TeamVote Voter `protobuf:"bytes,1,opt,name=team_vote,json=teamVote,proto3" json:"team_vote"`
}

type QueryValidatorsResponse

type QueryValidatorsResponse struct {
	Validators []Validator `json:"validators"`
}

type Reporter

type Reporter struct {
	Address  string          `json:"address"`
	Metadata *OracleReporter `json:"metadata"`
	Power    string          `json:"power"`
}

type ReportersResponse

type ReportersResponse struct {
	Reporters []*Reporter `json:"reporters"`
}

type ReportsResponse

type ReportsResponse struct {
	MicroReports []MicroReport `json:"microReports"`
}

type SetupConfig

type SetupConfig struct {
	NumValidators   int
	NumFullNodes    int
	ModifyGenesis   []cosmos.GenesisKV
	GasPrices       string
	GlobalFeeMinGas string
}

SetupConfig holds configuration for test setup

func DefaultSetupConfig

func DefaultSetupConfig() SetupConfig

DefaultSetupConfig returns standard test configuration

type TippedQueriesResponse

type TippedQueriesResponse struct {
	Queries []QueryMeta `json:"queries"`
}

type Validator

type Validator struct {
	OperatorAddress         string      `protobuf:"bytes,1,opt,name=operator_address,json=operatorAddress,proto3" json:"operator_address,omitempty"`
	ConsensusPubkey         *types1.Any `protobuf:"bytes,2,opt,name=consensus_pubkey,json=consensusPubkey,proto3" json:"consensus_pubkey,omitempty"`
	Jailed                  bool        `protobuf:"varint,3,opt,name=jailed,proto3" json:"jailed,omitempty"`
	Status                  string      `protobuf:"varint,4,opt,name=status,proto3,enum=cosmos.staking.v1beta1.BondStatus" json:"status,omitempty"`
	Tokens                  string      `protobuf:"bytes,5,opt,name=tokens,proto3,customtype=cosmossdk.io/math.Int" json:"tokens"`
	DelegatorShares         string      `` /* 135-byte string literal not displayed */
	Description             Description `protobuf:"bytes,7,opt,name=description,proto3" json:"description"`
	UnbondingHeight         string      `protobuf:"varint,8,opt,name=unbonding_height,json=unbondingHeight,proto3" json:"unbonding_height,omitempty"`
	UnbondingTime           string      `protobuf:"bytes,9,opt,name=unbonding_time,json=unbondingTime,proto3,stdtime" json:"unbonding_time"`
	Commission              Commission  `protobuf:"bytes,10,opt,name=commission,proto3" json:"commission"`
	MinSelfDelegation       string      `protobuf:"bytes,11,opt,name=min_self_delegation,json=minSelfDelegation,proto3" json:"min_self_delegation"`
	UnbondingOnHoldRefCount string      `` /* 138-byte string literal not displayed */
	UnbondingIds            []string    `protobuf:"varint,13,rep,packed,name=unbonding_ids,json=unbondingIds,proto3" json:"unbonding_ids,omitempty"`
}

type ValidatorInfo

type ValidatorInfo struct {
	Node    *cosmos.ChainNode
	AccAddr string
	ValAddr string
}

ValidatorInfo contains validator node and address information

func GetValidators

func GetValidators(ctx context.Context, chain *cosmos.CosmosChain) ([]ValidatorInfo, error)

GetValidators retrieves all validators with their addresses

type Validators

type Validators struct {
	Addr    string
	ValAddr string
	Val     *cosmos.ChainNode
}

Validators contains validator information for chain operations

type Voter

type Voter struct {
	Vote          string `protobuf:"varint,1,opt,name=vote,proto3,enum=layer.dispute.VoteEnum" json:"vote,omitempty"`
	VoterPower    string `protobuf:"bytes,2,opt,name=voter_power,json=voterPower,proto3,customtype=cosmossdk.io/math.Int" json:"voter_power"`
	ReporterPower string `protobuf:"bytes,3,opt,name=reporter_power,json=reporterPower,proto3,customtype=cosmossdk.io/math.Int" json:"reporter_power"`
	RewardClaimed bool   `protobuf:"varint,5,opt,name=reward_claimed,json=rewardClaimed,proto3" json:"reward_claimed,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL