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 }