github.com/cryptohub-digital/blockbook-fork@v0.0.0-20230713133354-673c927af7f1/bchain/coins/trezarcoin/trezarcoinparser.go (about)

     1  package trezarcoin
     2  
     3  import (
     4  	"github.com/cryptohub-digital/blockbook-fork/bchain"
     5  	"github.com/cryptohub-digital/blockbook-fork/bchain/coins/btc"
     6  	"github.com/martinboehm/btcd/wire"
     7  	"github.com/martinboehm/btcutil/chaincfg"
     8  )
     9  
    10  // magic numbers
    11  const (
    12  	MainnetMagic wire.BitcoinNet = 0xfddbefe4
    13  )
    14  
    15  // chain parameters
    16  var (
    17  	MainNetParams chaincfg.Params
    18  )
    19  
    20  func init() {
    21  	MainNetParams = chaincfg.MainNetParams
    22  	MainNetParams.Net = MainnetMagic
    23  	MainNetParams.PubKeyHashAddrID = []byte{66}
    24  	MainNetParams.ScriptHashAddrID = []byte{8}
    25  }
    26  
    27  // TrezarcoinParser handle
    28  type TrezarcoinParser struct {
    29  	*btc.BitcoinLikeParser
    30  	baseparser *bchain.BaseParser
    31  }
    32  
    33  // NewTrezarcoinParser returns new TrezarcoinParser instance
    34  func NewTrezarcoinParser(params *chaincfg.Params, c *btc.Configuration) *TrezarcoinParser {
    35  	return &TrezarcoinParser{
    36  		BitcoinLikeParser: btc.NewBitcoinLikeParser(params, c),
    37  		baseparser:        &bchain.BaseParser{},
    38  	}
    39  }
    40  
    41  // GetChainParams returns network parameters
    42  func GetChainParams(chain string) *chaincfg.Params {
    43  	if !chaincfg.IsRegistered(&MainNetParams) {
    44  		err := chaincfg.Register(&MainNetParams)
    45  		if err != nil {
    46  			panic(err)
    47  		}
    48  	}
    49  	switch chain {
    50  	default:
    51  		return &MainNetParams
    52  	}
    53  }
    54  
    55  // PackTx packs transaction to byte array using protobuf
    56  func (p *TrezarcoinParser) PackTx(tx *bchain.Tx, height uint32, blockTime int64) ([]byte, error) {
    57  	return p.baseparser.PackTx(tx, height, blockTime)
    58  }
    59  
    60  // UnpackTx unpacks transaction from protobuf byte array
    61  func (p *TrezarcoinParser) UnpackTx(buf []byte) (*bchain.Tx, uint32, error) {
    62  	return p.baseparser.UnpackTx(buf)
    63  }