Documentation
¶
Index ¶
- type BitcoinCashChain
- func (b *BitcoinCashChain) BuildSigningInputV1(amount int64, byteFee int64, toAddress string, changeAddress string, ...) (*bitcoin.SigningInput, error)
- func (b *BitcoinCashChain) BuildSigningInputV2(amount int64, byteFee int64, toAddress string, changeAddress string, ...) (*bitcoinv2.SigningInput, error)
- func (b *BitcoinCashChain) CreateAndSignTransactionV2(inputV2 *bitcoinv2.SigningInput, privateKey []byte) ([]byte, error)
- func (b *BitcoinCashChain) CreateChainInfo() *bitcoinv2.ChainInfo
- func (c *BitcoinCashChain) GetFeeEstimate(inputCount, outputCount, byteFee int64) int64
- func (b *BitcoinCashChain) IsV2Transaction(txHex string) bool
- func (b *BitcoinCashChain) ValidateTransactionInput(input interface{}) error
- type BitcoinChain
- func (b *BitcoinChain) BuildSigningInput(hashType uint32, amount int64, byteFee int64, toAddress string, ...) (*bitcoin.SigningInput, error)
- func (b *BitcoinChain) BuildSigningInputV1(amount int64, byteFee int64, toAddress string, changeAddress string, ...) (*bitcoin.SigningInput, error)
- func (b *BitcoinChain) BuildSigningInputV2(amount int64, byteFee int64, toAddress string, changeAddress string, ...) (*bitcoinv2.SigningInput, error)
- func (b *BitcoinChain) CreateBRC20SigningInput(ticker string, amount string, inscriptionValue int64, publicKey []byte, ...) (*bitcoinv2.SigningInput, error)
- func (b *BitcoinChain) CreateChainInfo() *bitcoinv2.ChainInfo
- func (b *BitcoinChain) CreateP2TRSigningInput(amount int64, feePerVb int64, toAddress string, publicKey []byte, ...) (*bitcoinv2.SigningInput, error)
- func (b *BitcoinChain) GetSigningData(hashes []byte) ([][]byte, [][]byte, error)
- func (b *BitcoinChain) ValidateTransactionInput(input interface{}) error
- type BitcoinCompatibleChain
- func (b *BitcoinCompatibleChain) BuildScriptForAddress(address string) ([]byte, error)
- func (b *BitcoinCompatibleChain) CompileTransaction(input *chain_abstraction.TransactionInput, signatures [][]byte, ...) ([]byte, error)
- func (b *BitcoinCompatibleChain) CompileTransactionV1(input *chain_abstraction.TransactionInput, signatures [][]byte, ...) ([]byte, error)
- func (b *BitcoinCompatibleChain) CompileTransactionV2(input *chain_abstraction.TransactionInput, signatures [][]byte, ...) ([]byte, error)
- func (b *BitcoinCompatibleChain) CreateAndSignTransaction(input interface{}, privateKey []byte) ([]byte, error)
- func (b *BitcoinCompatibleChain) CreateAndSignTransactionV1(input *bitcoin.SigningInput, privateKey []byte) ([]byte, error)
- func (b *BitcoinCompatibleChain) CreateAndSignTransactionV2(inputV2 *bitcoinv2.SigningInput, privateKey []byte) ([]byte, error)
- func (b *BitcoinCompatibleChain) CreateWallet(mnemonic string) (*chain_abstraction.Wallet, error)
- func (b *BitcoinCompatibleChain) CreateWalletWithPrivateKey(privateKey string) (*chain_abstraction.Wallet, error)
- func (b *BitcoinCompatibleChain) GetCoinType() core.CoinType
- func (b *BitcoinCompatibleChain) GetDecimals() int
- func (b *BitcoinCompatibleChain) GetDustThreshold() int64
- func (b *BitcoinCompatibleChain) GetFeeEstimate(inputCount, outputCount int, byteFee int64) int64
- func (b *BitcoinCompatibleChain) GetHashType() uint32
- func (b *BitcoinCompatibleChain) GetName() string
- func (b *BitcoinCompatibleChain) GetPreimageHash(input *chain_abstraction.TransactionInput) ([]byte, []byte, error)
- func (b *BitcoinCompatibleChain) GetPreimageHashV1(input *chain_abstraction.TransactionInput) ([]byte, []byte, error)
- func (b *BitcoinCompatibleChain) GetPreimageHashV2(input *chain_abstraction.TransactionInput) ([]byte, []byte, error)
- func (b *BitcoinCompatibleChain) GetPublicKeyFromPrivateKey(privateKey []byte) ([]byte, error)
- func (b *BitcoinCompatibleChain) GetSigningData(hashes []byte) ([][]byte, [][]byte, error)
- func (b *BitcoinCompatibleChain) GetSigningDataV1(hashes []byte) ([][]byte, [][]byte, error)
- func (b *BitcoinCompatibleChain) GetSigningDataV2(hashes []byte) ([][]byte, [][]byte, error)
- func (b *BitcoinCompatibleChain) GetSymbol() string
- func (b *BitcoinCompatibleChain) GetTransactionHash(encodedTx []byte) (string, error)
- func (b *BitcoinCompatibleChain) IsV2Transaction(txHex string) bool
- func (b *BitcoinCompatibleChain) PrepareTransaction(input interface{}) (*chain_abstraction.TransactionInput, error)
- func (b *BitcoinCompatibleChain) PrepareTransactionV1(input *bitcoin.SigningInput) (*chain_abstraction.TransactionInput, error)
- func (b *BitcoinCompatibleChain) PrepareTransactionV2(input interface{}) (*chain_abstraction.TransactionInput, error)
- func (b *BitcoinCompatibleChain) Sign(preimage []byte, privateKey []byte) ([]byte, error)
- func (b *BitcoinCompatibleChain) ValidateAddress(address string) bool
- type BitcoinConfig
- type DogecoinChain
- func (d *DogecoinChain) BuildSigningInput(hashType uint32, amount int64, byteFee int64, toAddress string, ...) (*bitcoin.SigningInput, error)
- func (d *DogecoinChain) BuildSigningInputV1(amount int64, byteFee int64, toAddress string, changeAddress string, ...) (*bitcoin.SigningInput, error)
- func (d *DogecoinChain) ValidateTransactionInput(input interface{}) error
- type LitecoinChain
- func (l *LitecoinChain) BuildSigningInputV1(amount int64, byteFee int64, toAddress string, changeAddress string, ...) (*bitcoin.SigningInput, error)
- func (l *LitecoinChain) BuildSigningInputV2(amount int64, byteFee int64, toAddress string, changeAddress string, ...) (*bitcoinv2.SigningInput, error)
- func (l *LitecoinChain) CreateChainInfo() *bitcoinv2.ChainInfo
- func (l *LitecoinChain) ValidateTransactionInput(input interface{}) error
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 ¶
func (b *BitcoinCompatibleChain) PrepareTransactionV1(input *bitcoin.SigningInput) (*chain_abstraction.TransactionInput, error)
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