bchain

package
v0.3.2 Latest Latest
Warning

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

Go to latest
Published: Mar 5, 2020 License: AGPL-3.0 Imports: 17 Imported by: 0

Documentation

Overview

Package bchain is a generated protocol buffer package.

It is generated from these files:

tx.proto

It has these top-level messages:

ProtoTransaction

Index

Constants

View Source
const (
	// ChainBitcoinType is blockchain derived from bitcoin
	ChainBitcoinType = ChainType(iota)
	// ChainEthereumType is blockchain derived from ethereum
	ChainEthereumType
)

Variables

View Source
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

Functions

func AmountToDecimalString added in v0.2.0

func AmountToDecimalString(a *big.Int, d int) string

AmountToDecimalString converts amount in big.Int to string with decimal point in the place defined by the parameter d

Types

type AddrDescForOutpointFunc added in v0.2.2

type AddrDescForOutpointFunc func(outpoint Outpoint) AddressDescriptor

AddrDescForOutpointFunc defines function that returns address descriptorfor given outpoint or nil if outpoint not found

type AddressDescriptor added in v0.1.0

type AddressDescriptor []byte

AddressDescriptor is an opaque type obtained by parser.GetAddrDesc* methods

func AddressDescriptorFromString added in v0.3.2

func AddressDescriptorFromString(s string) (AddressDescriptor, error)

AddressDescriptorFromString converts string created by AddressDescriptor.String to AddressDescriptor

func (AddressDescriptor) String added in v0.1.0

func (ad AddressDescriptor) String() string

type BaseChain added in v0.2.0

type BaseChain struct {
	Parser  BlockChainParser
	Testnet bool
	Network string
}

BaseChain is base type for bchain.BlockChain

func (*BaseChain) EthereumTypeEstimateGas added in v0.2.0

func (b *BaseChain) EthereumTypeEstimateGas(params map[string]interface{}) (uint64, error)

EthereumTypeEstimateGas is not supported

func (*BaseChain) EthereumTypeGetBalance added in v0.2.0

func (b *BaseChain) EthereumTypeGetBalance(addrDesc AddressDescriptor) (*big.Int, error)

EthereumTypeGetBalance is not supported

func (*BaseChain) EthereumTypeGetErc20ContractBalance added in v0.2.0

func (b *BaseChain) EthereumTypeGetErc20ContractBalance(addrDesc, contractDesc AddressDescriptor) (*big.Int, error)

EthereumTypeGetErc20ContractBalance is not supported

func (*BaseChain) EthereumTypeGetErc20ContractInfo added in v0.2.0

func (b *BaseChain) EthereumTypeGetErc20ContractInfo(contractDesc AddressDescriptor) (*Erc20Contract, error)

EthereumTypeGetErc20ContractInfo is not supported

func (*BaseChain) EthereumTypeGetNonce added in v0.2.0

func (b *BaseChain) EthereumTypeGetNonce(addrDesc AddressDescriptor) (uint64, error)

EthereumTypeGetNonce is not supported

func (*BaseChain) GetChainParser added in v0.2.0

func (b *BaseChain) GetChainParser() BlockChainParser

GetChainParser returns BlockChainParser

func (*BaseChain) GetMempoolEntry added in v0.2.2

func (b *BaseChain) GetMempoolEntry(txid string) (*MempoolEntry, error)

GetMempoolEntry is not supported by default

func (*BaseChain) GetNetworkName added in v0.2.0

func (b *BaseChain) GetNetworkName() string

GetNetworkName returns network name

func (*BaseChain) IsTestnet added in v0.2.0

func (b *BaseChain) IsTestnet() bool

IsTestnet returns true if the blockchain is testnet

type BaseMempool added in v0.2.2

type BaseMempool struct {
	OnNewTxAddr OnNewTxAddrFunc
	// contains filtered or unexported fields
}

BaseMempool is mempool base handle

func (*BaseMempool) GetAddrDescTransactions added in v0.2.2

func (m *BaseMempool) GetAddrDescTransactions(addrDesc AddressDescriptor) ([]Outpoint, error)

GetAddrDescTransactions returns slice of mempool transactions for given address descriptor, in reverse order

func (*BaseMempool) GetAllEntries added in v0.2.2

func (m *BaseMempool) GetAllEntries() MempoolTxidEntries

GetAllEntries returns all mempool entries sorted by fist seen time in descending order

func (*BaseMempool) GetTransactionTime added in v0.2.2

func (m *BaseMempool) GetTransactionTime(txid string) uint32

GetTransactionTime returns first seen time of a transaction

func (*BaseMempool) GetTransactions added in v0.2.2

func (m *BaseMempool) GetTransactions(address string) ([]Outpoint, error)

GetTransactions returns slice of mempool transactions for given address

type BaseParser

type BaseParser struct {
	BlockAddressesToKeep int
	AmountDecimalPoint   int
}

BaseParser implements data parsing/handling functionality base for all other parsers

func (*BaseParser) AmountDecimals added in v0.2.0

func (p *BaseParser) AmountDecimals() int

AmountDecimals returns number of decimal places in amounts

func (*BaseParser) AmountToBigInt added in v0.1.0

func (p *BaseParser) AmountToBigInt(n json.Number) (big.Int, error)

AmountToBigInt converts amount in json.Number (string) to big.Int it uses string operations to avoid problems with rounding

func (*BaseParser) AmountToDecimalString added in v0.1.0

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 added in v0.2.1

func (p *BaseParser) DerivationBasePath(xpub string) (string, error)

DerivationBasePath is unsupported

func (*BaseParser) DeriveAddressDescriptors added in v0.2.1

func (p *BaseParser) DeriveAddressDescriptors(xpub string, change uint32, indexes []uint32) ([]AddressDescriptor, error)

DeriveAddressDescriptors is unsupported

func (*BaseParser) DeriveAddressDescriptorsFromTo added in v0.2.1

func (p *BaseParser) DeriveAddressDescriptorsFromTo(xpub string, change uint32, fromIndex uint32, toIndex uint32) ([]AddressDescriptor, error)

DeriveAddressDescriptorsFromTo is unsupported

func (*BaseParser) EthereumTypeGetErc20FromTx added in v0.2.0

func (p *BaseParser) EthereumTypeGetErc20FromTx(tx *Tx) ([]Erc20Transfer, error)

EthereumTypeGetErc20FromTx is unsupported

func (*BaseParser) GetAddrDescForUnknownInput added in v0.2.0

func (p *BaseParser) GetAddrDescForUnknownInput(tx *Tx, input int) AddressDescriptor

GetAddrDescForUnknownInput returns nil AddressDescriptor

func (*BaseParser) GetChainType added in v0.2.0

func (p *BaseParser) GetChainType() ChainType

GetChainType is type of the blockchain, default is ChainBitcoinType

func (*BaseParser) IsAddrDescIndexable added in v0.3.0

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 added in v0.3.2

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) PackTx

func (p *BaseParser) PackTx(tx *Tx, height uint32, blockTime int64) ([]byte, error)

PackTx packs transaction to byte array using protobuf

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) 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

type Block

type Block struct {
	BlockHeader
	Txs []Tx `json:"tx"`
}

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) 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)
	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)
	// parser
	GetChainParser() BlockChainParser
	// EthereumType specific
	EthereumTypeGetBalance(addrDesc AddressDescriptor) (*big.Int, error)
	EthereumTypeGetNonce(addrDesc AddressDescriptor) (uint64, error)
	EthereumTypeEstimateGas(params map[string]interface{}) (uint64, error)
	EthereumTypeGetErc20ContractInfo(contractDesc AddressDescriptor) (*Erc20Contract, error)
	EthereumTypeGetErc20ContractBalance(addrDesc, contractDesc AddressDescriptor) (*big.Int, 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
	// MinimumCoinbaseConfirmations returns minimum number of confirmations a coinbase transaction must have before it can be spent
	MinimumCoinbaseConfirmations() int
	// AmountToDecimalString converts amount in big.Int to string with decimal point in the correct place
	AmountToDecimalString(a *big.Int) string
	// AmountToBigInt converts amount in json.Number (string) to big.Int
	// it uses string operations to avoid problems with rounding
	AmountToBigInt(n json.Number) (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
	DerivationBasePath(xpub string) (string, error)
	DeriveAddressDescriptors(xpub string, change uint32, indexes []uint32) ([]AddressDescriptor, error)
	DeriveAddressDescriptorsFromTo(xpub string, change uint32, fromIndex uint32, toIndex uint32) ([]AddressDescriptor, error)
	// EthereumType specific
	EthereumTypeGetErc20FromTx(tx *Tx) ([]Erc20Transfer, error)
}

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 added in v0.1.0

type BlockInfo struct {
	BlockHeader
	Version    json.Number `json:"version"`
	MerkleRoot string      `json:"merkleroot"`
	Nonce      json.Number `json:"nonce"`
	Bits       string      `json:"bits"`
	Difficulty json.Number `json:"difficulty"`
	Txids      []string    `json:"tx,omitempty"`
}

BlockInfo contains extended block header data and a list of block txids

type ChainInfo added in v0.1.0

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"`
}

ChainInfo is used to get information about blockchain

type ChainType added in v0.2.0

type ChainType int

ChainType is type of the blockchain

type Erc20Contract added in v0.2.0

type Erc20Contract struct {
	Contract string `json:"contract"`
	Name     string `json:"name"`
	Symbol   string `json:"symbol"`
	Decimals int    `json:"decimals"`
}

Erc20Contract contains info about ERC20 contract

type Erc20Transfer added in v0.2.0

type Erc20Transfer struct {
	Contract string
	From     string
	To       string
	Tokens   big.Int
}

Erc20Transfer contains a single ERC20 token transfer

type MQ

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

MQ is message queue listener handle

func NewMQ

func NewMQ(binding string, callback func(NotificationType)) (*MQ, error)

NewMQ creates new Bitcoind ZeroMQ listener callback function receives messages

func (*MQ) Shutdown

func (mq *MQ) Shutdown(ctx context.Context) error

Shutdown stops listening to the ZeroMQ and closes the connection

type Mempool added in v0.2.2

type Mempool interface {
	Resync() (int, error)
	GetTransactions(address string) ([]Outpoint, error)
	GetAddrDescTransactions(addrDesc AddressDescriptor) ([]Outpoint, error)
	GetAllEntries() MempoolTxidEntries
	GetTransactionTime(txid string) uint32
}

Mempool defines common interface to mempool

type MempoolBitcoinType added in v0.2.0

type MempoolBitcoinType struct {
	BaseMempool

	AddrDescForOutpoint AddrDescForOutpointFunc
	// contains filtered or unexported fields
}

MempoolBitcoinType is mempool handle.

func NewMempoolBitcoinType added in v0.2.0

func NewMempoolBitcoinType(chain BlockChain, workers int, subworkers int) *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) Resync added in v0.2.0

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             json.Number `json:"fee"`
	ModifiedFeeSat  big.Int
	ModifiedFee     json.Number `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 added in v0.2.0

type MempoolEthereumType struct {
	BaseMempool
	// contains filtered or unexported fields
}

MempoolEthereumType is mempool handle of EthereumType chains

func NewMempoolEthereumType added in v0.2.0

func NewMempoolEthereumType(chain BlockChain, mempoolTxTimeoutHours int, queryBackendOnResync bool) *MempoolEthereumType

NewMempoolEthereumType creates new mempool handler.

func (*MempoolEthereumType) AddTransactionToMempool added in v0.2.2

func (m *MempoolEthereumType) AddTransactionToMempool(txid string)

AddTransactionToMempool adds transactions to mempool

func (*MempoolEthereumType) RemoveTransactionFromMempool added in v0.2.2

func (m *MempoolEthereumType) RemoveTransactionFromMempool(txid string)

RemoveTransactionFromMempool removes transaction from mempool

func (*MempoolEthereumType) Resync added in v0.2.0

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 MempoolTxidEntries added in v0.2.2

type MempoolTxidEntries []MempoolTxidEntry

MempoolTxidEntries is array of MempoolTxidEntry

func (MempoolTxidEntries) Len added in v0.2.2

func (a MempoolTxidEntries) Len() int

func (MempoolTxidEntries) Less added in v0.2.2

func (a MempoolTxidEntries) Less(i, j int) bool

func (MempoolTxidEntries) Swap added in v0.2.2

func (a MempoolTxidEntries) Swap(i, j int)

type MempoolTxidEntry added in v0.2.2

type MempoolTxidEntry struct {
	Txid string
	Time uint32
}

MempoolTxidEntry contains mempool txid with first seen time

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

type OnNewBlockFunc func(hash string, height uint32)

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 Outpoint added in v0.2.0

type Outpoint struct {
	Txid string
	Vout int32
}

Outpoint is txid together with output (or input) index

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" json:"Blocktime,omitempty"`
	Locktime  uint32                       `protobuf:"varint,4,opt,name=Locktime" json:"Locktime,omitempty"`
	Height    uint32                       `protobuf:"varint,5,opt,name=Height" json:"Height,omitempty"`
	Vin       []*ProtoTransaction_VinType  `protobuf:"bytes,6,rep,name=Vin" json:"Vin,omitempty"`
	Vout      []*ProtoTransaction_VoutType `protobuf:"bytes,7,rep,name=Vout" json:"Vout,omitempty"`
	Version   int32                        `protobuf:"varint,8,opt,name=Version" json:"Version,omitempty"`
}

func (*ProtoTransaction) Descriptor

func (*ProtoTransaction) Descriptor() ([]byte, []int)

func (*ProtoTransaction) GetBlocktime

func (m *ProtoTransaction) GetBlocktime() uint64

func (*ProtoTransaction) GetHeight

func (m *ProtoTransaction) GetHeight() uint32

func (*ProtoTransaction) GetHex

func (m *ProtoTransaction) GetHex() []byte

func (*ProtoTransaction) GetLocktime

func (m *ProtoTransaction) GetLocktime() uint32

func (*ProtoTransaction) GetTxid

func (m *ProtoTransaction) GetTxid() []byte

func (*ProtoTransaction) GetVersion added in v0.2.0

func (m *ProtoTransaction) GetVersion() int32

func (*ProtoTransaction) GetVin

func (*ProtoTransaction) GetVout

func (*ProtoTransaction) ProtoMessage

func (*ProtoTransaction) ProtoMessage()

func (*ProtoTransaction) Reset

func (m *ProtoTransaction) Reset()

func (*ProtoTransaction) String

func (m *ProtoTransaction) String() string

type ProtoTransaction_VinType

type ProtoTransaction_VinType struct {
	Coinbase     string   `protobuf:"bytes,1,opt,name=Coinbase" json:"Coinbase,omitempty"`
	Txid         []byte   `protobuf:"bytes,2,opt,name=Txid,proto3" json:"Txid,omitempty"`
	Vout         uint32   `protobuf:"varint,3,opt,name=Vout" json:"Vout,omitempty"`
	ScriptSigHex []byte   `protobuf:"bytes,4,opt,name=ScriptSigHex,proto3" json:"ScriptSigHex,omitempty"`
	Sequence     uint32   `protobuf:"varint,5,opt,name=Sequence" json:"Sequence,omitempty"`
	Addresses    []string `protobuf:"bytes,6,rep,name=Addresses" json:"Addresses,omitempty"`
}

func (*ProtoTransaction_VinType) Descriptor

func (*ProtoTransaction_VinType) Descriptor() ([]byte, []int)

func (*ProtoTransaction_VinType) GetAddresses

func (m *ProtoTransaction_VinType) GetAddresses() []string

func (*ProtoTransaction_VinType) GetCoinbase

func (m *ProtoTransaction_VinType) GetCoinbase() string

func (*ProtoTransaction_VinType) GetScriptSigHex

func (m *ProtoTransaction_VinType) GetScriptSigHex() []byte

func (*ProtoTransaction_VinType) GetSequence

func (m *ProtoTransaction_VinType) GetSequence() uint32

func (*ProtoTransaction_VinType) GetTxid

func (m *ProtoTransaction_VinType) GetTxid() []byte

func (*ProtoTransaction_VinType) GetVout

func (m *ProtoTransaction_VinType) GetVout() uint32

func (*ProtoTransaction_VinType) ProtoMessage

func (*ProtoTransaction_VinType) ProtoMessage()

func (*ProtoTransaction_VinType) Reset

func (m *ProtoTransaction_VinType) Reset()

func (*ProtoTransaction_VinType) String

func (m *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" json:"N,omitempty"`
	ScriptPubKeyHex []byte   `protobuf:"bytes,3,opt,name=ScriptPubKeyHex,proto3" json:"ScriptPubKeyHex,omitempty"`
	Addresses       []string `protobuf:"bytes,4,rep,name=Addresses" json:"Addresses,omitempty"`
}

func (*ProtoTransaction_VoutType) Descriptor

func (*ProtoTransaction_VoutType) Descriptor() ([]byte, []int)

func (*ProtoTransaction_VoutType) GetAddresses

func (m *ProtoTransaction_VoutType) GetAddresses() []string

func (*ProtoTransaction_VoutType) GetN

func (*ProtoTransaction_VoutType) GetScriptPubKeyHex

func (m *ProtoTransaction_VoutType) GetScriptPubKeyHex() []byte

func (*ProtoTransaction_VoutType) GetValueSat added in v0.1.0

func (m *ProtoTransaction_VoutType) GetValueSat() []byte

func (*ProtoTransaction_VoutType) ProtoMessage

func (*ProtoTransaction_VoutType) ProtoMessage()

func (*ProtoTransaction_VoutType) Reset

func (m *ProtoTransaction_VoutType) Reset()

func (*ProtoTransaction_VoutType) String

func (m *ProtoTransaction_VoutType) String() string

type RPCError

type RPCError struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
}

RPCError defines rpc error returned by backend

func (*RPCError) Error

func (e *RPCError) Error() string

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 Tx

type Tx struct {
	Hex         string `json:"hex"`
	Txid        string `json:"txid"`
	Version     int32  `json:"version"`
	LockTime    uint32 `json:"locktime"`
	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 output

type Vout

type Vout struct {
	ValueSat     big.Int
	JsonValue    json.Number  `json:"value"`
	N            uint32       `json:"n"`
	ScriptPubKey ScriptPubKey `json:"scriptPubKey"`
}

Vout contains data about tx output

Directories

Path Synopsis
bch
btc
btg
dcr
eth
Package eth is a generated protocol buffer package.
Package eth is a generated protocol buffer package.
flo
grs
xzc
zec

Jump to

Keyboard shortcuts

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