types

package
v0.0.0-...-f498596 Latest Latest
Warning

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

Go to latest
Published: Feb 9, 2023 License: Apache-2.0 Imports: 16 Imported by: 0

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 FacadedMiddleware

type FacadedMiddleware struct {
	*common.SelectorStrategy
}

func (*FacadedMiddleware) GetAppVersion

func (f *FacadedMiddleware) GetAppVersion(ctx sdk.Context, portID, channelID string) (string, bool)

func (*FacadedMiddleware) NegotiateAppVersion

func (f *FacadedMiddleware) NegotiateAppVersion(ctx sdk.Context, order channeltypes.Order, connectionID string, portID string, counterparty channeltypes.Counterparty, proposedVersion string) (version string, err error)

func (*FacadedMiddleware) OnAcknowledgementPacket

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

func (*FacadedMiddleware) OnChanCloseConfirm

func (f *FacadedMiddleware) OnChanCloseConfirm(ctx sdk.Context, portID, channelID string) error

func (*FacadedMiddleware) OnChanCloseInit

func (f *FacadedMiddleware) OnChanCloseInit(ctx sdk.Context, portID, channelID string) error

func (*FacadedMiddleware) OnChanOpenAck

func (f *FacadedMiddleware) OnChanOpenAck(ctx sdk.Context, portID, channelID string, counterpartyChannelID string, counterpartyVersion string) error

func (*FacadedMiddleware) OnChanOpenConfirm

func (f *FacadedMiddleware) OnChanOpenConfirm(ctx sdk.Context, portID, channelID string) error

func (*FacadedMiddleware) OnChanOpenInit

func (f *FacadedMiddleware) OnChanOpenInit(ctx sdk.Context, order channeltypes.Order, connectionHops []string, portID string, channelID string, channelCap *capabilitytypes.Capability, counterparty channeltypes.Counterparty, version string) (string, error)

func (*FacadedMiddleware) OnChanOpenTry

func (f *FacadedMiddleware) OnChanOpenTry(ctx sdk.Context, order channeltypes.Order, connectionHops []string, portID, channelID string, channelCap *capabilitytypes.Capability, counterparty channeltypes.Counterparty, version, counterpartyVersion string) (string, error)

func (*FacadedMiddleware) OnRecvPacket

func (f *FacadedMiddleware) OnRecvPacket(ctx sdk.Context, packet channeltypes.Packet, relayer sdk.AccAddress) exported.Acknowledgement

func (*FacadedMiddleware) OnTimeoutPacket

func (f *FacadedMiddleware) OnTimeoutPacket(ctx sdk.Context, packet channeltypes.Packet, relayer sdk.AccAddress) error

func (*FacadedMiddleware) SendPacket

func (f *FacadedMiddleware) SendPacket(ctx sdk.Context, chanCap *capabilitytypes.Capability, packet exported.PacketI) error

func (*FacadedMiddleware) WriteAcknowledgement

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

type IBCModule

type IBCModule interface {
	OnChanOpenInit(
		ctx sdk.Context,
		order channeltypes.Order,
		connectionHops []string,
		portID string,
		channelID string,
		channelCap *capabilitytypes.Capability,
		counterparty channeltypes.Counterparty,
		version string,
	) (string, error)

	OnChanOpenTry(
		ctx sdk.Context,
		order channeltypes.Order,
		connectionHops []string,
		portID,
		channelID string,
		channelCap *capabilitytypes.Capability,
		counterparty channeltypes.Counterparty,
		version,
		counterpartyVersion string,
	) (string, error)

	OnChanOpenAck(
		ctx sdk.Context,
		portID,
		channelID string,
		counterpartyChannelID string,
		counterpartyVersion string,
	) error

	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

	// NegotiateAppVersion performs application version negotiation given the provided channel ordering, connectionID, portID, counterparty and proposed version.
	// An error is returned if version negotiation cannot be performed. For example, an application module implementing this interface
	// may decide to return an error in the event of the proposed version being incompatible with it's own
	NegotiateAppVersion(
		ctx sdk.Context,
		order channeltypes.Order,
		connectionID string,
		portID string,
		counterparty channeltypes.Counterparty,
		proposedVersion string,
	) (version string, err 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

	GetAppVersion(
		ctx sdk.Context,
		portID,
		channelID string,
	) (string, bool)
}

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

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.

func NewFacadedMiddleware

func NewFacadedMiddleware(defaultMiddleware Middleware, factories ...common.SelectorFactory) Middleware

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