github.com/trezor/blockbook@v0.4.1-0.20240328132726-e9a08582ee2c/bchain/coins/ravencoin/ravencoinparser.go (about) 1 package ravencoin 2 3 import ( 4 "github.com/martinboehm/btcd/wire" 5 "github.com/martinboehm/btcutil/chaincfg" 6 "github.com/trezor/blockbook/bchain" 7 "github.com/trezor/blockbook/bchain/coins/btc" 8 ) 9 10 // magic numbers 11 const ( 12 MainnetMagic wire.BitcoinNet = 0x4e564152 13 TestnetMagic wire.BitcoinNet = 0x544e5652 14 ) 15 16 // chain parameters 17 var ( 18 MainNetParams chaincfg.Params 19 TestNetParams chaincfg.Params 20 ) 21 22 func init() { 23 MainNetParams = chaincfg.MainNetParams 24 MainNetParams.Net = MainnetMagic 25 MainNetParams.PubKeyHashAddrID = []byte{60} 26 MainNetParams.ScriptHashAddrID = []byte{122} 27 28 TestNetParams = chaincfg.TestNet3Params 29 TestNetParams.Net = TestnetMagic 30 TestNetParams.PubKeyHashAddrID = []byte{111} 31 TestNetParams.ScriptHashAddrID = []byte{196} 32 } 33 34 // RavencoinParser handle 35 type RavencoinParser struct { 36 *btc.BitcoinLikeParser 37 baseparser *bchain.BaseParser 38 } 39 40 // NewRavencoinParser returns new RavencoinParser instance 41 func NewRavencoinParser(params *chaincfg.Params, c *btc.Configuration) *RavencoinParser { 42 return &RavencoinParser{ 43 BitcoinLikeParser: btc.NewBitcoinLikeParser(params, c), 44 baseparser: &bchain.BaseParser{}, 45 } 46 } 47 48 // GetChainParams contains network parameters 49 func GetChainParams(chain string) *chaincfg.Params { 50 if !chaincfg.IsRegistered(&MainNetParams) { 51 err := chaincfg.Register(&MainNetParams) 52 if err == nil { 53 err = chaincfg.Register(&TestNetParams) 54 } 55 if err != nil { 56 panic(err) 57 } 58 } 59 switch chain { 60 case "test": 61 return &TestNetParams 62 default: 63 return &MainNetParams 64 } 65 } 66 67 // PackTx packs transaction to byte array using protobuf 68 func (p *RavencoinParser) PackTx(tx *bchain.Tx, height uint32, blockTime int64) ([]byte, error) { 69 return p.baseparser.PackTx(tx, height, blockTime) 70 } 71 72 // UnpackTx unpacks transaction from protobuf byte array 73 func (p *RavencoinParser) UnpackTx(buf []byte) (*bchain.Tx, uint32, error) { 74 return p.baseparser.UnpackTx(buf) 75 }