bitcoincash

package
v1.103.2 Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2023 License: MIT Imports: 47 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BlockCacheSize      = 144
	MaximumConfirmation = 99999999
	MaxAsgardAddresses  = 100
	// EstimateAverageTxSize for BASEChain the estimate tx size is hard code to 250 here , as most of time it will spend 1 input, have 3 output
	EstimateAverageTxSize = 1500
	MaxMempoolScanPerTry  = 500
)

BlockCacheSize the number of block meta that get store in storage.

View Source
const (
	// SatsPervBytes it should be enough , this one will only be used if signer can't find any previous UTXO , and fee info from local storage.
	SatsPervBytes = 25
	// MinUTXOConfirmation UTXO that has less confirmation then this will not be spent , unless it is yggdrasil
	MinUTXOConfirmation = 1
)

Variables

This section is empty.

Functions

func GetBech32AccountPubKey

func GetBech32AccountPubKey(key *bchec.PrivateKey) (common.PubKey, error)

GetBech32AccountPubKey convert the given private key to

Types

type Client

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

Client observes bitcoin cash chain and allows to sign and broadcast tx

func NewClient

NewClient generates a new Client

func (*Client) BroadcastTx

func (c *Client) BroadcastTx(txOut stypes.TxOutItem, payload []byte) (string, error)

BroadcastTx will broadcast the given payload to BCH chain

func (*Client) ConfirmationCountReady

func (c *Client) ConfirmationCountReady(txIn types.TxIn) bool

ConfirmationCountReady will be called by observer before send the txIn to thorchain confirmation counting is on block level , refer to https://medium.com/coinmonks/1confvalue-a-simple-pow-confirmation-rule-of-thumb-a8d9c6c483dd for detail

func (*Client) FetchMemPool

func (c *Client) FetchMemPool(height int64) (types.TxIn, error)

FetchMemPool retrieves txs from mempool

func (*Client) FetchTxs

func (c *Client) FetchTxs(height int64) (types.TxIn, error)

FetchTxs retrieves txs for a block height

func (*Client) GetAccount

func (c *Client) GetAccount(pkey common.PubKey, height *big.Int) (common.Account, error)

GetAccount returns account with balance for an address

func (*Client) GetAccountByAddress

func (c *Client) GetAccountByAddress(string, *big.Int) (common.Account, error)

func (*Client) GetAddress

func (c *Client) GetAddress(poolPubKey common.PubKey) string

GetAddress returns address from pubkey

func (*Client) GetChain

func (c *Client) GetChain() common.Chain

GetChain returns BCH Chain

func (*Client) GetConfig

func (c *Client) GetConfig() config.BifrostChainConfiguration

GetConfig - get the chain configuration

func (*Client) GetConfirmationCount

func (c *Client) GetConfirmationCount(txIn types.TxIn) int64

func (*Client) GetHeight

func (c *Client) GetHeight() (int64, error)

GetHeight returns current block height

func (*Client) IsBlockScannerHealthy

func (c *Client) IsBlockScannerHealthy() bool

func (*Client) OnObservedTxIn

func (c *Client) OnObservedTxIn(txIn types.TxInItem, blockHeight int64)

OnObservedTxIn gets called from observer when we have a valid observation For bitcoin cash chain client we want to save the utxo we can spend later to sign

func (*Client) RegisterPublicKey

func (c *Client) RegisterPublicKey(pkey common.PubKey) error

RegisterPublicKey register the given pubkey to bitcoin cash wallet

func (*Client) ReportSolvency

func (c *Client) ReportSolvency(bchBlockHeight int64) error

func (*Client) ShouldReportSolvency

func (c *Client) ShouldReportSolvency(height int64) bool

ShouldReportSolvency based on the given block height , should the client report solvency to THORNode

func (*Client) SignTx

func (c *Client) SignTx(tx stypes.TxOutItem, thorchainHeight int64) ([]byte, error)

SignTx is going to generate the outbound transaction, and also sign it

func (*Client) Start

func (c *Client) Start(globalTxsQueue chan types.TxIn, globalErrataQueue chan types.ErrataBlock, globalSolvencyQueue chan types.Solvency)

Start starts the block scanner

func (*Client) Stop

func (c *Client) Stop()

Stop stops the block scanner

type KeySignWrapper

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

KeySignWrapper is a wrap of private key and also tss instance it also implement the txscript.Signable interface, and will decide which method to use based on the pubkey

func NewKeySignWrapper

func NewKeySignWrapper(privateKey *bchec.PrivateKey, tssKeyManager tss.ThorchainKeyManager) (*KeySignWrapper, error)

NewKeysignWrapper create a new instance of Keysign Wrapper

func (*KeySignWrapper) GetSignable

func (w *KeySignWrapper) GetSignable(poolPubKey common.PubKey) txscript.Signable

GetSignable based on the given poolPubKey

type TssSignable

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

TssSignable is a signable implementation backed by tss

func NewTssSignable

func NewTssSignable(pubKey common.PubKey, manager tss.ThorchainKeyManager) (*TssSignable, error)

NewTssSignable create a new instance of TssSignable

func (*TssSignable) GetPubKey

func (ts *TssSignable) GetPubKey() *bchec.PublicKey

func (*TssSignable) SignECDSA

func (ts *TssSignable) SignECDSA(payload []byte) (*bchec.Signature, error)

SignECDSA signs the given payload using ECDSA

func (*TssSignable) SignSchnorr

func (ts *TssSignable) SignSchnorr(payload []byte) (*bchec.Signature, error)

SignSchnorr signs the given payload using Schnorr

Jump to

Keyboard shortcuts

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