Documentation ¶
Index ¶
- Variables
- func GetChainParams(chain string) *chaincfg.Params
- func InitWhatTheFee(chain bchain.BlockChain, params string) error
- func IsErrBlockNotFound(err *bchain.RPCError) bool
- func IsMissingTx(err *bchain.RPCError) bool
- func NewBitcoinRPC(config json.RawMessage, pushHandler func(bchain.NotificationType)) (bchain.BlockChain, error)
- type BitcoinParser
- func (p *BitcoinParser) DerivationBasePath(xpub string) (string, error)
- func (p *BitcoinParser) DeriveAddressDescriptors(xpub string, change uint32, indexes []uint32) ([]bchain.AddressDescriptor, error)
- func (p *BitcoinParser) DeriveAddressDescriptorsFromTo(xpub string, change uint32, fromIndex uint32, toIndex uint32) ([]bchain.AddressDescriptor, error)
- 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) IsAddrDescIndexable(addrDesc bchain.AddressDescriptor) bool
- func (p *BitcoinParser) MinimumCoinbaseConfirmations() int
- 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) TryParseOPReturn(script []byte) string
- 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) CreateMempool(chain bchain.BlockChain) (bchain.Mempool, 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) GetCoinName() string
- func (b *BitcoinRPC) GetMempoolEntry(txid string) (*bchain.MempoolEntry, error)
- func (b *BitcoinRPC) GetMempoolTransactions() ([]string, error)
- 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) GetTransactionSpecific(tx *bchain.Tx) (json.RawMessage, error)
- func (b *BitcoinRPC) Initialize() error
- func (b *BitcoinRPC) InitializeMempool(addrDescForOutpoint bchain.AddrDescForOutpointFunc, ...) 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 ErrInvalidValue = errors.New("Invalid value to marshal")
ErrInvalidValue is error returned by JSONMarshalerV1.Marshal if the passed structure contains invalid value
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 InitWhatTheFee ¶
func InitWhatTheFee(chain bchain.BlockChain, params string) error
InitWhatTheFee initializes https://whatthefee.io handler
func IsErrBlockNotFound ¶
IsErrBlockNotFound returns true if error means block was not found
func IsMissingTx ¶
IsMissingTx return true if error means missing tx
func NewBitcoinRPC ¶
func NewBitcoinRPC(config json.RawMessage, pushHandler func(bchain.NotificationType)) (bchain.BlockChain, error)
NewBitcoinRPC returns new BitcoinRPC instance.
Types ¶
type BitcoinParser ¶
type BitcoinParser struct { *bchain.BaseParser Params *chaincfg.Params OutputScriptToAddressesFunc OutputScriptToAddressesFunc XPubMagic uint32 XPubMagicSegwitP2sh uint32 XPubMagicSegwitNative uint32 Slip44 uint32 // contains filtered or unexported fields }
BitcoinParser handle
func NewBitcoinParser ¶
func NewBitcoinParser(params *chaincfg.Params, c *Configuration) *BitcoinParser
NewBitcoinParser returns new BitcoinParser instance
func (*BitcoinParser) DerivationBasePath ¶
func (p *BitcoinParser) DerivationBasePath(xpub string) (string, error)
DerivationBasePath returns base path of xpub
func (*BitcoinParser) DeriveAddressDescriptors ¶
func (p *BitcoinParser) DeriveAddressDescriptors(xpub string, change uint32, indexes []uint32) ([]bchain.AddressDescriptor, error)
DeriveAddressDescriptors derives address descriptors from given xpub for listed indexes
func (*BitcoinParser) DeriveAddressDescriptorsFromTo ¶
func (p *BitcoinParser) DeriveAddressDescriptorsFromTo(xpub string, change uint32, fromIndex uint32, toIndex uint32) ([]bchain.AddressDescriptor, error)
DeriveAddressDescriptorsFromTo derives address descriptors from given xpub for addresses in index range
func (*BitcoinParser) GetAddrDescFromAddress ¶
func (p *BitcoinParser) GetAddrDescFromAddress(address string) (bchain.AddressDescriptor, error)
GetAddrDescFromAddress returns internal address representation (descriptor) of given address
func (*BitcoinParser) GetAddrDescFromVout ¶
func (p *BitcoinParser) GetAddrDescFromVout(output *bchain.Vout) (bchain.AddressDescriptor, error)
GetAddrDescFromVout returns internal address representation (descriptor) of given transaction output
func (*BitcoinParser) GetAddressesFromAddrDesc ¶
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 ¶
func (p *BitcoinParser) GetScriptFromAddrDesc(addrDesc bchain.AddressDescriptor) ([]byte, error)
GetScriptFromAddrDesc returns output script for given address descriptor
func (*BitcoinParser) IsAddrDescIndexable ¶
func (p *BitcoinParser) IsAddrDescIndexable(addrDesc bchain.AddressDescriptor) bool
IsAddrDescIndexable returns true if AddressDescriptor should be added to index empty or OP_RETURN scripts are not indexed
func (*BitcoinParser) MinimumCoinbaseConfirmations ¶
func (p *BitcoinParser) MinimumCoinbaseConfirmations() int
MinimumCoinbaseConfirmations returns minimum number of confirmations a coinbase transaction must have before it can be spent
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) TryParseOPReturn ¶
func (p *BitcoinParser) TryParseOPReturn(script []byte) string
TryParseOPReturn tries to process OP_RETURN script and return its string representation
func (*BitcoinParser) TxFromMsgTx ¶
TxFromMsgTx converts bitcoin wire Tx to bchain.Tx
type BitcoinRPC ¶
type BitcoinRPC struct { *bchain.BaseChain Mempool *bchain.MempoolBitcoinType 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
Call calls Backend RPC interface, using RPCMarshaler interface to marshall the request
func (*BitcoinRPC) CreateMempool ¶
func (b *BitcoinRPC) CreateMempool(chain bchain.BlockChain) (bchain.Mempool, error)
CreateMempool creates mempool if not already created, however does not initialize it
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 ¶
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 ¶
func (b *BitcoinRPC) GetChainInfo() (*bchain.ChainInfo, error)
GetChainInfo returns information about the connected backend
func (*BitcoinRPC) GetCoinName ¶
func (b *BitcoinRPC) GetCoinName() string
GetCoinName returns the coin name
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() ([]string, error)
GetMempoolTransactions returns transactions in mempool
func (*BitcoinRPC) GetSubversion ¶
func (b *BitcoinRPC) GetSubversion() string
GetSubversion returns the backend subversion
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) GetTransactionSpecific ¶
func (b *BitcoinRPC) GetTransactionSpecific(tx *bchain.Tx) (json.RawMessage, error)
GetTransactionSpecific returns json as returned by backend, with all coin specific data
func (*BitcoinRPC) Initialize ¶
func (b *BitcoinRPC) Initialize() error
Initialize initializes BitcoinRPC instance.
func (*BitcoinRPC) InitializeMempool ¶
func (b *BitcoinRPC) InitializeMempool(addrDescForOutpoint bchain.AddrDescForOutpointFunc, onNewTxAddr bchain.OnNewTxAddrFunc) error
InitializeMempool creates ZeroMQ subscription and sets AddrDescForOutpointFunc to the Mempool
func (*BitcoinRPC) SendRawTransaction ¶
func (b *BitcoinRPC) SendRawTransaction(tx string) (string, error)
SendRawTransaction sends raw transaction
type BlockThin ¶
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 ¶
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"` XPubMagic uint32 `json:"xpub_magic,omitempty"` XPubMagicSegwitP2sh uint32 `json:"xpub_magic_segwit_p2sh,omitempty"` XPubMagicSegwitNative uint32 `json:"xpub_magic_segwit_native,omitempty"` Slip44 uint32 `json:"slip44,omitempty"` AlternativeEstimateFee string `json:"alternative_estimate_fee,omitempty"` AlternativeEstimateFeeParams string `json:"alternative_estimate_fee_params,omitempty"` MinimumCoinbaseConfirmations int `json:"minimumCoinbaseConfirmations,omitempty"` }
Configuration represents json config file
type JSONMarshalerV1 ¶
type JSONMarshalerV1 struct{}
JSONMarshalerV1 is used for marshalling requests to legacy Bitcoin Type RPC interfaces
func (JSONMarshalerV1) Marshal ¶
func (JSONMarshalerV1) Marshal(v interface{}) ([]byte, error)
Marshal converts struct passed by parameter to JSON
type JSONMarshalerV2 ¶
type JSONMarshalerV2 struct{}
JSONMarshalerV2 is used for marshalling requests to newer Bitcoin Type RPC interfaces
func (JSONMarshalerV2) Marshal ¶
func (JSONMarshalerV2) Marshal(v interface{}) ([]byte, error)
Marshal converts struct passed by parameter to JSON
type OutputScriptToAddressesFunc ¶
OutputScriptToAddressesFunc converts ScriptPubKey to bitcoin addresses
type RPCMarshaler ¶
RPCMarshaler is used for marshalling requests to Bitcoin Type RPC interfaces
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 ¶
type ResGetBlockRaw ¶
type ResGetBlockThin ¶
type ResGetMempool ¶
type ResGetMempoolEntry ¶
type ResGetMempoolEntry struct { Error *bchain.RPCError `json:"error"` Result *bchain.MempoolEntry `json:"result"` }
type ResGetNetworkInfo ¶
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"` }