script

package
v0.28.1-beta Latest Latest
Warning

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

Go to latest
Published: Apr 16, 2024 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// TaprootMultiSigWitnessSize evaluates to 66 bytes:
	//	- num_witness_elements: 1 byte
	//	- sig_varint_len: 1 byte
	//	- <sig>: 64 bytes
	TaprootMultiSigWitnessSize = 1 + 1 + 64

	// TaprootExpiryScriptSize evaluates to 39 bytes:
	//	- OP_DATA: 1 byte (client_key length)
	//	- <client_key>: 32 bytes
	//	- OP_CHECKSIGVERIFY: 1 byte
	//	- <address_expiry>: 4 bytes
	//	- OP_CHECKSEQUENCEVERIFY: 1 byte
	TaprootExpiryScriptSize = 1 + 32 + 1 + 4 + 1

	// TaprootExpiryWitnessSize evaluates to 140 bytes:
	//	- num_witness_elements: 1 byte
	//	- client_sig_varint_len: 1 byte (client_sig length)
	//	- <trader_sig>: 64 bytes
	//	- witness_script_varint_len: 1 byte (script length)
	//	- <witness_script>: 39 bytes
	//	- control_block_varint_len: 1 byte (control block length)
	//	- <control_block>: 33 bytes
	TaprootExpiryWitnessSize = 1 + 1 + 64 + 1 + TaprootExpiryScriptSize + 1 + 33
)

Variables

This section is empty.

Functions

func ExpirySpendWeight

func ExpirySpendWeight() int64

ExpirySpendWeight returns the weight of the expiry path spend.

func GenTimeoutPathScript

func GenTimeoutPathScript(clientKey *btcec.PublicKey, csvExpiry int64) ([]byte,
	error)

GenTimeoutPathScript constructs a csv timeout script for the client.

<clientKey> OP_CHECKSIGVERIFY <csvExpiry> OP_CHECKSEQUENCEVERIFY

Types

type StaticAddress

type StaticAddress struct {
	// TimeoutScript is the final locking script for the timeout path which
	// is available to the sender after the set block height.
	TimeoutScript []byte

	// TimeoutLeaf is the timeout leaf.
	TimeoutLeaf *txscript.TapLeaf

	// ScriptTree is the assembled script tree from our timeout leaf.
	ScriptTree *txscript.IndexedTapScriptTree

	// InternalPubKey is the public key for the keyspend path which bypasses
	// the timeout script locking.
	InternalPubKey *btcec.PublicKey

	// TaprootKey is the taproot public key which is created with the above
	// 3 inputs.
	TaprootKey *btcec.PublicKey

	// RootHash is the root hash of the taptree.
	RootHash chainhash.Hash
}

StaticAddress encapsulates the static address script.

func NewStaticAddress

func NewStaticAddress(muSig2Version input.MuSig2Version, csvExpiry int64,
	clientPubKey, serverPubKey *btcec.PublicKey) (*StaticAddress, error)

NewStaticAddress constructs a static address script.

func (*StaticAddress) GenSuccessWitness

func (s *StaticAddress) GenSuccessWitness(combinedSig []byte) (wire.TxWitness,
	error)

GenSuccessWitness returns the success witness to spend the static address output with a combined signature.

func (*StaticAddress) GenTimeoutWitness

func (s *StaticAddress) GenTimeoutWitness(senderSig []byte) (wire.TxWitness,
	error)

GenTimeoutWitness returns the witness to spend the taproot timeout leaf.

func (*StaticAddress) StaticAddressScript

func (s *StaticAddress) StaticAddressScript() ([]byte, error)

StaticAddressScript creates a MuSig2 2-of-2 multisig script with CSV timeout path for the clientKey. This script represents a static loop-in address.

Jump to

Keyboard shortcuts

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