chains

package
v0.0.1-gowrapper-test Latest Latest
Warning

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

Go to latest
Published: Sep 30, 2025 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BitcoinCashChain

type BitcoinCashChain struct {
	*BitcoinCompatibleChain
}

BitcoinCashChain implements the Chain interface for Bitcoin Cash

func NewBitcoinCashChain

func NewBitcoinCashChain() *BitcoinCashChain

NewBitcoinCashChain creates a new BitcoinCashChain instance

func (*BitcoinCashChain) BuildSigningInputV1

func (b *BitcoinCashChain) BuildSigningInputV1(
	amount int64,
	byteFee int64,
	toAddress string,
	changeAddress string,
	utxos []*bitcoin.UnspentTransaction,
) (*bitcoin.SigningInput, error)

BuildSigningInputV1 creates a proper Bitcoin Cash V1 SigningInput

func (*BitcoinCashChain) BuildSigningInputV2

func (b *BitcoinCashChain) BuildSigningInputV2(
	amount int64,
	byteFee int64,
	toAddress string,
	changeAddress string,
	utxos []*bitcoin.UnspentTransaction,
) (*bitcoinv2.SigningInput, error)

BuildSigningInputV2 creates a Bitcoin Cash v2 SigningInput with Bitcoin Cash-specific configuration

func (*BitcoinCashChain) CreateAndSignTransactionV2

func (b *BitcoinCashChain) CreateAndSignTransactionV2(inputV2 *bitcoinv2.SigningInput, privateKey []byte) ([]byte, error)

CreateAndSignTransactionV2 creates and signs a Bitcoin Cash v2 transaction

func (*BitcoinCashChain) CreateChainInfo

func (b *BitcoinCashChain) CreateChainInfo() *bitcoinv2.ChainInfo

CreateChainInfo creates a Bitcoin Cash ChainInfo from the configuration

func (*BitcoinCashChain) GetFeeEstimate

func (c *BitcoinCashChain) GetFeeEstimate(inputCount, outputCount, byteFee int64) int64

GetFeeEstimate returns the estimated fee for a transaction

func (*BitcoinCashChain) IsV2Transaction

func (b *BitcoinCashChain) IsV2Transaction(txHex string) bool

IsV2Transaction checks if a transaction hex string represents a V2 transaction

func (*BitcoinCashChain) ValidateTransactionInput

func (b *BitcoinCashChain) ValidateTransactionInput(input interface{}) error

ValidateTransactionInput validates Bitcoin Cash transaction input with Bitcoin Cash-specific rules

type BitcoinChain

type BitcoinChain struct {
	*BitcoinCompatibleChain
}

BitcoinChain represents the Bitcoin mainnet

func NewBitcoinChain

func NewBitcoinChain() *BitcoinChain

NewBitcoinChain creates a new Bitcoin chain instance

func (*BitcoinChain) BuildSigningInput

func (b *BitcoinChain) BuildSigningInput(
	hashType uint32,
	amount int64,
	byteFee int64,
	toAddress string,
	changeAddress string,
	utxos []*bitcoin.UnspentTransaction,
) (*bitcoin.SigningInput, error)

BuildSigningInput creates a proper Bitcoin SigningInput for common use cases

func (*BitcoinChain) BuildSigningInputV1

func (b *BitcoinChain) BuildSigningInputV1(
	amount int64,
	byteFee int64,
	toAddress string,
	changeAddress string,
	utxos []*bitcoin.UnspentTransaction,
) (*bitcoin.SigningInput, error)

BuildSigningInputV1 creates a Bitcoin v1 SigningInput with automatic script generation

func (*BitcoinChain) BuildSigningInputV2

func (b *BitcoinChain) BuildSigningInputV2(
	amount int64,
	byteFee int64,
	toAddress string,
	changeAddress string,
	utxos []*bitcoin.UnspentTransaction,
) (*bitcoinv2.SigningInput, error)

BuildSigningInputV2 creates a Bitcoin v2 SigningInput with Bitcoin-specific configuration

func (*BitcoinChain) CreateBRC20SigningInput

func (b *BitcoinChain) CreateBRC20SigningInput(
	ticker string,
	amount string,
	inscriptionValue int64,
	publicKey []byte,
	utxos []*bitcoin.UnspentTransaction,
) (*bitcoinv2.SigningInput, error)

CreateBRC20SigningInput creates a Bitcoin v2 signing input for BRC20 operations

func (*BitcoinChain) CreateChainInfo

func (b *BitcoinChain) CreateChainInfo() *bitcoinv2.ChainInfo

CreateChainInfo creates a Bitcoin ChainInfo from the configuration

func (*BitcoinChain) CreateP2TRSigningInput

func (b *BitcoinChain) CreateP2TRSigningInput(
	amount int64,
	feePerVb int64,
	toAddress string,
	publicKey []byte,
	utxos []*bitcoin.UnspentTransaction,
) (*bitcoinv2.SigningInput, error)

CreateP2TRSigningInput creates a Bitcoin v2 signing input for Pay-to-Taproot operations

func (*BitcoinChain) GetSigningData

func (b *BitcoinChain) GetSigningData(hashes []byte) ([][]byte, [][]byte, error)

GetSigningData extracts all data hashes and public key hashes from Bitcoin PreSigningOutput This method handles Bitcoin's multi-UTXO external signing where multiple hashes need to be signed

func (*BitcoinChain) ValidateTransactionInput

func (b *BitcoinChain) ValidateTransactionInput(input interface{}) error

ValidateTransactionInput validates Bitcoin transaction input with Bitcoin-specific rules

type BitcoinCompatibleChain

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

BitcoinCompatibleChain provides a complete base implementation for all Bitcoin-like chains This includes Bitcoin, Litecoin, Dogecoin, Dash, BitcoinCash, Zcash, and many others It implements the chain_abstraction.Chain interface.

func NewBitcoinCompatibleChain

func NewBitcoinCompatibleChain(config BitcoinConfig) *BitcoinCompatibleChain

NewBitcoinCompatibleChain creates a new Bitcoin-compatible chain instance

func (*BitcoinCompatibleChain) BuildScriptForAddress

func (b *BitcoinCompatibleChain) BuildScriptForAddress(address string) ([]byte, error)

BuildScriptForAddress provides a default implementation for building lock scripts from addresses. This is a base implementation that works for standard Bitcoin addresses. Specific chains (like Bitcoin Cash, Dogecoin) should override this method if they: 1. Have custom address formats that need validation 2. Support different script types 3. Need chain-specific logic for script building

The base implementation uses core.BitcoinScriptLockScriptForAddress which supports: - P2PKH (Pay to Public Key Hash) - P2SH (Pay to Script Hash) - P2WPKH (Pay to Witness Public Key Hash / Bech32)

func (*BitcoinCompatibleChain) CompileTransaction

func (b *BitcoinCompatibleChain) CompileTransaction(
	input *chain_abstraction.TransactionInput,
	signatures [][]byte,
	publicKeys [][]byte,
) ([]byte, error)

CompileTransaction compiles a transaction with auto-detection based on metadata

func (*BitcoinCompatibleChain) CompileTransactionV1

func (b *BitcoinCompatibleChain) CompileTransactionV1(
	input *chain_abstraction.TransactionInput,
	signatures [][]byte,
	publicKeys [][]byte,
) ([]byte, error)

CompileTransactionV1 compiles a v1 transaction with signatures

func (*BitcoinCompatibleChain) CompileTransactionV2

func (b *BitcoinCompatibleChain) CompileTransactionV2(
	input *chain_abstraction.TransactionInput,
	signatures [][]byte,
	publicKeys [][]byte,
) ([]byte, error)

CompileTransactionV2 compiles a v2 transaction with signatures

func (*BitcoinCompatibleChain) CreateAndSignTransaction

func (b *BitcoinCompatibleChain) CreateAndSignTransaction(input interface{}, privateKey []byte) ([]byte, error)

CreateAndSignTransaction creates and signs a transaction with auto-detection of v1/v2

func (*BitcoinCompatibleChain) CreateAndSignTransactionV1

func (b *BitcoinCompatibleChain) CreateAndSignTransactionV1(input *bitcoin.SigningInput, privateKey []byte) ([]byte, error)

CreateAndSignTransactionV1 creates and signs a Bitcoin v1 transaction

func (*BitcoinCompatibleChain) CreateAndSignTransactionV2

func (b *BitcoinCompatibleChain) CreateAndSignTransactionV2(inputV2 *bitcoinv2.SigningInput, privateKey []byte) ([]byte, error)

CreateAndSignTransactionV2 creates and signs a Bitcoin v2 transaction

func (*BitcoinCompatibleChain) CreateWallet

func (b *BitcoinCompatibleChain) CreateWallet(mnemonic string) (*chain_abstraction.Wallet, error)

CreateWallet creates a wallet from mnemonic

func (*BitcoinCompatibleChain) CreateWalletWithPrivateKey

func (b *BitcoinCompatibleChain) CreateWalletWithPrivateKey(privateKey string) (*chain_abstraction.Wallet, error)

CreateWalletWithPrivateKey creates a wallet from private key

func (*BitcoinCompatibleChain) GetCoinType

func (b *BitcoinCompatibleChain) GetCoinType() core.CoinType

GetCoinType returns the chain's coin type

func (*BitcoinCompatibleChain) GetDecimals

func (b *BitcoinCompatibleChain) GetDecimals() int

GetDecimals returns the number of decimals

func (*BitcoinCompatibleChain) GetDustThreshold

func (b *BitcoinCompatibleChain) GetDustThreshold() int64

GetDustThreshold returns the dust threshold for this chain

func (*BitcoinCompatibleChain) GetFeeEstimate

func (b *BitcoinCompatibleChain) GetFeeEstimate(inputCount, outputCount int, byteFee int64) int64

GetFeeEstimate estimates the transaction fee based on input/output count

func (*BitcoinCompatibleChain) GetHashType

func (b *BitcoinCompatibleChain) GetHashType() uint32

GetHashType returns the hash type for this chain

func (*BitcoinCompatibleChain) GetName

func (b *BitcoinCompatibleChain) GetName() string

GetName returns the chain name

func (*BitcoinCompatibleChain) GetPreimageHash

func (b *BitcoinCompatibleChain) GetPreimageHash(input *chain_abstraction.TransactionInput) ([]byte, []byte, error)

GetPreimageHash gets the preimage hash with auto-detection based on metadata

func (*BitcoinCompatibleChain) GetPreimageHashV1

func (b *BitcoinCompatibleChain) GetPreimageHashV1(input *chain_abstraction.TransactionInput) ([]byte, []byte, error)

GetPreimageHashV1 gets the preimage hash for v1 transactions

func (*BitcoinCompatibleChain) GetPreimageHashV2

func (b *BitcoinCompatibleChain) GetPreimageHashV2(input *chain_abstraction.TransactionInput) ([]byte, []byte, error)

GetPreimageHashV2 gets the preimage hash for v2 transactions

func (*BitcoinCompatibleChain) GetPublicKeyFromPrivateKey

func (b *BitcoinCompatibleChain) GetPublicKeyFromPrivateKey(privateKey []byte) ([]byte, error)

GetPublicKeyFromPrivateKey derives the public key from a private key

func (*BitcoinCompatibleChain) GetSigningData

func (b *BitcoinCompatibleChain) GetSigningData(hashes []byte) ([][]byte, [][]byte, error)

GetSigningData extracts signing data with auto-detection based on metadata

func (*BitcoinCompatibleChain) GetSigningDataV1

func (b *BitcoinCompatibleChain) GetSigningDataV1(hashes []byte) ([][]byte, [][]byte, error)

GetSigningDataV1 extracts all data hashes and public key hashes from v1 external signing

func (*BitcoinCompatibleChain) GetSigningDataV2

func (b *BitcoinCompatibleChain) GetSigningDataV2(hashes []byte) ([][]byte, [][]byte, error)

GetSigningDataV2 extracts all data hashes and public key hashes from v2 external signing Returns: (sighashes, publicKeys, error) where sighashes are the data to be signed For V2: publicKeys are extracted from the V2 sighashes themselves

func (*BitcoinCompatibleChain) GetSymbol

func (b *BitcoinCompatibleChain) GetSymbol() string

GetSymbol returns the chain symbol

func (*BitcoinCompatibleChain) GetTransactionHash

func (b *BitcoinCompatibleChain) GetTransactionHash(encodedTx []byte) (string, error)

GetTransactionHash gets the transaction hash

func (*BitcoinCompatibleChain) IsV2Transaction

func (b *BitcoinCompatibleChain) IsV2Transaction(txHex string) bool

Helper function to check if transaction is V2 format

func (*BitcoinCompatibleChain) PrepareTransaction

func (b *BitcoinCompatibleChain) PrepareTransaction(input interface{}) (*chain_abstraction.TransactionInput, error)

PrepareTransaction prepares a transaction for external signing with auto-detection of v1/v2

func (*BitcoinCompatibleChain) PrepareTransactionV1

PrepareTransactionV1 prepares a Bitcoin v1 transaction for external signing Assumes the input already has properly computed UTXO scripts and input scripts

func (*BitcoinCompatibleChain) PrepareTransactionV2

func (b *BitcoinCompatibleChain) PrepareTransactionV2(input interface{}) (*chain_abstraction.TransactionInput, error)

PrepareTransactionV2 prepares a Bitcoin v2 transaction for external signing Expects input as map[string]interface{} with 'input' and 'public_key' fields (similar to VeChain)

func (*BitcoinCompatibleChain) Sign

func (b *BitcoinCompatibleChain) Sign(preimage []byte, privateKey []byte) ([]byte, error)

Sign signs a preimage with the given private key

func (*BitcoinCompatibleChain) ValidateAddress

func (b *BitcoinCompatibleChain) ValidateAddress(address string) bool

ValidateAddress validates an address for this chain

type BitcoinConfig

type BitcoinConfig struct {
	CoinType  core.CoinType
	ChainName string
	Symbol    string
	Decimals  int

	// Transaction parameters
	HashType       uint32 // Bitcoin: 1, Bitcoin Cash: 0x41, Bitcoin Gold: 0x4f41
	DefaultByteFee int64  // Default fee per byte in satoshis
	DustThreshold  int64  // Minimum output value to avoid dust

	// V2 transaction parameters
	P2PKHPrefix uint32 // P2PKH address prefix (Bitcoin: 0, Litecoin: 48, Dogecoin: 30)
	P2SHPrefix  uint32 // P2SH address prefix (Bitcoin: 5, Litecoin: 50, Dogecoin: 22)
	HRP         string // Bech32 human readable part (Bitcoin: "bc", Litecoin: "ltc", Dogecoin: "dgb")
}

BitcoinConfig contains chain-specific configuration for Bitcoin-like chains

type DogecoinChain

type DogecoinChain struct {
	*BitcoinCompatibleChain
}

DogecoinChain represents the Dogecoin mainnet

func NewDogecoinChain

func NewDogecoinChain() *DogecoinChain

NewDogecoinChain creates a new Dogecoin chain instance

func (*DogecoinChain) BuildSigningInput

func (d *DogecoinChain) BuildSigningInput(
	hashType uint32,
	amount int64,
	byteFee int64,
	toAddress string,
	changeAddress string,
	utxos []struct {
		Hash    string // UTXO hash (hex string)
		Index   uint32 // UTXO index
		Address string // Address for this UTXO
		Amount  int64  // UTXO amount in satoshis
	},
) (*bitcoin.SigningInput, error)

BuildSigningInput creates a proper Dogecoin SigningInput for common use cases

func (*DogecoinChain) BuildSigningInputV1

func (d *DogecoinChain) BuildSigningInputV1(
	amount int64,
	byteFee int64,
	toAddress string,
	changeAddress string,
	utxos []*bitcoin.UnspentTransaction,
) (*bitcoin.SigningInput, error)

BuildSigningInputV1 creates a proper Dogecoin V1 SigningInput

func (*DogecoinChain) ValidateTransactionInput

func (d *DogecoinChain) ValidateTransactionInput(input interface{}) error

ValidateTransactionInput validates Dogecoin transaction input with Dogecoin-specific rules

type LitecoinChain

type LitecoinChain struct {
	*BitcoinCompatibleChain
}

LitecoinChain represents the Litecoin network

func NewLitecoinChain

func NewLitecoinChain() *LitecoinChain

NewLitecoinChain creates a new Litecoin chain instance

func (*LitecoinChain) BuildSigningInputV1

func (l *LitecoinChain) BuildSigningInputV1(
	amount int64,
	byteFee int64,
	toAddress string,
	changeAddress string,
	utxos []*bitcoin.UnspentTransaction,
) (*bitcoin.SigningInput, error)

BuildSigningInputV1 creates a Litecoin v1 SigningInput with Litecoin-specific features

func (*LitecoinChain) BuildSigningInputV2

func (l *LitecoinChain) BuildSigningInputV2(
	amount int64,
	byteFee int64,
	toAddress string,
	changeAddress string,
	utxos []*bitcoin.UnspentTransaction,
) (*bitcoinv2.SigningInput, error)

BuildSigningInputV2 creates a Litecoin v2 SigningInput with Litecoin-specific configuration

func (*LitecoinChain) CreateChainInfo

func (l *LitecoinChain) CreateChainInfo() *bitcoinv2.ChainInfo

CreateChainInfo creates a Litecoin ChainInfo with Litecoin-specific parameters

func (*LitecoinChain) ValidateTransactionInput

func (l *LitecoinChain) ValidateTransactionInput(input interface{}) error

ValidateTransactionInput validates Litecoin transaction input with Litecoin-specific rules

Jump to

Keyboard shortcuts

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