Documentation ¶
Overview ¶
包过滤器为块实现以太坊过滤系统, 事务和日志事件。
Index ¶
- Variables
- type Backend
- type EventSystem
- type Filter
- type FilterCriteria
- type PublicFilterAPI
- func (api *PublicFilterAPI) GetFilterChanges(id rpc.ID) (interface{}, error)
- func (api *PublicFilterAPI) GetFilterLogs(ctx context.Context, id rpc.ID) ([]*types.Log, error)
- func (api *PublicFilterAPI) GetLogs(ctx context.Context, crit FilterCriteria) ([]*types.Log, error)
- func (api *PublicFilterAPI) Logs(ctx context.Context, crit FilterCriteria) (*rpc.Subscription, error)
- func (api *PublicFilterAPI) NewBlockFilter() rpc.ID
- func (api *PublicFilterAPI) NewFilter(crit FilterCriteria) (rpc.ID, error)
- func (api *PublicFilterAPI) NewHeads(ctx context.Context) (*rpc.Subscription, error)
- func (api *PublicFilterAPI) NewPendingTransactionFilter() rpc.ID
- func (api *PublicFilterAPI) NewPendingTransactions(ctx context.Context) (*rpc.Subscription, error)
- func (api *PublicFilterAPI) UninstallFilter(id rpc.ID) bool
- type Subscription
- type Type
Constants ¶
This section is empty.
Variables ¶
var (
ErrInvalidSubscriptionID = errors.New("invalid id")
)
Functions ¶
This section is empty.
Types ¶
type Backend ¶
type Backend interface { ChainDb() ethdb.Database EventMux() *event.TypeMux HeaderByNumber(ctx context.Context, blockNr rpc.BlockNumber) (*types.Header, error) HeaderByHash(ctx context.Context, blockHash common.Hash) (*types.Header, error) GetReceipts(ctx context.Context, blockHash common.Hash) (types.Receipts, error) GetLogs(ctx context.Context, blockHash common.Hash) ([][]*types.Log, error) SubscribeNewTxsEvent(chan<- core.NewTxsEvent) event.Subscription SubscribeChainEvent(ch chan<- core.ChainEvent) event.Subscription SubscribeRemovedLogsEvent(ch chan<- core.RemovedLogsEvent) event.Subscription SubscribeLogsEvent(ch chan<- []*types.Log) event.Subscription BloomStatus() (uint64, uint64) ServiceFilter(ctx context.Context, session *bloombits.MatcherSession) }
type EventSystem ¶
type EventSystem struct {
// contains filtered or unexported fields
}
EventSystem creates subscriptions, processes events and broadcasts them to the 符合订阅条件的订阅。
func NewEventSystem ¶
func NewEventSystem(mux *event.TypeMux, backend Backend, lightMode bool) *EventSystem
newEventSystem创建一个新的管理器,用于侦听给定mux上的事件, 分析并过滤它们。它使用全部映射来检索过滤器更改。这个 工作循环保存自己的索引,用于将事件转发到筛选器。
返回的管理器有一个需要用stop函数停止的循环 或者停止给定的多路复用器。
func (*EventSystem) SubscribeLogs ¶
func (es *EventSystem) SubscribeLogs(crit ethereum.FilterQuery, logs chan []*types.Log) (*Subscription, error)
subscriptLogs创建一个订阅,该订阅将写入与 给定日志通道的给定条件。从和到的默认值 块为“最新”。如果FromBlock>ToBlock,则返回错误。
func (*EventSystem) SubscribeNewHeads ¶
func (es *EventSystem) SubscribeNewHeads(headers chan *types.Header) *Subscription
SUBSCRIBENEWEADS创建一个订阅,该订阅写入的块头为 进口链。
func (*EventSystem) SubscribePendingTxs ¶
func (es *EventSystem) SubscribePendingTxs(hashes chan []common.Hash) *Subscription
订阅BuffixTxs创建一个订阅事务哈希的订阅。 进入事务池的事务。
type Filter ¶
type Filter struct {
// contains filtered or unexported fields
}
筛选器可用于检索和筛选日志。
func NewBlockFilter ¶
func NewBlockFilter(backend Backend, block common.Hash, addresses []common.Address, topics [][]common.Hash) *Filter
newblockfilter创建一个新的过滤器,它直接检查 用来判断它是否有趣的块。
type FilterCriteria ¶
type FilterCriteria ethereum.FilterQuery
FilterCriteria表示创建新筛选器的请求。 与ethereum.filterquery相同,但使用unmashaljson()方法。
func (*FilterCriteria) UnmarshalJSON ¶
func (args *FilterCriteria) UnmarshalJSON(data []byte) error
用给定的数据取消标记JSON集合*参数字段。
type PublicFilterAPI ¶
type PublicFilterAPI struct {
// contains filtered or unexported fields
}
publicfilterapi提供创建和管理过滤器的支持。这将允许外部客户端检索 与以太坊协议相关的信息,如ALS块、事务和日志。
func NewPublicFilterAPI ¶
func NewPublicFilterAPI(backend Backend, lightMode bool) *PublicFilterAPI
new publicfilterapi返回新的publicfilterapi实例。
func (*PublicFilterAPI) GetFilterChanges ¶
func (api *PublicFilterAPI) GetFilterChanges(id rpc.ID) (interface{}, error)
GetFilterChanges返回具有给定ID的筛选器的日志,自 上次打电话的时候。这可以用于轮询。
对于挂起的事务和块筛选器,结果是[]common.hash。 (挂起)日志筛选器返回[]日志。
https://github.com/ethereum/wiki/wiki/json-rpc_eth_getfilterchanges
func (*PublicFilterAPI) GetFilterLogs ¶
GetFilterLogs返回具有给定ID的筛选器的日志。 如果找不到筛选器,则返回一个空的日志数组。
https://github.com/ethereum/wiki/wiki/json-rpc_eth_getfilterlogs
func (*PublicFilterAPI) GetLogs ¶
func (api *PublicFilterAPI) GetLogs(ctx context.Context, crit FilterCriteria) ([]*types.Log, error)
GetLogs返回与存储在状态中的给定参数匹配的日志。
https://github.com/ethereum/wiki/wiki/json-rpc eth getlogs
func (*PublicFilterAPI) Logs ¶
func (api *PublicFilterAPI) Logs(ctx context.Context, crit FilterCriteria) (*rpc.Subscription, error)
日志创建一个订阅,该订阅为所有符合给定筛选条件的新日志激发。
func (*PublicFilterAPI) NewBlockFilter ¶
func (api *PublicFilterAPI) NewBlockFilter() rpc.ID
newblockfilter创建一个过滤器,用于获取导入到链中的块。 它是筛选包的一部分,因为轮询与ethgetfilterchanges一起进行。
https://github.com/ethereum/wiki/wiki/json-rpc eth newblockfilter
func (*PublicFilterAPI) NewFilter ¶
func (api *PublicFilterAPI) NewFilter(crit FilterCriteria) (rpc.ID, error)
new filter创建新的筛选器并返回筛选器ID。它可以是 用于在状态更改时检索日志。此方法不能 用于获取已存储在状态中的日志。
“从”和“到”块的默认条件为“最新”。 使用“最新”作为块号将返回已开采块的日志。 使用“挂起”作为块号返回尚未挖掘(挂起)块的日志。 如果日志被删除(链ReRoG),则返回以前返回的日志。 再次,但将移除的属性设置为true。
如果“fromblock”>toblock,则返回错误。
https://github.com/ethereum/wiki/wiki/json-rpc_eth_newfilter
func (*PublicFilterAPI) NewHeads ¶
func (api *PublicFilterAPI) NewHeads(ctx context.Context) (*rpc.Subscription, error)
每当新(header)块附加到链时,newheads都会发送通知。
func (*PublicFilterAPI) NewPendingTransactionFilter ¶
func (api *PublicFilterAPI) NewPendingTransactionFilter() rpc.ID
NewPendingtTransactionFilter创建一个筛选器,用于获取挂起的事务哈希 当事务进入挂起状态时。
它是筛选器包的一部分,因为此筛选器可以通过 “eth”getfilterchanges“轮询方法,也用于日志筛选器。
https://github.com/ethereum/wiki/wiki/json-rpc_eth_newpendingtransactionfilter
func (*PublicFilterAPI) NewPendingTransactions ¶
func (api *PublicFilterAPI) NewPendingTransactions(ctx context.Context) (*rpc.Subscription, error)
NewPendingtTransactions创建每次事务触发的订阅 进入事务池,并从该节点管理的事务之一签名。
func (*PublicFilterAPI) UninstallFilter ¶
func (api *PublicFilterAPI) UninstallFilter(id rpc.ID) bool
uninstallfilter删除具有给定筛选器ID的筛选器。
https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_uninstallfilter
type Subscription ¶
订阅是在客户端为特定事件注册自身时创建的。
func (*Subscription) Err ¶
func (sub *Subscription) Err() <-chan error
Err returns a channel that is closed when unsubscribed.
type Type ¶
type Type byte
类型确定筛选器的类型,并用于将筛选器放入 添加正确的桶。
const ( //UnknownSubscription表示未知的订阅类型 UnknownSubscription Type = iota //新日志或已删除日志的日志订阅查询(chain reorg) LogsSubscription //PendingLogs对挂起块中的日志的订阅查询 PendingLogsSubscription //MinedAndPendingLogs对挖掘和挂起块中的日志的订阅查询。 MinedAndPendingLogsSubscription //PendingtTransactionsSubscription查询待处理的Tx哈希 //进入挂起状态的事务 PendingTransactionsSubscription //块订阅查询导入块的哈希 BlocksSubscription //LastSubscription跟踪最后一个索引 LastIndexSubscription )