types

package
v3.4.0 Latest Latest
Warning

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

Go to latest
Published: Nov 7, 2022 License: MIT Imports: 15 Imported by: 412

Documentation

Index

Constants

View Source
const (
	// SubModuleName defines the IBC port name
	SubModuleName = "port"

	// StoreKey is the store key string for IBC ports
	StoreKey = SubModuleName

	// RouterKey is the message route for IBC ports
	RouterKey = SubModuleName

	// QuerierRoute is the querier route for IBC ports
	QuerierRoute = SubModuleName
)

Variables

View Source
var (
	ErrPortExists   = sdkerrors.Register(SubModuleName, 2, "port is already binded")
	ErrPortNotFound = sdkerrors.Register(SubModuleName, 3, "port not found")
	ErrInvalidPort  = sdkerrors.Register(SubModuleName, 4, "invalid port")
	ErrInvalidRoute = sdkerrors.Register(SubModuleName, 5, "route not found")
)

IBC port sentinel errors

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")
)

Functions

func GetModuleOwner

func GetModuleOwner(modules []string) string

GetModuleOwner enforces that only IBC and the module bound to port can own the capability while future implementations may allow multiple modules to bind to a port, currently we only allow one module to be bound to a port at any given time

func RegisterQueryServer

func RegisterQueryServer(s grpc1.Server, srv QueryServer)

Types

type IBCModule

type IBCModule interface {
	// OnChanOpenInit will verify that the relayer-chosen parameters are
	// valid and perform any custom INIT logic.It may return an error if
	// the chosen parameters are invalid in which case the handshake is aborted.
	// OnChanOpenInit should return an error if the provided version is invalid.
	OnChanOpenInit(
		ctx sdk.Context,
		order channeltypes.Order,
		connectionHops []string,
		portID string,
		channelID string,
		channelCap *capabilitytypes.Capability,
		counterparty channeltypes.Counterparty,
		version string,
	) error

	// OnChanOpenTry will verify the relayer-chosen parameters along with the
	// counterparty-chosen version string and perform custom TRY logic.
	// If the relayer-chosen parameters are invalid, the callback must return
	// an error to abort the handshake. If the counterparty-chosen version is not
	// compatible with this modules supported versions, the callback must return
	// an error to abort the handshake. If the versions are compatible, the try callback
	// must select the final version string and return it to core IBC.
	// OnChanOpenTry may also perform custom initialization logic
	OnChanOpenTry(
		ctx sdk.Context,
		order channeltypes.Order,
		connectionHops []string,
		portID,
		channelID string,
		channelCap *capabilitytypes.Capability,
		counterparty channeltypes.Counterparty,
		counterpartyVersion string,
	) (version string, err error)

	// OnChanOpenAck will error if the counterparty selected version string
	// is invalid to abort the handshake. It may also perform custom ACK logic.
	OnChanOpenAck(
		ctx sdk.Context,
		portID,
		channelID string,
		counterpartyChannelID string,
		counterpartyVersion string,
	) error

	// OnChanOpenConfirm will perform custom CONFIRM logic and may error to abort the handshake.
	OnChanOpenConfirm(
		ctx sdk.Context,
		portID,
		channelID string,
	) error

	OnChanCloseInit(
		ctx sdk.Context,
		portID,
		channelID string,
	) error

	OnChanCloseConfirm(
		ctx sdk.Context,
		portID,
		channelID string,
	) error

	// OnRecvPacket must return an acknowledgement that implements the Acknowledgement interface.
	// In the case of an asynchronous acknowledgement, nil should be returned.
	// If the acknowledgement returned is successful, the state changes on callback are written,
	// otherwise the application state changes are discarded. In either case the packet is received
	// and the acknowledgement is written (in synchronous cases).
	OnRecvPacket(
		ctx sdk.Context,
		packet channeltypes.Packet,
		relayer sdk.AccAddress,
	) exported.Acknowledgement

	OnAcknowledgementPacket(
		ctx sdk.Context,
		packet channeltypes.Packet,
		acknowledgement []byte,
		relayer sdk.AccAddress,
	) error

	OnTimeoutPacket(
		ctx sdk.Context,
		packet channeltypes.Packet,
		relayer sdk.AccAddress,
	) error
}

IBCModule defines an interface that implements all the callbacks that modules must define as specified in ICS-26

type ICS4Wrapper

type ICS4Wrapper interface {
	SendPacket(
		ctx sdk.Context,
		chanCap *capabilitytypes.Capability,
		packet exported.PacketI,
	) error

	WriteAcknowledgement(
		ctx sdk.Context,
		chanCap *capabilitytypes.Capability,
		packet exported.PacketI,
		ack exported.Acknowledgement,
	) error
}

ICS4Wrapper implements the ICS4 interfaces that IBC applications use to send packets and acknolwedgements.

type Middleware

type Middleware interface {
	IBCModule
	ICS4Wrapper
}

Middleware must implement IBCModule to wrap communication from core IBC to underlying application and ICS4Wrapper to wrap communication from underlying application to core IBC.

type QueryAppVersionRequest

type QueryAppVersionRequest struct {
	// port unique identifier
	PortId string `protobuf:"bytes,1,opt,name=port_id,json=portId,proto3" json:"port_id,omitempty"`
	// connection unique identifier
	ConnectionId string `protobuf:"bytes,2,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty"`
	// whether the channel is ordered or unordered
	Ordering types.Order `protobuf:"varint,3,opt,name=ordering,proto3,enum=ibc.core.channel.v1.Order" json:"ordering,omitempty"`
	// counterparty channel end
	Counterparty *types.Counterparty `protobuf:"bytes,4,opt,name=counterparty,proto3" json:"counterparty,omitempty"`
	// proposed version
	ProposedVersion string `protobuf:"bytes,5,opt,name=proposed_version,json=proposedVersion,proto3" json:"proposed_version,omitempty"`
}

QueryAppVersionRequest is the request type for the Query/AppVersion RPC method

func (*QueryAppVersionRequest) Descriptor

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

func (*QueryAppVersionRequest) GetConnectionId

func (m *QueryAppVersionRequest) GetConnectionId() string

func (*QueryAppVersionRequest) GetCounterparty

func (m *QueryAppVersionRequest) GetCounterparty() *types.Counterparty

func (*QueryAppVersionRequest) GetOrdering

func (m *QueryAppVersionRequest) GetOrdering() types.Order

func (*QueryAppVersionRequest) GetPortId

func (m *QueryAppVersionRequest) GetPortId() string

func (*QueryAppVersionRequest) GetProposedVersion

func (m *QueryAppVersionRequest) GetProposedVersion() string

func (*QueryAppVersionRequest) Marshal

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

func (*QueryAppVersionRequest) MarshalTo

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

func (*QueryAppVersionRequest) MarshalToSizedBuffer

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

func (*QueryAppVersionRequest) ProtoMessage

func (*QueryAppVersionRequest) ProtoMessage()

func (*QueryAppVersionRequest) Reset

func (m *QueryAppVersionRequest) Reset()

func (*QueryAppVersionRequest) Size

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

func (*QueryAppVersionRequest) String

func (m *QueryAppVersionRequest) String() string

func (*QueryAppVersionRequest) Unmarshal

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

func (*QueryAppVersionRequest) XXX_DiscardUnknown

func (m *QueryAppVersionRequest) XXX_DiscardUnknown()

func (*QueryAppVersionRequest) XXX_Marshal

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

func (*QueryAppVersionRequest) XXX_Merge

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

func (*QueryAppVersionRequest) XXX_Size

func (m *QueryAppVersionRequest) XXX_Size() int

func (*QueryAppVersionRequest) XXX_Unmarshal

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

type QueryAppVersionResponse

type QueryAppVersionResponse struct {
	// port id associated with the request identifiers
	PortId string `protobuf:"bytes,1,opt,name=port_id,json=portId,proto3" json:"port_id,omitempty"`
	// supported app version
	Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
}

QueryAppVersionResponse is the response type for the Query/AppVersion RPC method.

func NewQueryAppVersionResponse

func NewQueryAppVersionResponse(portID, version string) *QueryAppVersionResponse

NewQueryAppVersionResponse creates a new QueryAppVersionResponse instance

func (*QueryAppVersionResponse) Descriptor

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

func (*QueryAppVersionResponse) GetPortId

func (m *QueryAppVersionResponse) GetPortId() string

func (*QueryAppVersionResponse) GetVersion

func (m *QueryAppVersionResponse) GetVersion() string

func (*QueryAppVersionResponse) Marshal

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

func (*QueryAppVersionResponse) MarshalTo

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

func (*QueryAppVersionResponse) MarshalToSizedBuffer

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

func (*QueryAppVersionResponse) ProtoMessage

func (*QueryAppVersionResponse) ProtoMessage()

func (*QueryAppVersionResponse) Reset

func (m *QueryAppVersionResponse) Reset()

func (*QueryAppVersionResponse) Size

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

func (*QueryAppVersionResponse) String

func (m *QueryAppVersionResponse) String() string

func (*QueryAppVersionResponse) Unmarshal

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

func (*QueryAppVersionResponse) XXX_DiscardUnknown

func (m *QueryAppVersionResponse) XXX_DiscardUnknown()

func (*QueryAppVersionResponse) XXX_Marshal

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

func (*QueryAppVersionResponse) XXX_Merge

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

func (*QueryAppVersionResponse) XXX_Size

func (m *QueryAppVersionResponse) XXX_Size() int

func (*QueryAppVersionResponse) XXX_Unmarshal

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

type QueryClient

type QueryClient interface {
	// AppVersion queries an IBC Port and determines the appropriate application version to be used
	AppVersion(ctx context.Context, in *QueryAppVersionRequest, opts ...grpc.CallOption) (*QueryAppVersionResponse, 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 {
	// AppVersion queries an IBC Port and determines the appropriate application version to be used
	AppVersion(context.Context, *QueryAppVersionRequest) (*QueryAppVersionResponse, error)
}

QueryServer is the server API for Query service.

type Router

type Router struct {
	// contains filtered or unexported fields
}

The router is a map from module name to the IBCModule which contains all the module-defined callbacks required by ICS-26

func NewRouter

func NewRouter() *Router

func (*Router) AddRoute

func (rtr *Router) AddRoute(module string, cbs IBCModule) *Router

AddRoute adds IBCModule for a given module name. It returns the Router so AddRoute calls can be linked. It will panic if the Router is sealed.

func (*Router) GetRoute

func (rtr *Router) GetRoute(module string) (IBCModule, bool)

GetRoute returns a IBCModule for a given module.

func (*Router) HasRoute

func (rtr *Router) HasRoute(module string) bool

HasRoute returns true if the Router has a module registered or false otherwise.

func (*Router) Seal

func (rtr *Router) Seal()

Seal prevents the Router from any subsequent route handlers to be registered. Seal will panic if called more than once.

func (Router) Sealed

func (rtr Router) Sealed() bool

Sealed returns a boolean signifying if the Router is sealed or not.

type UnimplementedQueryServer

type UnimplementedQueryServer struct {
}

UnimplementedQueryServer can be embedded to have forward compatible implementations.

func (*UnimplementedQueryServer) AppVersion

Jump to

Keyboard shortcuts

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