Documentation
¶
Index ¶
- Constants
- Variables
- func CalcFee(amount, feeBase btcutil.Amount, feeRate int64) btcutil.Amount
- func DecodeInvoice(params *chaincfg.Params, payReq string) (route.Vertex, [][]zpay32.HopHint, lntypes.Hash, btcutil.Amount, error)
- func FeeRateAsPercentage(feeRate int64) float64
- func GetScriptOutput(htlcTx *wire.MsgTx, scriptHash []byte) (*wire.OutPoint, btcutil.Amount, error)
- func GetTxInputByOutpoint(tx *wire.MsgTx, input *wire.OutPoint) (*wire.TxIn, error)
- func ShortHash(hash *lntypes.Hash) string
- type Htlc
- type HtlcOutputType
- type HtlcScript
- type HtlcScriptV1
- func (h *HtlcScriptV1) GenTimeoutWitness(senderSig []byte) wire.TxWitness
- func (h *HtlcScriptV1) IsSuccessWitness(witness wire.TxWitness) bool
- func (h *HtlcScriptV1) MaxSuccessWitnessSize() int
- func (h *HtlcScriptV1) MaxTimeoutWitnessSize() int
- func (h *HtlcScriptV1) Script() []byte
- func (h *HtlcScriptV1) SuccessSequence() uint32
- type HtlcScriptV2
- func (h *HtlcScriptV2) GenTimeoutWitness(senderSig []byte) wire.TxWitness
- func (h *HtlcScriptV2) IsSuccessWitness(witness wire.TxWitness) bool
- func (h *HtlcScriptV2) MaxSuccessWitnessSize() int
- func (h *HtlcScriptV2) MaxTimeoutWitnessSize() int
- func (h *HtlcScriptV2) Script() []byte
- func (h *HtlcScriptV2) SuccessSequence() uint32
- type PrefixLog
- type ScriptVersion
- type Type
Constants ¶
const ( // FeeRateTotalParts defines the granularity of the fee rate. // Throughout the codebase, we'll use fix based arithmetic to compute // fees. FeeRateTotalParts = 1e6 )
Variables ¶
var (
// QuoteHtlc is a template script just used for fee estimation. It uses
// the maximum value for cltv expiry to get the maximum (worst case)
// script size.
QuoteHtlc, _ = NewHtlc(
HtlcV2,
^int32(0), quoteKey, quoteKey, quoteHash, HtlcP2WSH,
&chaincfg.MainNetParams,
)
ErrInvalidScriptVersion = fmt.Errorf("invalid script version")
)
var ( // KeyFamily is the key family used to generate keys that allow // spending of the htlc. // // TODO(joost): decide on actual value KeyFamily = int32(99) )
Functions ¶
func DecodeInvoice ¶
func DecodeInvoice(params *chaincfg.Params, payReq string) (route.Vertex, [][]zpay32.HopHint, lntypes.Hash, btcutil.Amount, error)
DecodeInvoice gets the destination, hash and the amount of an invoice. It requires an amount to be specified.
func FeeRateAsPercentage ¶
FeeRateAsPercentage converts a feerate to a percentage.
func GetScriptOutput ¶
func GetScriptOutput(htlcTx *wire.MsgTx, scriptHash []byte) ( *wire.OutPoint, btcutil.Amount, error)
GetScriptOutput locates the given script in the outputs of a transaction and returns its outpoint and value.
func GetTxInputByOutpoint ¶
GetTxInputByOutpoint returns a tx input based on a given input outpoint.
Types ¶
type Htlc ¶
type Htlc struct {
HtlcScript
Version ScriptVersion
PkScript []byte
Hash lntypes.Hash
OutputType HtlcOutputType
ChainParams *chaincfg.Params
Address btcutil.Address
SigScript []byte
}
Htlc contains relevant htlc information from the receiver perspective.
func NewHtlc ¶
func NewHtlc(version ScriptVersion, cltvExpiry int32, senderKey, receiverKey [33]byte, hash lntypes.Hash, outputType HtlcOutputType, chainParams *chaincfg.Params) (*Htlc, error)
NewHtlc returns a new instance.
func (*Htlc) AddSuccessToEstimator ¶
func (h *Htlc) AddSuccessToEstimator(estimator *input.TxWeightEstimator)
AddSuccessToEstimator adds a successful spend to a weight estimator.
func (*Htlc) AddTimeoutToEstimator ¶
func (h *Htlc) AddTimeoutToEstimator(estimator *input.TxWeightEstimator)
AddTimeoutToEstimator adds a timeout spend to a weight estimator.
type HtlcOutputType ¶
type HtlcOutputType uint8
HtlcOutputType defines the output type of the htlc that is published.
const ( // HtlcP2WSH is a pay-to-witness-script-hash output (segwit only) HtlcP2WSH HtlcOutputType = iota // HtlcNP2WSH is a nested pay-to-witness-script-hash output that can be // paid to be legacy wallets. HtlcNP2WSH )
func (HtlcOutputType) String ¶
func (h HtlcOutputType) String() string
String returns the string value of HtlcOutputType.
type HtlcScript ¶
type HtlcScript interface {
// GenTimeoutWitness returns the timeout script to spend this htlc after
// timeout.
GenTimeoutWitness(senderSig []byte) wire.TxWitness
// IsSuccessWitness checks whether the given stack is valid for
// redeeming the htlc.
IsSuccessWitness(witness wire.TxWitness) bool
// Script returns the htlc script.
Script() []byte
// MaxSuccessWitnessSize returns the maximum witness size for the
// success case witness.
MaxSuccessWitnessSize() int
// MaxTimeoutWitnessSize returns the maximum witness size for the
// timeout case witness.
MaxTimeoutWitnessSize() int
// SuccessSequence returns the sequence to spend this htlc in the
// success case.
SuccessSequence() uint32
// contains filtered or unexported methods
}
htlcScript defines an interface for the different HTLC implementations.
type HtlcScriptV1 ¶
type HtlcScriptV1 struct {
// contains filtered or unexported fields
}
HtlcScriptV1 encapsulates the htlc v1 script.
func (*HtlcScriptV1) GenTimeoutWitness ¶
func (h *HtlcScriptV1) GenTimeoutWitness(senderSig []byte) wire.TxWitness
GenTimeoutWitness returns the timeout script to spend this htlc after timeout.
func (*HtlcScriptV1) IsSuccessWitness ¶
func (h *HtlcScriptV1) IsSuccessWitness(witness wire.TxWitness) bool
IsSuccessWitness checks whether the given stack is valid for redeeming the htlc.
func (*HtlcScriptV1) MaxSuccessWitnessSize ¶
func (h *HtlcScriptV1) MaxSuccessWitnessSize() int
MaxSuccessWitnessSize returns the maximum success witness size.
func (*HtlcScriptV1) MaxTimeoutWitnessSize ¶
func (h *HtlcScriptV1) MaxTimeoutWitnessSize() int
MaxTimeoutWitnessSize return the maximum timeout witness size.
func (*HtlcScriptV1) Script ¶
func (h *HtlcScriptV1) Script() []byte
Script returns the htlc script.
func (*HtlcScriptV1) SuccessSequence ¶
func (h *HtlcScriptV1) SuccessSequence() uint32
SuccessSequence returns the sequence to spend this htlc in the success case.
type HtlcScriptV2 ¶
type HtlcScriptV2 struct {
// contains filtered or unexported fields
}
HtlcScriptV2 encapsulates the htlc v2 script.
func (*HtlcScriptV2) GenTimeoutWitness ¶
func (h *HtlcScriptV2) GenTimeoutWitness(senderSig []byte) wire.TxWitness
GenTimeoutWitness returns the timeout script to spend this htlc after timeout.
func (*HtlcScriptV2) IsSuccessWitness ¶
func (h *HtlcScriptV2) IsSuccessWitness(witness wire.TxWitness) bool
IsSuccessWitness checks whether the given stack is valid for redeeming the htlc.
func (*HtlcScriptV2) MaxSuccessWitnessSize ¶
func (h *HtlcScriptV2) MaxSuccessWitnessSize() int
MaxSuccessWitnessSize returns maximum success witness size.
func (*HtlcScriptV2) MaxTimeoutWitnessSize ¶
func (h *HtlcScriptV2) MaxTimeoutWitnessSize() int
MaxTimeoutWitnessSize returns maximum timeout witness size.
func (*HtlcScriptV2) Script ¶
func (h *HtlcScriptV2) Script() []byte
Script returns the htlc script.
func (*HtlcScriptV2) SuccessSequence ¶
func (h *HtlcScriptV2) SuccessSequence() uint32
SuccessSequence returns the sequence to spend this htlc in the success case.
type PrefixLog ¶
type PrefixLog struct {
// Logger is the underlying based logger.
Logger btclog.Logger
// Hash is the hash the identifies the target swap.
Hash lntypes.Hash
}
PrefixLog logs with a short swap hash prefix.
func (*PrefixLog) Errorf ¶
Errorf formats message according to format specifier and writes to to log with LevelError.
type ScriptVersion ¶
type ScriptVersion uint8
ScriptVersion defines the HTLC script version.
const ( // HtlcV1 refers to the original version of the HTLC script. HtlcV1 ScriptVersion = iota // HtlcV2 refers to the improved version of the HTLC script. HtlcV2 )