tiablob

package module
v0.0.0-...-3063be3 Latest Latest
Warning

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

Go to latest
Published: Apr 25, 2024 License: Apache-2.0 Imports: 30 Imported by: 0

README

Celestia Blob Cosmos SDK Module

This module enables posting block data to celestia via the proposing validator.

1. Introduction

1.1 Background

Using a Cosmos chain with a light client tracking Celestia with a proof-of-blob mechanism to confirm that data has been written to the DA within the trusting period allows a familiar architecture to be used with minor modifications, creating a viable path for not only green-field applications but also existing Cosmos chains that wish to take advantage of DA layer guarantees.

1.2 Purpose

This document aims to delineate the architecture required to modify a standard Cosmos chain in order to incorporate Celestia into the trust model, leveraging it for Data Availability with it’s decentralized validator set.

1.3 Scope

The scope encompasses the existing well-known Cosmos SDK app-chain components, the additional Celestia light client created at Genesis, the DA blob publish mechanism, light client update mechanism via Vote Extensions (VE), and proof-of-blob (PoB) mechanism.

2. Architecture

2.1 Design Overview

The proposed architecture provides an option for Rollup applications to use a standard Cosmos SDK app-chain on top of Celestia. This design entails:

  • Tendermint mempool for transaction ingest and gossip
  • Tendermint validator block proposals for transaction sequencing
  • A light client on the Rollup tracking Celestia, created in the Rollup chain state during Genesis
    • Standard 07-tendermint light client
    • Optionally, DA light client expiration halts the chain. Alternatively for exploration: chain goes into a “recovery mode” where blocks continue to be produced but the only valid transactions are those that can recover the light client e.g. client substitution.
    • trusting period of the light client is no more than the data retention window on the DA (period during which ShareCommitment blob-inclusion proofs can be generated)
  • An RPC connection from the Rollup validators to the Celestia chain for:
    • Relaying ICA blob publish packets or broadcasting blob publish txs directly (covered in 4.2)
    • Block header queries to update the light client on the Rollup via Vote Extensions
    • ShareCommitment blob-inclusion proof queries for Proof of Blob verification
  • Rollchain SDK module:
    • final-height - non-skipped incremental height that has blob inclusion proven against the Celestia light client. Blocks at or below this height are considered final.
    • validator celestia account mapping - used to feegrant validators on Celestia for paying blob publish tx fees
2.2 Benefits
  • It’s, “just a Cosmos chain”. A whole ecosystem of developers are already trained and ready to build with this architecture. Existing chains have a straightforward path to utilizing Celestia for DA.
  • Secured by Celestia - the smaller validator set of the rollup has data security guarantees provided by the $500M of staked assets on the Celestia mainnet. The history of rollup chain block data is forever secured by the Celestia validator set.
  • Rollchains will be IBC compatible out of the box with all other Cosmos SDK chains, as the 07-tendermint light client can be used both for both tracking counterparties on the rollup, and tracking the rollup on the counterparties.
  • Provides a scaling path for existing Cosmos chains to reduce the size of their validator set, enabling faster block times and a slimmer security budget.
  • Fullnodes can sync directly from Celestia or from rollchain p2p network.

3. Technical Breakdown

3.1 Light Client Updates via Proposer Injection

Validators have a background go-routine running that is constantly querying the Celestia RPC for new block headers and ShareCommitment proofs, always proof height+1 so that validators can pre-cache proofs instead of having to fetch proofs at pre-vote time. A trusted height is kept in the chain state of the rollup within a new x/tiablob module. During the proposal, the proposing validator packages and signs a client update message in addition to ShareCommitment proofs for heights since the last trusted height that can be verified against the apphash for the new client state height. During block commit, assuming there is consensus on the new state and the proofs are valid, the client state is updated on the rollup and the trust height is incremented within the tiablob module state. The final/trusted height will never skip heights to ensure that all data has been published to DA.

3.2 Validator blob publish fees

MsgPayForBlobs is required as part of the blob publish transaction on Celestia to pay for the inclusion of the data on Celestia. Additionally, the transaction execution fees must be paid.

An ICA on Celestia controlled by the rollchain protocol feegrants all of the validator's Celestia addresses. The proposing validator publishes any outstanding block data above the last proven height to Celestia. This is paid for by the ICA account via feegrant. The proposer also relays any unrelayed ShareCommitment proofs back to the rollchain.

Validators need to generate a Celestia account key within their keyring. ICA feegrant authorization to the validator accounts can be performed automatically in protocol using the validators Celestia accounts registered within the state of the tiablob module. This then only requires a single Celestia account (the ICA) to stay funded, which can be monitored by all of the validators of the rollup. Similarly, If it is an HA PoA deployment, there is only one wallet to monitor.

Appendix 1

1.1 - Rollchain ↔ Celestia Security Model
flowchart LR
    subgraph Celestia
        rlc[Rollchain Light Client]
        subgraph cv [Validator Set]
            cVal1[Val1]
            cVal2[Val2]
            cVal3[...]
            cVal4[Val100]
        end
    end

    cv--"2. Proof of Blob via Proposal Injection"-->clc

    subgraph Rollchain
        clc[Celestia Light Client]
        subgraph rv [Validator Set]
            rVal1[Val1]
            rVal2[Val2]
            rVal3[Val3]
            rVal4[Val4]
        end
    end

    rv--"1. Proposer Post Blob with ICA Feegrant"-->rlc
1.2 - Rollchain ↔ Celestia Data Flow
flowchart
subgraph Celestia
			cv(Validator Set)

			subgraph cb [Blocks]
				cby(Block y)
			end
			
			cs(Blob State)
		end 

		subgraph Rollchain
			subgraph Blocks
				rbx[Block x]
				rbx2[Block x+1]
			end
			rv(Validator Set)
		end

		

		rbx --"1. Post Blob Tx"--> cv

		cv --"2. Commit Blob to state"-->cby

		cs --"3. Proof of Blob"--> rv

		rv -- "4. Verify PoB" --> rv

		rv --> rbx2

		rbx2 -.-> cv

Documentation

Overview

Package tiablob is a reverse proxy.

It translates gRPC into RESTful JSON APIs.

Index

Constants

View Source
const (
	// ModuleName is the name of the module
	ModuleName = "tiablob"

	// StoreKey to be used when creating the KVStore
	StoreKey = ModuleName

	// RouterKey to be used for routing msgs
	RouterKey = ModuleName

	// QuerierRoute to be used for querier msgs
	QuerierRoute = ModuleName

	// TransientStoreKey defines the transient store key
	TransientStoreKey = "transient_" + ModuleName

	Bech32Celestia = "celestia"

	AddrLen = 20
)

Variables

View Source
var (
	ErrInvalidLengthGenesis        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowGenesis          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupGenesis = fmt.Errorf("proto: unexpected end of group")
)
View Source
var (

	// ValidatorsKey saves the current validators.
	ValidatorsKey = collections.NewPrefix(0)

	// ClientIDKey saves the current clientID.
	ClientIDKey = collections.NewPrefix(1)

	// ProvenHeightKey saves the current proven height.
	ProvenHeightKey = collections.NewPrefix(2)
)
View Source
var (
	ErrInvalidLengthQuery        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowQuery          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group")
)
View Source
var (
	ErrInvalidLengthTx        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowTx          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group")
)
View Source
var (
	ErrInvalidLengthValidator        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowValidator          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupValidator = fmt.Errorf("proto: unexpected end of group")
)

Functions

func RegisterInterfaces

func RegisterInterfaces(registry types.InterfaceRegistry)

RegisterInterfaces registers the interfaces types with the interface registry.

func RegisterLegacyAminoCodec

func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino)

RegisterLegacyAminoCodec registers the necessary interfaces and concrete types on the provided LegacyAmino codec. These types are used for Amino JSON serialization.

func RegisterMsgServer

func RegisterMsgServer(s grpc1.Server, srv MsgServer)

func RegisterQueryHandler

func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error

RegisterQueryHandler registers the http handlers for service Query to "mux". The handlers forward requests to the grpc endpoint over "conn".

func RegisterQueryHandlerClient

func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error

RegisterQueryHandlerClient registers the http handlers for service Query to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "QueryClient". Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "QueryClient" doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in "QueryClient" to call the correct interceptors.

func RegisterQueryHandlerFromEndpoint

func RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error)

RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but automatically dials to "endpoint" and closes the connection when "ctx" gets done.

func RegisterQueryHandlerServer

func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error

RegisterQueryHandlerServer registers the http handlers for service Query to "mux". UnaryRPC :call QueryServer directly. StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead.

func RegisterQueryServer

func RegisterQueryServer(s grpc1.Server, srv QueryServer)

Types

type GenesisState

type GenesisState struct {
	Validators []Validator `protobuf:"bytes,1,rep,name=validators,proto3" json:"validators"`
	// the height of the last block that was proven to be posted to Celestia.
	// increment only, never skipping heights.
	ProvenHeight uint64 `protobuf:"varint,2,opt,name=proven_height,json=provenHeight,proto3" json:"proven_height,omitempty"`
	// ID of the IBC client tracking Celestia
	ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
}

GenesisState defines the rollchain module's genesis state.

func NewGenesisState

func NewGenesisState() *GenesisState

NewGenesisState creates a new genesis state with default values.

func (*GenesisState) Descriptor

func (*GenesisState) Descriptor() ([]byte, []int)

func (*GenesisState) GetClientId

func (m *GenesisState) GetClientId() string

func (*GenesisState) GetProvenHeight

func (m *GenesisState) GetProvenHeight() uint64

func (*GenesisState) GetValidators

func (m *GenesisState) GetValidators() []Validator

func (*GenesisState) Marshal

func (m *GenesisState) Marshal() (dAtA []byte, err error)

func (*GenesisState) MarshalTo

func (m *GenesisState) MarshalTo(dAtA []byte) (int, error)

func (*GenesisState) MarshalToSizedBuffer

func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*GenesisState) ProtoMessage

func (*GenesisState) ProtoMessage()

func (*GenesisState) Reset

func (m *GenesisState) Reset()

func (*GenesisState) Size

func (m *GenesisState) Size() (n int)

func (*GenesisState) String

func (m *GenesisState) String() string

func (*GenesisState) Unmarshal

func (m *GenesisState) Unmarshal(dAtA []byte) error

func (*GenesisState) Validate

func (gs *GenesisState) Validate() error

Validate performs basic genesis state validation returning an error upon any

func (*GenesisState) XXX_DiscardUnknown

func (m *GenesisState) XXX_DiscardUnknown()

func (*GenesisState) XXX_Marshal

func (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*GenesisState) XXX_Merge

func (m *GenesisState) XXX_Merge(src proto.Message)

func (*GenesisState) XXX_Size

func (m *GenesisState) XXX_Size() int

func (*GenesisState) XXX_Unmarshal

func (m *GenesisState) XXX_Unmarshal(b []byte) error

type MsgClient

type MsgClient interface {
	// SetCelestiaAddress allows a validator to configure their Celestia address for feegranting
	SetCelestiaAddress(ctx context.Context, in *MsgSetCelestiaAddress, opts ...grpc.CallOption) (*MsgSetCelestiaAddressResponse, error)
	// ProveBlock allows a validator to submit a proof of a block that has been posted to Celestia
	ProveBlock(ctx context.Context, in *MsgProveBlock, opts ...grpc.CallOption) (*MsgProveBlockResponse, error)
}

MsgClient is the client API for Msg service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewMsgClient

func NewMsgClient(cc grpc1.ClientConn) MsgClient

type MsgProveBlock

type MsgProveBlock struct {
	ValidatorAddress string `protobuf:"bytes,1,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"`
	Height           uint64 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"`
	Proof            []byte `protobuf:"bytes,4,opt,name=proof,proto3" json:"proof,omitempty"`
}

func (*MsgProveBlock) Descriptor

func (*MsgProveBlock) Descriptor() ([]byte, []int)

func (*MsgProveBlock) Marshal

func (m *MsgProveBlock) Marshal() (dAtA []byte, err error)

func (*MsgProveBlock) MarshalTo

func (m *MsgProveBlock) MarshalTo(dAtA []byte) (int, error)

func (*MsgProveBlock) MarshalToSizedBuffer

func (m *MsgProveBlock) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*MsgProveBlock) ProtoMessage

func (*MsgProveBlock) ProtoMessage()

func (*MsgProveBlock) Reset

func (m *MsgProveBlock) Reset()

func (*MsgProveBlock) Size

func (m *MsgProveBlock) Size() (n int)

func (*MsgProveBlock) String

func (m *MsgProveBlock) String() string

func (*MsgProveBlock) Unmarshal

func (m *MsgProveBlock) Unmarshal(dAtA []byte) error

func (*MsgProveBlock) XXX_DiscardUnknown

func (m *MsgProveBlock) XXX_DiscardUnknown()

func (*MsgProveBlock) XXX_Marshal

func (m *MsgProveBlock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*MsgProveBlock) XXX_Merge

func (m *MsgProveBlock) XXX_Merge(src proto.Message)

func (*MsgProveBlock) XXX_Size

func (m *MsgProveBlock) XXX_Size() int

func (*MsgProveBlock) XXX_Unmarshal

func (m *MsgProveBlock) XXX_Unmarshal(b []byte) error

type MsgProveBlockResponse

type MsgProveBlockResponse struct {
}

func (*MsgProveBlockResponse) Descriptor

func (*MsgProveBlockResponse) Descriptor() ([]byte, []int)

func (*MsgProveBlockResponse) Marshal

func (m *MsgProveBlockResponse) Marshal() (dAtA []byte, err error)

func (*MsgProveBlockResponse) MarshalTo

func (m *MsgProveBlockResponse) MarshalTo(dAtA []byte) (int, error)

func (*MsgProveBlockResponse) MarshalToSizedBuffer

func (m *MsgProveBlockResponse) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*MsgProveBlockResponse) ProtoMessage

func (*MsgProveBlockResponse) ProtoMessage()

func (*MsgProveBlockResponse) Reset

func (m *MsgProveBlockResponse) Reset()

func (*MsgProveBlockResponse) Size

func (m *MsgProveBlockResponse) Size() (n int)

func (*MsgProveBlockResponse) String

func (m *MsgProveBlockResponse) String() string

func (*MsgProveBlockResponse) Unmarshal

func (m *MsgProveBlockResponse) Unmarshal(dAtA []byte) error

func (*MsgProveBlockResponse) XXX_DiscardUnknown

func (m *MsgProveBlockResponse) XXX_DiscardUnknown()

func (*MsgProveBlockResponse) XXX_Marshal

func (m *MsgProveBlockResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*MsgProveBlockResponse) XXX_Merge

func (m *MsgProveBlockResponse) XXX_Merge(src proto.Message)

func (*MsgProveBlockResponse) XXX_Size

func (m *MsgProveBlockResponse) XXX_Size() int

func (*MsgProveBlockResponse) XXX_Unmarshal

func (m *MsgProveBlockResponse) XXX_Unmarshal(b []byte) error

type MsgServer

type MsgServer interface {
	// SetCelestiaAddress allows a validator to configure their Celestia address for feegranting
	SetCelestiaAddress(context.Context, *MsgSetCelestiaAddress) (*MsgSetCelestiaAddressResponse, error)
	// ProveBlock allows a validator to submit a proof of a block that has been posted to Celestia
	ProveBlock(context.Context, *MsgProveBlock) (*MsgProveBlockResponse, error)
}

MsgServer is the server API for Msg service.

type MsgSetCelestiaAddress

type MsgSetCelestiaAddress struct {
	ValidatorAddress string `protobuf:"bytes,1,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"`
	CelestiaAddress  string `protobuf:"bytes,2,opt,name=celestia_address,json=celestiaAddress,proto3" json:"celestia_address,omitempty"`
}

MsgSetCelestiaAddress defines a SDK message for validators to set their Celestia address

func (*MsgSetCelestiaAddress) Descriptor

func (*MsgSetCelestiaAddress) Descriptor() ([]byte, []int)

func (*MsgSetCelestiaAddress) Marshal

func (m *MsgSetCelestiaAddress) Marshal() (dAtA []byte, err error)

func (*MsgSetCelestiaAddress) MarshalTo

func (m *MsgSetCelestiaAddress) MarshalTo(dAtA []byte) (int, error)

func (*MsgSetCelestiaAddress) MarshalToSizedBuffer

func (m *MsgSetCelestiaAddress) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*MsgSetCelestiaAddress) ProtoMessage

func (*MsgSetCelestiaAddress) ProtoMessage()

func (*MsgSetCelestiaAddress) Reset

func (m *MsgSetCelestiaAddress) Reset()

func (*MsgSetCelestiaAddress) Size

func (m *MsgSetCelestiaAddress) Size() (n int)

func (*MsgSetCelestiaAddress) String

func (m *MsgSetCelestiaAddress) String() string

func (*MsgSetCelestiaAddress) Unmarshal

func (m *MsgSetCelestiaAddress) Unmarshal(dAtA []byte) error

func (*MsgSetCelestiaAddress) Validate

func (msg *MsgSetCelestiaAddress) Validate(ac address.Codec) ([]byte, error)

func (*MsgSetCelestiaAddress) XXX_DiscardUnknown

func (m *MsgSetCelestiaAddress) XXX_DiscardUnknown()

func (*MsgSetCelestiaAddress) XXX_Marshal

func (m *MsgSetCelestiaAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*MsgSetCelestiaAddress) XXX_Merge

func (m *MsgSetCelestiaAddress) XXX_Merge(src proto.Message)

func (*MsgSetCelestiaAddress) XXX_Size

func (m *MsgSetCelestiaAddress) XXX_Size() int

func (*MsgSetCelestiaAddress) XXX_Unmarshal

func (m *MsgSetCelestiaAddress) XXX_Unmarshal(b []byte) error

type MsgSetCelestiaAddressResponse

type MsgSetCelestiaAddressResponse struct {
}

MsgSetCelestiaAddressResponse is the response type for the Msg/SetCelestiaAddress RPC method.

func (*MsgSetCelestiaAddressResponse) Descriptor

func (*MsgSetCelestiaAddressResponse) Descriptor() ([]byte, []int)

func (*MsgSetCelestiaAddressResponse) Marshal

func (m *MsgSetCelestiaAddressResponse) Marshal() (dAtA []byte, err error)

func (*MsgSetCelestiaAddressResponse) MarshalTo

func (m *MsgSetCelestiaAddressResponse) MarshalTo(dAtA []byte) (int, error)

func (*MsgSetCelestiaAddressResponse) MarshalToSizedBuffer

func (m *MsgSetCelestiaAddressResponse) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*MsgSetCelestiaAddressResponse) ProtoMessage

func (*MsgSetCelestiaAddressResponse) ProtoMessage()

func (*MsgSetCelestiaAddressResponse) Reset

func (m *MsgSetCelestiaAddressResponse) Reset()

func (*MsgSetCelestiaAddressResponse) Size

func (m *MsgSetCelestiaAddressResponse) Size() (n int)

func (*MsgSetCelestiaAddressResponse) String

func (*MsgSetCelestiaAddressResponse) Unmarshal

func (m *MsgSetCelestiaAddressResponse) Unmarshal(dAtA []byte) error

func (*MsgSetCelestiaAddressResponse) XXX_DiscardUnknown

func (m *MsgSetCelestiaAddressResponse) XXX_DiscardUnknown()

func (*MsgSetCelestiaAddressResponse) XXX_Marshal

func (m *MsgSetCelestiaAddressResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*MsgSetCelestiaAddressResponse) XXX_Merge

func (m *MsgSetCelestiaAddressResponse) XXX_Merge(src proto.Message)

func (*MsgSetCelestiaAddressResponse) XXX_Size

func (m *MsgSetCelestiaAddressResponse) XXX_Size() int

func (*MsgSetCelestiaAddressResponse) XXX_Unmarshal

func (m *MsgSetCelestiaAddressResponse) XXX_Unmarshal(b []byte) error

type QueryCelestiaAddressRequest

type QueryCelestiaAddressRequest struct {
	ValidatorAddress string `protobuf:"bytes,1,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"`
}

QueryCelestiaAddressRequest is the request type for the Query/CelestiaAddress RPC method.

func (*QueryCelestiaAddressRequest) Descriptor

func (*QueryCelestiaAddressRequest) Descriptor() ([]byte, []int)

func (*QueryCelestiaAddressRequest) GetValidatorAddress

func (m *QueryCelestiaAddressRequest) GetValidatorAddress() string

func (*QueryCelestiaAddressRequest) Marshal

func (m *QueryCelestiaAddressRequest) Marshal() (dAtA []byte, err error)

func (*QueryCelestiaAddressRequest) MarshalTo

func (m *QueryCelestiaAddressRequest) MarshalTo(dAtA []byte) (int, error)

func (*QueryCelestiaAddressRequest) MarshalToSizedBuffer

func (m *QueryCelestiaAddressRequest) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*QueryCelestiaAddressRequest) ProtoMessage

func (*QueryCelestiaAddressRequest) ProtoMessage()

func (*QueryCelestiaAddressRequest) Reset

func (m *QueryCelestiaAddressRequest) Reset()

func (*QueryCelestiaAddressRequest) Size

func (m *QueryCelestiaAddressRequest) Size() (n int)

func (*QueryCelestiaAddressRequest) String

func (m *QueryCelestiaAddressRequest) String() string

func (*QueryCelestiaAddressRequest) Unmarshal

func (m *QueryCelestiaAddressRequest) Unmarshal(dAtA []byte) error

func (*QueryCelestiaAddressRequest) XXX_DiscardUnknown

func (m *QueryCelestiaAddressRequest) XXX_DiscardUnknown()

func (*QueryCelestiaAddressRequest) XXX_Marshal

func (m *QueryCelestiaAddressRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*QueryCelestiaAddressRequest) XXX_Merge

func (m *QueryCelestiaAddressRequest) XXX_Merge(src proto.Message)

func (*QueryCelestiaAddressRequest) XXX_Size

func (m *QueryCelestiaAddressRequest) XXX_Size() int

func (*QueryCelestiaAddressRequest) XXX_Unmarshal

func (m *QueryCelestiaAddressRequest) XXX_Unmarshal(b []byte) error

type QueryCelestiaAddressResponse

type QueryCelestiaAddressResponse struct {
	CelestiaAddress string `protobuf:"bytes,1,opt,name=celestia_address,json=celestiaAddress,proto3" json:"celestia_address,omitempty"`
}

QueryCelestiaAddressResponse is the response type for the Query/CelestiaAddress RPC method.

func (*QueryCelestiaAddressResponse) Descriptor

func (*QueryCelestiaAddressResponse) Descriptor() ([]byte, []int)

func (*QueryCelestiaAddressResponse) GetCelestiaAddress

func (m *QueryCelestiaAddressResponse) GetCelestiaAddress() string

func (*QueryCelestiaAddressResponse) Marshal

func (m *QueryCelestiaAddressResponse) Marshal() (dAtA []byte, err error)

func (*QueryCelestiaAddressResponse) MarshalTo

func (m *QueryCelestiaAddressResponse) MarshalTo(dAtA []byte) (int, error)

func (*QueryCelestiaAddressResponse) MarshalToSizedBuffer

func (m *QueryCelestiaAddressResponse) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*QueryCelestiaAddressResponse) ProtoMessage

func (*QueryCelestiaAddressResponse) ProtoMessage()

func (*QueryCelestiaAddressResponse) Reset

func (m *QueryCelestiaAddressResponse) Reset()

func (*QueryCelestiaAddressResponse) Size

func (m *QueryCelestiaAddressResponse) Size() (n int)

func (*QueryCelestiaAddressResponse) String

func (*QueryCelestiaAddressResponse) Unmarshal

func (m *QueryCelestiaAddressResponse) Unmarshal(dAtA []byte) error

func (*QueryCelestiaAddressResponse) XXX_DiscardUnknown

func (m *QueryCelestiaAddressResponse) XXX_DiscardUnknown()

func (*QueryCelestiaAddressResponse) XXX_Marshal

func (m *QueryCelestiaAddressResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*QueryCelestiaAddressResponse) XXX_Merge

func (m *QueryCelestiaAddressResponse) XXX_Merge(src proto.Message)

func (*QueryCelestiaAddressResponse) XXX_Size

func (m *QueryCelestiaAddressResponse) XXX_Size() int

func (*QueryCelestiaAddressResponse) XXX_Unmarshal

func (m *QueryCelestiaAddressResponse) XXX_Unmarshal(b []byte) error

type QueryClient

type QueryClient interface {
	// Validators returns registered validators of the module.
	Validators(ctx context.Context, in *QueryValidatorsRequest, opts ...grpc.CallOption) (*QueryValidatorsResponse, error)
	CelestiaAddress(ctx context.Context, in *QueryCelestiaAddressRequest, opts ...grpc.CallOption) (*QueryCelestiaAddressResponse, error)
}

QueryClient is the client API for Query service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewQueryClient

func NewQueryClient(cc grpc1.ClientConn) QueryClient

type QueryServer

type QueryServer interface {
	// Validators returns registered validators of the module.
	Validators(context.Context, *QueryValidatorsRequest) (*QueryValidatorsResponse, error)
	CelestiaAddress(context.Context, *QueryCelestiaAddressRequest) (*QueryCelestiaAddressResponse, error)
}

QueryServer is the server API for Query service.

type QueryValidatorsRequest

type QueryValidatorsRequest struct {
}

QueryValidatorsRequest is the request type for the Query/Validators RPC method.

func (*QueryValidatorsRequest) Descriptor

func (*QueryValidatorsRequest) Descriptor() ([]byte, []int)

func (*QueryValidatorsRequest) Marshal

func (m *QueryValidatorsRequest) Marshal() (dAtA []byte, err error)

func (*QueryValidatorsRequest) MarshalTo

func (m *QueryValidatorsRequest) MarshalTo(dAtA []byte) (int, error)

func (*QueryValidatorsRequest) MarshalToSizedBuffer

func (m *QueryValidatorsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*QueryValidatorsRequest) ProtoMessage

func (*QueryValidatorsRequest) ProtoMessage()

func (*QueryValidatorsRequest) Reset

func (m *QueryValidatorsRequest) Reset()

func (*QueryValidatorsRequest) Size

func (m *QueryValidatorsRequest) Size() (n int)

func (*QueryValidatorsRequest) String

func (m *QueryValidatorsRequest) String() string

func (*QueryValidatorsRequest) Unmarshal

func (m *QueryValidatorsRequest) Unmarshal(dAtA []byte) error

func (*QueryValidatorsRequest) XXX_DiscardUnknown

func (m *QueryValidatorsRequest) XXX_DiscardUnknown()

func (*QueryValidatorsRequest) XXX_Marshal

func (m *QueryValidatorsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*QueryValidatorsRequest) XXX_Merge

func (m *QueryValidatorsRequest) XXX_Merge(src proto.Message)

func (*QueryValidatorsRequest) XXX_Size

func (m *QueryValidatorsRequest) XXX_Size() int

func (*QueryValidatorsRequest) XXX_Unmarshal

func (m *QueryValidatorsRequest) XXX_Unmarshal(b []byte) error

type QueryValidatorsResponse

type QueryValidatorsResponse struct {
	// validators is the returned validators from the module
	Validators []Validator `protobuf:"bytes,1,rep,name=validators,proto3" json:"validators"`
}

QueryValidatorResponse is the response type for the Query/Validators RPC method.

func (*QueryValidatorsResponse) Descriptor

func (*QueryValidatorsResponse) Descriptor() ([]byte, []int)

func (*QueryValidatorsResponse) GetValidators

func (m *QueryValidatorsResponse) GetValidators() []Validator

func (*QueryValidatorsResponse) Marshal

func (m *QueryValidatorsResponse) Marshal() (dAtA []byte, err error)

func (*QueryValidatorsResponse) MarshalTo

func (m *QueryValidatorsResponse) MarshalTo(dAtA []byte) (int, error)

func (*QueryValidatorsResponse) MarshalToSizedBuffer

func (m *QueryValidatorsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*QueryValidatorsResponse) ProtoMessage

func (*QueryValidatorsResponse) ProtoMessage()

func (*QueryValidatorsResponse) Reset

func (m *QueryValidatorsResponse) Reset()

func (*QueryValidatorsResponse) Size

func (m *QueryValidatorsResponse) Size() (n int)

func (*QueryValidatorsResponse) String

func (m *QueryValidatorsResponse) String() string

func (*QueryValidatorsResponse) Unmarshal

func (m *QueryValidatorsResponse) Unmarshal(dAtA []byte) error

func (*QueryValidatorsResponse) XXX_DiscardUnknown

func (m *QueryValidatorsResponse) XXX_DiscardUnknown()

func (*QueryValidatorsResponse) XXX_Marshal

func (m *QueryValidatorsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*QueryValidatorsResponse) XXX_Merge

func (m *QueryValidatorsResponse) XXX_Merge(src proto.Message)

func (*QueryValidatorsResponse) XXX_Size

func (m *QueryValidatorsResponse) XXX_Size() int

func (*QueryValidatorsResponse) XXX_Unmarshal

func (m *QueryValidatorsResponse) XXX_Unmarshal(b []byte) error

type UnimplementedMsgServer

type UnimplementedMsgServer struct {
}

UnimplementedMsgServer can be embedded to have forward compatible implementations.

func (*UnimplementedMsgServer) ProveBlock

func (*UnimplementedMsgServer) SetCelestiaAddress

type UnimplementedQueryServer

type UnimplementedQueryServer struct {
}

UnimplementedQueryServer can be embedded to have forward compatible implementations.

func (*UnimplementedQueryServer) CelestiaAddress

func (*UnimplementedQueryServer) Validators

type Validator

type Validator struct {
	ValidatorAddress string `protobuf:"bytes,1,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"`
	CelestiaAddress  string `protobuf:"bytes,2,opt,name=celestia_address,json=celestiaAddress,proto3" json:"celestia_address,omitempty"`
}

Validator is a mapping of a local validator's address to its Celestia transaction posting address for the purpose of feegranting blob posting on the DA layer.

func (*Validator) Descriptor

func (*Validator) Descriptor() ([]byte, []int)

func (*Validator) GetCelestiaAddress

func (m *Validator) GetCelestiaAddress() string

func (*Validator) GetValidatorAddress

func (m *Validator) GetValidatorAddress() string

func (*Validator) Marshal

func (m *Validator) Marshal() (dAtA []byte, err error)

func (*Validator) MarshalTo

func (m *Validator) MarshalTo(dAtA []byte) (int, error)

func (*Validator) MarshalToSizedBuffer

func (m *Validator) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Validator) ProtoMessage

func (*Validator) ProtoMessage()

func (*Validator) Reset

func (m *Validator) Reset()

func (*Validator) Size

func (m *Validator) Size() (n int)

func (*Validator) String

func (m *Validator) String() string

func (*Validator) Unmarshal

func (m *Validator) Unmarshal(dAtA []byte) error

func (*Validator) XXX_DiscardUnknown

func (m *Validator) XXX_DiscardUnknown()

func (*Validator) XXX_Marshal

func (m *Validator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Validator) XXX_Merge

func (m *Validator) XXX_Merge(src proto.Message)

func (*Validator) XXX_Size

func (m *Validator) XXX_Size() int

func (*Validator) XXX_Unmarshal

func (m *Validator) XXX_Unmarshal(b []byte) error

type Validators

type Validators struct {
	// A list of all the validators
	Validators []Validator `protobuf:"bytes,1,rep,name=validators,proto3" json:"validators"`
}

Validators is a collection of Validators.

func (*Validators) Descriptor

func (*Validators) Descriptor() ([]byte, []int)

func (*Validators) GetValidators

func (m *Validators) GetValidators() []Validator

func (*Validators) Marshal

func (m *Validators) Marshal() (dAtA []byte, err error)

func (*Validators) MarshalTo

func (m *Validators) MarshalTo(dAtA []byte) (int, error)

func (*Validators) MarshalToSizedBuffer

func (m *Validators) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Validators) ProtoMessage

func (*Validators) ProtoMessage()

func (*Validators) Reset

func (m *Validators) Reset()

func (*Validators) Size

func (m *Validators) Size() (n int)

func (*Validators) String

func (m *Validators) String() string

func (*Validators) Unmarshal

func (m *Validators) Unmarshal(dAtA []byte) error

func (*Validators) XXX_DiscardUnknown

func (m *Validators) XXX_DiscardUnknown()

func (*Validators) XXX_Marshal

func (m *Validators) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Validators) XXX_Merge

func (m *Validators) XXX_Merge(src proto.Message)

func (*Validators) XXX_Size

func (m *Validators) XXX_Size() int

func (*Validators) XXX_Unmarshal

func (m *Validators) XXX_Unmarshal(b []byte) error

Directories

Path Synopsis
api
module/v1
Code generated by protoc-gen-go-pulsar.
Code generated by protoc-gen-go-pulsar.
v1
Code generated by protoc-gen-go-pulsar.
Code generated by protoc-gen-go-pulsar.
celestia
blob/v1
Code generated by protoc-gen-go-pulsar.
Code generated by protoc-gen-go-pulsar.
core/v1/blob
Code generated by protoc-gen-go-pulsar.
Code generated by protoc-gen-go-pulsar.
client
cli

Jump to

Keyboard shortcuts

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