Documentation ¶
Index ¶
- Variables
- func GetChainParams(chain string) *chaincfg.Params
- func NewBitcoinRPC(config json.RawMessage, pushHandler func(bchain.NotificationType)) (bchain.BlockChain, error)
- func TryParseOPReturn(script []byte) string
- type BitcoinParser
- func (p *BitcoinParser) GetAddrDescFromAddress(address string) (bchain.AddressDescriptor, error)
- func (p *BitcoinParser) GetAddrDescFromVout(output *bchain.Vout) (bchain.AddressDescriptor, error)
- func (p *BitcoinParser) GetAddressesFromAddrDesc(addrDesc bchain.AddressDescriptor) ([]string, bool, error)
- func (p *BitcoinParser) GetScriptFromAddrDesc(addrDesc bchain.AddressDescriptor) ([]byte, error)
- func (p *BitcoinParser) PackTx(tx *bchain.Tx, height uint32, blockTime int64) ([]byte, error)
- func (p *BitcoinParser) ParseBlock(b []byte) (*bchain.Block, error)
- func (p *BitcoinParser) ParseTx(b []byte) (*bchain.Tx, error)
- func (p *BitcoinParser) TxFromMsgTx(t *wire.MsgTx, parseAddresses bool) bchain.Tx
- func (p *BitcoinParser) UnpackTx(buf []byte) (*bchain.Tx, uint32, error)
- type BitcoinRPC
- func (b *BitcoinRPC) Call(req interface{}, res interface{}) error
- func (b *BitcoinRPC) EstimateFee(blocks int) (big.Int, error)
- func (b *BitcoinRPC) EstimateSmartFee(blocks int, conservative bool) (big.Int, error)
- func (b *BitcoinRPC) GetBestBlockHash() (string, error)
- func (b *BitcoinRPC) GetBestBlockHeight() (uint32, error)
- func (b *BitcoinRPC) GetBlock(hash string, height uint32) (*bchain.Block, error)
- func (b *BitcoinRPC) GetBlockFull(hash string) (*bchain.Block, error)
- func (b *BitcoinRPC) GetBlockHash(height uint32) (string, error)
- func (b *BitcoinRPC) GetBlockHeader(hash string) (*bchain.BlockHeader, error)
- func (b *BitcoinRPC) GetBlockInfo(hash string) (*bchain.BlockInfo, error)
- func (b *BitcoinRPC) GetBlockRaw(hash string) ([]byte, error)
- func (b *BitcoinRPC) GetBlockWithoutHeader(hash string, height uint32) (*bchain.Block, error)
- func (b *BitcoinRPC) GetChainInfo() (*bchain.ChainInfo, error)
- func (b *BitcoinRPC) GetChainInfoAndInitializeMempool(bc bchain.BlockChain) (string, error)
- func (b *BitcoinRPC) GetChainParser() bchain.BlockChainParser
- func (b *BitcoinRPC) GetCoinName() string
- func (b *BitcoinRPC) GetMempool() ([]string, error)
- func (b *BitcoinRPC) GetMempoolEntry(txid string) (*bchain.MempoolEntry, error)
- func (b *BitcoinRPC) GetMempoolTransactions(address string) ([]string, error)
- func (b *BitcoinRPC) GetMempoolTransactionsForAddrDesc(addrDesc bchain.AddressDescriptor) ([]string, error)
- func (b *BitcoinRPC) GetNetworkName() string
- func (b *BitcoinRPC) GetSubversion() string
- func (b *BitcoinRPC) GetTransaction(txid string) (*bchain.Tx, error)
- func (b *BitcoinRPC) GetTransactionForMempool(txid string) (*bchain.Tx, error)
- func (b *BitcoinRPC) Initialize() error
- func (b *BitcoinRPC) IsTestnet() bool
- func (b *BitcoinRPC) ResyncMempool(onNewTxAddr bchain.OnNewTxAddrFunc) (int, error)
- func (b *BitcoinRPC) SendRawTransaction(tx string) (string, error)
- func (b *BitcoinRPC) Shutdown(ctx context.Context) error
- type BlockThin
- type CmdEstimateFee
- type CmdEstimateSmartFee
- type CmdGetBestBlockHash
- type CmdGetBlock
- type CmdGetBlockChainInfo
- type CmdGetBlockCount
- type CmdGetBlockHash
- type CmdGetBlockHeader
- type CmdGetMempool
- type CmdGetMempoolEntry
- type CmdGetNetworkInfo
- type CmdGetRawTransaction
- type CmdSendRawTransaction
- type Configuration
- type JSONMarshalerV1
- type JSONMarshalerV2
- type OutputScriptToAddressesFunc
- type RPCMarshaler
- type ResEstimateFee
- type ResEstimateSmartFee
- type ResGetBestBlockHash
- type ResGetBlockChainInfo
- type ResGetBlockCount
- type ResGetBlockFull
- type ResGetBlockHash
- type ResGetBlockHeader
- type ResGetBlockInfo
- type ResGetBlockRaw
- type ResGetBlockThin
- type ResGetMempool
- type ResGetMempoolEntry
- type ResGetNetworkInfo
- type ResGetRawTransaction
- type ResGetRawTransactionNonverbose
- type ResSendRawTransaction
Constants ¶
This section is empty.
Variables ¶
var InvalidValue = errors.New("Invalid value to marshal")
Functions ¶
func GetChainParams ¶
GetChainParams contains network parameters for the main Bitcoin network, the regression test Bitcoin network, the test Bitcoin network and the simulation test Bitcoin network, in this order
func NewBitcoinRPC ¶
func NewBitcoinRPC(config json.RawMessage, pushHandler func(bchain.NotificationType)) (bchain.BlockChain, error)
NewBitcoinRPC returns new BitcoinRPC instance.
func TryParseOPReturn ¶ added in v0.1.0
TryParseOPReturn tries to process OP_RETURN script and return its string representation
Types ¶
type BitcoinParser ¶
type BitcoinParser struct { *bchain.BaseParser Params *chaincfg.Params OutputScriptToAddressesFunc OutputScriptToAddressesFunc }
BitcoinParser handle
func NewBitcoinParser ¶
func NewBitcoinParser(params *chaincfg.Params, c *Configuration) *BitcoinParser
NewBitcoinParser returns new BitcoinParser instance
func (*BitcoinParser) GetAddrDescFromAddress ¶ added in v0.1.0
func (p *BitcoinParser) GetAddrDescFromAddress(address string) (bchain.AddressDescriptor, error)
GetAddrDescFromAddress returns internal address representation (descriptor) of given address
func (*BitcoinParser) GetAddrDescFromVout ¶ added in v0.1.0
func (p *BitcoinParser) GetAddrDescFromVout(output *bchain.Vout) (bchain.AddressDescriptor, error)
GetAddrDescFromVout returns internal address representation (descriptor) of given transaction output
func (*BitcoinParser) GetAddressesFromAddrDesc ¶ added in v0.1.0
func (p *BitcoinParser) GetAddressesFromAddrDesc(addrDesc bchain.AddressDescriptor) ([]string, bool, error)
GetAddressesFromAddrDesc returns addresses for given address descriptor with flag if the addresses are searchable
func (*BitcoinParser) GetScriptFromAddrDesc ¶ added in v0.1.0
func (p *BitcoinParser) GetScriptFromAddrDesc(addrDesc bchain.AddressDescriptor) ([]byte, error)
GetScriptFromAddrDesc returns output script for given address descriptor
func (*BitcoinParser) ParseBlock ¶
func (p *BitcoinParser) ParseBlock(b []byte) (*bchain.Block, error)
ParseBlock parses raw block to our Block struct
func (*BitcoinParser) ParseTx ¶
func (p *BitcoinParser) ParseTx(b []byte) (*bchain.Tx, error)
ParseTx parses byte array containing transaction and returns Tx struct
func (*BitcoinParser) TxFromMsgTx ¶
type BitcoinRPC ¶
type BitcoinRPC struct { Parser bchain.BlockChainParser Testnet bool Network string Mempool *bchain.UTXOMempool ParseBlocks bool ChainConfig *Configuration RPCMarshaler RPCMarshaler // contains filtered or unexported fields }
BitcoinRPC is an interface to JSON-RPC bitcoind service.
func (*BitcoinRPC) Call ¶
func (b *BitcoinRPC) Call(req interface{}, res interface{}) error
func (*BitcoinRPC) EstimateFee ¶
func (b *BitcoinRPC) EstimateFee(blocks int) (big.Int, error)
EstimateFee returns fee estimation.
func (*BitcoinRPC) EstimateSmartFee ¶
EstimateSmartFee returns fee estimation
func (*BitcoinRPC) GetBestBlockHash ¶
func (b *BitcoinRPC) GetBestBlockHash() (string, error)
GetBestBlockHash returns hash of the tip of the best-block-chain.
func (*BitcoinRPC) GetBestBlockHeight ¶
func (b *BitcoinRPC) GetBestBlockHeight() (uint32, error)
GetBestBlockHeight returns height of the tip of the best-block-chain.
func (*BitcoinRPC) GetBlockFull ¶
func (b *BitcoinRPC) GetBlockFull(hash string) (*bchain.Block, error)
GetBlockFull returns block with given hash.
func (*BitcoinRPC) GetBlockHash ¶
func (b *BitcoinRPC) GetBlockHash(height uint32) (string, error)
GetBlockHash returns hash of block in best-block-chain at given height.
func (*BitcoinRPC) GetBlockHeader ¶
func (b *BitcoinRPC) GetBlockHeader(hash string) (*bchain.BlockHeader, error)
GetBlockHeader returns header of block with given hash.
func (*BitcoinRPC) GetBlockInfo ¶ added in v0.1.0
func (b *BitcoinRPC) GetBlockInfo(hash string) (*bchain.BlockInfo, error)
GetBlockInfo returns extended header (more info than in bchain.BlockHeader) with a list of txids
func (*BitcoinRPC) GetBlockRaw ¶
func (b *BitcoinRPC) GetBlockRaw(hash string) ([]byte, error)
GetBlockRaw returns block with given hash as bytes.
func (*BitcoinRPC) GetBlockWithoutHeader ¶
GetBlockWithoutHeader is an optimization - it does not call GetBlockHeader to get prev, next hashes instead it sets to header only block hash and height passed in parameters
func (*BitcoinRPC) GetChainInfo ¶ added in v0.1.0
func (b *BitcoinRPC) GetChainInfo() (*bchain.ChainInfo, error)
GetChainInfo returns information about the connected backend
func (*BitcoinRPC) GetChainInfoAndInitializeMempool ¶
func (b *BitcoinRPC) GetChainInfoAndInitializeMempool(bc bchain.BlockChain) (string, error)
GetChainInfoAndInitializeMempool is called by Initialize and reused by other coins it contacts the blockchain rpc interface for the first time and if successful it connects to ZeroMQ and creates mempool handler
func (*BitcoinRPC) GetChainParser ¶
func (b *BitcoinRPC) GetChainParser() bchain.BlockChainParser
GetChainParser returns BlockChainParser
func (*BitcoinRPC) GetCoinName ¶
func (b *BitcoinRPC) GetCoinName() string
func (*BitcoinRPC) GetMempool ¶
func (b *BitcoinRPC) GetMempool() ([]string, error)
GetMempool returns transactions in mempool.
func (*BitcoinRPC) GetMempoolEntry ¶
func (b *BitcoinRPC) GetMempoolEntry(txid string) (*bchain.MempoolEntry, error)
GetMempoolEntry returns mempool data for given transaction
func (*BitcoinRPC) GetMempoolTransactions ¶
func (b *BitcoinRPC) GetMempoolTransactions(address string) ([]string, error)
GetMempoolTransactions returns slice of mempool transactions for given address
func (*BitcoinRPC) GetMempoolTransactionsForAddrDesc ¶ added in v0.1.0
func (b *BitcoinRPC) GetMempoolTransactionsForAddrDesc(addrDesc bchain.AddressDescriptor) ([]string, error)
GetMempoolTransactionsForAddrDesc returns slice of mempool transactions for given address descriptor
func (*BitcoinRPC) GetNetworkName ¶
func (b *BitcoinRPC) GetNetworkName() string
func (*BitcoinRPC) GetSubversion ¶
func (b *BitcoinRPC) GetSubversion() string
func (*BitcoinRPC) GetTransaction ¶
func (b *BitcoinRPC) GetTransaction(txid string) (*bchain.Tx, error)
GetTransaction returns a transaction by the transaction ID.
func (*BitcoinRPC) GetTransactionForMempool ¶
func (b *BitcoinRPC) GetTransactionForMempool(txid string) (*bchain.Tx, error)
GetTransactionForMempool returns a transaction by the transaction ID. It could be optimized for mempool, i.e. without block time and confirmations
func (*BitcoinRPC) Initialize ¶
func (b *BitcoinRPC) Initialize() error
Initialize initializes BitcoinRPC instance.
func (*BitcoinRPC) IsTestnet ¶
func (b *BitcoinRPC) IsTestnet() bool
func (*BitcoinRPC) ResyncMempool ¶
func (b *BitcoinRPC) ResyncMempool(onNewTxAddr bchain.OnNewTxAddrFunc) (int, error)
ResyncMempool gets mempool transactions and maps output scripts to transactions. ResyncMempool is not reentrant, it should be called from a single thread. It returns number of transactions in mempool
func (*BitcoinRPC) SendRawTransaction ¶
func (b *BitcoinRPC) SendRawTransaction(tx string) (string, error)
SendRawTransaction sends raw transaction.
type BlockThin ¶ added in v0.1.0
type BlockThin struct { bchain.BlockHeader Txids []string `json:"tx"` }
type CmdEstimateFee ¶
type CmdEstimateSmartFee ¶
type CmdGetBestBlockHash ¶
type CmdGetBestBlockHash struct {
Method string `json:"method"`
}
type CmdGetBlock ¶
type CmdGetBlockChainInfo ¶
type CmdGetBlockChainInfo struct {
Method string `json:"method"`
}
type CmdGetBlockCount ¶
type CmdGetBlockCount struct {
Method string `json:"method"`
}
type CmdGetBlockHash ¶
type CmdGetBlockHeader ¶
type CmdGetMempool ¶
type CmdGetMempool struct {
Method string `json:"method"`
}
type CmdGetMempoolEntry ¶
type CmdGetNetworkInfo ¶ added in v0.1.0
type CmdGetNetworkInfo struct {
Method string `json:"method"`
}
type CmdGetRawTransaction ¶
type CmdSendRawTransaction ¶
type Configuration ¶
type Configuration struct { CoinName string `json:"coin_name"` CoinShortcut string `json:"coin_shortcut"` RPCURL string `json:"rpc_url"` RPCUser string `json:"rpc_user"` RPCPass string `json:"rpc_pass"` RPCTimeout int `json:"rpc_timeout"` Parse bool `json:"parse"` MessageQueueBinding string `json:"message_queue_binding"` Subversion string `json:"subversion"` BlockAddressesToKeep int `json:"block_addresses_to_keep"` MempoolWorkers int `json:"mempool_workers"` MempoolSubWorkers int `json:"mempool_sub_workers"` AddressFormat string `json:"address_format"` SupportsEstimateFee bool `json:"supports_estimate_fee"` SupportsEstimateSmartFee bool `json:"supports_estimate_smart_fee"` }
type JSONMarshalerV1 ¶
type JSONMarshalerV1 struct{}
func (JSONMarshalerV1) Marshal ¶
func (JSONMarshalerV1) Marshal(v interface{}) ([]byte, error)
type JSONMarshalerV2 ¶
type JSONMarshalerV2 struct{}
func (JSONMarshalerV2) Marshal ¶
func (JSONMarshalerV2) Marshal(v interface{}) ([]byte, error)
type OutputScriptToAddressesFunc ¶
OutputScriptToAddressesFunc converts ScriptPubKey to bitcoin addresses
type RPCMarshaler ¶
type ResEstimateFee ¶
type ResEstimateSmartFee ¶
type ResGetBestBlockHash ¶
type ResGetBlockChainInfo ¶
type ResGetBlockChainInfo struct { Error *bchain.RPCError `json:"error"` Result struct { Chain string `json:"chain"` Blocks int `json:"blocks"` Headers int `json:"headers"` Bestblockhash string `json:"bestblockhash"` Difficulty json.Number `json:"difficulty"` SizeOnDisk int64 `json:"size_on_disk"` Warnings string `json:"warnings"` } `json:"result"` }
type ResGetBlockCount ¶
type ResGetBlockFull ¶
type ResGetBlockHash ¶
type ResGetBlockHeader ¶
type ResGetBlockHeader struct { Error *bchain.RPCError `json:"error"` Result bchain.BlockHeader `json:"result"` }
type ResGetBlockInfo ¶ added in v0.1.0
type ResGetBlockRaw ¶
type ResGetBlockThin ¶
type ResGetMempool ¶
type ResGetMempoolEntry ¶
type ResGetMempoolEntry struct { Error *bchain.RPCError `json:"error"` Result *bchain.MempoolEntry `json:"result"` }
type ResGetNetworkInfo ¶ added in v0.1.0
type ResGetNetworkInfo struct { Error *bchain.RPCError `json:"error"` Result struct { Version json.Number `json:"version"` Subversion json.Number `json:"subversion"` ProtocolVersion json.Number `json:"protocolversion"` Timeoffset float64 `json:"timeoffset"` Warnings string `json:"warnings"` } `json:"result"` }
type ResGetRawTransaction ¶
type ResGetRawTransaction struct { Error *bchain.RPCError `json:"error"` Result json.RawMessage `json:"result"` }