Documentation ¶
Index ¶
- Constants
- Variables
- func AmountToDecimalString(a *big.Int, d int) string
- type AddrDescForOutpointFunc
- type AddressAliasRecord
- type AddressDescriptor
- type BaseChain
- func (b *BaseChain) EthereumTypeEstimateGas(params map[string]interface{}) (uint64, error)
- func (b *BaseChain) EthereumTypeGetBalance(addrDesc AddressDescriptor) (*big.Int, error)
- func (b *BaseChain) EthereumTypeGetErc20ContractBalance(addrDesc, contractDesc AddressDescriptor) (*big.Int, error)
- func (b *BaseChain) EthereumTypeGetNonce(addrDesc AddressDescriptor) (uint64, error)
- func (b *BaseChain) GetBlockRaw(hash string) (string, error)
- func (b *BaseChain) GetChainParser() BlockChainParser
- func (b *BaseChain) GetContractInfo(contractDesc AddressDescriptor) (*ContractInfo, error)
- func (b *BaseChain) GetMempoolEntry(txid string) (*MempoolEntry, error)
- func (b *BaseChain) GetNetworkName() string
- func (p *BaseChain) GetTokenURI(contractDesc AddressDescriptor, tokenID *big.Int) (string, error)
- func (b *BaseChain) IsTestnet() bool
- type BaseMempool
- type BaseParser
- func (p *BaseParser) AmountDecimals() int
- func (p *BaseParser) AmountToBigInt(n common.JSONNumber) (big.Int, error)
- func (p *BaseParser) AmountToDecimalString(a *big.Int) string
- func (p *BaseParser) DerivationBasePath(descriptor *XpubDescriptor) (string, error)
- func (p *BaseParser) DeriveAddressDescriptors(descriptor *XpubDescriptor, change uint32, indexes []uint32) ([]AddressDescriptor, error)
- func (p *BaseParser) DeriveAddressDescriptorsFromTo(descriptor *XpubDescriptor, change uint32, fromIndex uint32, toIndex uint32) ([]AddressDescriptor, error)
- func (p *BaseParser) EthereumTypeGetTokenTransfersFromTx(tx *Tx) (TokenTransfers, error)
- func (p *BaseParser) FormatAddressAlias(address string, name string) string
- func (p *BaseParser) GetAddrDescForUnknownInput(tx *Tx, input int) AddressDescriptor
- func (p *BaseParser) GetChainType() ChainType
- func (p *BaseParser) IsAddrDescIndexable(addrDesc AddressDescriptor) bool
- func (p *BaseParser) KeepBlockAddresses() int
- func (p *BaseParser) MinimumCoinbaseConfirmations() int
- func (p *BaseParser) PackBlockHash(hash string) ([]byte, error)
- func (p *BaseParser) PackTx(tx *Tx, height uint32, blockTime int64) ([]byte, error)
- func (p *BaseParser) PackTxid(txid string) ([]byte, error)
- func (p *BaseParser) PackedTxidLen() int
- func (p *BaseParser) ParseBlock(b []byte) (*Block, error)
- func (p *BaseParser) ParseTx(b []byte) (*Tx, error)
- func (p *BaseParser) ParseTxFromJson(msg json.RawMessage) (*Tx, error)
- func (p *BaseParser) ParseXpub(xpub string) (*XpubDescriptor, error)
- func (p *BaseParser) SupportsVSize() bool
- func (p *BaseParser) UnpackBlockHash(buf []byte) (string, error)
- func (p *BaseParser) UnpackTx(buf []byte) (*Tx, uint32, error)
- func (p *BaseParser) UnpackTxid(buf []byte) (string, error)
- func (p *BaseParser) UseAddressAliases() bool
- type Block
- type BlockChain
- type BlockChainParser
- type BlockHeader
- type BlockInfo
- type ChainInfo
- type ChainType
- type ContractInfo
- type EVMClient
- type EVMClientSubscription
- type EVMHash
- type EVMHeader
- type EVMNewBlockSubscriber
- type EVMNewTxSubscriber
- type EVMRPCClient
- type EVMSubscriber
- type EthereumBlockSpecificData
- type EthereumInternalData
- type EthereumInternalTransactionType
- type EthereumInternalTransfer
- type EthereumParsedInputData
- type EthereumParsedInputParam
- type EthereumSpecificData
- type FourByteSignature
- type MQ
- type Mempool
- type MempoolBitcoinType
- type MempoolEntry
- type MempoolEthereumType
- func (m *MempoolEthereumType) AddTransactionToMempool(txid string)
- func (m *MempoolEthereumType) GetTxidFilterEntries(filterScripts string, fromTimestamp uint32) (MempoolTxidFilterEntries, error)
- func (m *MempoolEthereumType) RemoveTransactionFromMempool(txid string)
- func (m *MempoolEthereumType) Resync() (int, error)
- type MempoolTx
- type MempoolTxidEntries
- type MempoolTxidEntry
- type MempoolTxidFilterEntries
- type MempoolVin
- type MultiTokenValue
- type NotificationType
- type OnNewBlockFunc
- type OnNewTxAddrFunc
- type OnNewTxFunc
- type Outpoint
- type ProtoTransaction
- func (*ProtoTransaction) Descriptor() ([]byte, []int)deprecated
- func (x *ProtoTransaction) GetBlocktime() uint64
- func (x *ProtoTransaction) GetHeight() uint32
- func (x *ProtoTransaction) GetHex() []byte
- func (x *ProtoTransaction) GetLocktime() uint32
- func (x *ProtoTransaction) GetTxid() []byte
- func (x *ProtoTransaction) GetVSize() int64
- func (x *ProtoTransaction) GetVersion() int32
- func (x *ProtoTransaction) GetVin() []*ProtoTransaction_VinType
- func (x *ProtoTransaction) GetVout() []*ProtoTransaction_VoutType
- func (*ProtoTransaction) ProtoMessage()
- func (x *ProtoTransaction) ProtoReflect() protoreflect.Message
- func (x *ProtoTransaction) Reset()
- func (x *ProtoTransaction) String() string
- type ProtoTransaction_VinType
- func (*ProtoTransaction_VinType) Descriptor() ([]byte, []int)deprecated
- func (x *ProtoTransaction_VinType) GetAddresses() []string
- func (x *ProtoTransaction_VinType) GetCoinbase() string
- func (x *ProtoTransaction_VinType) GetScriptSigHex() []byte
- func (x *ProtoTransaction_VinType) GetSequence() uint32
- func (x *ProtoTransaction_VinType) GetTxid() []byte
- func (x *ProtoTransaction_VinType) GetVout() uint32
- func (*ProtoTransaction_VinType) ProtoMessage()
- func (x *ProtoTransaction_VinType) ProtoReflect() protoreflect.Message
- func (x *ProtoTransaction_VinType) Reset()
- func (x *ProtoTransaction_VinType) String() string
- type ProtoTransaction_VoutType
- func (*ProtoTransaction_VoutType) Descriptor() ([]byte, []int)deprecated
- func (x *ProtoTransaction_VoutType) GetAddresses() []string
- func (x *ProtoTransaction_VoutType) GetN() uint32
- func (x *ProtoTransaction_VoutType) GetScriptPubKeyHex() []byte
- func (x *ProtoTransaction_VoutType) GetValueSat() []byte
- func (*ProtoTransaction_VoutType) ProtoMessage()
- func (x *ProtoTransaction_VoutType) ProtoReflect() protoreflect.Message
- func (x *ProtoTransaction_VoutType) Reset()
- func (x *ProtoTransaction_VoutType) String() string
- type RPCError
- type RpcLog
- type RpcReceipt
- type RpcTransaction
- type ScriptPubKey
- type ScriptSig
- type ScriptType
- type TokenTransfer
- type TokenTransfers
- type TokenType
- type TokenTypeName
- type Tx
- type Vin
- type Vout
- type XpubDescriptor
Constants ¶
const ( // ChainBitcoinType is blockchain derived from bitcoin ChainBitcoinType = ChainType(iota) // ChainEthereumType is blockchain derived from ethereum ChainEthereumType )
const ( FungibleToken = TokenType(iota) // ERC20/BEP20 NonFungibleToken // ERC721/BEP721 MultiToken // ERC1155/BEP1155 )
TokenType enumeration
const ( P2PK = ScriptType(iota) P2PKH P2SHWPKH P2WPKH P2TR )
ScriptType enumeration
const ( CALL = EthereumInternalTransactionType(iota) CREATE SELFDESTRUCT )
EthereumInternalTransactionType enumeration
Variables ¶
var ( // ErrBlockNotFound is returned when block is not found // either unknown hash or too high height // can be returned from GetBlockHash, GetBlockHeader, GetBlock ErrBlockNotFound = errors.New("Block not found") // ErrAddressMissing is returned if address is not specified // for example To address in ethereum can be missing in case of contract transaction ErrAddressMissing = errors.New("Address missing") // ErrTxidMissing is returned if txid is not specified // for example coinbase transactions in Bitcoin ErrTxidMissing = errors.New("Txid missing") // ErrTxNotFound is returned if transaction was not found ErrTxNotFound = errors.New("Tx not found") )
errors with specific meaning returned by blockchain rpc
var EthereumTokenTypeMap = []TokenTypeName{ERC20TokenType, ERC771TokenType, ERC1155TokenType}
EthereumTokenTypeMap maps bchain.TokenType to TokenTypeName the map must match all bchain.TokenType to avoid index out of range panic
var File_bchain_tx_proto protoreflect.FileDescriptor
Functions ¶
Types ¶
type AddrDescForOutpointFunc ¶
type AddrDescForOutpointFunc func(outpoint Outpoint) (AddressDescriptor, *big.Int)
AddrDescForOutpointFunc returns address descriptor and value for given outpoint or nil if outpoint not found
type AddressAliasRecord ¶
AddressAliasRecord maps address to ENS name
type AddressDescriptor ¶
type AddressDescriptor []byte
AddressDescriptor is an opaque type obtained by parser.GetAddrDesc* methods
func AddressDescriptorFromString ¶
func AddressDescriptorFromString(s string) (AddressDescriptor, error)
AddressDescriptorFromString converts string created by AddressDescriptor.String to AddressDescriptor
func (AddressDescriptor) String ¶
func (ad AddressDescriptor) String() string
type BaseChain ¶
type BaseChain struct { Parser BlockChainParser Testnet bool Network string }
BaseChain is base type for bchain.BlockChain
func (*BaseChain) EthereumTypeEstimateGas ¶
EthereumTypeEstimateGas is not supported
func (*BaseChain) EthereumTypeGetBalance ¶
func (b *BaseChain) EthereumTypeGetBalance(addrDesc AddressDescriptor) (*big.Int, error)
EthereumTypeGetBalance is not supported
func (*BaseChain) EthereumTypeGetErc20ContractBalance ¶
func (b *BaseChain) EthereumTypeGetErc20ContractBalance(addrDesc, contractDesc AddressDescriptor) (*big.Int, error)
EthereumTypeGetErc20ContractBalance is not supported
func (*BaseChain) EthereumTypeGetNonce ¶
func (b *BaseChain) EthereumTypeGetNonce(addrDesc AddressDescriptor) (uint64, error)
EthereumTypeGetNonce is not supported
func (*BaseChain) GetBlockRaw ¶
GetBlockRaw is not supported by default
func (*BaseChain) GetChainParser ¶
func (b *BaseChain) GetChainParser() BlockChainParser
GetChainParser returns BlockChainParser
func (*BaseChain) GetContractInfo ¶
func (b *BaseChain) GetContractInfo(contractDesc AddressDescriptor) (*ContractInfo, error)
GetContractInfo is not supported
func (*BaseChain) GetMempoolEntry ¶
func (b *BaseChain) GetMempoolEntry(txid string) (*MempoolEntry, error)
GetMempoolEntry is not supported by default
func (*BaseChain) GetNetworkName ¶
GetNetworkName returns network name
func (*BaseChain) GetTokenURI ¶
GetContractInfo returns URI of non fungible or multi token defined by token id
type BaseMempool ¶
type BaseMempool struct { OnNewTxAddr OnNewTxAddrFunc OnNewTx OnNewTxFunc // contains filtered or unexported fields }
BaseMempool is mempool base handle
func (*BaseMempool) GetAddrDescTransactions ¶
func (m *BaseMempool) GetAddrDescTransactions(addrDesc AddressDescriptor) ([]Outpoint, error)
GetAddrDescTransactions returns slice of mempool transactions for given address descriptor, in reverse order
func (*BaseMempool) GetAllEntries ¶
func (m *BaseMempool) GetAllEntries() MempoolTxidEntries
GetAllEntries returns all mempool entries sorted by fist seen time in descending order
func (*BaseMempool) GetTransactionTime ¶
func (m *BaseMempool) GetTransactionTime(txid string) uint32
GetTransactionTime returns first seen time of a transaction
func (*BaseMempool) GetTransactions ¶
func (m *BaseMempool) GetTransactions(address string) ([]Outpoint, error)
GetTransactions returns slice of mempool transactions for given address
type BaseParser ¶
BaseParser implements data parsing/handling functionality base for all other parsers
func (*BaseParser) AmountDecimals ¶
func (p *BaseParser) AmountDecimals() int
AmountDecimals returns number of decimal places in amounts
func (*BaseParser) AmountToBigInt ¶
func (p *BaseParser) AmountToBigInt(n common.JSONNumber) (big.Int, error)
AmountToBigInt converts amount in common.JSONNumber (string) to big.Int it uses string operations to avoid problems with rounding
func (*BaseParser) AmountToDecimalString ¶
func (p *BaseParser) AmountToDecimalString(a *big.Int) string
AmountToDecimalString converts amount in big.Int to string with decimal point in the correct place
func (*BaseParser) DerivationBasePath ¶
func (p *BaseParser) DerivationBasePath(descriptor *XpubDescriptor) (string, error)
DerivationBasePath is unsupported
func (*BaseParser) DeriveAddressDescriptors ¶
func (p *BaseParser) DeriveAddressDescriptors(descriptor *XpubDescriptor, change uint32, indexes []uint32) ([]AddressDescriptor, error)
DeriveAddressDescriptors is unsupported
func (*BaseParser) DeriveAddressDescriptorsFromTo ¶
func (p *BaseParser) DeriveAddressDescriptorsFromTo(descriptor *XpubDescriptor, change uint32, fromIndex uint32, toIndex uint32) ([]AddressDescriptor, error)
DeriveAddressDescriptorsFromTo is unsupported
func (*BaseParser) EthereumTypeGetTokenTransfersFromTx ¶
func (p *BaseParser) EthereumTypeGetTokenTransfersFromTx(tx *Tx) (TokenTransfers, error)
EthereumTypeGetTokenTransfersFromTx is unsupported
func (*BaseParser) FormatAddressAlias ¶
func (p *BaseParser) FormatAddressAlias(address string, name string) string
FormatAddressAlias makes possible to do coin specific formatting to an address alias
func (*BaseParser) GetAddrDescForUnknownInput ¶
func (p *BaseParser) GetAddrDescForUnknownInput(tx *Tx, input int) AddressDescriptor
GetAddrDescForUnknownInput returns nil AddressDescriptor
func (*BaseParser) GetChainType ¶
func (p *BaseParser) GetChainType() ChainType
GetChainType is type of the blockchain, default is ChainBitcoinType
func (*BaseParser) IsAddrDescIndexable ¶
func (p *BaseParser) IsAddrDescIndexable(addrDesc AddressDescriptor) bool
IsAddrDescIndexable returns true if AddressDescriptor should be added to index by default all AddressDescriptors are indexable
func (*BaseParser) KeepBlockAddresses ¶
func (p *BaseParser) KeepBlockAddresses() int
KeepBlockAddresses returns number of blocks which are to be kept in blockaddresses column
func (*BaseParser) MinimumCoinbaseConfirmations ¶
func (p *BaseParser) MinimumCoinbaseConfirmations() int
MinimumCoinbaseConfirmations returns minimum number of confirmations a coinbase transaction must have before it can be spent
func (*BaseParser) PackBlockHash ¶
func (p *BaseParser) PackBlockHash(hash string) ([]byte, error)
PackBlockHash packs block hash to byte array
func (*BaseParser) PackTxid ¶
func (p *BaseParser) PackTxid(txid string) ([]byte, error)
PackTxid packs txid to byte array
func (*BaseParser) PackedTxidLen ¶
func (p *BaseParser) PackedTxidLen() int
PackedTxidLen returns length in bytes of packed txid
func (*BaseParser) ParseBlock ¶
func (p *BaseParser) ParseBlock(b []byte) (*Block, error)
ParseBlock parses raw block to our Block struct - currently not implemented
func (*BaseParser) ParseTx ¶
func (p *BaseParser) ParseTx(b []byte) (*Tx, error)
ParseTx parses byte array containing transaction and returns Tx struct - currently not implemented
func (*BaseParser) ParseTxFromJson ¶
func (p *BaseParser) ParseTxFromJson(msg json.RawMessage) (*Tx, error)
ParseTxFromJson parses JSON message containing transaction and returns Tx struct
func (*BaseParser) ParseXpub ¶
func (p *BaseParser) ParseXpub(xpub string) (*XpubDescriptor, error)
ParseXpub is unsupported
func (*BaseParser) SupportsVSize ¶
func (p *BaseParser) SupportsVSize() bool
SupportsVSize returns true if vsize of a transaction should be computed and returned by API
func (*BaseParser) UnpackBlockHash ¶
func (p *BaseParser) UnpackBlockHash(buf []byte) (string, error)
UnpackBlockHash unpacks byte array to block hash
func (*BaseParser) UnpackTx ¶
func (p *BaseParser) UnpackTx(buf []byte) (*Tx, uint32, error)
UnpackTx unpacks transaction from protobuf byte array
func (*BaseParser) UnpackTxid ¶
func (p *BaseParser) UnpackTxid(buf []byte) (string, error)
UnpackTxid unpacks byte array to txid
func (*BaseParser) UseAddressAliases ¶
func (p *BaseParser) UseAddressAliases() bool
UseAddressAliases returns true if address aliases are enabled
type Block ¶
type Block struct { BlockHeader Txs []Tx `json:"tx"` CoinSpecificData interface{} `json:"-"` }
Block is block header and list of transactions
type BlockChain ¶
type BlockChain interface { // life-cycle methods // initialize the block chain connector Initialize() error // create mempool but do not initialize it CreateMempool(BlockChain) (Mempool, error) // initialize mempool, create ZeroMQ (or other) subscription InitializeMempool(AddrDescForOutpointFunc, OnNewTxAddrFunc, OnNewTxFunc) error // shutdown mempool, ZeroMQ and block chain connections Shutdown(ctx context.Context) error // chain info IsTestnet() bool GetNetworkName() string GetSubversion() string GetCoinName() string GetChainInfo() (*ChainInfo, error) // requests GetBestBlockHash() (string, error) GetBestBlockHeight() (uint32, error) GetBlockHash(height uint32) (string, error) GetBlockHeader(hash string) (*BlockHeader, error) GetBlock(hash string, height uint32) (*Block, error) GetBlockInfo(hash string) (*BlockInfo, error) GetBlockRaw(hash string) (string, error) GetMempoolTransactions() ([]string, error) GetTransaction(txid string) (*Tx, error) GetTransactionForMempool(txid string) (*Tx, error) GetTransactionSpecific(tx *Tx) (json.RawMessage, error) EstimateSmartFee(blocks int, conservative bool) (big.Int, error) EstimateFee(blocks int) (big.Int, error) SendRawTransaction(tx string) (string, error) GetMempoolEntry(txid string) (*MempoolEntry, error) GetContractInfo(contractDesc AddressDescriptor) (*ContractInfo, error) // parser GetChainParser() BlockChainParser // EthereumType specific EthereumTypeGetBalance(addrDesc AddressDescriptor) (*big.Int, error) EthereumTypeGetNonce(addrDesc AddressDescriptor) (uint64, error) EthereumTypeEstimateGas(params map[string]interface{}) (uint64, error) EthereumTypeGetErc20ContractBalance(addrDesc, contractDesc AddressDescriptor) (*big.Int, error) GetTokenURI(contractDesc AddressDescriptor, tokenID *big.Int) (string, error) }
BlockChain defines common interface to block chain daemon
type BlockChainParser ¶
type BlockChainParser interface { // type of the blockchain GetChainType() ChainType // KeepBlockAddresses returns number of blocks which are to be kept in blockTxs column // to be used for rollbacks KeepBlockAddresses() int // AmountDecimals returns number of decimal places in coin amounts AmountDecimals() int // UseAddressAliases returns true if address aliases are enabled UseAddressAliases() bool // MinimumCoinbaseConfirmations returns minimum number of confirmations a coinbase transaction must have before it can be spent MinimumCoinbaseConfirmations() int // SupportsVSize returns true if vsize of a transaction should be computed and returned by API SupportsVSize() bool // AmountToDecimalString converts amount in big.Int to string with decimal point in the correct place AmountToDecimalString(a *big.Int) string // AmountToBigInt converts amount in common.JSONNumber (string) to big.Int // it uses string operations to avoid problems with rounding AmountToBigInt(n common.JSONNumber) (big.Int, error) // address descriptor conversions GetAddrDescFromVout(output *Vout) (AddressDescriptor, error) GetAddrDescFromAddress(address string) (AddressDescriptor, error) GetAddressesFromAddrDesc(addrDesc AddressDescriptor) ([]string, bool, error) GetScriptFromAddrDesc(addrDesc AddressDescriptor) ([]byte, error) IsAddrDescIndexable(addrDesc AddressDescriptor) bool // transactions PackedTxidLen() int PackTxid(txid string) ([]byte, error) UnpackTxid(buf []byte) (string, error) ParseTx(b []byte) (*Tx, error) ParseTxFromJson(json.RawMessage) (*Tx, error) PackTx(tx *Tx, height uint32, blockTime int64) ([]byte, error) UnpackTx(buf []byte) (*Tx, uint32, error) GetAddrDescForUnknownInput(tx *Tx, input int) AddressDescriptor // blocks PackBlockHash(hash string) ([]byte, error) UnpackBlockHash(buf []byte) (string, error) ParseBlock(b []byte) (*Block, error) // xpub ParseXpub(xpub string) (*XpubDescriptor, error) DerivationBasePath(descriptor *XpubDescriptor) (string, error) DeriveAddressDescriptors(descriptor *XpubDescriptor, change uint32, indexes []uint32) ([]AddressDescriptor, error) DeriveAddressDescriptorsFromTo(descriptor *XpubDescriptor, change uint32, fromIndex uint32, toIndex uint32) ([]AddressDescriptor, error) // EthereumType specific EthereumTypeGetTokenTransfersFromTx(tx *Tx) (TokenTransfers, error) // AddressAlias FormatAddressAlias(address string, name string) string }
BlockChainParser defines common interface to parsing and conversions of block chain data
type BlockHeader ¶
type BlockHeader struct { Hash string `json:"hash"` Prev string `json:"previousblockhash"` Next string `json:"nextblockhash"` Height uint32 `json:"height"` Confirmations int `json:"confirmations"` Size int `json:"size"` Time int64 `json:"time,omitempty"` }
BlockHeader contains limited data (as needed for indexing) from backend block header
type BlockInfo ¶
type BlockInfo struct { BlockHeader Version common.JSONNumber `json:"version"` MerkleRoot string `json:"merkleroot"` Nonce common.JSONNumber `json:"nonce"` Bits string `json:"bits"` Difficulty common.JSONNumber `json:"difficulty"` Txids []string `json:"tx,omitempty"` }
BlockInfo contains extended block header data and a list of block txids
type ChainInfo ¶
type ChainInfo struct { Chain string `json:"chain"` Blocks int `json:"blocks"` Headers int `json:"headers"` Bestblockhash string `json:"bestblockhash"` Difficulty string `json:"difficulty"` SizeOnDisk int64 `json:"size_on_disk"` Version string `json:"version"` Subversion string `json:"subversion"` ProtocolVersion string `json:"protocolversion"` Timeoffset float64 `json:"timeoffset"` Warnings string `json:"warnings"` ConsensusVersion string `json:"consensus_version,omitempty"` Consensus interface{} `json:"consensus,omitempty"` }
ChainInfo is used to get information about blockchain
type ContractInfo ¶
type ContractInfo struct { Type TokenTypeName `json:"type"` Contract string `json:"contract"` Name string `json:"name"` Symbol string `json:"symbol"` Decimals int `json:"decimals"` CreatedInBlock uint32 `json:"createdInBlock,omitempty"` DestructedInBlock uint32 `json:"destructedInBlock,omitempty"` }
ContractInfo contains info about a contract
type EVMClient ¶
type EVMClient interface { NetworkID(ctx context.Context) (*big.Int, error) HeaderByNumber(ctx context.Context, number *big.Int) (EVMHeader, error) SuggestGasPrice(ctx context.Context) (*big.Int, error) EstimateGas(ctx context.Context, msg interface{}) (uint64, error) BalanceAt(ctx context.Context, addrDesc AddressDescriptor, blockNumber *big.Int) (*big.Int, error) NonceAt(ctx context.Context, addrDesc AddressDescriptor, blockNumber *big.Int) (uint64, error) }
EVMClient provides the necessary client functionality for evm chain sync
type EVMClientSubscription ¶
type EVMClientSubscription interface { Err() <-chan error Unsubscribe() }
EVMClientSubscription provides interaction with an evm client subscription
type EVMHash ¶
type EVMHash interface {
Hex() string
}
EVMHash provides access to the necessary hash data for evm chain sync
type EVMNewBlockSubscriber ¶
type EVMNewBlockSubscriber interface { EVMSubscriber Read() (EVMHeader, bool) }
EVMNewBlockSubscriber provides interaction with a new block subscription channel
type EVMNewTxSubscriber ¶
type EVMNewTxSubscriber interface { EVMSubscriber Read() (EVMHash, bool) }
EVMNewBlockSubscriber provides interaction with a new tx subscription channel
type EVMRPCClient ¶
type EVMRPCClient interface { EthSubscribe(ctx context.Context, channel interface{}, args ...interface{}) (EVMClientSubscription, error) CallContext(ctx context.Context, result interface{}, method string, args ...interface{}) error Close() }
EVMRPCClient provides the necessary rpc functionality for evm chain sync
type EVMSubscriber ¶
type EVMSubscriber interface { Channel() interface{} Close() }
EVMSubscriber provides interaction with a subscription channel
type EthereumBlockSpecificData ¶
type EthereumBlockSpecificData struct { InternalDataError string AddressAliasRecords []AddressAliasRecord Contracts []ContractInfo }
EthereumBlockSpecificData contain data specific for Ethereum block
type EthereumInternalData ¶
type EthereumInternalData struct { Type EthereumInternalTransactionType `json:"type"` Contract string `json:"contract,omitempty"` Transfers []EthereumInternalTransfer `json:"transfers,omitempty"` Error string }
EthereumInternalTransaction contains internal transfers
type EthereumInternalTransactionType ¶
type EthereumInternalTransactionType int
EthereumInternalTransactionType - type of ethereum transaction from internal data
type EthereumInternalTransfer ¶
type EthereumInternalTransfer struct { Type EthereumInternalTransactionType `json:"type"` From string `json:"from"` To string `json:"to"` Value big.Int `json:"value"` }
EthereumInternalTransfer contains data about internal transfer
type EthereumParsedInputData ¶
type EthereumParsedInputData struct { MethodId string `json:"methodId"` Name string `json:"name"` Function string `json:"function,omitempty"` Params []EthereumParsedInputParam `json:"params,omitempty"` }
EthereumParsedInputData contains the parsed data for an input data hex payload
type EthereumParsedInputParam ¶
type EthereumParsedInputParam struct { Type string `json:"type"` Values []string `json:"values,omitempty"` }
EthereumParsedInputParam contains data about a contract function parameter
type EthereumSpecificData ¶
type EthereumSpecificData struct { Tx *RpcTransaction `json:"tx"` InternalData *EthereumInternalData `json:"internalData,omitempty"` Receipt *RpcReceipt `json:"receipt,omitempty"` }
EthereumSpecificData contains data specific to Ethereum transactions
type FourByteSignature ¶
type FourByteSignature struct { // stored in DB Name string Parameters []string // processed from DB data and stored only in cache DecamelName string Function string ParsedParameters []abi.Type }
FourByteSignature contains data about about a contract function signature
type MQ ¶
type MQ struct {
// contains filtered or unexported fields
}
MQ is message queue listener handle
type Mempool ¶
type Mempool interface { Resync() (int, error) GetTransactions(address string) ([]Outpoint, error) GetAddrDescTransactions(addrDesc AddressDescriptor) ([]Outpoint, error) GetAllEntries() MempoolTxidEntries GetTransactionTime(txid string) uint32 GetTxidFilterEntries(filterScripts string, fromTimestamp uint32) (MempoolTxidFilterEntries, error) }
Mempool defines common interface to mempool
type MempoolBitcoinType ¶
type MempoolBitcoinType struct { BaseMempool AddrDescForOutpoint AddrDescForOutpointFunc // contains filtered or unexported fields }
MempoolBitcoinType is mempool handle.
func NewMempoolBitcoinType ¶
func NewMempoolBitcoinType(chain BlockChain, workers int, subworkers int, golombFilterP uint8, filterScripts string) *MempoolBitcoinType
NewMempoolBitcoinType creates new mempool handler. For now there is no cleanup of sync routines, the expectation is that the mempool is created only once per process
func (*MempoolBitcoinType) GetTxidFilterEntries ¶
func (m *MempoolBitcoinType) GetTxidFilterEntries(filterScripts string, fromTimestamp uint32) (MempoolTxidFilterEntries, error)
GetTxidFilterEntries returns all mempool entries with golomb filter from
func (*MempoolBitcoinType) Resync ¶
func (m *MempoolBitcoinType) Resync() (int, error)
Resync gets mempool transactions and maps outputs to transactions. Resync is not reentrant, it should be called from a single thread. Read operations (GetTransactions) are safe.
type MempoolEntry ¶
type MempoolEntry struct { Size uint32 `json:"size"` FeeSat big.Int Fee common.JSONNumber `json:"fee"` ModifiedFeeSat big.Int ModifiedFee common.JSONNumber `json:"modifiedfee"` Time uint64 `json:"time"` Height uint32 `json:"height"` DescendantCount uint32 `json:"descendantcount"` DescendantSize uint32 `json:"descendantsize"` DescendantFees uint32 `json:"descendantfees"` AncestorCount uint32 `json:"ancestorcount"` AncestorSize uint32 `json:"ancestorsize"` AncestorFees uint32 `json:"ancestorfees"` Depends []string `json:"depends"` }
MempoolEntry is used to get data about mempool entry
type MempoolEthereumType ¶
type MempoolEthereumType struct { BaseMempool // contains filtered or unexported fields }
MempoolEthereumType is mempool handle of EthereumType chains
func NewMempoolEthereumType ¶
func NewMempoolEthereumType(chain BlockChain, mempoolTxTimeoutHours int, queryBackendOnResync bool) *MempoolEthereumType
NewMempoolEthereumType creates new mempool handler.
func (*MempoolEthereumType) AddTransactionToMempool ¶
func (m *MempoolEthereumType) AddTransactionToMempool(txid string)
AddTransactionToMempool adds transactions to mempool
func (*MempoolEthereumType) GetTxidFilterEntries ¶
func (m *MempoolEthereumType) GetTxidFilterEntries(filterScripts string, fromTimestamp uint32) (MempoolTxidFilterEntries, error)
GetTxidFilterEntries returns all mempool entries with golomb filter from
func (*MempoolEthereumType) RemoveTransactionFromMempool ¶
func (m *MempoolEthereumType) RemoveTransactionFromMempool(txid string)
RemoveTransactionFromMempool removes transaction from mempool
func (*MempoolEthereumType) Resync ¶
func (m *MempoolEthereumType) Resync() (int, error)
Resync ethereum type removes timed out transactions and returns number of transactions in mempool. Transactions are added/removed by AddTransactionToMempool/RemoveTransactionFromMempool methods
type MempoolTx ¶
type MempoolTx struct { Hex string `json:"hex"` Txid string `json:"txid"` Version int32 `json:"version"` LockTime uint32 `json:"locktime"` VSize int64 `json:"vsize,omitempty"` Vin []MempoolVin `json:"vin"` Vout []Vout `json:"vout"` Blocktime int64 `json:"blocktime,omitempty"` TokenTransfers TokenTransfers `json:"-"` CoinSpecificData interface{} `json:"-"` }
MempoolTx is blockchain transaction in mempool optimized for onNewTx notification
type MempoolTxidEntries ¶
type MempoolTxidEntries []MempoolTxidEntry
MempoolTxidEntries is array of MempoolTxidEntry
func (MempoolTxidEntries) Len ¶
func (a MempoolTxidEntries) Len() int
func (MempoolTxidEntries) Less ¶
func (a MempoolTxidEntries) Less(i, j int) bool
func (MempoolTxidEntries) Swap ¶
func (a MempoolTxidEntries) Swap(i, j int)
type MempoolTxidEntry ¶
MempoolTxidEntry contains mempool txid with first seen time
type MempoolTxidFilterEntries ¶
MempoolTxidFilterEntries is a map of txids to mempool golomb filters
type MempoolVin ¶
type MempoolVin struct { Vin AddrDesc AddressDescriptor `json:"-"` ValueSat big.Int }
MempoolVin contains data about tx input
type NotificationType ¶
type NotificationType int
NotificationType is type of notification
const ( // NotificationUnknown is unknown NotificationUnknown NotificationType = iota // NotificationNewBlock message is sent when there is a new block to be imported NotificationNewBlock NotificationType = iota // NotificationNewTx message is sent when there is a new mempool transaction NotificationNewTx NotificationType = iota )
type OnNewBlockFunc ¶
OnNewBlockFunc is used to send notification about a new block
type OnNewTxAddrFunc ¶
type OnNewTxAddrFunc func(tx *Tx, desc AddressDescriptor)
OnNewTxAddrFunc is used to send notification about a new transaction/address
type OnNewTxFunc ¶
type OnNewTxFunc func(tx *MempoolTx)
OnNewTxFunc is used to send notification about a new transaction/address
type ProtoTransaction ¶
type ProtoTransaction struct { Txid []byte `protobuf:"bytes,1,opt,name=Txid,proto3" json:"Txid,omitempty"` Hex []byte `protobuf:"bytes,2,opt,name=Hex,proto3" json:"Hex,omitempty"` Blocktime uint64 `protobuf:"varint,3,opt,name=Blocktime,proto3" json:"Blocktime,omitempty"` Locktime uint32 `protobuf:"varint,4,opt,name=Locktime,proto3" json:"Locktime,omitempty"` Height uint32 `protobuf:"varint,5,opt,name=Height,proto3" json:"Height,omitempty"` Vin []*ProtoTransaction_VinType `protobuf:"bytes,6,rep,name=Vin,proto3" json:"Vin,omitempty"` Vout []*ProtoTransaction_VoutType `protobuf:"bytes,7,rep,name=Vout,proto3" json:"Vout,omitempty"` Version int32 `protobuf:"varint,8,opt,name=Version,proto3" json:"Version,omitempty"` VSize int64 `protobuf:"varint,9,opt,name=VSize,proto3" json:"VSize,omitempty"` // contains filtered or unexported fields }
func (*ProtoTransaction) Descriptor
deprecated
func (*ProtoTransaction) Descriptor() ([]byte, []int)
Deprecated: Use ProtoTransaction.ProtoReflect.Descriptor instead.
func (*ProtoTransaction) GetBlocktime ¶
func (x *ProtoTransaction) GetBlocktime() uint64
func (*ProtoTransaction) GetHeight ¶
func (x *ProtoTransaction) GetHeight() uint32
func (*ProtoTransaction) GetHex ¶
func (x *ProtoTransaction) GetHex() []byte
func (*ProtoTransaction) GetLocktime ¶
func (x *ProtoTransaction) GetLocktime() uint32
func (*ProtoTransaction) GetTxid ¶
func (x *ProtoTransaction) GetTxid() []byte
func (*ProtoTransaction) GetVSize ¶
func (x *ProtoTransaction) GetVSize() int64
func (*ProtoTransaction) GetVersion ¶
func (x *ProtoTransaction) GetVersion() int32
func (*ProtoTransaction) GetVin ¶
func (x *ProtoTransaction) GetVin() []*ProtoTransaction_VinType
func (*ProtoTransaction) GetVout ¶
func (x *ProtoTransaction) GetVout() []*ProtoTransaction_VoutType
func (*ProtoTransaction) ProtoMessage ¶
func (*ProtoTransaction) ProtoMessage()
func (*ProtoTransaction) ProtoReflect ¶
func (x *ProtoTransaction) ProtoReflect() protoreflect.Message
func (*ProtoTransaction) Reset ¶
func (x *ProtoTransaction) Reset()
func (*ProtoTransaction) String ¶
func (x *ProtoTransaction) String() string
type ProtoTransaction_VinType ¶
type ProtoTransaction_VinType struct { Coinbase string `protobuf:"bytes,1,opt,name=Coinbase,proto3" json:"Coinbase,omitempty"` Txid []byte `protobuf:"bytes,2,opt,name=Txid,proto3" json:"Txid,omitempty"` Vout uint32 `protobuf:"varint,3,opt,name=Vout,proto3" json:"Vout,omitempty"` ScriptSigHex []byte `protobuf:"bytes,4,opt,name=ScriptSigHex,proto3" json:"ScriptSigHex,omitempty"` Sequence uint32 `protobuf:"varint,5,opt,name=Sequence,proto3" json:"Sequence,omitempty"` Addresses []string `protobuf:"bytes,6,rep,name=Addresses,proto3" json:"Addresses,omitempty"` // contains filtered or unexported fields }
func (*ProtoTransaction_VinType) Descriptor
deprecated
func (*ProtoTransaction_VinType) Descriptor() ([]byte, []int)
Deprecated: Use ProtoTransaction_VinType.ProtoReflect.Descriptor instead.
func (*ProtoTransaction_VinType) GetAddresses ¶
func (x *ProtoTransaction_VinType) GetAddresses() []string
func (*ProtoTransaction_VinType) GetCoinbase ¶
func (x *ProtoTransaction_VinType) GetCoinbase() string
func (*ProtoTransaction_VinType) GetScriptSigHex ¶
func (x *ProtoTransaction_VinType) GetScriptSigHex() []byte
func (*ProtoTransaction_VinType) GetSequence ¶
func (x *ProtoTransaction_VinType) GetSequence() uint32
func (*ProtoTransaction_VinType) GetTxid ¶
func (x *ProtoTransaction_VinType) GetTxid() []byte
func (*ProtoTransaction_VinType) GetVout ¶
func (x *ProtoTransaction_VinType) GetVout() uint32
func (*ProtoTransaction_VinType) ProtoMessage ¶
func (*ProtoTransaction_VinType) ProtoMessage()
func (*ProtoTransaction_VinType) ProtoReflect ¶
func (x *ProtoTransaction_VinType) ProtoReflect() protoreflect.Message
func (*ProtoTransaction_VinType) Reset ¶
func (x *ProtoTransaction_VinType) Reset()
func (*ProtoTransaction_VinType) String ¶
func (x *ProtoTransaction_VinType) String() string
type ProtoTransaction_VoutType ¶
type ProtoTransaction_VoutType struct { ValueSat []byte `protobuf:"bytes,1,opt,name=ValueSat,proto3" json:"ValueSat,omitempty"` N uint32 `protobuf:"varint,2,opt,name=N,proto3" json:"N,omitempty"` ScriptPubKeyHex []byte `protobuf:"bytes,3,opt,name=ScriptPubKeyHex,proto3" json:"ScriptPubKeyHex,omitempty"` Addresses []string `protobuf:"bytes,4,rep,name=Addresses,proto3" json:"Addresses,omitempty"` // contains filtered or unexported fields }
func (*ProtoTransaction_VoutType) Descriptor
deprecated
func (*ProtoTransaction_VoutType) Descriptor() ([]byte, []int)
Deprecated: Use ProtoTransaction_VoutType.ProtoReflect.Descriptor instead.
func (*ProtoTransaction_VoutType) GetAddresses ¶
func (x *ProtoTransaction_VoutType) GetAddresses() []string
func (*ProtoTransaction_VoutType) GetN ¶
func (x *ProtoTransaction_VoutType) GetN() uint32
func (*ProtoTransaction_VoutType) GetScriptPubKeyHex ¶
func (x *ProtoTransaction_VoutType) GetScriptPubKeyHex() []byte
func (*ProtoTransaction_VoutType) GetValueSat ¶
func (x *ProtoTransaction_VoutType) GetValueSat() []byte
func (*ProtoTransaction_VoutType) ProtoMessage ¶
func (*ProtoTransaction_VoutType) ProtoMessage()
func (*ProtoTransaction_VoutType) ProtoReflect ¶
func (x *ProtoTransaction_VoutType) ProtoReflect() protoreflect.Message
func (*ProtoTransaction_VoutType) Reset ¶
func (x *ProtoTransaction_VoutType) Reset()
func (*ProtoTransaction_VoutType) String ¶
func (x *ProtoTransaction_VoutType) String() string
type RpcLog ¶
type RpcLog struct { Address string `json:"address"` Topics []string `json:"topics"` Data string `json:"data"` }
RpcLog is returned by eth_getLogs
type RpcReceipt ¶
type RpcReceipt struct { GasUsed string `json:"gasUsed"` Status string `json:"status"` Logs []*RpcLog `json:"logs"` }
RpcLog is returned by eth_getTransactionReceipt
type RpcTransaction ¶
type RpcTransaction struct { AccountNonce string `json:"nonce"` GasPrice string `json:"gasPrice"` GasLimit string `json:"gas"` To string `json:"to"` // nil means contract creation Value string `json:"value"` Payload string `json:"input"` Hash string `json:"hash"` BlockNumber string `json:"blockNumber"` BlockHash string `json:"blockHash,omitempty"` From string `json:"from"` TransactionIndex string `json:"transactionIndex"` }
RpcTransaction is returned by eth_getTransactionByHash
type ScriptPubKey ¶
type ScriptPubKey struct { // Asm string `json:"asm"` Hex string `json:"hex,omitempty"` // Type string `json:"type"` Addresses []string `json:"addresses"` }
ScriptPubKey contains data about output script
type ScriptSig ¶
type ScriptSig struct { // Asm string `json:"asm"` Hex string `json:"hex"` }
ScriptSig contains data about input script
type ScriptType ¶
type ScriptType int
ScriptType - type of output script parsed from xpub (descriptor)
type TokenTransfer ¶
type TokenTransfer struct { Type TokenType Contract string From string To string Value big.Int MultiTokenValues []MultiTokenValue }
TokenTransfer contains a single token transfer
type TokenTransfers ¶
type TokenTransfers []*TokenTransfer
TokenTransfers is array of TokenTransfer
func (TokenTransfers) Len ¶
func (a TokenTransfers) Len() int
func (TokenTransfers) Less ¶
func (a TokenTransfers) Less(i, j int) bool
func (TokenTransfers) Swap ¶
func (a TokenTransfers) Swap(i, j int)
type TokenTypeName ¶
type TokenTypeName string
TokenTypeName specifies type of token
const ( UnknownTokenType TokenTypeName = "" // XPUBAddressTokenType is address derived from xpub XPUBAddressTokenType TokenTypeName = "XPUBAddress" )
Token types
const ( ERC20TokenType TokenTypeName = "ERC20" ERC771TokenType TokenTypeName = "ERC721" ERC1155TokenType TokenTypeName = "ERC1155" )
Ethereum token type names
type Tx ¶
type Tx struct { Hex string `json:"hex"` Txid string `json:"txid"` Version int32 `json:"version"` LockTime uint32 `json:"locktime"` VSize int64 `json:"vsize,omitempty"` Vin []Vin `json:"vin"` Vout []Vout `json:"vout"` BlockHeight uint32 `json:"blockHeight,omitempty"` // BlockHash string `json:"blockhash,omitempty"` Confirmations uint32 `json:"confirmations,omitempty"` Time int64 `json:"time,omitempty"` Blocktime int64 `json:"blocktime,omitempty"` CoinSpecificData interface{} `json:"-"` }
Tx is blockchain transaction unnecessary fields are commented out to avoid overhead
type Vin ¶
type Vin struct { Coinbase string `json:"coinbase"` Txid string `json:"txid"` Vout uint32 `json:"vout"` ScriptSig ScriptSig `json:"scriptSig"` Sequence uint32 `json:"sequence"` Addresses []string `json:"addresses"` }
Vin contains data about tx input
type Vout ¶
type Vout struct { ValueSat big.Int JsonValue common.JSONNumber `json:"value"` N uint32 `json:"n"` ScriptPubKey ScriptPubKey `json:"scriptPubKey"` }
Vout contains data about tx output
type XpubDescriptor ¶
type XpubDescriptor struct { XpubDescriptor string // The whole descriptor Xpub string // Xpub part of the descriptor Type ScriptType Bip string ChangeIndexes []uint32 ExtKey interface{} // extended key parsed from xpub, usually of type *hdkeychain.ExtendedKey }
XpubDescriptor contains parsed data from xpub descriptor