bitcoin

package
v0.0.20 Latest Latest
Warning

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

Go to latest
Published: Jul 12, 2023 License: MIT Imports: 48 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BlockCacheSize      = 144
	MaximumConfirmation = 99999999
	MaxAsgardAddresses  = 100
	// EstimateAverageTxSize for DIGITALDollar the estimate tx size is hard code to 1000 here , as most of time it will spend 1 input, have 3 output
	// which is average at 250 vbytes , however asgard will consolidate UTXOs , which will take up to 1000 vbytes
	EstimateAverageTxSize = 1000
	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 *btcec.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 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 BTC chain

func (*Client) ConfirmationCountReady

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

ConfirmationCountReady will be called by observer before send the txIn to digitaldollar 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, chainHeight 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 BTC 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

GetConfirmationCount return the number of blocks the tx need to wait before processing in DIGITALDollar

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

func (*Client) ReportSolvency

func (c *Client) ReportSolvency(bitcoinBlockHeight 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 DDNode

func (*Client) SignTx

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

SignTx builds and signs the outbound transaction. Returns the signed transaction, a serialized checkpoint on error, a corresponding observation tx, and an error.

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 *btcec.PrivateKey, tssKeyManager tss.DigitaldollarKeyManager) (*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.DigitaldollarKeyManager) (*TssSignable, error)

NewTssSignable create a new instance of TssSignable

func (*TssSignable) GetPubKey

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

func (*TssSignable) Sign

func (ts *TssSignable) Sign(payload []byte) (*btcec.Signature, error)

Sign the given payload

Jump to

Keyboard shortcuts

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