zmq

package
v0.0.0-...-a039820 Latest Latest
Warning

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

Go to latest
Published: Apr 3, 2024 License: MIT, Apache-2.0 Imports: 9 Imported by: 0

README

go-monero ZMQ

Taken from github.com/cirocosta/go-monero

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

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

func NewClient

func NewClient(endpoint string, topics ...Topic) *Client

NewClient instantiates a new client that will receive monerod's zmq events.

  • `topics` is a list of fully-formed zmq topic to subscribe to

  • `endpoint` is the full address where monerod has been configured to publish the messages to, including the network schama. for instance, considering that monerod has been started with

    monerod --zmq-pub tcp://127.0.0.1:18085

    `endpoint` should be 'tcp://127.0.0.1:18085'.

func (*Client) Close

func (c *Client) Close() error

Close closes any established connection, if any.

func (*Client) Listen

func (c *Client) Listen(ctx context.Context, fullChainMain func(chainMain *FullChainMain), fullTxPoolAdd func(txs []FullTxPoolAdd), fullMinerData func(main *FullMinerData), minimalChainMain func(chainMain *MinimalChainMain), minimalTxPoolAdd func(txs []TxMempoolData)) error

Listen listens for a list of topics pre-configured for this client (via NewClient).

type FullChainMain

type FullChainMain struct {
	MajorVersion int        `json:"major_version"`
	MinorVersion int        `json:"minor_version"`
	Timestamp    int64      `json:"timestamp"`
	PrevID       types.Hash `json:"prev_id"`
	Nonce        uint64     `json:"nonce"`
	MinerTx      struct {
		Version    int   `json:"version"`
		UnlockTime int64 `json:"unlock_time"`
		Inputs     []struct {
			Gen struct {
				Height uint64 `json:"height"`
			} `json:"gen"`
		} `json:"inputs"`
		Outputs []struct {
			Amount uint64 `json:"amount"`
			ToKey  *struct {
				Key crypto.PublicKeyBytes `json:"key"`
			} `json:"to_key"`
			ToTaggedKey *struct {
				Key     crypto.PublicKeyBytes `json:"key"`
				ViewTag string                `json:"view_tag"`
			} `json:"to_tagged_key"`
		} `json:"outputs"`
		Extra      string        `json:"extra"`
		Signatures []interface{} `json:"signatures"`
		Ringct     struct {
			Type        int           `json:"type"`
			Encrypted   []interface{} `json:"encrypted"`
			Commitments []interface{} `json:"commitments"`
			Fee         uint64        `json:"fee"`
		} `json:"ringct"`
	} `json:"miner_tx"`
	TxHashes []types.Hash `json:"tx_hashes"`
}

type FullMinerData

type FullMinerData struct {
	MajorVersion          uint8            `json:"major_version"`
	Height                uint64           `json:"height"`
	PrevId                types.Hash       `json:"prev_id"`
	SeedHash              types.Hash       `json:"seed_hash"`
	Difficulty            types.Difficulty `json:"difficulty"`
	MedianWeight          uint64           `json:"median_weight"`
	AlreadyGeneratedCoins uint64           `json:"already_generated_coins"`
	MedianTimestamp       uint64           `json:"median_timestamp"`
	TxBacklog             []TxMempoolData  `json:"tx_backlog"`
}

type FullTxPoolAdd

type FullTxPoolAdd struct {
	Version    int   `json:"version"`
	UnlockTime int64 `json:"unlock_time"`
	Inputs     []struct {
		ToKey struct {
			Amount     uint64     `json:"amount"`
			KeyOffsets []uint64   `json:"key_offsets"`
			KeyImage   types.Hash `json:"key_image"`
		} `json:"to_key"`
	} `json:"inputs"`
	Outputs []struct {
		Amount int `json:"amount"`
		ToKey  struct {
			Key crypto.PublicKeyBytes `json:"key"`
		} `json:"to_key"`
	} `json:"outputs"`
	Extra      string        `json:"extra"`
	Signatures []interface{} `json:"signatures"`
	Ringct     struct {
		Type      int `json:"type"`
		Encrypted []struct {
			Mask   string `json:"mask"`
			Amount string `json:"amount"`
		} `json:"encrypted"`
		Commitments []string `json:"commitments"`
		Fee         int      `json:"fee"`
		Prunable    struct {
			RangeProofs  []interface{} `json:"range_proofs"`
			Bulletproofs []struct {
				V      []string `json:"V"`
				AUpper string   `json:"A"`
				S      string   `json:"S"`
				T1     string   `json:"T1"`
				T2     string   `json:"T2"`
				Taux   string   `json:"taux"`
				Mu     string   `json:"mu"`
				L      []string `json:"L"`
				R      []string `json:"R"`
				ALower string   `json:"a"`
				B      string   `json:"b"`
				T      string   `json:"t"`
			} `json:"bulletproofs"`
			Mlsags     []interface{} `json:"mlsags"`
			PseudoOuts []string      `json:"pseudo_outs"`
		} `json:"prunable"`
	} `json:"ringct"`
}

type MinimalChainMain

type MinimalChainMain struct {
	FirstHeight uint64       `json:"first_height"`
	FirstPrevID types.Hash   `json:"first_prev_id"`
	Ids         []types.Hash `json:"ids"`
}

type Stream

type Stream struct {
	FullChainMainC    func(*FullChainMain)
	FullTxPoolAddC    func([]FullTxPoolAdd)
	FullMinerDataC    func(*FullMinerData)
	MinimalChainMainC func(*MinimalChainMain)
	MinimalTxPoolAddC func([]TxMempoolData)
}

Stream provides channels where instances of the desired topic object are sent to.

type Topic

type Topic string
const (
	TopicUnknown Topic = "unknown"

	TopicMinimalTxPoolAdd Topic = "json-minimal-txpool_add"
	TopicFullTxPoolAdd    Topic = "json-full-txpool_add"

	TopicMinimalChainMain Topic = "json-minimal-chain_main"
	TopicFullChainMain    Topic = "json-full-chain_main"

	TopicFullMinerData Topic = "json-full-miner_data"
)

type TxMempoolData

type TxMempoolData struct {
	Id       types.Hash `json:"id"`
	BlobSize uint64     `json:"blob_size"`
	Weight   uint64     `json:"weight"`
	Fee      uint64     `json:"fee"`
}

Jump to

Keyboard shortcuts

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