Documentation
¶
Index ¶
- Constants
- Variables
- func CalcFee(amount, feeBase btcutil.Amount, feeRate int64) btcutil.Amount
- func DecodeInvoice(params *chaincfg.Params, payReq string) (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 ¶
DecodeInvoice gets the 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 )