diff --git a/README.md b/README.md index 33a9f154..16d31f47 100644 --- a/README.md +++ b/README.md @@ -74,14 +74,14 @@ Blockbook logs only to stderr, logging to files is disabled. Verbosity of logs c # Supported coins -- [BTC](bchain/coins/btc/btc.md) -- [BTC Testnet](bchain/coins/btc/btctestnet.md) -- BCH -- BCH Testnet +- [Bitcoin](bchain/coins/btc/btc.md) +- [Bitcoin Testnet](bchain/coins/btc/btctestnet.md) +- Bcash +- Bcash Testnet - [ZCash](bchain/coins/zec/zec.md) - ZCash Testnet - [Ethereum](bchain/coins/eth/eth.md) -- [Ethereum Ropsten Testnet](bchain/coins/eth/ethropsten.md) +- [Ethereum Testnet Ropsten](bchain/coins/eth/ethropsten.md) # Data storage in RocksDB @@ -129,21 +129,21 @@ The data are separated to different column families: ## Registry of ports -| coin | blockbook http port | blockbook socket.io port | RPC port | zmq port | -|-------------|---------------------|--------------------------|----------|----------| -| btc | 9030 | 9130 | 8030 | 38330 | -| bch | 9031 | 9131 | 8031 | 38331 | -| zec | 9032 | 9132 | 8032 | 38332 | -| dash | 9033 | 9133 | 8033 | 38333 | -| ltc | 9034 | 9134 | 8034 | 38334 | -| btg | 9035 | 9135 | 8035 | 38335 | -| eth | 9036 | 9136 | 8036 | 38336* | -| etc | 9037 | 9137 | 8037 | | -| xem | 9038 | 9138 | 8038 | 38336 | -| btc-testnet | 19030 | 19130 | 18030 | 48330 | -| bch-testnet | 19031 | 19131 | 18031 | 48331 | -| zec-testnet | 19032 | 19132 | 18032 | 48332 | -| eth-ropsten | 19036 | 19136 | 18036 | 48333* | +| coin | blockbook http port | blockbook socket.io port | backend rpc port | zmq port | +|--------------------------|---------------------|--------------------------|------------------|----------| +| Bitcoin | 9030 | 9130 | 8030 | 38330 | +| Bcash | 9031 | 9131 | 8031 | 38331 | +| Zcash | 9032 | 9132 | 8032 | 38332 | +| dash | 9033 | 9133 | 8033 | 38333 | +| ltc | 9034 | 9134 | 8034 | 38334 | +| btg | 9035 | 9135 | 8035 | 38335 | +| Ethereum | 9036 | 9136 | 8036 | 38336* | +| etc | 9037 | 9137 | 8037 | 38337* | +| xem | 9038 | 9138 | 8038 | 38338 | +| Bitcoin Testnet | 19030 | 19130 | 18030 | 48330 | +| Bcash Testnet | 19031 | 19131 | 18031 | 48331 | +| Zcash Testnet | 19032 | 19132 | 18032 | 48332 | +| Ethereum Testnet Ropsten | 19036 | 19136 | 18036 | 48333* | \* geth listens on this port, however not as zmq service ## Todo diff --git a/bchain/coins/blockchain.go b/bchain/coins/blockchain.go index 5ab95436..be478f64 100644 --- a/bchain/coins/blockchain.go +++ b/bchain/coins/blockchain.go @@ -4,6 +4,7 @@ import ( "blockbook/bchain" "blockbook/bchain/coins/bch" "blockbook/bchain/coins/btc" + "blockbook/bchain/coins/btg" "blockbook/bchain/coins/eth" "blockbook/bchain/coins/zec" "blockbook/common" @@ -22,22 +23,35 @@ type blockChainFactory func(config json.RawMessage, pushHandler func(bchain.Noti var blockChainFactories = make(map[string]blockChainFactory) func init() { - blockChainFactories["btc"] = btc.NewBitcoinRPC - blockChainFactories["btc-testnet"] = btc.NewBitcoinRPC - blockChainFactories["zec"] = zec.NewZCashRPC - blockChainFactories["zec-testnet"] = zec.NewZCashRPC - blockChainFactories["eth"] = eth.NewEthereumRPC - blockChainFactories["eth-testnet"] = eth.NewEthereumRPC - blockChainFactories["bch"] = bch.NewBCashRPC - blockChainFactories["bch-testnet"] = bch.NewBCashRPC + blockChainFactories["Bitcoin"] = btc.NewBitcoinRPC + blockChainFactories["Testnet"] = btc.NewBitcoinRPC + blockChainFactories["Zcash"] = zec.NewZCashRPC + blockChainFactories["Zcash Testnet"] = zec.NewZCashRPC + blockChainFactories["Ethereum"] = eth.NewEthereumRPC + blockChainFactories["Ethereum Testnet Ropsten"] = eth.NewEthereumRPC + blockChainFactories["Bcash"] = bch.NewBCashRPC + blockChainFactories["Bcash Testnet"] = bch.NewBCashRPC + blockChainFactories["Bgold"] = btg.NewBGoldRPC +} + +// GetCoinNameFromConfig gets coin name from config file +func GetCoinNameFromConfig(configfile string) (string, error) { + data, err := ioutil.ReadFile(configfile) + if err != nil { + return "", errors.Annotatef(err, "Error reading file %v", configfile) + } + var cn struct { + CoinName string `json:"coin_name"` + } + err = json.Unmarshal(data, &cn) + if err != nil { + return "", errors.Annotatef(err, "Error parsing file %v", configfile) + } + return cn.CoinName, nil } // NewBlockChain creates bchain.BlockChain of type defined by parameter coin func NewBlockChain(coin string, configfile string, pushHandler func(bchain.NotificationType), metrics *common.Metrics) (bchain.BlockChain, error) { - bcf, ok := blockChainFactories[coin] - if !ok { - return nil, errors.New(fmt.Sprint("Unsupported coin ", coin, ". Must be one of ", reflect.ValueOf(blockChainFactories).MapKeys())) - } data, err := ioutil.ReadFile(configfile) if err != nil { return nil, errors.Annotatef(err, "Error reading file %v", configfile) @@ -47,6 +61,10 @@ func NewBlockChain(coin string, configfile string, pushHandler func(bchain.Notif if err != nil { return nil, errors.Annotatef(err, "Error parsing file %v", configfile) } + bcf, ok := blockChainFactories[coin] + if !ok { + return nil, errors.New(fmt.Sprint("Unsupported coin '", coin, "'. Must be one of ", reflect.ValueOf(blockChainFactories).MapKeys())) + } bc, err := bcf(config, pushHandler) if err != nil { return nil, err @@ -87,6 +105,10 @@ func (c *blockChainWithMetrics) GetNetworkName() string { return c.b.GetNetworkName() } +func (c *blockChainWithMetrics) GetCoinName() string { + return c.b.GetCoinName() +} + func (c *blockChainWithMetrics) GetSubversion() string { return c.b.GetSubversion() } diff --git a/bchain/coins/btc/bitcoinparser.go b/bchain/coins/btc/bitcoinparser.go index aa8ceffe..eab5891d 100644 --- a/bchain/coins/btc/bitcoinparser.go +++ b/bchain/coins/btc/bitcoinparser.go @@ -85,7 +85,7 @@ func outputScriptToAddresses(script []byte, params *chaincfg.Params) ([]string, return rv, nil } -func (p *BitcoinParser) txFromMsgTx(t *wire.MsgTx, parseAddresses bool) bchain.Tx { +func (p *BitcoinParser) TxFromMsgTx(t *wire.MsgTx, parseAddresses bool) bchain.Tx { vin := make([]bchain.Vin, len(t.TxIn)) for i, in := range t.TxIn { if blockchain.IsCoinBaseTx(t) { @@ -145,7 +145,7 @@ func (p *BitcoinParser) ParseTx(b []byte) (*bchain.Tx, error) { if err := t.Deserialize(r); err != nil { return nil, err } - tx := p.txFromMsgTx(&t, true) + tx := p.TxFromMsgTx(&t, true) tx.Hex = hex.EncodeToString(b) for i, vout := range tx.Vout { @@ -172,7 +172,7 @@ func (p *BitcoinParser) ParseBlock(b []byte) (*bchain.Block, error) { txs := make([]bchain.Tx, len(w.Transactions)) for ti, t := range w.Transactions { - txs[ti] = p.txFromMsgTx(t, false) + txs[ti] = p.TxFromMsgTx(t, false) } return &bchain.Block{Txs: txs}, nil diff --git a/bchain/coins/btc/bitcoinrpc.go b/bchain/coins/btc/bitcoinrpc.go index ea4bf567..f02cb060 100644 --- a/bchain/coins/btc/bitcoinrpc.go +++ b/bchain/coins/btc/bitcoinrpc.go @@ -35,6 +35,7 @@ type BitcoinRPC struct { } type Configuration struct { + CoinName string `json:"coin_name"` RPCURL string `json:"rpcURL"` RPCUser string `json:"rpcUser"` RPCPass string `json:"rpcPass"` @@ -154,6 +155,10 @@ func (b *BitcoinRPC) GetNetworkName() string { return b.Network } +func (b *BitcoinRPC) GetCoinName() string { + return b.ChainConfig.CoinName +} + func (b *BitcoinRPC) GetSubversion() string { return b.ChainConfig.Subversion } diff --git a/bchain/coins/btg/bgoldparser.go b/bchain/coins/btg/bgoldparser.go new file mode 100644 index 00000000..4421848a --- /dev/null +++ b/bchain/coins/btg/bgoldparser.go @@ -0,0 +1,159 @@ +package btg + +import ( + "blockbook/bchain" + "blockbook/bchain/coins/btc" + "bytes" + "fmt" + "io" + + "github.com/btcsuite/btcd/chaincfg" + "github.com/btcsuite/btcd/chaincfg/chainhash" + "github.com/btcsuite/btcd/wire" +) + +const ( + MainnetMagic wire.BitcoinNet = 0x446d47e1 + TestnetMagic wire.BitcoinNet = 0x456e48e2 +) + +var ( + MainNetParams chaincfg.Params + TestNetParams chaincfg.Params +) + +func init() { + MainNetParams = chaincfg.MainNetParams + MainNetParams.Net = MainnetMagic + + // Address encoding magics + MainNetParams.PubKeyHashAddrID = 38 // base58 prefix: G + MainNetParams.ScriptHashAddrID = 23 // base58 prefix: A + + TestNetParams = chaincfg.TestNet3Params + TestNetParams.Net = TestnetMagic + + // Human-readable part for Bech32 encoded segwit addresses, as defined in + // BIP 173. + // see https://github.com/satoshilabs/slips/blob/master/slip-0173.md + MainNetParams.Bech32HRPSegwit = "btg" + TestNetParams.Bech32HRPSegwit = "tbtg" + + err := chaincfg.Register(&MainNetParams) + if err == nil { + err = chaincfg.Register(&TestNetParams) + } + if err != nil { + panic(err) + } +} + +// BGoldParser handle +type BGoldParser struct { + *btc.BitcoinParser +} + +// NewBCashParser returns new BGoldParser instance +func NewBGoldParser(params *chaincfg.Params, c *btc.Configuration) *BGoldParser { + return &BGoldParser{BitcoinParser: btc.NewBitcoinParser(params, c)} +} + +// GetChainParams contains network parameters for the main Bitcoin Cash network, +// the regression test Bitcoin Cash network, the test Bitcoin Cash network and +// the simulation test Bitcoin Cash network, in this order +func GetChainParams(chain string) *chaincfg.Params { + switch chain { + case "test": + return &TestNetParams + case "regtest": + return &chaincfg.RegressionNetParams + default: + return &MainNetParams + } +} + +// minTxPayload is the minimum payload size for a transaction. Note +// that any realistically usable transaction must have at least one +// input or output, but that is a rule enforced at a higher layer, so +// it is intentionally not included here. +// Version 4 bytes + Varint number of transaction inputs 1 byte + Varint +// number of transaction outputs 1 byte + LockTime 4 bytes + min input +// payload + min output payload. +const minTxPayload = 10 + +// maxTxPerBlock is the maximum number of transactions that could +// possibly fit into a block. +const maxTxPerBlock = (wire.MaxBlockPayload / minTxPayload) + 1 + +// headerFixedLength is the length of fixed fields of a block (i.e. without solution) +// see https://github.com/BTCGPU/BTCGPU/wiki/Technical-Spec#block-header +const headerFixedLength = 44 + (chainhash.HashSize * 3) + +// ParseBlock parses raw block to our Block struct +func (p *BGoldParser) ParseBlock(b []byte) (*bchain.Block, error) { + r := bytes.NewReader(b) + err := skipHeader(r, 0) + if err != nil { + return nil, err + } + + w := wire.MsgBlock{} + err = decodeTransactions(r, 0, wire.WitnessEncoding, &w) + if err != nil { + return nil, err + } + + txs := make([]bchain.Tx, len(w.Transactions)) + for ti, t := range w.Transactions { + txs[ti] = p.TxFromMsgTx(t, false) + } + + return &bchain.Block{Txs: txs}, nil +} + +func skipHeader(r io.ReadSeeker, pver uint32) error { + _, err := r.Seek(headerFixedLength, io.SeekStart) + if err != nil { + return err + } + + size, err := wire.ReadVarInt(r, pver) + if err != nil { + return err + } + + _, err = r.Seek(int64(size), io.SeekCurrent) + if err != nil { + return err + } + + return nil +} + +func decodeTransactions(r io.Reader, pver uint32, enc wire.MessageEncoding, blk *wire.MsgBlock) error { + txCount, err := wire.ReadVarInt(r, pver) + if err != nil { + return err + } + + // Prevent more transactions than could possibly fit into a block. + // It would be possible to cause memory exhaustion and panics without + // a sane upper bound on this count. + if txCount > maxTxPerBlock { + str := fmt.Sprintf("too many transactions to fit into a block "+ + "[count %d, max %d]", txCount, maxTxPerBlock) + return &wire.MessageError{Func: "btg.decodeTransactions", Description: str} + } + + blk.Transactions = make([]*wire.MsgTx, 0, txCount) + for i := uint64(0); i < txCount; i++ { + tx := wire.MsgTx{} + err := tx.BtcDecode(r, pver, enc) + if err != nil { + return err + } + blk.Transactions = append(blk.Transactions, &tx) + } + + return nil +} diff --git a/bchain/coins/btg/bgoldparser_test.go b/bchain/coins/btg/bgoldparser_test.go new file mode 100644 index 00000000..f308aced --- /dev/null +++ b/bchain/coins/btg/bgoldparser_test.go @@ -0,0 +1,123 @@ +package btg + +import ( + "blockbook/bchain/coins/btc" + "bytes" + "encoding/hex" + "fmt" + "io/ioutil" + "path/filepath" + "testing" +) + +var testParseBlockTxs = map[int][]string{ + 104000: []string{ + "331d4ef64118e9e5be75f0f51f1a4c5057550c3320e22ff7206f3e1101f113d0", + "1f4817d8e91c21d8c8d163dabccdd1875f760fd2dc34a1c2b7b8fa204e103597", + "268163b1a1092aa0996d118a6027b0b6f1076627e02addc4e66ae30239936818", + "27277a1049fafa2a46368ad02961d37da633416b014bcd42a1f1391753cbf559", + "276d2d331585d0968762d9788f71ae71524ccba3494f638b2328ac51e52edd3d", + "28d9f85089834c20507cc5e4ec54aaaf5b79feab80cad24a48b8296b6d327a43", + "2a2d66d3d9e8b6f154958a388377f681abd82ce98785a5bbf2e27d0ca454da3f", + "39c9e995a12b638b541d21ed9f9e555716709add6a97c8ba63fe26e4d26bdc3f", + "4a768efc6cc0716932800115989376c2ce3e5e17668b08bd2f43031105a6ac6e", + "4bc41fa0188d988d853a176eb847a541c5adf35348eab21d128904aab36e8574", + "4cad1bd38cc7be880f3a968af6f13a3aeb5dbdb51a774b7d1ae3d6d6bfd114e4", + "6bc558801583bfdb656106889c4b8bd783168133784666338c57e5b2a675a922", + "75eb5c1aa89b18ce71f363f95147942b46645ca9b1e472784fcb8c9a096f4f5c", + "91755365cff22c4eed09a57a8fb7b2faa5c1caa5fa750c89f830a2bb56fa4c68", + "9417d34969891f2a0b9aa3a1226505edf3b429fa1acd21a140d358a217d11d55", + "950fbb5f413af9f7c6e5dabfacf68b715c9851b5cf6ab6806960f7cc7cad2f9d", + "99b134dae55ddfab1f5d5243c2e60030a9ed969ba5915f98840b877f8af28ce0", + "9d7b15eaaccce66e25efe7e2979454ae4968b61281d50f32be9872d2d256c244", + "a54df5296f1d1a6101cee0869ffda03502e417fc72475b7902a6dfd5b9329399", + "adba400f14b476f0c2b11340ee1fa440208b49fd99c1072136198b5c43664826", + "bd7d8fee068bd45b06b4c17ccdf577b4bc2b21c9c4e0cee8453409b0e63b4f5d", + "beabd2d68b66a9b47b6aff23b569c1b59e429074f06bdd4993e9d3c2cb69c992", + "bfa81174d549eb7ed15be3f965686aff3084f22523c52fbed03c3fc3e18b7cda", + "e42472099cb039b1c2248b611ce212580338550977e02bd77accdf29bfd86e96", + "f056e02b12d99377f724a4987cde68ecf6f234fd7e2bdf4324172c03d015ba25", + "f1815cfb1ef4cfe13ff5ec2c15b5bc55fde043db85daca1bb34cc1b491193308", + "f225abce64f75383686fa08abe47242e59e97809a31c8fd7a88acce1e6cbcd27", + "f93f1b125bfa2da5ccaaf30ff96635b905b657d48a5962c24be93884a82ef354", + "fef75d015f2e9926d1d4bf82e567b91e51af66a6e636d03a072f203dd3062ae5", + "051b60a6accead85da54b8d18f4b2360ea946da948d3a27836306d2927fed13e", + "28e47b050ec4064cdbd3364f3be9445d52635e9730691ef71ed1db0f0147afd6", + "446ebde2457102bcbc2c86cac6ff582c595b00346fd0b27ea5a645240020504b", + "46c8fafe2b7bb1646aeefa229b18fa7ffe20fee0a30c4a9ef3e63c36c808f6f7", + "550d96cf82fbe91dcc9b96e7aa404f392ee47400c22a98a7631d29eee43fceaa", + "59b6b78a72cc33cd29741894b3007b1330fc7f7945bdc0a7a4044ed1dd289c19", + "5a3aa07474338cf193c1d7aacdc37f3311c971857ba8cfd308e8fabf5e473882", + "82e014b1a9c6cb7729274653ce748c66953de6abb3d1411471515b41b727cf75", + "8d70af4f135696da396c9aa9f936b54195bfbe6ff0e08b3b210ca0b52bc167d2", + "9949c2f2f3b96a557ef6e14004cbd239a0744c056faca34bdff01e125b4380e8", + "d09a8c83123ce1cb6ff837e7670aab5f50c5155d9706dd26f7e0761fd20c5536", + "f601482efc5b2dd3d0031e318e840cd06f7cab0ffff8cc37a5bf471b515ddfb7", + "f88d3c0ebe8b294f11e70d2ae6d2f0048437bfb20dae7e69d545a4c72d3432dd", + "2b9e574b90556250b20a79d9c94ceaff3dfd062291c34c3fa79c7ca8d85a3500", + "b9484ef8e38ceafe8d2b09ecf59562d262b15d185844b2d00db362718d52b2c2", + "07a4af0a81b55313a1c16da7d808829d689436fd078fa9559b6d1603dd72474e", + "3393bdcc3a7232b37d0fb6b56d603a2b9b0419e461bf989f1c375859a5d0156a", + "33ad36d79d63b575c7532c516f16b19541f5c637caf7073beb7ddf604c3f39cc", + }, + 532144: []string{ + "574348e23301cc89535408b6927bf75f2ac88fadf8fdfb181c17941a5de02fe0", + "9f048446401e7fac84963964df045b1f3992eda330a87b02871e422ff0a3fd28", + "9516c320745a227edb07c98087b1febea01c3ba85122a34387896fc82ba965e4", + "9d37e1ab5a28c49ce5e7ece4a2b9df740fb4c3a84bdec93b3023148cf20f0de7", + "a3cd0481b983ba402fed8805ef9daf5063d6d4e5085b82eca5b4781c9e362d6a", + "7f2c2567e8de0321744817cfeb751922d7e8d82ef71aa01164c84fb74a463a53", + "cd064315e3f5d07920b3d159160c218d0bb5b7b4be606265767b208ae7e256eb", + "a9523400f341aa425b0fcc00656ec1fa5421bf3545433bff98a8614fc9a99d1f", + "ec766daacbb05a8f48a3205e5c6494a7c817bd35eefff9aaf55e0dd47fe6e8fc", + "0837a4116872abf52caa52d1ff7608674ba5b09a239a1f43f3a25ba4052e4c77", + "a3e23a0344fe6ba7083fc6afb940517cdb666dce00389cbd8598bd599199cdda", + "048d951cef84d35d68f0bc3b575662caf23fee692e8035bd5efe38ab67e0d6c2", + "11307491b24d42ddd7ea27fc795d444b65c3936be31b904a97da68fabc85e5b8", + "84ad99dc0884e03fc71f163eebf515a1eb79d00b1aad7a1126b22747960a8275", + "728c8d0858e506d4a1a9b506f7b974b335e6c54047af9f40d4cb1a0561f783e1", + }, +} + +func helperLoadBlock(t *testing.T, height int) []byte { + name := fmt.Sprintf("block_dump.%d", height) + path := filepath.Join("testdata", name) + + d, err := ioutil.ReadFile(path) + if err != nil { + t.Fatal(err) + } + + d = bytes.TrimSpace(d) + + b := make([]byte, hex.DecodedLen(len(d))) + _, err = hex.Decode(b, d) + if err != nil { + t.Fatal(err) + } + + return b +} + +func TestParseBlock(t *testing.T) { + p := NewBGoldParser(GetChainParams("main"), &btc.Configuration{}) + + for height, txs := range testParseBlockTxs { + b := helperLoadBlock(t, height) + + blk, err := p.ParseBlock(b) + if err != nil { + t.Fatal(err) + } + + if len(blk.Txs) != len(txs) { + t.Errorf("ParseBlock() number of transactions: got %d, want %d", len(blk.Txs), len(txs)) + } + + for ti, tx := range txs { + if blk.Txs[ti].Txid != tx { + t.Errorf("ParseBlock() transaction %d: got %s, want %s", ti, blk.Txs[ti].Txid, tx) + } + } + } +} diff --git a/bchain/coins/btg/bgoldrpc.go b/bchain/coins/btg/bgoldrpc.go new file mode 100644 index 00000000..4de00487 --- /dev/null +++ b/bchain/coins/btg/bgoldrpc.go @@ -0,0 +1,54 @@ +package btg + +import ( + "blockbook/bchain" + "blockbook/bchain/coins/btc" + "encoding/json" + + "github.com/golang/glog" +) + +// BGoldRPC is an interface to JSON-RPC bitcoind service. +type BGoldRPC struct { + *btc.BitcoinRPC +} + +// NewBCashRPC returns new BGoldRPC instance. +func NewBGoldRPC(config json.RawMessage, pushHandler func(bchain.NotificationType)) (bchain.BlockChain, error) { + b, err := btc.NewBitcoinRPC(config, pushHandler) + if err != nil { + return nil, err + } + + s := &BGoldRPC{ + b.(*btc.BitcoinRPC), + } + + return s, nil +} + +// Initialize initializes BGoldRPC instance. +func (b *BGoldRPC) Initialize() error { + chainName, err := b.GetChainInfoAndInitializeMempool(b) + if err != nil { + return err + } + + params := GetChainParams(chainName) + + // always create parser + b.Parser = NewBGoldParser(params, b.ChainConfig) + + // parameters for getInfo request + if params.Net == MainnetMagic { + b.Testnet = false + b.Network = "livenet" + } else { + b.Testnet = true + b.Network = "testnet" + } + + glog.Info("rpc: block chain ", params.Name) + + return nil +} diff --git a/bchain/coins/btg/testdata/block_dump.104000 b/bchain/coins/btg/testdata/block_dump.104000 new file mode 100644 index 00000000..f8954e3f --- /dev/null +++ b/bchain/coins/btg/testdata/block_dump.104000 @@ -0,0 +1 @@ +010000009789a42db1c44bdd4800f30fdeb6ebfc4bec85fc7b609604de380100000000008ce885880db3ddd2594301b9d6332047a0ad8b794bcd1e789d6399df3c452d66000000000000000000000000000000000000000000000000000000000000000021e73a4dee8d031bb1f53f2800000000000000000000000000000000000000000000000000000000002f01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0804ee8d031b02e300ffffffff0100f2052a0100000043410452761449ac46ade56ded63a8978c0ad0cb5909d85bef89e37fdb8b4e9a69fb1487a5d7d2275eb195aab1c252d2ad729def759c9a92b83acaa5dfa9d7fcbebf00ac0000000001000000014e7ef4d8384073254ac6c643b67e2725c9afc5f970a49998df3e50c13183edb7010000008c493046022100c221b0874004f298b70152b403c40f6c39a1e865fa28df3f41befc38c0ce9ab0022100ca2ea4b90fb4e3a7cd69ccf8628ecf14b6913683eeac0fbfa98d0f08f3ec80af01410429800bcf5a62d849a3aee14942c55006d13848cdea614605137c748a7b0f3c68178c6d658185904cb1e98483884c7df1c3d7d9fa411d0ec810a9729d877b313bffffffff020048e801000000001976a91439bcea0aff38606c657d987599ff9368a0a8e6e788ac80a81201000000001976a914290b9f1139a0880c724944adb7a125844c47204d88ac000000000100000003ba1ba6c4432e4eb866106e7df429fb1dcc275265d79a9e5ffa0b7f29af255f31010000008b48304502204a4d268cd8f503e8ba3a3bce42d0ce0514de45de7939073dbd8c5e656d267422022100a022ea00cb683abe4fcae098e7b398b38ef7abccb4d7b4201662f1c41d85b0dc014104d3870f52ea7933a3cf6037d6067d8f7d369c3f3eee910e409771747b0b5344534257f9a1ce918ea2c584e76c13fe1baf8cf567df2e5631798af2f9cde456098dffffffff7548c9f9fb40159e43d1b3ea6ed2923c0d4cbd8dcc1fb0cec748c4c513fe1d91000000008b48304502200648172f2eced79d3ec8180add21c6515058432a45939de3f03e3f915c4560d3022100b3a61e49272242ce259e5e1828cbc9bffbf7ed353223a37f902752c43ea7f5a3014104ae1fbfdc10f8b10541e08e7a0a6bad1f9c3779866687ec4790ae974cb008a17fdd7cb289df59385bdb3115452df82ae9163e97e676f515d3f37592f484bb6036ffffffff4d99922704fd4563c388e16a20b1d60b97d6bb11b9a5bde15ce2a66bdcc02b2e000000008a4730440220036cae41313669f471f4ed38fe565db24b15580e6f82217c83eb04b76e4a8a6f02205cdadf8bfcb73ef4d4da41235dbf50d084ff768fe11c1d4434673d3289e503b90141043f1a8651e4886d151954f036c5c401bc2df106608cb2250181290cdb3e792abb2273bed0b9f3927024ae4b46fe49fddf01a4b1f359a13c89b1c979d4f5b4c198ffffffff0240420f00000000001976a91420ef0f149768d360caf84ed300a5d488009cfab988ac40933402000000001976a91439bcea0aff38606c657d987599ff9368a0a8e6e788ac0000000001000000011f83fe70bb8d644bf26ebc780132bdc1bbe8b08f8e58bb94e402a60af8ca1d71010000008c493046022100a642c703dc06df0febd4e4679cde65af94e9c468f0d158eb3ff6f050d8a62df0022100dc96fae21ec5fc0874ae6227f8487ac33b361a04d07086f801d4bc4e19a37efd014104de22410a02d4fba62d276237ecd91c928892a0803911b72232dd90585edb9d5ee89c7b9da0bfc1e42a36252459fe4223e0ae5288cafb29cea3b0e7d411f336e7ffffffff01404b4c00000000001976a914314f9045678d32fd426aa0332bc1869d459a867388ac0000000001000000021168db7133e59b443b72da89b81ac0764f3188c300437ee22914e791f0be162c000000008b483045022100985d0d1cb07a06c7d1d90afbc1a653e8c24acb2e1ad540c4edecc7ada2dc06620220026a1046a790d7375f12a33954051b6d10690efd736a5e65627312ca2db33c700141043c4d4c7cfa8d08e93eb2205891631b04bcc2bf7f67982cdfa03002fba1c5b2cea16debc52a5b85aa031a65cbb29c2a11c3fc8717592544b3e8c4d059849f1e09ffffffff100ee994826ad2198377c4c2301f0506a9a597843cf81cbbb3dafd994efae5dd000000008a473044022054e5682d7717f800104e4d628902498bc1a20f1c1907db11be7ada6364398745022079dec4a91e7e57a7542a36f9d198b0591bdbee3a2278a2c9e9037c884766aa36014104618f11807aa053343c796856f13b82949f8b39f1f8219b4f809650f0a1c287cd5435cf7af98e0a78503269c27323b071a5486aa0ecc33c8355787b8ce2621524ffffffff02c0c62d00000000001976a9144ae84e5b9f8e187fceb5a4ae4770e76afe85412a88ac40420f00000000001976a9142f98dd90316c9f51ce1c9f66f6cd4e26c2fee43d88ac0000000001000000015ed22f035e27252bdd38a93c34f156065b6854f2fb0746e07bfb523bab130469000000008c4930460221009f801701d1086b14f226b6b22a14107e4071783147418965a04cfb8536ebd978022100b4a744e52263cfa871a5d719bbb143f93adf1786d2da4c567adc98ba1a1c60c601410429800bcf5a62d849a3aee14942c55006d13848cdea614605137c748a7b0f3c68178c6d658185904cb1e98483884c7df1c3d7d9fa411d0ec810a9729d877b313bffffffff0280a81201000000001976a9144b1b9e70329c693d392e88414ea855bf315aba8d88ac0048e801000000001976a91439bcea0aff38606c657d987599ff9368a0a8e6e788ac00000000010000000242ab9b14fef0daa083b8dba66119c29b70831cdbad342009699393023af33193000000008c49304602210099ddac33d35dc5fd537fce22d2d468be7ddc4d229b3681d3016f99855e731c6302210086dfacd754785b890a756ee9ab5f801e542cd9ac332ba0b0e79e8576fea375b60141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffffba1ba6c4432e4eb866106e7df429fb1dcc275265d79a9e5ffa0b7f29af255f31000000008b483045022100f600a4e81147a3c7f94c67faf2f4c722678079412bfcaff25239cc20817081b40220180829477672fe9aafcc20db0d7fb40c16a2b3f3d47ac08403b371167b4e25b60141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0280f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac809fd500000000001976a914f589674edf26daf1ac9999547f3902ecfe6297b388ac000000000100000001e942becb08bcfb716207c425c4211b25eefab6894fe6ff9ab7cb66d06ff26390000000008b48304502201b23413ad1bc782ebd7399472fecc75ea1fb5d5aa7d067e57e19dc39ab93fc9c022100d7d5c6247a0244220a1d20e66db2bc764a03a61bc3284ed4cd927c4b71c7dadd01410429800bcf5a62d849a3aee14942c55006d13848cdea614605137c748a7b0f3c68178c6d658185904cb1e98483884c7df1c3d7d9fa411d0ec810a9729d877b313bffffffff02002d3101000000001976a914e1cb3201025e8e26e8e1c1f2833e30ca0252a40888ac80c3c901000000001976a91439bcea0aff38606c657d987599ff9368a0a8e6e788ac000000000100000001d094c7da676be2b8bf2a0c1b073ff63d1bea5e08f183cac575a806f919946296000000008b4830450220532bd95d5645cdff7ad7166e7bdb6ad5f051557fa9b0b0c1d6af319a1fa69721022100e1a8b74bde971a68752517fcca7497275b74e581063920e261aed9c6272195a90141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0280f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac001bb700000000001976a914104b07e9293bfb723e22792c29d1a8fbbf66353988ac000000000100000001fd293a8d35e4bd8cd1dc69d1b80eb0251a761de4ed066f9d79d35a927deaff7a010000008b483045022034d199167826a7065e5ea1035a969feb1707025fae81716b24a090751fe0cc4e022100d8982c8d68f3c730798a55b7bc5f82d8d4fc2cce20abe8d46f5f0d29ae0d574f01410429800bcf5a62d849a3aee14942c55006d13848cdea614605137c748a7b0f3c68178c6d658185904cb1e98483884c7df1c3d7d9fa411d0ec810a9729d877b313bffffffff0180f0fa02000000001976a91439bcea0aff38606c657d987599ff9368a0a8e6e788ac000000000100000002318b17106525d00c0bb727f5f9c58b65515d1640e6feec8e26b4075e6d68362d000000008a473044022063cd977817e7e0ba965c3acbac34cc544b187c2e8db41147444aa39840a5227602203259c2b585be5a16b89756f238039301c68d72c7340e50c14458e15e0e172334014104c5422a3b48674e17eb17399670888a8662590396581f9d30729b47f9c04eaca705bde26fa9c2b7db7d85008a73c0eaebc3fd1898582892dd736c18b98194cb20ffffffff7fdb225ee33050402fc8fd860b0a1be4abaeec9112625dc5da18a20cd7da2997000000008b48304502204a2488aa49b11ed4c5b8b24b8b21f6f24ba86478cb722b6eb5648561ec3d4609022100f1bf04a13d5e0cf7945a9399d4d955f073893df1c2403ff41ad4c268d6a4227e0141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0280f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac80969800000000001976a91427a6f93d0b83194e285373bf35fe1821d9bbd0bd88ac0000000001000000033fda54a40c7de2f2bba58587e92cd8ab81f67783388a9554f1b6e8d9d3662d2a010000008a4730440220418f7c3473eeadd92048d2539d0882d72f87595cc948235c8c99dd57f1904d5e02206e3ba03d1c2a7b324eaefe0da46aff0ab51a03c8a4664a240f374db024c13842014104b67d7e45b7060c9ef1a262f2c4b796c7ac8ab39c6afd1d0298375b6c74db3ebaec4ad6652231255faa2210e9e42f1390aaa57c2140305b407c702d6db174a3a2ffffffffe414d1bfd6d6e31a7d4b771ab5bd5deb3a3af1f68a963a0f88bec78cd31bad4c010000008c493046022100cd80aad86106e37f70e3934a9f6cbc573ab5dbe140fbad0096896e8a2143afa7022100d61834cc68805106dcb57130a87cd723da108befdfb785f7c1664be8722c208b014104f33927d4e6cbb884629d5c4eff72a87e8fdda5419e9d7d16590763943b3b6bc536f5604596818f03b932b4dbd358563e0badede48a4c24ab355db8d1051486d3ffffffff4d99922704fd4563c388e16a20b1d60b97d6bb11b9a5bde15ce2a66bdcc02b2e010000008a47304402201c3b0132a5ce12a99ff089ef6cb8f6217d9f3baba6c5fdb616a62c9b5304e219022037df8ac9f8c713d48df2bada649ca5a4df115b15d634cbb10f89979edceb60ae0141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0280f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac00093d00000000001976a914f3309fc0686d4690778123db7fcf5b3cbea97e1b88ac0000000001000000026860a65109ef7e7ca324091ec7058e0ee25eac0fb98118e539c8418b54e1c4a4000000008b48304502210092f79ae8b4ba7a6abe80d37a0d06f0111a91284dd6ac0512532f4f061bc71c4402203812660e92130b67b88e9e282fee1b0134598754d928be7ffcd13c13b64ea54601410429800bcf5a62d849a3aee14942c55006d13848cdea614605137c748a7b0f3c68178c6d658185904cb1e98483884c7df1c3d7d9fa411d0ec810a9729d877b313bffffffff79e3bec504b207b550d212009a580614df43073cdb684c047b0878dfd2ec0245010000008c4930460221009649e9c6f9f4e530e5d57a5202c36c5b85e02727778546ec95c16255f5d7c55e022100852aac95a9d772a6fb99d6780195de7cd1aebec511a8fc372dd908304053e423014104b6bfc9a75428e977b80905173807bc48206ca4b9b61520e298872f6e926c428f0f6ecbf1645b6bd5570565bcc27e138a0a0d8d50577f3c96369e4af19f24e26effffffff0240420f00000000001976a91448f00e3ff8d0f9ca63a2bd15e360d7c1ef84ff2f88ac800bb203000000001976a91439bcea0aff38606c657d987599ff9368a0a8e6e788ac000000000100000001b11617db77c9c530d901a49cf51c51031d0c38ddcb203f6112af1fc07d07dcfc000000008b483045022100a3faf7c17caf06e9f96d177060e3fa8f3648dffd69176fd1d6452dd3e19d3fe302203278f27161db1ed34bc0816d301f1ae845457ae54f0c0967d1325c2ddfa98c160141043f8f4a9868ccfb8dfdce654cd1f1e80f3d4b2b91b2b03e0ed2ab2f5f806fe9f23f5435ddbdd8295419ed6231907bcf5c53d9eaf6c70335e539dcfbe184a69246ffffffff02800bb203000000001976a91439bcea0aff38606c657d987599ff9368a0a8e6e788ac80d54302000000001976a914a172a2bc76958274c5e449144b6237925aab8a3288ac000000000100000001b75bbeac86f7024177e4c7c3416a08a08fe096fdbce70b8b2e603aa842968902010000008a47304402206ac95238cce64ea324775459192e483a72822c5ff597d53e1a75b733254f60d40220401c40d11c7cd462777ac71b4760b62b317e17ef15c56b4b05bf6b3b54eb71e101410429800bcf5a62d849a3aee14942c55006d13848cdea614605137c748a7b0f3c68178c6d658185904cb1e98483884c7df1c3d7d9fa411d0ec810a9729d877b313bffffffff02405dc600000000001976a9143d40c2af5f85d7e5c46fa36aa8d4d6b051511a0688ac40933402000000001976a91439bcea0aff38606c657d987599ff9368a0a8e6e788ac000000000100000001e168e9c9253898fc1c45f4aa20728425fe15fefff10f5a281689d5dcc997bf62000000008b483045022100878c31c21983806e899e5dfd0fe639a5d0b9c10b64d8b88c9438112aa64e30b602204c5e044c58dfc865abe8cecc662cc70567379a92a3eef7995d7c517299f134ca0141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0180f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac00000000010000000174856eb3aa0489121db2ea4853f3adc541a547b86e173a858d988d18a01fc44b000000008c493046022100e8c223ef22c1892472ff91610db40a2a9dfb0dad8aed54a7ffdc3dfe541188a2022100b7305d2da767ea851c9231cd199f4fd5deba601cac801a6a2de8781aef3afaab0141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0180f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac000000000100000001a04b05384c42afa0f83e60e595d715d868e79cd93c86a4818f84ce2d0e32d9b0010000008c493046022100fee94bc48e9350b53c3687735cbcc289e470bad3f4345f1a964ac59f175585ea022100fc9981b02caeb737dee437c3b6d4a97cd89fd060de74f022d848fbad04297bf301410429800bcf5a62d849a3aee14942c55006d13848cdea614605137c748a7b0f3c68178c6d658185904cb1e98483884c7df1c3d7d9fa411d0ec810a9729d877b313bffffffff0280a81201000000001976a91469754a5bb16b1cb2e31933792df6598968965a8888ac0048e801000000001976a91439bcea0aff38606c657d987599ff9368a0a8e6e788ac000000000100000001d094c7da676be2b8bf2a0c1b073ff63d1bea5e08f183cac575a806f919946296010000008c493046022100cbc637bf797414a3f9227e55e6e0afdec509db884ae4052af1e25a1953a12e3602210099617f119a50047ae58553947d714fa09a2b0bc7f65a409d05fd1ae8d20423ee01410402ba25cc0e24a38857ebfa7bb43408172ec42e738f7e77c2dccb80fb205383851e7f79e74e0074b6f6c0dca49ddd099118cf2e034ba56dc9a950884207d3d5a6ffffffff02c0cf6a00000000001976a914ded9906cab909cd3a7638e21ef553e2e8ab1e13988ac40420f00000000001976a9148ff5fe533ea7851854d5800fb178571ad44eb09988ac000000000100000001a2441a5ee2cf5e400659663c8d3c0dbd5594cd2d0f0b0b0cb06e6470aa5901ff010000008c493046022100e45bec49bca94df25aef631dd863b96d8991a6d0ba85b2157ae92b70a99f0c60022100b7b5a0c68b6e39fc4be0f23c901d2928b60b2d5bc78893a88ad184a11ed68c91014104a54773f4b2d507fcda2e7a474aeeba2d5d39aad0fa3b0f7d747a517b841c763c2714ad3897e0efae782c2d9f3a2ba5a0b554c2bcda832410b4792c00c7d990ffffffffff02002d3101000000001976a914adab17ecccc02d2574e7b0f9e0519c26593e201e88ac00b4c404000000001976a91439bcea0aff38606c657d987599ff9368a0a8e6e788ac00000000010000000129bd70eda200debf60a2360eae67e935e47e3374accd01297e7e309548dd2b92000000008a473044022051f2c8064d328dde3714ce43b4f0f7269215ac8186404224255dfd9df71e9f4002207e8a4e0f13933878ebc788fcda59650836e38e7dd3f9e29c2c408e13a96e7513014104505e10efcf4db5ee55178cff3afa329302965d65b7fad7f3d15357c74a7c6962244da461a7fd40c0a7fa8b4fa5fdb6fb188b363dadabac9d33c373d8f98f9c9affffffff02404b4c00000000001976a914fa2c582ba6c8ffeed3fa7d0f77561401126d0eab88acc00e1602000000001976a9149f062a31cbadbd30d8161850dee516cea9640b6888ac000000000100000001684cfa56bba230f8890c75faa5cac1a5fab2b78f7aa509ed4e2cf2cf65537591000000008c493046022100ecabffbfc78e9c476c91240443d83700a1844d1eb7f2dfa0835a5391c2af957f022100d0c4bc7251adfc99069084ecd8132de30cc2e495b4401a15becb1c983c3289c90141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0280f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac001bb700000000001976a914c9de538e269a0e998b3de1be5e1e1db8c19f0ba988ac00000000010000000250936931b8d1870378bb5612f3f011423260112df39fef13e0184e3d6d67c47f010000008c493046022100d8b236f34f77afbabf94eb271e3dad72ae136913ddc1755b4d5c90652e995f92022100b65225389f1d901f4a1f612b8378a2f3be098650c0713d72fedb175bf23795de014104384e28f3c4c37eeed8bba9f2ced2cb91c64a7ce5a8b515f3d7cb1240531339cd607570c1627fef7c17dad904cfdc896675616555cb2c8017f39cc67f9029071bffffffffecf81df475d9b29e93f0ccf976cc301541b3de748bae91d7e0732cd967a50f08000000008c493046022100bd2fbedc914cd8defb94bd9a49067855be975aeba76560266c0b25757f73d569022100f0445f17b2b155bcd5734c2525dde6ff81963ec7edcbfc9e689d07e92377865601410497cff7e9f201d71a5989fc6744ab235c0a0b3ef8352144092fdb7d0e6eb413f4b25cd711f1592dbe4b8967615f27a73e22b268ed0021b4e3ba76ef000c7c4b59ffffffff0200093d00000000001976a914404c6ead7cec91427504eac7f11fc89893f98b3d88ac0048e801000000001976a91439bcea0aff38606c657d987599ff9368a0a8e6e788ac00000000010000000116b106b18b877f92b931774c4a7228a39c8dbf0d2e2eb407c6bfe2af4f1d20b9010000008b4830450220217ae7aa9dfcc83217989afda8ae55883845212229dac030a126bf3fb2c7c0cd022100b8a7cef57dd7c5ffdd20b102b11a5f3f4af4f95ec3efbf827c9758997380bf9a01410429800bcf5a62d849a3aee14942c55006d13848cdea614605137c748a7b0f3c68178c6d658185904cb1e98483884c7df1c3d7d9fa411d0ec810a9729d877b313bffffffff0240933402000000001976a91439bcea0aff38606c657d987599ff9368a0a8e6e788ac405dc600000000001976a914dea5aabcf406244e65ae6480801bfa30ea6b687b88ac00000000010000000120d19cf2005f546e7d1d360884817a499921f28028bba83b083385e047d8d131000000008b483045022050726aea665bba94a83009b1f88fc7185d8f33df4c5e14d74193ff4a47e5c4b3022100dfee71eb6195364acd0f084bdc5927d9c4653b686a94142138e5ccf4838fb09301410429800bcf5a62d849a3aee14942c55006d13848cdea614605137c748a7b0f3c68178c6d658185904cb1e98483884c7df1c3d7d9fa411d0ec810a9729d877b313bffffffff0280a81201000000001976a91401dae5354ee0f53d2d1aaebbbdaeb1867d92fd3588ac0048e801000000001976a91439bcea0aff38606c657d987599ff9368a0a8e6e788ac0000000001000000010984f4c137ed80fbf2af25af447f16ea520ed13a62ae3aff558c5031e263ae34000000008b483045022100a34e7854e8ab0ae0af55c995eb54cba97e69599ea20c7f20f52171f73a6638f602204fb2be0efc5732dd1d62b89fac723ff19ab5edca5adb991a086f44fbf15b363601410429800bcf5a62d849a3aee14942c55006d13848cdea614605137c748a7b0f3c68178c6d658185904cb1e98483884c7df1c3d7d9fa411d0ec810a9729d877b313bffffffff0180f0fa02000000001976a91439bcea0aff38606c657d987599ff9368a0a8e6e788ac000000000100000001b2eeb81c1442a7ee24cba1decde0680b18c7cf8cb35df9050d5094b5e6548297000000008c493046022100915e9eaaeaa718d84407e2463d43b37d30f5c0b76cad1f8b89a81b0628549642022100c359bd467925054243800fef036ae1e23e9abdf5ea96793efc05321397de898801410429800bcf5a62d849a3aee14942c55006d13848cdea614605137c748a7b0f3c68178c6d658185904cb1e98483884c7df1c3d7d9fa411d0ec810a9729d877b313bffffffff0180f0fa02000000001976a91439bcea0aff38606c657d987599ff9368a0a8e6e788ac0000000001000000025291038195d0b61411fca9d64fc65514e82dd5c84beeb24d7a01590b77793322010000008b48304502210080f7f9745eb54505d3a722000256d37474a5ce1e7bca53cb2e2f6868b9e5471e02201b112b70ed255682eb6def9a4b7d610dda43e5c78e0cac84c1314fb18adbea730141047654e66adcb4d972f862ce32c397e101dfc34914a69db165f42b10bf10ecf0ed2d92e65ef6b8b66af33f0f3b61cdb4a5907d0d9f4cc1aa3a85ef428cf0ea10c0ffffffff7548c9f9fb40159e43d1b3ea6ed2923c0d4cbd8dcc1fb0cec748c4c513fe1d91010000008b4830450220736771dec79c498f4fe9b0ad85edaea215367188cc25456bdccdbb38c00b7c6a022100d85f3721cbb83e58a03696fecb7d1bcab3e86310c3f4ec87432e3e95afff6fa00141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0280f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac00093d00000000001976a914af85afd48ba6a7b32fcc5dbb4c62e0738b4d8d8388ac000000000100000001428dba47c79a6087f563bbbd8ea7168aa25c0c86855924e7593c1bdee3675f7c000000008b483045022100af7b9194bb5134ccd2116ffb98513e1ab3286d15a8490ef02cf2adb1f1a24b4b022005850a5fc46613dbefba83d998111768d94a53773c7e06be2553c798a8c318760141047cec7b32eccc9dfc433bbc09d59a7f819a25275b371a2d1a6e4769d1813b1772a69e4b2e42274ae45b153f474786de30275d44598cf6ca9a0bbda033cc1339edffffffff028055c820000000001976a91418f96616890cdc2437368559a19e89e52d0ad72188ac80f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac00000000010000000127cdcbe6e1cc8aa8d78f1ca30978e9592e2447be8aa06f688353f764ceab25f2000000008c493046022100b8a1a0f74c59c39bf81282ee9b2ac4422bfcd47366f9a629ea31706817b97e69022100f52bf7c6de0d6ecd5fa0231f65c523c5853a17a6fadd5716d5c9aae5c358542b0141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0180f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac0000000001000000015c4f6f099a8ccb4f7872e4b1a95c64462b944751f963f371ce189ba81a5ceb75010000008c493046022100c0505a21314d03bf2cf5e9b7721a6e40515acb9d7f3e154fdd526e4ccabc431e022100e6727893d2c10760168e53ea0494f212db2b82eef4060fee158a9399892b087b0141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0280f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac001bb700000000001976a914b385cf524bae1a4f717f99f343aeafd1a57a81f688ac0000000001000000021868933902e36ae6c4dd2ae0276607f1b6b027608a116d99a02a09a1b1638126010000008b48304502203fb84c086428392d99e4cabba6b867479a7b264836d459ac5a4e1ed2ba0890880221008ee729ccd3722437d024d15986ecb8418411d5f27965ff85ce703f83fce56da70141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffffda7c8be1c33f3cd0be2fc52325f28430ff6a6865f9e35bd17eeb49d57411a8bf010000008c4930460221008bceb6143b152e828affe9373a70f466d255b35542d72ac9b8ba90d17f362ed7022100e367e4f9b8a0a84c03830c52acdda71c0670206abbfcc68eeaaf9e6b8c74d9fe0141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0280f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88acc0ea2101000000001976a914dda33c50ef06d23f2269c0e8879e0c8e6610036988ac000000000100000001e52a06d33d202f073ad036e6a666af511eb967e582bfd4d126992e5f015df7fe000000008a47304402206647011544a2511593535df0d2238437df68c758f32ac3e1ea0a796a3a3137c50220514f09f44cf6395f437f0a88a0de2bac3ccc7595f5efbb3c7fe6788846a2806001410403ee4f031fbcc9e58f0e2376542c67c3316bb99d24344f7a8e97924ceb9f820fe4b93d82d0d01716da6513b58faa8c80edbc9bf8dcd30552eeea15a4fdf0cd41ffffffff0280f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac0065cd1d000000001976a9146ca05dbf1f8080bd998c9a78c4dd6d7a8376e97f88ac00000000010000000354f32ea88438e94bc262598ad457b605b93566f90ff3aacca52dfa5b121b3ff9010000008b483045022036f34f06ad8d081296f702cdc6f9d91a751284cf4b8553b968c5a4f198d1f983022100c6103a1c1acd7c40cb9ad2b4f64078558a2ec2dd6d17a1a894841a1ec9b7294a01410465a7a3e89d7bf0fca22315d3e0dc632228046aa71208503e6bcbd48ba9e18e6d526fd60ceec0e703686a4ff175b8ccb620fbb9b92d7758c34fc3be1d474bf67bffffffff22a975a6b2e5578c3366467833811683d78b4b9c88066165dbbf83158058c56b010000008a47304402206567b7e63f402055f349687e389701faffdcbe67bac0a0712b6452e19dc50b3402203f344b9bb27e5e90d2a4bee3aeaf72b39eacceee430d1305079343e6b70e9a89014104e74fd90d9ad9d7c7bc0723267036301deb524a9d9b4e6fa2e4083c122c58f53ae0fa5bca2d99d903569087ea9c82ff5365b59f3fcfb9e9e25954a5669e128a28ffffffff3665c301e409c5276cb5981c9af0a072cc9a7e7a458eeb2232476a0927a10c5b010000008a47304402201a8c1a2a836b1762e38fde26ab98b78984a21ea3cddcc73f78b983decf7985f0022037f7fe26b963bf1ef6ff9dcd8ed61f69158550ad7a73f351e50df114126ffc280141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0180f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac00000000010000000279e3bec504b207b550d212009a580614df43073cdb684c047b0878dfd2ec0245000000008b483045022100f98683d0ab5a6a65f96391376471631223a728a0b8d6d26dc6275ddc35258c6c02200433ab5fa4cc971c2783d61d0a28baa6ceadf55a2a1a03d9097c106652b7194e0141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff4b5020002445a6a57eb2d06f34005b592c58ffc6ca862cbcbc027145e2bd6e44010000008c49304602210098356732ed9063df701100c1d6f25dd0c1a46b070e820bd48cc3e770f3812333022100fcb67aff7a0094e1dd9deab29ed6689a2f3513b39e7443d048cc737eb860d9d8014104eea5652a5108c502917e9a8513392fbc4bd4541af1cfa59f1e0a6f66063632ab6a7f09ade71c879303e682430fa37e33778fb5b31287cb69649ae26064780af0ffffffff0280f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac808d5b00000000001976a914b2a99316972f7d4605856e0234d4282e912281a088ac000000000100000001f7f608c8363ce6f39e4a0ca3e0fe20fe7ffa189b22faee6a64b17b2bfefac846010000008b483045022100b370407a87c4ab041be30aebf3a31e71a40bb8e1faf32afb9bcf2f9739290d3302203e1111425363b774acab467e2e4ce1340b702bf001306826d11629592e932a9b014104e04ad81fe22997d9c2f1c3850cee6c845cb9cb20843cf456079bca37d6e9c9d3b198dd219b38a4d11df7b068a189a95ff1bc420b8515eb342ed5a9a035f7d966ffffffff0280f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac8074d21a000000001976a914749c62d44e2aa7ac96f3fd0c722fedb074dc6c8188ac00000000010000000244c256d2d27298be320fd58112b66849ae549497e2e7ef256ee6ccacea157b9d010000008c493046022100cc01781863909d878a7f8228ee7b4e28c92ab1af47c8f039c8fa63db67caf0e3022100f0d7aa12f0e5eec1a6b43b482fcb011a26b086f1b1e7a0ab99f04c471bb57f800141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff9735104e20fab8b7c2a134dcd20f765f87d1cdbcda63d1c8d8211ce9d817481f000000008b483045022100bd7d0d21760303e124d1a0e61bf076e4fb447a536a357cbc6ab04f6df1534e48022049bab57a0d490e4e2ec5ecb0b8b29f8faa36b44d54d052e3c6841b80bf1a78190141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0280f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac809fd500000000001976a9145bc6d14cbbfd3e8d99a4fa8256f79b104ceb2d8888ac00000000010000000108331991b4c14cb31bcada85db43e0fd55bcb5152cecf53fe1cff41efb5c81f1000000008c493046022100fac9d658c1d478f9945390518c892bb80d7363aa2bec57949ce84e6750021ebc022100fe2e95672287a5affb96156359215890440de69bd474bd113edca877f7a15dc90141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0180f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac0000000001000000018238475ebffae808d3cfa87b8571c911337fc3cdaad7c193f18c337474a03a5a010000008a47304402201248dfd92fef5381c8cd8990e2cce1345bccdb2de6d7e3dc0e4eca129c4fafdd02205951533d176aa66b9952efd5de00f1b9e04d3db9bd3af19a27fa67fedb86e9b601410424b12f19cdbace57aef878fd682fff5be8b6c99a209377f20d19541dc12339db87f934744eb42b8896afaec459508f89650c75ce3bc6709b7715abaae0a51f5affffffff020084d717000000001976a9147b18714a53f8c945a200757810605ec429d0531b88ac80f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac0000000001000000023fdc6bd2e426fe63bac8976add9a701657559e9fed211d548b632ba195e9c939010000008a473044022069a8df5d2b313d1c8f82b452eb625fc8d77b4374f9faef8385a3c8dd0c555e060220624897e5b1468bdca0420381be2f648fbf0d42b4ba5950b7aadeeef0f84eebf30141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff966ed8bf29dfcc7ad72be077095538035812e21c618b24c2b139b09c097224e4000000008a47304402203aedfa6c0805bea336409add12e7352f56408fcb75c4b41beefcfceacddd790702200b6dfc244c8b2787aa528477b092234b43f2c2efc3f7cf902c1e7e575c7a5a6a0141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0280f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac40660301000000001976a91453390c206b6643e1490937acb4949e8c46763b7a88ac000000000100000001e880435b121ef0df4ba3ac6f054c74a039d2cb0440e1f67e556ab9f3f2c24999000000008c493046022100abb0332d0610e745b6540ae2159420241e98fdccacd870a57a57ca031600c182022100d40c8ac6ec987c1854002dcd8570258281bee91213098b32bb4dc443d7bb3a77014104e10d0fb72ad5c5dc301a51d1235a5cd656c6e2df48d7182ed065d4e8f0ffeea806fcae989bfce2a9b1a963e57f0e112e4b767b8f66bdc70836bf43d549e99fd7ffffffff0280f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac8093dc14000000001976a9145b774c75022193a7aa627758bdb1513b7b41d23188ac0000000001000000036eaca6051103432fbd088b66175e3ecec2769398150180326971c06cfc8e764a010000008a47304402205efe1bcba383ca385e31de0b4e404cd84bf543aab9a95b91c66a28244bb6f4e202200e8b7f5311e94dbbd58c77cfdd5e7f0e1d37e32f1eb25bee06375ac4e1f5c6b401410437f5e3a871c1d792bcdac6c8a86f62e336416021430d76d3b550ba971c50f97006a1523a7cce7a52d386d6b4a34c35d646aae96f114dc44353183806b0a2fd50ffffffff199c28ddd14e04a4a7c0bd45797ffc30137b00b394187429cd33cc728ab7b659010000008c4930460221009ecb5eecf12d70d491c0822d5ed057385251bebfdef92cd742b2bdb62af91f6c022100c134e8e842f5b2d8b3e064e50ac924c2ab297e37ae0af2533b644fa04924472b014104c96fcc2e752c82d974a205e6a0356dda843b1b3c6a8055b5cf1dc10d13ec78541623658febf3d55f0775bf21b55a6fe8323eabbb2a08a2cba7eb1c6faf106159ffffffff551dd117a258d340a121cd1afa29b4f3ed056522a1a39a0b2a1f896949d31794010000008c493046022100e915630db3440519910f0d6492e9e633e1210fd892ba25b8b67717c7b6f79bac02210093448689153a1faec78fa380695847463e4984166853594785dad730dc6c4fdb0141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0280f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac404b4c00000000001976a914d92fc30f7b10f16878de3d54d2de35c10a4da8e388ac000000000100000001b7df5d511b47bfa537ccf8ff0fab7c6fd00c848e311e03d0d32d5bfc2e4801f6010000008b48304502201266830e4c4136f8121ea07345b2105c63015cc966e70a66a17c42f811a724ac022100eb22101e5a9b08d47e8f2a9893870218919cddb3088f0efd368ed138bcc547220141048d6e282b0a3536c2c455c5868fc36f731b42690482084ad5b83d343afdce3c5c2676a03214f714b15cd6280a4224fdf63cf7992908616b1c8cdd2ac7bbd9273cffffffff0200a3e111000000001976a914603157261fc9cf1eec1902b12bdd794e887191a588ac80f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac00000000010000000336550cd21f76e0f726dd06975d15c5505fab0a67e737f86fcbe13c12838c9ad0010000008b48304502210082b3477a373cc0082abeb975e15d410ba9cccd3919d0936b661e3275a768959002206ee08aa112854897e8dfb6316138975d540d1b0be97d5c3d5423a7863fea2f58014104502fb700938294f16ba4a1870fd7aebf301002d2c060586134e431849acf40d06e4edcd5c11f8fa27b444c53bb060dace76b1c6d3aa04e4b5b50a291f780777effffffffdd32342dc7a445d5697eae0db2bf378404f0d2e62a0de7114f298bbe0e3c8df8010000008c493046022100b1625d8fdee12471d0fdd9ce23f7c3a6b18735846bdb025c725f43cdddfc733e022100ae65e89ed8d8fa7ca1eff2355ea1924a785f1a3e8a89b2fb53f3961f9c07ae29014104b9969f2d2cf8d5311297cfbee49e9b4a393ea7e14ee6e74ccf91d88d32438e353828a888f71fe51d38a33dd850f7362d8faa301746e78927f744a2d77b8f02b0ffffffff437a326d6b29b8484ad2ca80abfe795bafaa54ece4c57c50204c838950f8d928010000008b483045022100eea283392b65ede2f01bc3c481d22988b1c14c6cc15c412c178c0a19e208445702201d87dc27c35286577abeb3948587b9130da9f1a12f771fa059ec232aa1b3a4d60141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0280f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac00093d00000000001976a91428ec9772abdd32ff371f2f33ed4bdfdfafe4535688ac00000000010000000100355ad8a87c9ca73f4cc3912206fd3dffea4cc9d9790ab2506255904b579e2b000000008b4830450221008026aa5f5c1238b3a7ec3ba75481d38179fa6639deabd2e768d5b6cce36fb4c80220359a9a833c579f37b5d1a269d940339f5d23f09920668a039576e628222c5b1401410406fa59f3838bd2ba5c7a3bde042114d59e765f26e797c5849afa22a134270e64a1c513b08844de013ad8d880896f6e17b5391ed0a8e8efd89b7efe5bb852f443ffffffff0280b2e60e000000001976a9144d9d2f715f6e8a8cb0329b59097c1ff612e5275988ac80f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac00000000010000000375cf27b7415b51711441d1b3abe63d95668c74ce5346272977cbc6a9b114e082010000008b4830450220344b8ed76e8aebdedd042a6d055e6deaeb2d080b92d5ea1f4451f100a9071a4c022100dd612f016f6afc4022673c61da7cce3d58c1a356d7507d882cd28faf3b0d4cbb014104beb4e78799c84e001ed17b903737905089d8a8765e59a6c9f65a748800108a76239ee5a498e0a863302895d202bd960d49d7d76da297118e0189d32b4cf42b2effffffffc2b2528d7162b30dd0b24458185db162d26295f5ec092b8dfeea8ce3f84e48b9010000008a473044022017f09cf4e4b605d25979329fffc9c5c92a543ac1c98cc1add02a13eaedf34690022021abd766041acd84a1f1352078bbaa922fd16549f3f4536ab35621dc5dc255010141041410cbec14f400ddc886991f0c485e49f710ab334702dcb6dc335a63c7cdf43c840fc354f00cdcbf823fe0534418ef04fc72afd79911050388b6c6d4cb858152ffffffff25ba15d0032c172443df2b7efd34f2f6ec68de7c98a424f77793d9122be056f0010000008c493046022100acc0c1da4e345f7702c39a2f84739a9f799024bc3601bd678f3636778b35b842022100ac3fb29b398ef6bdb8eff5572b3d6ae961db9f3cc9f35b63182741d15f8f088e0141042e9f23035affea109ecc2956ad6de34a5c11e70f5c4cb73835ec0741d901c09492b6f4dc32ef3c5f950fafa7d2de6c6435a12f9d78e66d2993d7d8ec04740514ffffffff0180f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac0000000001000000014e4772dd03166d9b55a98f07fd3694689d8208d8a76dc1a11353b5810aafa407000000008c493046022100d02dff68b428b821b7ac1e8ad66ebefc1af07c0eb2779a0fa84cad7b89423053022100a9927df4314a70068804cf63e65e1bb15b75222f0d4274b4eaaaa2ded25094a00141042993f4dc6db3eba5128250b7e540d4481e3a0b923c0a1fa37338b6cab1d9ea09cf72abee89c0798b801ad30ba146c09689c0f8c0d6d0c6505e3c2e14001ee270ffffffff0280f0fa02000000001976a914e657f606214812994c231883d16acc15683aff2a88ac00c2eb0b000000001976a91463f5cf85e716678d4da2769480c47169a93d8fb988ac00000000 diff --git a/bchain/coins/btg/testdata/block_dump.532144 b/bchain/coins/btg/testdata/block_dump.532144 new file mode 100644 index 00000000..72fbb477 --- /dev/null +++ b/bchain/coins/btg/testdata/block_dump.532144 @@ -0,0 +1 @@ +00000020ce8d838f370e11458f29347a32fc2262197b5a30acf22aea5a52de480000000051483599479e70105ac6f84952fbbd31a5a65aa6372950a15aeb4c63c3e7420db01e080000000000000000000000000000000000000000000000000000000000c11c195b44aa4b1c521efb47000000000000000047fb1e516e640702000000000000000000000004fd4005003113c6aa5eb7cfcb57f14ded7481ac9ac39634e00880a612bad662e58a03d3adb3a44fee571ff4e7791ad472028f08348297f522dcaba6f109b287ef7d722bd34de4f20b2cc4c451a493d6b8fcff62277b392a068e5d241b1099df2bf7832af4fd45191cc3379e143243aa8fd80d4b32ebfa95b731c07a66a70a1c74e1096bdaa217606513c86075d39f5cf7bdd676b6cf551a98ead5f090dc2fa8ab937ea47fe4f20dc395e1ff008c660db4d2c44375f3752401db25a612a65915a60c604fdff362da7dc311516346d9e169e1173cd28a0c964638dbccdfe0cc7f02f89f70c51d88afbfca4e65de1ea8716fd0c5ff93d76c88e8988a376a9df94d241d6e52f3cc59ec9daa135cd6cd2b88fdb93a54df6655bc120f5d74dfe12076afb4f5feb60d5bd8d82138c75694f4aad0c169a049b4a5da81b26f99b6a1fe48541f59f9d83e0bedf7348b5de66476950535965500d1f1049b00920783e8e89ad0fce06632c8775dfd02cf5ed95b94002972cc2182affacf3875c56ce6cf044dc73ff40e5f8cc022a3c221e83cdaba021a179d05c89447334317964b9a74e1f9322bf1f3e017d49909d6f3eb1d49c1e2e791725642192fa689319edae414354b64868a46c7d03cc2fed49fa1e677ab1f0fc40fa3bd9a57ce208724777932ecf9f6267c95175346125fd633710cb5567303b248f2bfcc7cb5a61c72cd018e4698149d93d71bfb108d698f039025e6af283c1673e374030d1a0f554c630db2aea102fb5439f8a90425bda1768366228408711f96a4edbc8645bbd9f112be8f706496fc33fe78f1e85f380c557585922a310db88f22580763a28b2094624fe2451db57a1e644a271cb2c227739a4bcf3c44c7c163d5ba1dd23de59c1b45120cfb1af5feec40765b77cb82c606c73acee324fafa0266b1c75f9552452d5f4b5ea1d7ecf47ccb00cbf4c61788f28e774845a848f58aade69e1d5d070fdfe5d819743811f6917ab8d16e4d430941deec9b066a71a0976c17418fe531ddbdea5e7db7b3dee8350bc7d0a2cc4c780b4aea0188b2243091db1f171b6d043e06733c160bebb312a4e302e361414fef1287a68373ce6de2fa558fdd9998f5d7fd1e5eeb9cb85cec1108759029c4993ec6410617dbe83af5f4b1fa5582236be46acbedb92da2a1a25a8a43c7c2354d390c490187407b5e10930994f561c6e6db925ab1d439293527e253f12ea468bb63d8bc81f9ea589327627ad17b11e896b737e753ab6450445cb4b93f1d4775d8b6a53b75344f32d070cb87bb47fce8d503230a1d3898c403ac99747c8f22e2d353e425956805a26946bb03db1e76f346d1d8d9b541a077cc0c481e028fd29b573c09c8ed4cf618f3a534b9c3feacead799d4bdb64db01cb515b35c1778174ff91b42d7706b0f85971d1c3b019c68d5f2d56a7552a6e9b8cb539bb2ce6838f40a108f55611dd98b03bc45729914764179401fdb663f0b172c2406a2fb37ef94c426c0e310551a3f7f377f12629adc7fb5af89f8a3234b5850e8dd38002ff70a01f903ef616e7a27c51aa0ede1ba4d9d5153547cc002caa1fc02024ce2ed0ae2168f2595694003ddf83a0387e9a1948f13e15911b2d3ae34de4e930656b4c14213a785c77084b1e0ca1a8871db4486c8d0bcee53033fb5f50b42b35a8eeb6306f6b2f19592fed31a041278da8f0c1121af2ec29222461b80c4f5b2c98b141a90423537d0a2116ed5e45a913a9eb91d79b90a49383007489cb0ef29f2c396d2126fc48ea48ab9ee0805b3e480fed847dafa16a271af19fb336c73df944549968c46ba953516f8a6e4d4633d3a896f9550a86512e37c5d952c5155a8f6430f58784415cfdd7769843fec0e1206a02ac99a23cc0c5cef02d3130f59d8760f010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff5b03b01e0804c11c195b1000000000000000000000000000000000403138623134383739396365346466313865363862313936333438333338666338636562626131626264333765386335613239666164643962663134613766633000000000020000000000000000266a24aa21a9ed2bc7dcc002a8aef4363327142569b93b01b7bd354cd9568ed07df83ee973e2355fef814a000000001976a9147edd3b42b575ac65c759b1d00c2c41260be5420888ac012000000000000000000000000000000000000000000000000000000000000000000000000001000000027cb48e7ec66cf4afbbee97bcc04830b0aa2f35f7ddea41695fdfd3ccce6fb3eb05000000db00483045022100bea93c70aa551d819980fa56f7e75162d40e5d36959bb62282c20ed6d9068a9402203e778c965850f0c78ce3ed96493fa70304d54c1f8f97836b888d6af7a3d3ec6741483045022100aeb9b6b02790d3c3fe5b90b2ad8692d12fb20de921eebf7e06ca06f26362f68c022009c5be8e7f4012c86c3c3edbae650aa90314e1453431f1cd87ee95352e3d755d4147522103f97314955a5b1ac6de5c6070e559485e6d58626f193a7eeea47d47b551c5193b2102900814e71d76d41f72d95d33d6ac9e20e2a1d487de23d46efb3d441d131e8d6752ae00000000bb2560f752619efb08e032a72e524b53c5bf4feaae068671d2137c77d3593efc0d000000da00483045022100f19f026b02e65874bae6c135f349bd3edea111ba231ec3ac67ed2f4440af9ccb022039f4467a7a1683ff78b2ba65895fe5168ba2557b537dab17a62ecb05a3dbd946414730440220092cb39dfa96e7d65c9fd31159f88576b87ae656bd98113fedf29051459d440002206b07c39942dd4401922b3d1b7da5ddecb31795d587b3c86a09636a22a4a9d9db4147522103267a1a6b42a6043f8c2e51c51b413cccd4b579a567df0660b338504ff581209c2102c4f01c10f134d0e041f6d3076d25bf9c1b141a2940a0fd718bf444a7d697f77752ae0000000002605af405000000001976a9142e64faf200e58676143c03051595f8185e60178788ac53ea13000000000017a914535a875e17f3508a064f6a56a6a43565f7539d9187000000000100000001ca53818e1ec1ab086dc464bbdecd6c1cda4e58b52c6256b9491c66ad3dd10554010000006a473044022070a509b22c03c45314d87abbc0a1a4300fe2953f183808fd89fd8ed737cba18a02204354281f1f19b017cea486ca0458b8caf961520d09fa908064909209ff620ac64121023489e16e0a53a203245bed71ec5f2231a816591c764c023bf6197c86498c22a4ffffffff01fcd40600000000001976a9148d8c2fd26bca750114221dc30e88a06db78a249188ac00000000010000000197cc4ef0b51bc715fed00b787fe090ed1335c10abb345bb2def1293711266293000000006a47304402200b285da9b7cd72f0caa7ac39fcb7985f921b8bea0cf8e53a77b9f90247462e6d02205243086963fcba3f712255fa073be40b233f36c8328190ad4c7ec7ffc693724c412103bc98df4d8913991174a95338e88c1ecc25ef65860ab4aae5d7af191d9af230ceffffffff02663b2183000000001976a9147c5e1400dcb41262352e89bc6ced75d25c8e3ac488ac008c8647000000001976a9146ff216cf5834b029946f9b0b40fbe92691d50e4888ac0000000001000000025eccaed3d98f006a7049fe597d18495b80905f5daf1afdbf75e8bf53b6b17fe1000000006b483045022100af6ddf7433e367a7dd81584fa0ccc111ad23a6f3530e006088d64aba14fe6bef0220446daec204ccd99f5775faa9965c6529073e116e86b5d62418aa1036c44f5bf64121031a36d86e0700fa7abfd9d13d09326abe68544127298438e4b1970f927b439dd4ffffffffeeaa9e5ad2b0bdc72b70f445bd517b22b4cc7b0cdcfa96111d17694d04dcf40f000000006b483045022100cb4bf32d5f71d602da24f88f0269c7570ec301f494179426dd9c77141c14605d02203ac03722bcfbc23001b5f28b27887111808e9a44d5cda168e2367e30f9b9583e4121031a36d86e0700fa7abfd9d13d09326abe68544127298438e4b1970f927b439dd4ffffffff018020f505000000001976a914ecb4b17bd2fb43f7e92dbc1c3c7b1326d24143c088ac0000000001000000012d3bf55e0a4471759e638173dd104663f624b754745ccde58594a0046d5266e2000000008b48304502210098ff7f58e27df94ec0f5d572071396a381ee42193507b8030594ae2589dd9419022020436bab855205373203ca974b4aa46a0f84f75c659eeb2613b7503721a4222b414104c3a0654bd44d7c0eb6d55aa717ea43626d58ce1ea04ae8644cc8c18718b0c59bac09334a642a47d0bcc93a15a897dce0d22fdd8dedfc88aae2a13156ff07c45bffffffff0130a60100000000001976a91467c9f0e7cfb7a71e4f6ada852308b08599fe1d7488ac0000000002000000023ff59152e6d86ee556a9d56bd31c65e61b64fdb9da3b59be606dc3735724b829020000006a47304402206390630c6f7469bb295e89d843ff5910b5bde07081cb13dbaa6f4726d7ba230f0220081f97df63767f68287c313640ec8673e5b5485f6fa38f5f60968582b22bbdd941210237616beffdc377f1bb7b1fe00ff742baac39d2d649124f693e42ee181a4e4589feffffffb2a54b73e36c274361afedbd1eb7cbf16ca61c3e9ea4b7e1cd0a2570b250ff99010000006a4730440220502da8947868e1578aafc6d66817e9884aabb8bf64541bb1d11a62858106b37a0220108a744bcc233c35ad4f94c8253a1418aad97cf2b91bb38613280e754df5c0804121039aea5ed6afab061fdbee466fdb1308b74a23631906c05d129bddde195ad6e931feffffff0490940d00000000001976a914f91ac3b51db8536c234d9cdd2f7b44606350583f88ac00ab2629000000001976a91496fb6b4fbbd8fc3d2609352e982641b69bc8fe4888aca875c229000000001976a91499ab3e1e9c83a6e0c0c7adb1fe2f28683753e57188ac588639f1000000001976a9140171910402305f70067771b29824cd04d0de632a88acaf1e080002000000063632ac85c42533233a49c287fd5cd180e2a23293587efcb82b86ef88c6c5aa22000000006a47304402207b4a86e3726044cab31c1590f4d900453e443b3dfb1417109bbf7001345e4d5302205fe07c3ec04ffa79087ff8a2d24e6a48be59f70c809e0e27b38363e4a3ee7b8141210211a05eb38c8ca4c719cb257c95af287422770dd6dfa6a6cf3e4c94dff366f24afeffffff7aed8da2f4d5966fb404d1e0c36a41a532ff720505f106e2e99fbcf92f262a9c000000006b483045022100ac3615218fdd31c00a94929abccfe2d48b5ed9da73abd4d0e2e9955b8856df9f022047587ecc004191b4f86f981a0d9dd2c60e47658d9d62dbf310bbfae2708b0cc041210211a05eb38c8ca4c719cb257c95af287422770dd6dfa6a6cf3e4c94dff366f24afeffffff923cc508ea0e2c904031a9e75b4f28986f5be7cbff42bedb2b3ffe2b3ac45ad9030000006a47304402201e9983d7ef042abd833af789331880bc625c33c0b0817960d12bcdc67eaffc9d0220635ad85fd19ad4249639249a2f6a8e7f2f2229579f8fe76637d06af9d43f1a474121021aee2c0667c4cff348c8b229641404d028cb2ef121dda85c998ce066d9b3d5e6feffffffac172993a56b35e7938d1602a788f584070f4b580e7710c5ce4f283065ce535d060000006b483045022100b29b290cf60451b6f3967c20efed44db5b45044dfe2e77d3746180f02ae9f9f7022062e8e36febc70796564b3dd209208ba074a93cb67cb3ac4d3a50321f75ca9d99412103c956403dc32dad7175b3123321a7bd74e6d50f89a8d81de52c196d0a63583972feffffffd2da3f078ba8f4fe1978d941168bf2de892c250bd1784f2d26e06d9f295b9378000000006a47304402207a97e52d45e67e0c91eeb580203eb78930c068945ec8f0a5a6ef624e7d72a67d02201ca5af9f929041e8f760435f8da6826e79d0f9587d4b892934c6a1c21f3e222b41210211a05eb38c8ca4c719cb257c95af287422770dd6dfa6a6cf3e4c94dff366f24afeffffffea832ad6e45e2c5b555f6c66d2cac758894d28a4f62598f98624dea5b96e968d000000006b483045022100f52fe5e1e91be68298ba28568fae022d772e779b6cc85fd8db68417c18f36d7302202e50f25d9835799a41d977d4624d014a4b0484899eea52645912bbc907723bf141210211a05eb38c8ca4c719cb257c95af287422770dd6dfa6a6cf3e4c94dff366f24afeffffff08e2968002000000001976a9144dc570341f360b7495e5dab8ce0966d3d94eb1bc88ac33bf0e000000000017a91448f42dc6beec9dceac34ec715066a0220cfa716887d01c0f00000000001976a9140b71f6d80b7215d723c68745d070823f7166186188ac5bb14c00000000001976a914d105073d533e746bcd3098ef41af9939484b3b5288ac55e3a600000000001976a914146160168a3283c9148b1b70af32925b7567a75d88ac702e5832000000001976a914081a9e2af2bdc953d2015a4037ccbe3cdf27714488ac0f4bcc84000000001976a914f09fa75e4ffe8af0171bc0b402a09531a0b7028488ac219f6aa2000000001976a91460ae3cd2ab5c8ff0c31b233b7a571dbe3a7ce2f688acaf1e0800020000000415ae003b6719ae71456392a275c1287b2f3a17a2d887a169c45a10e866399caf000000006b4830450221008986c870565f7bc7036cc4d9513361e34476606892bdb321ba53bf488e97b0f102207176e753891e11f26f1d20b5e63a3025ff0f5008680721a70f96a957cd81f44c4121025addb4368db550c83a1679707a53bf695090e914cf9e514f5ce4344777aa21bdfeffffff746b3599572912d7bc965114a50f4504bdeccde21af7cbc32367b35dd307c289010000006a47304402201047739b5b849eed12f44227cb079584f819bf247f24897f006e4c7279f8284e02201d269f10a74803d5ae438e78f0a368ba8ff4d08294687e55d9918c96800a0107412102aa0f12b5aa992151ec61cc36b039bf91bde10d29121000ce65ac3de1f7b03e7bfeffffff8b0afaa0324aaca6020628b6d9bcbf7f929a6d32c8940a3ce257b41bbf709a10010000006b4830450221009664372a73392254be95cd5e9476da37c485da17e1dc6bc3fcb09abb1fe2b9160220143b69f0adc6978540dd6e8482ab00082b99316b51143f87b59fbac239eb0102412103984682179a4e75303b090359d57b01cd402cef63d16c951254e1184a958d1072feffffffda8ff0c1b18f78ed4ab6dbe8a2a6fc84136025ebfb444bdcb28843e3de21cf5b000000006b483045022100e198cdc0ea8b99c80c6cf25c7b4de7b102b9a372afab2dc9d066b7743c1d9ce9022072896477025ef336b779cce3d1167d7dccf7505c1e8747b3e27ea0061621794241210258f0583ae597ba0b2f0c0cd807b7dd9fe3a55016c003d12ff661ae66688845e6feffffff02b9481000000000001976a91436310e2b96c776589d4ce4e0e21b01733505ae4c88ac50be6900000000001976a9149bc2c8c6a317a0eff53ab94dc2f38a243cbb6ae088acaf1e080002000000035090ebb687eccd4fe3c1bb9efd057305d7ac14f01c472f992f5a9da1b43005b9010000006b483045022100b938216131b593e960dbcd4fb5d7578805a93f5eff36fc6203636761abd3e3af02202fc7ca0255d1485896452cb9b0bb430b156fd76f0d0b10d0740c1c541a93b34541210227d98d974b72ef58eb1295ca8017f3795d75150c32c418e8793bb7cde5c71bb6feffffff7a0096180ee0ae5b15a5913ecd92b73f869831103846ddae7921fc31ec168e1c000000006b483045022100b0dcb02cfcf29eebdebb2e8bff2206a5bba3fc335b1d560a0cdae55984e94ea40220528f319b0a3b95fccd96dcc14ff0b5df7c3be97258cd3aab22e1a8cd6a26e431412102eeb8474bc2ca963e04e0d1bc5778883e7c43e5c66cd40a840be4c849b259fed0feffffff94e849591ba1dfb908c6d729a835de4e4eeaae009fbf159bc021879179a8395c110000006a47304402201a3befb2f171e1dd67f95a78de6b056af720dfbed556ef48f0c638b282561cc10220771d423c75bfe6dbb5d11ab4023d201841ddfa3fcd7b438aa471d553bb05877d412103586dfaac6f10c91a8b00f41b4241daa781195176ebc324afb33979f6ee00db34feffffff0239c30302000000001976a914d10d5f888d281ac9d59739a8bfda29a3aecdaf9f88ac8a821a00000000001976a9149c970b6a4b782a0c58095fe3cb7a1d3116602f4b88acaf1e080002000000033457b8705d79a806d7e4208bd31e114982a16d8a0effdf1499c5eadeba393818000000006b483045022100eb525553b29ddab379221f89eadfbf6440bbdca0ff01b7045527c82608abfc6c02204aed5a42ac38f5b5e7a59a645094849ea97aa9a17b9055bf876d5030fcf597a3412102657fd85cbb926b48b639a2a9fb9e17601891d352a256bf60a9fb22c06b7239dffeffffff4eac07af38ea57321cbdb8c52c3edf2631bc225e21da91579a49131d1af3a718010000006a4730440220501edd363541a17b54817526693756b988f7f7406d34fa76397e12a30be18a1c02201aadf2877181e919d005de19ae0bcfedb4c93bf3240d1bbf3f08018e0b92b71041210314e42df3f9b731bda334c04492c2a51f427cdff77bc4379f4bef84e5e8ba91e7feffffffa46f68f68c265ea5d7c5ca2f3fa090adc1043b5dffd43db4aaac8882dd56071a010000006b48304502210090071b822e642b3fa4a608a6345131afa81b085a2eafc5bc442c50e7d672724302203a6fd3f53404cdab77628271766f08db7ba19105c160b929026621780d929977412102db225540091e54a57f673231880bccc3e235a3c2e2f4c8f068c9406992ab9735feffffff201ffe6a03000000001976a91475730deadd35f72e445e04b2f2dc1646333eb07988ac1c3982000000000017a914ea49f5299588cd6d7181c087c21b746e4b1e2b80874c58d503000000001976a9142c3e0c4866b5213dd93941eb23c7f29179fa8b8d88ac0c9a1403000000001976a9145f4f2fc3d236fb2612e16a608647eb43c9a3588388ac9fd384010000000017a914b11be0859b4ab71d37e1ccf0d0b4139c1dbb42f887aa579d00000000001976a9147d9c5a7f03145eb42a4a400c4be4dc6695983a5988acee637c00000000001976a914090166733fb8aee65654361bee1bafe1b1e8ef7588acc3136600000000001976a91465c3341c9c2881146c4c4a9ddf4ab586bcda455288accb9c5100000000001976a914706ac0ec2c3f11915a55de9d8272ace0b3d03ba788acf83e5100000000001976a9141dcbbf2475a79ed52fc39e2d200ec1220ca1fdd788ac8cce4c00000000001976a9144c954ad31b9b9598e3768687c8d50674abc3093288acea5e4c00000000001976a914c68b6cbfa58bb3761a288c62c738470e91293b8788ac0d472e00000000001976a91452fa4b26899a6929dfb9af12924597370499669e88acdbe41200000000001976a91495510d89e73b8ecec182735b06838105b9ee9c2c88ac16da1000000000001976a9144232e2afff0a1248793a3971c64230e10c923ed088ac82c51000000000001976a914961f246b6014c82f392ae235dac2be6e751b969c88ac485f1000000000001976a91470630f91a34396f78558abef06d90009119b537c88ac68f90f00000000001976a9140a7e7ed78ba5a29023b88df7c90c7c3d41d9ec4f88ace7110b00000000001976a914b00d7fb836697aace27de02310e8331a74dd727d88ac43460a00000000001976a9143d7340bf7df6562929d79ca1a4bf31a1b621007988ac14970600000000001976a9143a93594278d370ed4541d79366c20d2a146376af88ac84870600000000001976a91414fd5b811133cb7e97f4cc899f28dc1195f8d44088ac86200600000000001976a914b0affdf725f7ac1013eee60bdb36f58a33aa2c4688ac2c580500000000001976a914deac1a3cc619785b10dc1bf360605f019aacee7f88acff1b0300000000001976a914b6c3b2c54e48b2585aecd3f14cb1b4bddfe3e67f88aca50a0300000000001976a914a36a039e7c25585719c34315fbf82099e7d08d2b88ac846302000000000017a914c2b65c38c4ddf64eb3845f2580baf47f8f96a0d887f9220200000000001976a91471e154b6ac365d2210c514ae3260393549d9485588acae0e0200000000001976a914eca006ccddfbb668bab1925d03b134aece52f8f588acced50100000000001976a91475821c815b6c7c4c632db470493c7097acc99ef988ac68382700000000001976a914f761470746e193de0fcd60c6b0fb1a24f64397a788ac03660100000000001976a914f1333ba0951bc9ec1a5c62c373ea48131a9042b588acaf1e080002000000017dc759e2e9e4036eec6a4993b398575246589f62bbc25710d7973f6aad79d370510000006b483045022100979a18c237f2efd4c19002c9aef337462aab04da6379d15c18b2eca04d05470c02201b0c83761117f7b14a202fc2f201fc5969de1b954ce3975be1f97422351b18164121025207dcfc65e64c15cdca53192d897b8e310fc381ebc49c3331042363c4615a5cfeffffff4644994f00000000001976a9143d4437dbb52c52f8c3e0376207a2ffda048b509188ac98c60f00000000001976a9147608c9db829c508adabad84e8ee4479152a4069088ac8cb59800000000001976a91482750093487b148999769d79d7a6a727510f666d88ac67fb9800000000001976a9140c2c2d01dab366ff917d47d7e4da79da3f4f536388ac08f1a300000000001976a9149bc6ab563d51ddf5ec44e6dde12acd9ccc3b3d6088acf213fd02000000001976a91428e311cd7ab49625cda9b1b038c9693e246851f488acb6b00f00000000001976a914aac87d852f217aa6a3f487decb2ca2de8df8d38d88ac47b89f00000000001976a914c63213adf0b265bd3e0a590eef0a96134dc2c7c688ace6653301000000001976a91449c2ba04cfc25b00d2179a100dcac178cbf2ff2288ace9089706000000001976a91417ff8e5d39818da113b413fc758ceea682f218e988acf58c1b00000000001976a91460f905b7eeae61ea252682ac7347d893529d113188acbcd42402000000001976a91409702cf83eb9ecb99158793330f46db8175c038f88ac35091600000000001976a9142f233b9ed698896cfb6c84f2c15b366b4cc9d01088ace31c1100000000001976a91468164f91c581045101cf3ac635d9f07ed9aa61ce88ac19991200000000001976a9144f74fb104238c7eba9285a9512cffb81fcb09ccc88ac08361100000000001976a91410fb747d31c924792bdbeb079e0e11cb015bf3ce88ac48841200000000001976a914e38e1568e87954ba359622ab3c8e05126f19ff6288acf6f01e00000000001976a91482f1a557ebed52a33398953f2eb9a2331d0a30cd88ac54500400000000001976a914e12597dbccc15da460831dc72e544f67d9d8b70188ac2cab2500000000001976a9143fa89830f8dddd38c7c1cd03e60615fc1747cd9d88ace1b20100000000001976a914407e2b312299f1f66dbebea194872fddfa7a076388ac95513101000000001976a9142ebcb9bababaae42d5ae4e79a0811b851d38537588ac02e54f00000000001976a914a4468b0b513e364a8f489e0f96517ebad312c63f88ac2d16a200000000001976a9143b1958f6d066090c6984af9059ed25e9dca423ec88acdc301300000000001976a9141549ff5ff6c0fc777b9ec4884c6b27e5bf0d713d88ac87ab1000000000001976a91447cb1ddaff79e0fe387e898746724cb875f7384a88acdcf61300000000001976a914ac2cd4fb3e840dcceb12511e6421ad9a70a71df588ac7df30f00000000001976a914a4148e0c35ae2941f94352271f83c882f6a171fc88acf6a01c00000000001976a91431006fb0e40bf5b92fd2680e2f571829b88b872d88ac960b9c01000000001976a914921063ae9e18a0b1080633fbfcbd9e12b3afb4b288acbf4a6500000000001976a914bcb9a802dcfea42092229d5d2654431ab7489df888acb6452100000000001976a9140d7483bcfe86209ceefe62d8741ae36013307ebc88ac21fe0f00000000001976a914db5e118824f37d1aa493ccd3af3927a7d0e1fa9088ace37c1100000000001976a914f4c2a9b7c45ef7f3d8745f0fe0c3c58dcdd29a0188ac26a63a01000000001976a9143c2f84ca3879f5fba0a9cbd7219f99681cfb42e088ac26d44c00000000001976a9141edd387905946b07ab37b6d63b84ab2ca170d86388ac7f210f00000000001976a9145c0f757b69f9004eae4dd3883ff273c70163f4fb88ac8d361600000000001976a91405f1aa7d66934fc063bc57e89a564f35b4963d4188accf0c5100000000001976a914b67afee2c89eac9b9fe0e5c70d2af0fc4d099a8388acd50e3a00000000001976a91479cb7204c3c4b134b3412dbeeef0630f00736cf788ace9fa9c00000000001976a914e54c0128207e3157157202bed298cfec5153449388ac6d9fa000000000001976a914b9af74a72b4f100693e89f9242ccf956bda51e9788accbf20800000000001976a914d35757f8dd42f5aff752c23a28e3447de65a627888ac69da8b01000000001976a914992625bfad912bc6399ae0947d1cc9206ef43b5888ac15bb9e00000000001976a914e0718370fcfc1dcd59455d79dd1cda5d94f4d10d88ac3a0c1000000000001976a914804a8effbbc2a153bfd33744c6062045b289747388ac1be20f00000000001976a914101369ef3d870fefbee6707e9e25fe887493fb2a88ac19b74d000000000017a914f74b47cd77b6f9abf4120503f28db29a409216428714c11900000000001976a9148f451883a8798c9e12adb970e844b4d56dc5a06888ac031b2000000000001976a9146b0f14a6df12e9f9d9223f55294100a9a84514a888ac43111500000000001976a91499c9acae2cd2567c594654ddf622c441867ade7588acdb281000000000001976a9140abf6826dc5c54b6b01de0adb0a56f28ee3e9ddc88acf02e00030000000017a914256e1328d0479a425614a7b8ce25fbf9a35ee4ca87327c9a00000000001976a914578d6274fff4038839f4a5ce616d3e5b5e66285788acc5ca20000000000017a914e1d30850d59b98f9e0edccd4c1416bb79a9c14b08719e07e000000000017a9143fe0c4e408052208a690c69b7d25ae093ea98fec87db4b1300000000001976a914c9df38cdea8168caba9f2ec8ddbe5b5787944d2488ac71331600000000001976a9149a0230a6ecc8f116b40c59eb5e7a8915d3d6192188ac3f9aa900000000001976a914f894f7010c56523360d2f05d8b0fa852b5e786d288acc6380f00000000001976a91499128515a58e3a66205ff30240ad518b428da4cc88ac07b60f00000000001976a914543f6c3a80cd0d3f0eb996815b9936f67b28cfd488ac1c5e4d00000000001976a9146507eadf609964a1ca91cf6615f238298cf9ddd988acfdf71100000000001976a9141a134edeed7e9eb4823b897d2eb05aefba00317088ac61344d00000000001976a914aa3dbdb68a114dca1d9c7e609e0aee2047e4110b88ac313e1400000000001976a91462141da850f35dc44d9c1001647c3b3e323b1cea88acaadd0f00000000001976a91451229ad665ec22427406d151066fa13f29dd732488ac760e1100000000001976a914aaca3e4bddd318e826970de674d27f45d338cc4588ac97720500000000001976a91432792bab15272244a63768152cc70aebbb6ad5cd88ac7463c2000000000017a91471fbdf23360c66f233fd02a76fa7dea1e7dd1baa875027c300000000001976a914334cdb0e80dd8fd158a7710a663d40f7114f7dfd88acaf1e0800010000000001024376f325ad4200ef61aa252f1584a4c9117f0e1a25fe88632bca234c2df0af0a0000000017160014948d039a8fd0013b0a918224f223a7167e29e8d2ffffffff9736805821dc25126c35ff0a9e03ee401990342c5a6723c6ff8b348a0976cee80100000017160014e3afc86d0c267ec3df6f1ff6b3d54dd61e4b878effffffff019462bdc7010000001976a914a108ea233e9e141768f1179fb9cf2a33dccc342788ac0247304402206bea0f417a862da8d8cf027c9d3146d7141e69c6487c09f528105c1b4b140da4022008dfcd33e24cdc7c26df011777a6cc77f543a47d0610a6afa49743b110a2f45a412103abc67995c2e9d7ea3ee13911aa9bdf410cb5830aaae590a2605f1a27df810d6502473044022058d2ac7961e869c7c033239fa3c7201a4991f5a0323893826962964ff9663aa502206051486456c6a2207f2f4963111004b5133ee6e5117b137ff1f4dd5a21cc08bb4121023989fae61f34043f0278d6cb84be574dcdaeb265dbe6b76fabf8e58ddb7ff9a20000000002000000060ce990af492679673328a91206b50ff38751f71e8452fd74ea4d19d760b4bd43000000006a47304402201bced9ab7d8a8ed8c75fe17442aafc6bc3463ab6861a16ebfc1245d9612d5ff202207ecca984984c344a6ba543b1e46403fa311dee6d7514ce21dcebd324a8e70229412103ae1deff24f2099443cef621b32ec05d85d1d65dcfa32fb2a93d3fde509988107feffffff0d4ff716a5d255da7f52dedddfc279ceb0870f9ef0a2104dd57241c3bf0addac000000006b483045022100cb143dabc4f21daf47704411db736de0d3a9ce0149772d7a1f82ae92e718afc902203782ed586acb2c1db388ffeaf0a97a8c73f6e72f989300e34412a7e0a5ccf6b04121037ffa380ed9d8e7dc18225792de5ba82c28e03655389f4a3ab94fafdf2d996b3efeffffff706b6c764a940077e54458f55a0727b5fc1ffe795e29014190b6368dd0edaa8f000000006b483045022100bc09aefc86cab3b6bc314b3403feb3f5946d676e568a5becbbabb9072c3ba77e02200a4b26c4ee0244537a222af170792af7c27af5b1f4c0c866320eb705252e1ca64121023f7833dd22c45a92311d6b7b59e082045086f60bbec41904b5243e76079a5aa1feffffff97bb01949cc25315fed68593e12689fc5bf850838b41c05ec56c75d905076f32000000006b483045022100e670722dd0b5f9a7d4efcd3367ad9007675d14e900fd137891d9cb0d91dfe19d022027eac810e03d6c1e31a3e76cf43c8e4f40a5de4d36cd987ee4062372cca494d44121029de908901ca1827daff409633fcd9b8b7b04af8b73427752cacf1030d52f1a69feffffffd1669d91c5732215d607324856cb7cd211dd23569f355fb35401a026aca5321f000000006a47304402201af6939489cc6569bffa000b99fef70d22841bd2cc86b90a631020778ce4c38d02205a33efdd6b4a0a52339ed72f9029e20f01f36149a1a663a9856cb53434ac32df412102f94724692c06ef4c2da99b649c298f3c7b1d067bb890e8350cffc269e0a54d05feffffffff1719f97efed6b50882f5565a2b80e2e38304f4499f2f3d97eb36a1fc8b2941000000006a473044022022bd072671f6fe5ba03e941bce6e39ea10de8b5df4a301ec8110f44818203e8f0220046c39bcf2d6393ca29873ab9c109c972087696a695cfefc7cc1d8f2312634f8412103c4f4a9313d29f86f0bf3302f8aa650b026099987e5a75fe55764b2973d5caf2ffeffffff02baf66f59000000001976a91464d5b32c8f30b8c663a518a526f419c3d5e6626b88ac43780f00000000001976a914a6f1dc223ff4e9dbe88445026c60b22b8cd7254b88acaf1e080002000000041d5d34608cf5fe41de4e9e0f5c5b07d67da38589293d0a3b7f2b058b1c2cf53d000000006b48304502210097c78ae882bf6655051b7e2f8bccfadca2f92ea0b9c503eaa0873baa3be3517002203e28458d63000d9583b0034e35e37458a55750182647c4a9e16385f65b76112841210225d3a6abc82ffbb317387e2b6252a42df27cc2de0f9f7a60cdfe6ffea4588e9dfeffffff2420cd0af5194a6ef7e967a9bffeba698b9017b6236386c896d2f67ecc90c079000000006a47304402200dc8796cd5b21232b7fdb6cfecd3dcdaa00938d49e0e734e2f2ca0a735e76c6302205539b50d013283aab4a7af8714b3ae725c7f41d2e81264e1150b9da4c0b2553d41210300f8a11656e87a6854cdc55ba7231b5b9fdc1d4ec227a02bc1ed5d8bc0aa8da6feffffff25519766462ca0ca0b7dd97d204889f3e6ef3bc3dedf09cc2db06b8504ef7516010000006b483045022100900fc57fe3fe567e561217193fd9cc7b3c0b0ff66c9e15e1f98ab44507629a860220346d121e4fdd30795ee2a695852935c5eacca641614a7373aede630f5f76cb12412102787491947beb87e7dbdc040e285fd32957e5a91922ad33b49af04c50507baac6feffffff58eb58f16150c0e883198d8df703350da5b51601d492bb292fe19c9f1d517d96000000006b483045022100e4b8089cd2d6490f4f0b1591aeb91ecc2117fd36e58bd920841ab707125e532b0220277b8551a770784b46451956d0b598814b0f26aed47650457014fc1e8c00eebb412103a0c75b9bedddcff1f9762ddef93533eac6450f27cee2a1006f999f9648073d5cfeffffff02887df300000000001976a9146ea45eede099a2e5045ca95c0aa7036acbab3faf88ac84ad23140000000017a9141c109676436372f34fa16b0edc6edf4e07194dfd87af1e0800 diff --git a/bchain/coins/eth/ethrpc.go b/bchain/coins/eth/ethrpc.go index 1464ebca..d985e74c 100644 --- a/bchain/coins/eth/ethrpc.go +++ b/bchain/coins/eth/ethrpc.go @@ -29,6 +29,12 @@ const ( TestNet EthereumNet = 3 ) +type Configuration struct { + CoinName string `json:"coin_name"` + RPCURL string `json:"rpcURL"` + RPCTimeout int `json:"rpcTimeout"` +} + // EthereumRPC is an interface to JSON-RPC eth service. type EthereumRPC struct { client *ethclient.Client @@ -36,6 +42,7 @@ type EthereumRPC struct { timeout time.Duration rpcURL string Parser *EthereumParser + CoinName string Testnet bool Network string Mempool *bchain.NonUTXOMempool @@ -45,17 +52,13 @@ type EthereumRPC struct { newBlockSubscription *rpc.ClientSubscription chanNewTx chan ethcommon.Hash newTxSubscription *rpc.ClientSubscription -} - -type configuration struct { - RPCURL string `json:"rpcURL"` - RPCTimeout int `json:"rpcTimeout"` + ChainConfig *Configuration } // NewEthereumRPC returns new EthRPC instance. func NewEthereumRPC(config json.RawMessage, pushHandler func(bchain.NotificationType)) (bchain.BlockChain, error) { var err error - var c configuration + var c Configuration err = json.Unmarshal(config, &c) if err != nil { return nil, errors.Annotatef(err, "Invalid configuration file") @@ -67,9 +70,9 @@ func NewEthereumRPC(config json.RawMessage, pushHandler func(bchain.Notification ec := ethclient.NewClient(rc) s := &EthereumRPC{ - client: ec, - rpc: rc, - rpcURL: c.RPCURL, + client: ec, + rpc: rc, + ChainConfig: &c, } // always create parser @@ -240,6 +243,10 @@ func (b *EthereumRPC) GetNetworkName() string { return b.Network } +func (b *EthereumRPC) GetCoinName() string { + return b.ChainConfig.CoinName +} + func (b *EthereumRPC) GetSubversion() string { return "" } diff --git a/bchain/types.go b/bchain/types.go index 51e34656..538b9645 100644 --- a/bchain/types.go +++ b/bchain/types.go @@ -121,6 +121,7 @@ type BlockChain interface { IsTestnet() bool GetNetworkName() string GetSubversion() string + GetCoinName() string // requests GetBlockChainInfo() (string, error) GetBestBlockHash() (string, error) diff --git a/blockbook.go b/blockbook.go index f4bbf5c2..f7d71259 100644 --- a/blockbook.go +++ b/blockbook.go @@ -67,8 +67,6 @@ var ( explorerURL = flag.String("explorer", "", "address of blockchain explorer") - coin = flag.String("coin", "btc", "coin name") - noTxCache = flag.Bool("notxcache", false, "disable tx cache") computeColumnStats = flag.Bool("computedbstats", false, "compute column stats and exit") @@ -143,16 +141,21 @@ func main() { return } - metrics, err := common.GetMetrics(*coin) - if err != nil { - glog.Fatal("GetMetrics: ", err) - } - if *blockchain == "" { glog.Fatal("Missing blockchaincfg configuration parameter") } - if chain, err = getBlockChainWithRetry(*coin, *blockchain, pushSynchronizationHandler, metrics, 60); err != nil { + coin, err := coins.GetCoinNameFromConfig(*blockchain) + if err != nil { + glog.Fatal("config: ", err) + } + + metrics, err := common.GetMetrics(coin) + if err != nil { + glog.Fatal("metrics: ", err) + } + + if chain, err = getBlockChainWithRetry(coin, *blockchain, pushSynchronizationHandler, metrics, 60); err != nil { glog.Fatal("rpc: ", err) } @@ -162,7 +165,7 @@ func main() { } defer index.Close() - internalState, err = newInternalState(*coin, index) + internalState, err = newInternalState(coin, index) if err != nil { glog.Error("internalState: ", err) return diff --git a/build/deb/debian/blockbook-bcash-testnet.conffiles b/build/deb/debian/blockbook-bcash-testnet.conffiles new file mode 100644 index 00000000..47da7625 --- /dev/null +++ b/build/deb/debian/blockbook-bcash-testnet.conffiles @@ -0,0 +1 @@ +/opt/coins/blockbook/bcash_testnet/config/blockchaincfg.json diff --git a/build/deb/debian/blockbook-bcash-testnet.cron.daily b/build/deb/debian/blockbook-bcash-testnet.cron.daily new file mode 100644 index 00000000..ffc5baf8 --- /dev/null +++ b/build/deb/debian/blockbook-bcash-testnet.cron.daily @@ -0,0 +1,2 @@ +#!/bin/sh +/opt/coins/blockbook/bcash_testnet/bin/logrotate.sh diff --git a/build/deb/debian/blockbook-bcash-testnet.dirs b/build/deb/debian/blockbook-bcash-testnet.dirs new file mode 100644 index 00000000..194e9726 --- /dev/null +++ b/build/deb/debian/blockbook-bcash-testnet.dirs @@ -0,0 +1,2 @@ +/opt/coins/data/bcash_testnet/blockbook +/opt/coins/blockbook/bcash_testnet/logs diff --git a/build/deb/debian/blockbook-bcash-testnet.install b/build/deb/debian/blockbook-bcash-testnet.install new file mode 100755 index 00000000..e212e59a --- /dev/null +++ b/build/deb/debian/blockbook-bcash-testnet.install @@ -0,0 +1,6 @@ +#!/usr/bin/dh-exec +blockbook /opt/coins/blockbook/bcash_testnet/bin +cert /opt/coins/blockbook/bcash_testnet +static /opt/coins/blockbook/bcash_testnet +configs/bcash_testnet.json => /opt/coins/blockbook/bcash_testnet/config/blockchaincfg.json +logrotate.sh /opt/coins/blockbook/bcash_testnet/bin diff --git a/build/deb/debian/blockbook-bcash-testnet.links b/build/deb/debian/blockbook-bcash-testnet.links new file mode 100644 index 00000000..99a18b69 --- /dev/null +++ b/build/deb/debian/blockbook-bcash-testnet.links @@ -0,0 +1,2 @@ +/opt/coins/blockbook/bcash_testnet/cert/testcert.crt /opt/coins/blockbook/bcash_testnet/cert/blockbook.crt +/opt/coins/blockbook/bcash_testnet/cert/testcert.key /opt/coins/blockbook/bcash_testnet/cert/blockbook.key diff --git a/build/deb/debian/blockbook-bcash-testnet.postinst b/build/deb/debian/blockbook-bcash-testnet.postinst new file mode 100644 index 00000000..58ef2f9f --- /dev/null +++ b/build/deb/debian/blockbook-bcash-testnet.postinst @@ -0,0 +1,23 @@ +#!/bin/bash +set -e + +case "$1" in + + configure) + if ! id -u blockbook-bcash &> /dev/null + then + useradd --system -M -U blockbook-bcash -s /bin/false + fi + + for dir in /opt/coins/data/bcash_testnet/blockbook /opt/coins/blockbook/bcash_testnet/logs + do + if [ "$(stat -c '%U' $dir)" != "blockbook-bcash" ] + then + chown -R blockbook-bcash:blockbook-bcash $dir + fi + done + ;; + +esac + +#DEBHELPER# diff --git a/build/deb/debian/blockbook-bch-testnet.service b/build/deb/debian/blockbook-bcash-testnet.service similarity index 62% rename from build/deb/debian/blockbook-bch-testnet.service rename to build/deb/debian/blockbook-bcash-testnet.service index 35257826..a157b446 100644 --- a/build/deb/debian/blockbook-bch-testnet.service +++ b/build/deb/debian/blockbook-bcash-testnet.service @@ -1,20 +1,20 @@ # It is not recommended to modify this file in-place, because it will # be overwritten during package upgrades. If you want to add further # options or overwrite existing ones then use -# $ systemctl edit blockbook-bch-testnet.service +# $ systemctl edit blockbook-bcash-testnet.service # See "man systemd.service" for details. [Unit] -Description=Blockbook daemon (BCH testnet) +Description=Blockbook daemon (Bcash testnet) After=network.target Wants=bcash-testnet.service [Service] -ExecStart=/opt/coins/blockbook/bch-testnet/bin/blockbook -coin=bch-testnet -blockchaincfg=/opt/coins/blockbook/bch-testnet/config/blockchaincfg.json -datadir=/opt/coins/data/bch-testnet/blockbook/db -sync -httpserver=:19031 -socketio=:19131 -certfile=/opt/coins/blockbook/bch-testnet/cert/blockbook -explorer=https://bitcoincash.blockexplorer.com/ -log_dir=/opt/coins/blockbook/bch-testnet/logs -User=blockbook-bch +ExecStart=/opt/coins/blockbook/bcash_testnet/bin/blockbook -blockchaincfg=/opt/coins/blockbook/bcash_testnet/config/blockchaincfg.json -datadir=/opt/coins/data/bcash_testnet/blockbook/db -sync -httpserver=:19031 -socketio=:19131 -certfile=/opt/coins/blockbook/bcash_testnet/cert/blockbook -explorer=https://bitcoincash.blockexplorer.com/ -log_dir=/opt/coins/blockbook/bcash_testnet/logs +User=blockbook-bcash Type=simple Restart=on-failure -WorkingDirectory=/opt/coins/blockbook/bch-testnet +WorkingDirectory=/opt/coins/blockbook/bcash_testnet # Resource limits LimitNOFILE=500000 diff --git a/build/deb/debian/blockbook-bcash.conffiles b/build/deb/debian/blockbook-bcash.conffiles new file mode 100644 index 00000000..684c0294 --- /dev/null +++ b/build/deb/debian/blockbook-bcash.conffiles @@ -0,0 +1 @@ +/opt/coins/blockbook/bcash/config/blockchaincfg.json diff --git a/build/deb/debian/blockbook-bcash.cron.daily b/build/deb/debian/blockbook-bcash.cron.daily new file mode 100644 index 00000000..4a66059f --- /dev/null +++ b/build/deb/debian/blockbook-bcash.cron.daily @@ -0,0 +1,2 @@ +#!/bin/sh +/opt/coins/blockbook/bcash/bin/logrotate.sh diff --git a/build/deb/debian/blockbook-bcash.dirs b/build/deb/debian/blockbook-bcash.dirs new file mode 100644 index 00000000..5cf39a34 --- /dev/null +++ b/build/deb/debian/blockbook-bcash.dirs @@ -0,0 +1,2 @@ +/opt/coins/data/bcash/blockbook +/opt/coins/blockbook/bcash/logs diff --git a/build/deb/debian/blockbook-bcash.install b/build/deb/debian/blockbook-bcash.install new file mode 100755 index 00000000..ccd90741 --- /dev/null +++ b/build/deb/debian/blockbook-bcash.install @@ -0,0 +1,6 @@ +#!/usr/bin/dh-exec +blockbook /opt/coins/blockbook/bcash/bin +cert /opt/coins/blockbook/bcash +static /opt/coins/blockbook/bcash +configs/bcash.json => /opt/coins/blockbook/bcash/config/blockchaincfg.json +logrotate.sh /opt/coins/blockbook/bcash/bin diff --git a/build/deb/debian/blockbook-bcash.links b/build/deb/debian/blockbook-bcash.links new file mode 100644 index 00000000..3d1bc911 --- /dev/null +++ b/build/deb/debian/blockbook-bcash.links @@ -0,0 +1,2 @@ +/opt/coins/blockbook/bcash/cert/testcert.crt /opt/coins/blockbook/bcash/cert/blockbook.crt +/opt/coins/blockbook/bcash/cert/testcert.key /opt/coins/blockbook/bcash/cert/blockbook.key diff --git a/build/deb/debian/blockbook-bcash.postinst b/build/deb/debian/blockbook-bcash.postinst new file mode 100644 index 00000000..52f36399 --- /dev/null +++ b/build/deb/debian/blockbook-bcash.postinst @@ -0,0 +1,23 @@ +#!/bin/bash +set -e + +case "$1" in + + configure) + if ! id -u blockbook-bcash &> /dev/null + then + useradd --system -M -U blockbook-bcash -s /bin/false + fi + + for dir in /opt/coins/data/bcash/blockbook /opt/coins/blockbook/bcash/logs + do + if [ "$(stat -c '%U' $dir)" != "blockbook-bcash" ] + then + chown -R blockbook-bcash:blockbook-bcash $dir + fi + done + ;; + +esac + +#DEBHELPER# diff --git a/build/deb/debian/blockbook-bch.service b/build/deb/debian/blockbook-bcash.service similarity index 63% rename from build/deb/debian/blockbook-bch.service rename to build/deb/debian/blockbook-bcash.service index 3789317c..49d75ac7 100644 --- a/build/deb/debian/blockbook-bch.service +++ b/build/deb/debian/blockbook-bcash.service @@ -1,20 +1,20 @@ # It is not recommended to modify this file in-place, because it will # be overwritten during package upgrades. If you want to add further # options or overwrite existing ones then use -# $ systemctl edit blockbook-bch.service +# $ systemctl edit blockbook-bcash.service # See "man systemd.service" for details. [Unit] -Description=Blockbook daemon (BCH mainnet) +Description=Blockbook daemon (Bcash mainnet) After=network.target -Wants=bcash-bch.service +Wants=bcash.service [Service] -ExecStart=/opt/coins/blockbook/bch/bin/blockbook -coin=bch -blockchaincfg=/opt/coins/blockbook/bch/config/blockchaincfg.json -datadir=/opt/coins/data/bch/blockbook/db -sync -httpserver=:9031 -socketio=:9131 -certfile=/opt/coins/blockbook/bch/cert/blockbook -explorer=https://bitcoincash.blockexplorer.com/ -log_dir=/opt/coins/blockbook/bch/logs -User=blockbook-bch +ExecStart=/opt/coins/blockbook/bcash/bin/blockbook -blockchaincfg=/opt/coins/blockbook/bcash/config/blockchaincfg.json -datadir=/opt/coins/data/bcash/blockbook/db -sync -httpserver=:9031 -socketio=:9131 -certfile=/opt/coins/blockbook/bcash/cert/blockbook -explorer=https://bitcoincash.blockexplorer.com/ -log_dir=/opt/coins/blockbook/bcash/logs +User=blockbook-bcash Type=simple Restart=on-failure -WorkingDirectory=/opt/coins/blockbook/bch +WorkingDirectory=/opt/coins/blockbook/bcash # Resource limits LimitNOFILE=500000 diff --git a/build/deb/debian/blockbook-bch-testnet.conffiles b/build/deb/debian/blockbook-bch-testnet.conffiles deleted file mode 100644 index aaccca4e..00000000 --- a/build/deb/debian/blockbook-bch-testnet.conffiles +++ /dev/null @@ -1 +0,0 @@ -/opt/coins/blockbook/bch-testnet/config/blockchaincfg.json diff --git a/build/deb/debian/blockbook-bch-testnet.cron.daily b/build/deb/debian/blockbook-bch-testnet.cron.daily deleted file mode 100644 index a790c4b6..00000000 --- a/build/deb/debian/blockbook-bch-testnet.cron.daily +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -/opt/coins/blockbook/bch-testnet/bin/logrotate.sh diff --git a/build/deb/debian/blockbook-bch-testnet.dirs b/build/deb/debian/blockbook-bch-testnet.dirs deleted file mode 100644 index a6f4d16e..00000000 --- a/build/deb/debian/blockbook-bch-testnet.dirs +++ /dev/null @@ -1,2 +0,0 @@ -/opt/coins/data/bch-testnet/blockbook -/opt/coins/blockbook/bch-testnet/logs diff --git a/build/deb/debian/blockbook-bch-testnet.install b/build/deb/debian/blockbook-bch-testnet.install deleted file mode 100755 index d1e6864a..00000000 --- a/build/deb/debian/blockbook-bch-testnet.install +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/dh-exec -blockbook /opt/coins/blockbook/bch-testnet/bin -cert /opt/coins/blockbook/bch-testnet -static /opt/coins/blockbook/bch-testnet -configs/bch-testnet.json => /opt/coins/blockbook/bch-testnet/config/blockchaincfg.json -logrotate.sh /opt/coins/blockbook/bch-testnet/bin diff --git a/build/deb/debian/blockbook-bch-testnet.links b/build/deb/debian/blockbook-bch-testnet.links deleted file mode 100644 index 8e1d05f6..00000000 --- a/build/deb/debian/blockbook-bch-testnet.links +++ /dev/null @@ -1,2 +0,0 @@ -/opt/coins/blockbook/bch-testnet/cert/testcert.crt /opt/coins/blockbook/bch-testnet/cert/blockbook.crt -/opt/coins/blockbook/bch-testnet/cert/testcert.key /opt/coins/blockbook/bch-testnet/cert/blockbook.key diff --git a/build/deb/debian/blockbook-bch-testnet.postinst b/build/deb/debian/blockbook-bch-testnet.postinst deleted file mode 100644 index daa1910e..00000000 --- a/build/deb/debian/blockbook-bch-testnet.postinst +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -set -e - -case "$1" in - - configure) - if ! id -u blockbook-bch &> /dev/null - then - useradd --system -M -U blockbook-bch -s /bin/false - fi - - for dir in /opt/coins/data/bch-testnet/blockbook /opt/coins/blockbook/bch-testnet/logs - do - if [ "$(stat -c '%U' $dir)" != "blockbook-bch" ] - then - chown -R blockbook-bch:blockbook-bch $dir - fi - done - ;; - -esac - -#DEBHELPER# diff --git a/build/deb/debian/blockbook-bch.conffiles b/build/deb/debian/blockbook-bch.conffiles deleted file mode 100644 index 2f6fffc1..00000000 --- a/build/deb/debian/blockbook-bch.conffiles +++ /dev/null @@ -1 +0,0 @@ -/opt/coins/blockbook/bch/config/blockchaincfg.json diff --git a/build/deb/debian/blockbook-bch.cron.daily b/build/deb/debian/blockbook-bch.cron.daily deleted file mode 100644 index 910e4c12..00000000 --- a/build/deb/debian/blockbook-bch.cron.daily +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -/opt/coins/blockbook/bch/bin/logrotate.sh diff --git a/build/deb/debian/blockbook-bch.dirs b/build/deb/debian/blockbook-bch.dirs deleted file mode 100644 index 34b594ad..00000000 --- a/build/deb/debian/blockbook-bch.dirs +++ /dev/null @@ -1,2 +0,0 @@ -/opt/coins/data/bch/blockbook -/opt/coins/blockbook/bch/logs diff --git a/build/deb/debian/blockbook-bch.install b/build/deb/debian/blockbook-bch.install deleted file mode 100755 index 60b20232..00000000 --- a/build/deb/debian/blockbook-bch.install +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/dh-exec -blockbook /opt/coins/blockbook/bch/bin -cert /opt/coins/blockbook/bch -static /opt/coins/blockbook/bch -configs/bch.json => /opt/coins/blockbook/bch/config/blockchaincfg.json -logrotate.sh /opt/coins/blockbook/bch/bin diff --git a/build/deb/debian/blockbook-bch.links b/build/deb/debian/blockbook-bch.links deleted file mode 100644 index b08a157d..00000000 --- a/build/deb/debian/blockbook-bch.links +++ /dev/null @@ -1,2 +0,0 @@ -/opt/coins/blockbook/bch/cert/testcert.crt /opt/coins/blockbook/bch/cert/blockbook.crt -/opt/coins/blockbook/bch/cert/testcert.key /opt/coins/blockbook/bch/cert/blockbook.key diff --git a/build/deb/debian/blockbook-bch.postinst b/build/deb/debian/blockbook-bch.postinst deleted file mode 100644 index ebc552d1..00000000 --- a/build/deb/debian/blockbook-bch.postinst +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -set -e - -case "$1" in - - configure) - if ! id -u blockbook-bch &> /dev/null - then - useradd --system -M -U blockbook-bch -s /bin/false - fi - - for dir in /opt/coins/data/bch/blockbook /opt/coins/blockbook/bch/logs - do - if [ "$(stat -c '%U' $dir)" != "blockbook-bch" ] - then - chown -R blockbook-bch:blockbook-bch $dir - fi - done - ;; - -esac - -#DEBHELPER# diff --git a/build/deb/debian/blockbook-bgold.conffiles b/build/deb/debian/blockbook-bgold.conffiles new file mode 100644 index 00000000..ae1dd9e3 --- /dev/null +++ b/build/deb/debian/blockbook-bgold.conffiles @@ -0,0 +1 @@ +/opt/coins/blockbook/bgold/config/blockchaincfg.json diff --git a/build/deb/debian/blockbook-bgold.cron.daily b/build/deb/debian/blockbook-bgold.cron.daily new file mode 100644 index 00000000..e35bc5f6 --- /dev/null +++ b/build/deb/debian/blockbook-bgold.cron.daily @@ -0,0 +1,2 @@ +#!/bin/sh +/opt/coins/blockbook/bgold/bin/logrotate.sh diff --git a/build/deb/debian/blockbook-bgold.dirs b/build/deb/debian/blockbook-bgold.dirs new file mode 100644 index 00000000..c9763c5b --- /dev/null +++ b/build/deb/debian/blockbook-bgold.dirs @@ -0,0 +1,2 @@ +/opt/coins/data/bgold/blockbook +/opt/coins/blockbook/bgold/logs diff --git a/build/deb/debian/blockbook-bgold.install b/build/deb/debian/blockbook-bgold.install new file mode 100755 index 00000000..0da6bda1 --- /dev/null +++ b/build/deb/debian/blockbook-bgold.install @@ -0,0 +1,6 @@ +#!/usr/bin/dh-exec +blockbook /opt/coins/blockbook/bgold/bin +cert /opt/coins/blockbook/bgold +static /opt/coins/blockbook/bgold +configs/bgold.json => /opt/coins/blockbook/bgold/config/blockchaincfg.json +logrotate.sh /opt/coins/blockbook/bgold/bin diff --git a/build/deb/debian/blockbook-bgold.links b/build/deb/debian/blockbook-bgold.links new file mode 100644 index 00000000..2e7f975b --- /dev/null +++ b/build/deb/debian/blockbook-bgold.links @@ -0,0 +1,2 @@ +/opt/coins/blockbook/bgold/cert/testcert.crt /opt/coins/blockbook/bgold/cert/blockbook.crt +/opt/coins/blockbook/bgold/cert/testcert.key /opt/coins/blockbook/bgold/cert/blockbook.key diff --git a/build/deb/debian/blockbook-bgold.postinst b/build/deb/debian/blockbook-bgold.postinst new file mode 100644 index 00000000..c51d2164 --- /dev/null +++ b/build/deb/debian/blockbook-bgold.postinst @@ -0,0 +1,23 @@ +#!/bin/bash +set -e + +case "$1" in + + configure) + if ! id -u blockbook-bgold &> /dev/null + then + useradd --system -M -U blockbook-bgold -s /bin/false + fi + + for dir in /opt/coins/data/bgold/blockbook /opt/coins/blockbook/bgold/logs + do + if [ "$(stat -c '%U' $dir)" != "blockbook-bgold" ] + then + chown -R blockbook-bgold:blockbook-bgold $dir + fi + done + ;; + +esac + +#DEBHELPER# diff --git a/build/deb/debian/blockbook-btc.service b/build/deb/debian/blockbook-bgold.service similarity index 63% rename from build/deb/debian/blockbook-btc.service rename to build/deb/debian/blockbook-bgold.service index 4273ad31..947c4d1c 100644 --- a/build/deb/debian/blockbook-btc.service +++ b/build/deb/debian/blockbook-bgold.service @@ -1,20 +1,20 @@ # It is not recommended to modify this file in-place, because it will # be overwritten during package upgrades. If you want to add further # options or overwrite existing ones then use -# $ systemctl edit blockbook-btc.service +# $ systemctl edit blockbook-bgold.service # See "man systemd.service" for details. [Unit] -Description=Blockbook daemon (BTC mainnet) +Description=Blockbook daemon (Bitcoin Gold mainnet) After=network.target -Wants=bitcoin-btc.service +Wants=bgold.service [Service] -ExecStart=/opt/coins/blockbook/btc/bin/blockbook -coin=btc -blockchaincfg=/opt/coins/blockbook/btc/config/blockchaincfg.json -datadir=/opt/coins/data/btc/blockbook/db -sync -httpserver=:9030 -socketio=:9130 -certfile=/opt/coins/blockbook/btc/cert/blockbook -explorer=https://btc-explorer.trezor.io/ -log_dir=/opt/coins/blockbook/btc/logs -User=blockbook-btc +ExecStart=/opt/coins/blockbook/bgold/bin/blockbook -blockchaincfg=/opt/coins/blockbook/bgold/config/blockchaincfg.json -datadir=/opt/coins/data/bgold/blockbook/db -sync -httpserver=:9035 -socketio=:9135 -certfile=/opt/coins/blockbook/bgold/cert/blockbook -explorer=https://btg-bitcore1.trezor.io/ -log_dir=/opt/coins/blockbook/bgold/logs +User=blockbook-bgold Type=simple Restart=on-failure -WorkingDirectory=/opt/coins/blockbook/btc +WorkingDirectory=/opt/coins/blockbook/bgold # Resource limits LimitNOFILE=500000 diff --git a/build/deb/debian/blockbook-bitcoin-testnet.conffiles b/build/deb/debian/blockbook-bitcoin-testnet.conffiles new file mode 100644 index 00000000..92125db8 --- /dev/null +++ b/build/deb/debian/blockbook-bitcoin-testnet.conffiles @@ -0,0 +1 @@ +/opt/coins/blockbook/bitcoin_testnet/config/blockchaincfg.json diff --git a/build/deb/debian/blockbook-bitcoin-testnet.cron.daily b/build/deb/debian/blockbook-bitcoin-testnet.cron.daily new file mode 100644 index 00000000..df131d31 --- /dev/null +++ b/build/deb/debian/blockbook-bitcoin-testnet.cron.daily @@ -0,0 +1,2 @@ +#!/bin/sh +/opt/coins/blockbook/bitcoin_testnet/bin/logrotate.sh diff --git a/build/deb/debian/blockbook-bitcoin-testnet.dirs b/build/deb/debian/blockbook-bitcoin-testnet.dirs new file mode 100644 index 00000000..a18466ea --- /dev/null +++ b/build/deb/debian/blockbook-bitcoin-testnet.dirs @@ -0,0 +1,2 @@ +/opt/coins/data/bitcoin_testnet/blockbook +/opt/coins/blockbook/bitcoin_testnet/logs diff --git a/build/deb/debian/blockbook-bitcoin-testnet.install b/build/deb/debian/blockbook-bitcoin-testnet.install new file mode 100755 index 00000000..aae85658 --- /dev/null +++ b/build/deb/debian/blockbook-bitcoin-testnet.install @@ -0,0 +1,6 @@ +#!/usr/bin/dh-exec +blockbook /opt/coins/blockbook/bitcoin_testnet/bin +cert /opt/coins/blockbook/bitcoin_testnet +static /opt/coins/blockbook/bitcoin_testnet +configs/bitcoin_testnet.json => /opt/coins/blockbook/bitcoin_testnet/config/blockchaincfg.json +logrotate.sh /opt/coins/blockbook/bitcoin_testnet/bin diff --git a/build/deb/debian/blockbook-bitcoin-testnet.links b/build/deb/debian/blockbook-bitcoin-testnet.links new file mode 100644 index 00000000..f60dbadf --- /dev/null +++ b/build/deb/debian/blockbook-bitcoin-testnet.links @@ -0,0 +1,2 @@ +/opt/coins/blockbook/bitcoin_testnet/cert/testcert.crt /opt/coins/blockbook/bitcoin_testnet/cert/blockbook.crt +/opt/coins/blockbook/bitcoin_testnet/cert/testcert.key /opt/coins/blockbook/bitcoin_testnet/cert/blockbook.key diff --git a/build/deb/debian/blockbook-bitcoin-testnet.postinst b/build/deb/debian/blockbook-bitcoin-testnet.postinst new file mode 100644 index 00000000..8f4637ce --- /dev/null +++ b/build/deb/debian/blockbook-bitcoin-testnet.postinst @@ -0,0 +1,23 @@ +#!/bin/bash +set -e + +case "$1" in + + configure) + if ! id -u blockbook-bitcoin &> /dev/null + then + useradd --system -M -U blockbook-bitcoin -s /bin/false + fi + + for dir in /opt/coins/data/bitcoin_testnet/blockbook /opt/coins/blockbook/bitcoin_testnet/logs + do + if [ "$(stat -c '%U' $dir)" != "blockbook-bitcoin" ] + then + chown -R blockbook-bitcoin:blockbook-bitcoin $dir + fi + done + ;; + +esac + +#DEBHELPER# diff --git a/build/deb/debian/blockbook-btc-testnet.service b/build/deb/debian/blockbook-bitcoin-testnet.service similarity index 61% rename from build/deb/debian/blockbook-btc-testnet.service rename to build/deb/debian/blockbook-bitcoin-testnet.service index cf35f6d8..1e24c2c2 100644 --- a/build/deb/debian/blockbook-btc-testnet.service +++ b/build/deb/debian/blockbook-bitcoin-testnet.service @@ -1,20 +1,20 @@ # It is not recommended to modify this file in-place, because it will # be overwritten during package upgrades. If you want to add further # options or overwrite existing ones then use -# $ systemctl edit blockbook-btc-testnet.service +# $ systemctl edit blockbook-bitcoin-testnet.service # See "man systemd.service" for details. [Unit] -Description=Blockbook daemon (BTC testnet) +Description=Blockbook daemon (Bitcoin testnet) After=network.target Wants=bitcoin-testnet.service [Service] -ExecStart=/opt/coins/blockbook/btc-testnet/bin/blockbook -coin=btc-testnet -blockchaincfg=/opt/coins/blockbook/btc-testnet/config/blockchaincfg.json -datadir=/opt/coins/data/btc-testnet/blockbook/db -sync -httpserver=:19030 -socketio=:19130 -certfile=/opt/coins/blockbook/btc-testnet/cert/blockbook -explorer=https://btc-testnet-explorer.trezor.io/ -log_dir=/opt/coins/blockbook/btc-testnet/logs -User=blockbook-btc +ExecStart=/opt/coins/blockbook/bitcoin_testnet/bin/blockbook -blockchaincfg=/opt/coins/blockbook/bitcoin_testnet/config/blockchaincfg.json -datadir=/opt/coins/data/bitcoin_testnet/blockbook/db -sync -httpserver=:19030 -socketio=:19130 -certfile=/opt/coins/blockbook/bitcoin_testnet/cert/blockbook -explorer=https://btc-testnet-explorer.trezor.io/ -log_dir=/opt/coins/blockbook/bitcoin_testnet/logs +User=blockbook-bitcoin Type=simple Restart=on-failure -WorkingDirectory=/opt/coins/blockbook/btc-testnet +WorkingDirectory=/opt/coins/blockbook/bitcoin_testnet # Resource limits LimitNOFILE=500000 diff --git a/build/deb/debian/blockbook-bitcoin.conffiles b/build/deb/debian/blockbook-bitcoin.conffiles new file mode 100644 index 00000000..bfdf0a35 --- /dev/null +++ b/build/deb/debian/blockbook-bitcoin.conffiles @@ -0,0 +1 @@ +/opt/coins/blockbook/bitcoin/config/blockchaincfg.json diff --git a/build/deb/debian/blockbook-bitcoin.cron.daily b/build/deb/debian/blockbook-bitcoin.cron.daily new file mode 100644 index 00000000..87303379 --- /dev/null +++ b/build/deb/debian/blockbook-bitcoin.cron.daily @@ -0,0 +1,2 @@ +#!/bin/sh +/opt/coins/blockbook/bitcoin/bin/logrotate.sh diff --git a/build/deb/debian/blockbook-bitcoin.dirs b/build/deb/debian/blockbook-bitcoin.dirs new file mode 100644 index 00000000..342d1763 --- /dev/null +++ b/build/deb/debian/blockbook-bitcoin.dirs @@ -0,0 +1,2 @@ +/opt/coins/data/bitcoin/blockbook +/opt/coins/blockbook/bitcoin/logs diff --git a/build/deb/debian/blockbook-bitcoin.install b/build/deb/debian/blockbook-bitcoin.install new file mode 100755 index 00000000..23cf878e --- /dev/null +++ b/build/deb/debian/blockbook-bitcoin.install @@ -0,0 +1,6 @@ +#!/usr/bin/dh-exec +blockbook /opt/coins/blockbook/bitcoin/bin +cert /opt/coins/blockbook/bitcoin +static /opt/coins/blockbook/bitcoin +configs/bitcoin.json => /opt/coins/blockbook/bitcoin/config/blockchaincfg.json +logrotate.sh /opt/coins/blockbook/bitcoin/bin diff --git a/build/deb/debian/blockbook-bitcoin.links b/build/deb/debian/blockbook-bitcoin.links new file mode 100644 index 00000000..322c6cf1 --- /dev/null +++ b/build/deb/debian/blockbook-bitcoin.links @@ -0,0 +1,2 @@ +/opt/coins/blockbook/bitcoin/cert/testcert.crt /opt/coins/blockbook/bitcoin/cert/blockbook.crt +/opt/coins/blockbook/bitcoin/cert/testcert.key /opt/coins/blockbook/bitcoin/cert/blockbook.key diff --git a/build/deb/debian/blockbook-bitcoin.postinst b/build/deb/debian/blockbook-bitcoin.postinst new file mode 100644 index 00000000..87945f88 --- /dev/null +++ b/build/deb/debian/blockbook-bitcoin.postinst @@ -0,0 +1,23 @@ +#!/bin/bash +set -e + +case "$1" in + + configure) + if ! id -u blockbook-bitcoin &> /dev/null + then + useradd --system -M -U blockbook-bitcoin -s /bin/false + fi + + for dir in /opt/coins/data/bitcoin/blockbook /opt/coins/blockbook/bitcoin/logs + do + if [ "$(stat -c '%U' $dir)" != "blockbook-bitcoin" ] + then + chown -R blockbook-bitcoin:blockbook-bitcoin $dir + fi + done + ;; + +esac + +#DEBHELPER# diff --git a/build/deb/debian/blockbook-bitcoin.service b/build/deb/debian/blockbook-bitcoin.service new file mode 100644 index 00000000..c3b1b193 --- /dev/null +++ b/build/deb/debian/blockbook-bitcoin.service @@ -0,0 +1,43 @@ +# It is not recommended to modify this file in-place, because it will +# be overwritten during package upgrades. If you want to add further +# options or overwrite existing ones then use +# $ systemctl edit blockbook-bitcoin.service +# See "man systemd.service" for details. + +[Unit] +Description=Blockbook daemon (Bitcoin mainnet) +After=network.target +Wants=bitcoin.service + +[Service] +ExecStart=/opt/coins/blockbook/bitcoin/bin/blockbook -blockchaincfg=/opt/coins/blockbook/bitcoin/config/blockchaincfg.json -datadir=/opt/coins/data/bitcoin/blockbook/db -sync -httpserver=:9030 -socketio=:9130 -certfile=/opt/coins/blockbook/bitcoin/cert/blockbook -explorer=https://btc-explorer.trezor.io/ -log_dir=/opt/coins/blockbook/bitcoin/logs +User=blockbook-bitcoin +Type=simple +Restart=on-failure +WorkingDirectory=/opt/coins/blockbook/bitcoin + +# Resource limits +LimitNOFILE=500000 + +# Hardening measures +#################### + +# Provide a private /tmp and /var/tmp. +PrivateTmp=true + +# Mount /usr, /boot/ and /etc read-only for the process. +ProtectSystem=full + +# Disallow the process and all of its children to gain +# new privileges through execve(). +NoNewPrivileges=true + +# Use a new /dev namespace only populated with API pseudo devices +# such as /dev/null, /dev/zero and /dev/random. +PrivateDevices=true + +# Deny the creation of writable and executable memory mappings. +MemoryDenyWriteExecute=true + +[Install] +WantedBy=multi-user.target diff --git a/build/deb/debian/blockbook-btc-testnet.conffiles b/build/deb/debian/blockbook-btc-testnet.conffiles deleted file mode 100644 index b7e2930b..00000000 --- a/build/deb/debian/blockbook-btc-testnet.conffiles +++ /dev/null @@ -1 +0,0 @@ -/opt/coins/blockbook/btc-testnet/config/blockchaincfg.json diff --git a/build/deb/debian/blockbook-btc-testnet.cron.daily b/build/deb/debian/blockbook-btc-testnet.cron.daily deleted file mode 100644 index 4a3fa5cd..00000000 --- a/build/deb/debian/blockbook-btc-testnet.cron.daily +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -/opt/coins/blockbook/btc-testnet/bin/logrotate.sh diff --git a/build/deb/debian/blockbook-btc-testnet.dirs b/build/deb/debian/blockbook-btc-testnet.dirs deleted file mode 100644 index 04a70a52..00000000 --- a/build/deb/debian/blockbook-btc-testnet.dirs +++ /dev/null @@ -1,2 +0,0 @@ -/opt/coins/data/btc-testnet/blockbook -/opt/coins/blockbook/btc-testnet/logs diff --git a/build/deb/debian/blockbook-btc-testnet.install b/build/deb/debian/blockbook-btc-testnet.install deleted file mode 100755 index 5fe355ef..00000000 --- a/build/deb/debian/blockbook-btc-testnet.install +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/dh-exec -blockbook /opt/coins/blockbook/btc-testnet/bin -cert /opt/coins/blockbook/btc-testnet -static /opt/coins/blockbook/btc-testnet -configs/btc-testnet.json => /opt/coins/blockbook/btc-testnet/config/blockchaincfg.json -logrotate.sh /opt/coins/blockbook/btc-testnet/bin diff --git a/build/deb/debian/blockbook-btc-testnet.links b/build/deb/debian/blockbook-btc-testnet.links deleted file mode 100644 index 6bf90efe..00000000 --- a/build/deb/debian/blockbook-btc-testnet.links +++ /dev/null @@ -1,2 +0,0 @@ -/opt/coins/blockbook/btc-testnet/cert/testcert.crt /opt/coins/blockbook/btc-testnet/cert/blockbook.crt -/opt/coins/blockbook/btc-testnet/cert/testcert.key /opt/coins/blockbook/btc-testnet/cert/blockbook.key diff --git a/build/deb/debian/blockbook-btc-testnet.postinst b/build/deb/debian/blockbook-btc-testnet.postinst deleted file mode 100644 index e5097cb5..00000000 --- a/build/deb/debian/blockbook-btc-testnet.postinst +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -set -e - -case "$1" in - - configure) - if ! id -u blockbook-btc &> /dev/null - then - useradd --system -M -U blockbook-btc -s /bin/false - fi - - for dir in /opt/coins/data/btc-testnet/blockbook /opt/coins/blockbook/btc-testnet/logs - do - if [ "$(stat -c '%U' $dir)" != "blockbook-btc" ] - then - chown -R blockbook-btc:blockbook-btc $dir - fi - done - ;; - -esac - -#DEBHELPER# diff --git a/build/deb/debian/blockbook-btc.conffiles b/build/deb/debian/blockbook-btc.conffiles deleted file mode 100644 index 9fe092c2..00000000 --- a/build/deb/debian/blockbook-btc.conffiles +++ /dev/null @@ -1 +0,0 @@ -/opt/coins/blockbook/btc/config/blockchaincfg.json diff --git a/build/deb/debian/blockbook-btc.cron.daily b/build/deb/debian/blockbook-btc.cron.daily deleted file mode 100644 index 7516ccee..00000000 --- a/build/deb/debian/blockbook-btc.cron.daily +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -/opt/coins/blockbook/btc/bin/logrotate.sh diff --git a/build/deb/debian/blockbook-btc.dirs b/build/deb/debian/blockbook-btc.dirs deleted file mode 100644 index 55205d1e..00000000 --- a/build/deb/debian/blockbook-btc.dirs +++ /dev/null @@ -1,2 +0,0 @@ -/opt/coins/data/btc/blockbook -/opt/coins/blockbook/btc/logs diff --git a/build/deb/debian/blockbook-btc.install b/build/deb/debian/blockbook-btc.install deleted file mode 100755 index e9c11963..00000000 --- a/build/deb/debian/blockbook-btc.install +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/dh-exec -blockbook /opt/coins/blockbook/btc/bin -cert /opt/coins/blockbook/btc -static /opt/coins/blockbook/btc -configs/btc.json => /opt/coins/blockbook/btc/config/blockchaincfg.json -logrotate.sh /opt/coins/blockbook/btc/bin diff --git a/build/deb/debian/blockbook-btc.links b/build/deb/debian/blockbook-btc.links deleted file mode 100644 index 71e45b5e..00000000 --- a/build/deb/debian/blockbook-btc.links +++ /dev/null @@ -1,2 +0,0 @@ -/opt/coins/blockbook/btc/cert/testcert.crt /opt/coins/blockbook/btc/cert/blockbook.crt -/opt/coins/blockbook/btc/cert/testcert.key /opt/coins/blockbook/btc/cert/blockbook.key diff --git a/build/deb/debian/blockbook-btc.postinst b/build/deb/debian/blockbook-btc.postinst deleted file mode 100644 index 87dcf12a..00000000 --- a/build/deb/debian/blockbook-btc.postinst +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -set -e - -case "$1" in - - configure) - if ! id -u blockbook-btc &> /dev/null - then - useradd --system -M -U blockbook-btc -s /bin/false - fi - - for dir in /opt/coins/data/btc/blockbook /opt/coins/blockbook/btc/logs - do - if [ "$(stat -c '%U' $dir)" != "blockbook-btc" ] - then - chown -R blockbook-btc:blockbook-btc $dir - fi - done - ;; - -esac - -#DEBHELPER# diff --git a/build/deb/debian/blockbook-zcash-testnet.conffiles b/build/deb/debian/blockbook-zcash-testnet.conffiles new file mode 100644 index 00000000..eead94ec --- /dev/null +++ b/build/deb/debian/blockbook-zcash-testnet.conffiles @@ -0,0 +1 @@ +/opt/coins/blockbook/zcash_testnet/config/blockchaincfg.json diff --git a/build/deb/debian/blockbook-zcash-testnet.cron.daily b/build/deb/debian/blockbook-zcash-testnet.cron.daily new file mode 100644 index 00000000..7a1c1565 --- /dev/null +++ b/build/deb/debian/blockbook-zcash-testnet.cron.daily @@ -0,0 +1,2 @@ +#!/bin/sh +/opt/coins/blockbook/zcash_testnet/bin/logrotate.sh diff --git a/build/deb/debian/blockbook-zcash-testnet.dirs b/build/deb/debian/blockbook-zcash-testnet.dirs new file mode 100644 index 00000000..a0192aa5 --- /dev/null +++ b/build/deb/debian/blockbook-zcash-testnet.dirs @@ -0,0 +1,2 @@ +/opt/coins/data/zcash_testnet/blockbook +/opt/coins/blockbook/zcash_testnet/logs diff --git a/build/deb/debian/blockbook-zcash-testnet.install b/build/deb/debian/blockbook-zcash-testnet.install new file mode 100755 index 00000000..7b3a38bb --- /dev/null +++ b/build/deb/debian/blockbook-zcash-testnet.install @@ -0,0 +1,6 @@ +#!/usr/bin/dh-exec --with=install +blockbook /opt/coins/blockbook/zcash_testnet/bin +cert /opt/coins/blockbook/zcash_testnet +static /opt/coins/blockbook/zcash_testnet +configs/zcash_testnet.json => /opt/coins/blockbook/zcash_testnet/config/blockchaincfg.json +logrotate.sh /opt/coins/blockbook/zcash_testnet/bin diff --git a/build/deb/debian/blockbook-zcash-testnet.links b/build/deb/debian/blockbook-zcash-testnet.links new file mode 100644 index 00000000..91974b23 --- /dev/null +++ b/build/deb/debian/blockbook-zcash-testnet.links @@ -0,0 +1,2 @@ +/opt/coins/blockbook/zcash_testnet/cert/testcert.crt /opt/coins/blockbook/zcash_testnet/cert/blockbook.crt +/opt/coins/blockbook/zcash_testnet/cert/testcert.key /opt/coins/blockbook/zcash_testnet/cert/blockbook.key diff --git a/build/deb/debian/blockbook-zcash-testnet.postinst b/build/deb/debian/blockbook-zcash-testnet.postinst new file mode 100644 index 00000000..992d1cc7 --- /dev/null +++ b/build/deb/debian/blockbook-zcash-testnet.postinst @@ -0,0 +1,23 @@ +#!/bin/bash +set -e + +case "$1" in + + configure) + if ! id -u blockbook-zcash &> /dev/null + then + useradd --system -M -U blockbook-zcash -s /bin/false + fi + + for dir in /opt/coins/data/zcash_testnet/blockbook /opt/coins/blockbook/zcash_testnet/logs + do + if [ "$(stat -c '%U' $dir)" != "blockbook-zcash" ] + then + chown -R blockbook-zcash:blockbook-zcash $dir + fi + done + ;; + +esac + +#DEBHELPER# diff --git a/build/deb/debian/blockbook-zcash-testnet.service b/build/deb/debian/blockbook-zcash-testnet.service new file mode 100644 index 00000000..893d8c46 --- /dev/null +++ b/build/deb/debian/blockbook-zcash-testnet.service @@ -0,0 +1,43 @@ +# It is not recommended to modify this file in-place, because it will +# be overwritten during package upgrades. If you want to add further +# options or overwrite existing ones then use +# $ systemctl edit blockbook-zcash-testnet.service +# See "man systemd.service" for details. + +[Unit] +Description=Blockbook daemon (Zcash Testnet) +After=network.target +Wants=zcash-testnet.service + +[Service] +ExecStart=/opt/coins/blockbook/zcash_testnet/bin/blockbook -blockchaincfg=/opt/coins/blockbook/zcash_testnet/config/blockchaincfg.json -datadir=/opt/coins/data/zcash_testnet/blockbook/db -sync -httpserver=:19032 -socketio=:19132 -certfile=/opt/coins/blockbook/zcash_testnet/cert/blockbook -explorer=https://zcash.blockexplorer.com/ -log_dir=/opt/coins/blockbook/zcash_testnet/logs +User=blockbook-zcash +Type=simple +Restart=on-failure +WorkingDirectory=/opt/coins/blockbook/zcash_testnet + +# Resource limits +LimitNOFILE=500000 + +# Hardening measures +#################### + +# Provide a private /tmp and /var/tmp. +PrivateTmp=true + +# Mount /usr, /boot/ and /etc read-only for the process. +ProtectSystem=full + +# Disallow the process and all of its children to gain +# new privileges through execve(). +NoNewPrivileges=true + +# Use a new /dev namespace only populated with API pseudo devices +# such as /dev/null, /dev/zero and /dev/random. +PrivateDevices=true + +# Deny the creation of writable and executable memory mappings. +MemoryDenyWriteExecute=true + +[Install] +WantedBy=multi-user.target diff --git a/build/deb/debian/blockbook-zcash.conffiles b/build/deb/debian/blockbook-zcash.conffiles new file mode 100644 index 00000000..fe178b66 --- /dev/null +++ b/build/deb/debian/blockbook-zcash.conffiles @@ -0,0 +1 @@ +/opt/coins/blockbook/zcash/config/blockchaincfg.json diff --git a/build/deb/debian/blockbook-zcash.cron.daily b/build/deb/debian/blockbook-zcash.cron.daily new file mode 100644 index 00000000..1d5ffc06 --- /dev/null +++ b/build/deb/debian/blockbook-zcash.cron.daily @@ -0,0 +1,2 @@ +#!/bin/sh +/opt/coins/blockbook/zcash/bin/logrotate.sh diff --git a/build/deb/debian/blockbook-zcash.dirs b/build/deb/debian/blockbook-zcash.dirs new file mode 100644 index 00000000..9f54ae06 --- /dev/null +++ b/build/deb/debian/blockbook-zcash.dirs @@ -0,0 +1,2 @@ +/opt/coins/data/zcash/blockbook +/opt/coins/blockbook/zcash/logs diff --git a/build/deb/debian/blockbook-zcash.install b/build/deb/debian/blockbook-zcash.install new file mode 100755 index 00000000..5305ac28 --- /dev/null +++ b/build/deb/debian/blockbook-zcash.install @@ -0,0 +1,6 @@ +#!/usr/bin/dh-exec --with=install +blockbook /opt/coins/blockbook/zcash/bin +cert /opt/coins/blockbook/zcash +static /opt/coins/blockbook/zcash +configs/zcash.json => /opt/coins/blockbook/zcash/config/blockchaincfg.json +logrotate.sh /opt/coins/blockbook/zcash/bin diff --git a/build/deb/debian/blockbook-zcash.links b/build/deb/debian/blockbook-zcash.links new file mode 100644 index 00000000..4184e473 --- /dev/null +++ b/build/deb/debian/blockbook-zcash.links @@ -0,0 +1,2 @@ +/opt/coins/blockbook/zcash/cert/testcert.crt /opt/coins/blockbook/zcash/cert/blockbook.crt +/opt/coins/blockbook/zcash/cert/testcert.key /opt/coins/blockbook/zcash/cert/blockbook.key diff --git a/build/deb/debian/blockbook-zcash.postinst b/build/deb/debian/blockbook-zcash.postinst new file mode 100644 index 00000000..a3b70cbd --- /dev/null +++ b/build/deb/debian/blockbook-zcash.postinst @@ -0,0 +1,23 @@ +#!/bin/bash +set -e + +case "$1" in + + configure) + if ! id -u blockbook-zcash &> /dev/null + then + useradd --system -M -U blockbook-zcash -s /bin/false + fi + + for dir in /opt/coins/data/zcash/blockbook /opt/coins/blockbook/zcash/logs + do + if [ "$(stat -c '%U' $dir)" != "blockbook-zcash" ] + then + chown -R blockbook-zcash:blockbook-zcash $dir + fi + done + ;; + +esac + +#DEBHELPER# diff --git a/build/deb/debian/blockbook-zec.service b/build/deb/debian/blockbook-zcash.service similarity index 63% rename from build/deb/debian/blockbook-zec.service rename to build/deb/debian/blockbook-zcash.service index ce27bfc8..f704b48f 100644 --- a/build/deb/debian/blockbook-zec.service +++ b/build/deb/debian/blockbook-zcash.service @@ -1,20 +1,20 @@ # It is not recommended to modify this file in-place, because it will # be overwritten during package upgrades. If you want to add further # options or overwrite existing ones then use -# $ systemctl edit blockbook-zec.service +# $ systemctl edit blockbook-zcash.service # See "man systemd.service" for details. [Unit] -Description=Blockbook daemon (ZEC mainnet) +Description=Blockbook daemon (Zcash mainnet) After=network.target -Wants=zcash-zec.service +Wants=zcash.service [Service] -ExecStart=/opt/coins/blockbook/zec/bin/blockbook -coin=zec -blockchaincfg=/opt/coins/blockbook/zec/config/blockchaincfg.json -datadir=/opt/coins/data/zec/blockbook/db -sync -httpserver=:9032 -socketio=:9132 -certfile=/opt/coins/blockbook/zec/cert/blockbook -explorer=https://zec-bitcore1.trezor.io/ -log_dir=/opt/coins/blockbook/zec/logs -User=blockbook-zec +ExecStart=/opt/coins/blockbook/zcash/bin/blockbook -blockchaincfg=/opt/coins/blockbook/zcash/config/blockchaincfg.json -datadir=/opt/coins/data/zcash/blockbook/db -sync -httpserver=:9032 -socketio=:9132 -certfile=/opt/coins/blockbook/zcash/cert/blockbook -explorer=https://zcash.blockexplorer.com/ -log_dir=/opt/coins/blockbook/zcash/logs +User=blockbook-zcash Type=simple Restart=on-failure -WorkingDirectory=/opt/coins/blockbook/zec +WorkingDirectory=/opt/coins/blockbook/zcash # Resource limits LimitNOFILE=500000 diff --git a/build/deb/debian/blockbook-zec-testnet.conffiles b/build/deb/debian/blockbook-zec-testnet.conffiles deleted file mode 100644 index e5212acb..00000000 --- a/build/deb/debian/blockbook-zec-testnet.conffiles +++ /dev/null @@ -1 +0,0 @@ -/opt/coins/blockbook/zec-testnet/config/blockchaincfg.json diff --git a/build/deb/debian/blockbook-zec-testnet.cron.daily b/build/deb/debian/blockbook-zec-testnet.cron.daily deleted file mode 100644 index 4302f1a1..00000000 --- a/build/deb/debian/blockbook-zec-testnet.cron.daily +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -/opt/coins/blockbook/zec-testnet/bin/logrotate.sh diff --git a/build/deb/debian/blockbook-zec-testnet.dirs b/build/deb/debian/blockbook-zec-testnet.dirs deleted file mode 100644 index ae909942..00000000 --- a/build/deb/debian/blockbook-zec-testnet.dirs +++ /dev/null @@ -1,2 +0,0 @@ -/opt/coins/data/zec-testnet/blockbook -/opt/coins/blockbook/zec-testnet/logs diff --git a/build/deb/debian/blockbook-zec-testnet.install b/build/deb/debian/blockbook-zec-testnet.install deleted file mode 100755 index f8640fdc..00000000 --- a/build/deb/debian/blockbook-zec-testnet.install +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/dh-exec --with=install -blockbook /opt/coins/blockbook/zec-testnet/bin -cert /opt/coins/blockbook/zec-testnet -static /opt/coins/blockbook/zec-testnet -configs/zec-testnet.json => /opt/coins/blockbook/zec-testnet/config/blockchaincfg.json -logrotate.sh /opt/coins/blockbook/zec-testnet/bin diff --git a/build/deb/debian/blockbook-zec-testnet.links b/build/deb/debian/blockbook-zec-testnet.links deleted file mode 100644 index 40a764a9..00000000 --- a/build/deb/debian/blockbook-zec-testnet.links +++ /dev/null @@ -1,2 +0,0 @@ -/opt/coins/blockbook/zec-testnet/cert/testcert.crt /opt/coins/blockbook/zec-testnet/cert/blockbook.crt -/opt/coins/blockbook/zec-testnet/cert/testcert.key /opt/coins/blockbook/zec-testnet/cert/blockbook.key diff --git a/build/deb/debian/blockbook-zec-testnet.postinst b/build/deb/debian/blockbook-zec-testnet.postinst deleted file mode 100644 index fcbc854c..00000000 --- a/build/deb/debian/blockbook-zec-testnet.postinst +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -set -e - -case "$1" in - - configure) - if ! id -u blockbook-zec &> /dev/null - then - useradd --system -M -U blockbook-zec -s /bin/false - fi - - for dir in /opt/coins/data/zec-testnet/blockbook /opt/coins/blockbook/zec-testnet/logs - do - if [ "$(stat -c '%U' $dir)" != "blockbook-zec" ] - then - chown -R blockbook-zec:blockbook-zec $dir - fi - done - ;; - -esac - -#DEBHELPER# diff --git a/build/deb/debian/blockbook-zec-testnet.service b/build/deb/debian/blockbook-zec-testnet.service deleted file mode 100644 index ec7449fa..00000000 --- a/build/deb/debian/blockbook-zec-testnet.service +++ /dev/null @@ -1,43 +0,0 @@ -# It is not recommended to modify this file in-place, because it will -# be overwritten during package upgrades. If you want to add further -# options or overwrite existing ones then use -# $ systemctl edit blockbook-zec-testnet.service -# See "man systemd.service" for details. - -[Unit] -Description=Blockbook daemon (ZEC testnet) -After=network.target -Wants=zcash-zec-testnet.service - -[Service] -ExecStart=/opt/coins/blockbook/zec-testnet/bin/blockbook -coin=zec-testnet -blockchaincfg=/opt/coins/blockbook/zec-testnet/config/blockchaincfg.json -datadir=/opt/coins/data/zec-testnet/blockbook/db -sync -httpserver=:19032 -socketio=:19132 -certfile=/opt/coins/blockbook/zec-testnet/cert/blockbook -explorer=https://zec-testnet-bitcore1.trezor.io/ -log_dir=/opt/coins/blockbook/zec-testnet/logs -User=blockbook-zec -Type=simple -Restart=on-failure -WorkingDirectory=/opt/coins/blockbook/zec-testnet - -# Resource limits -LimitNOFILE=500000 - -# Hardening measures -#################### - -# Provide a private /tmp and /var/tmp. -PrivateTmp=true - -# Mount /usr, /boot/ and /etc read-only for the process. -ProtectSystem=full - -# Disallow the process and all of its children to gain -# new privileges through execve(). -NoNewPrivileges=true - -# Use a new /dev namespace only populated with API pseudo devices -# such as /dev/null, /dev/zero and /dev/random. -PrivateDevices=true - -# Deny the creation of writable and executable memory mappings. -MemoryDenyWriteExecute=true - -[Install] -WantedBy=multi-user.target diff --git a/build/deb/debian/blockbook-zec.conffiles b/build/deb/debian/blockbook-zec.conffiles deleted file mode 100644 index fbf05888..00000000 --- a/build/deb/debian/blockbook-zec.conffiles +++ /dev/null @@ -1 +0,0 @@ -/opt/coins/blockbook/zec/config/blockchaincfg.json diff --git a/build/deb/debian/blockbook-zec.cron.daily b/build/deb/debian/blockbook-zec.cron.daily deleted file mode 100644 index 03b09708..00000000 --- a/build/deb/debian/blockbook-zec.cron.daily +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -/opt/coins/blockbook/zec/bin/logrotate.sh diff --git a/build/deb/debian/blockbook-zec.dirs b/build/deb/debian/blockbook-zec.dirs deleted file mode 100644 index 5dc7b52f..00000000 --- a/build/deb/debian/blockbook-zec.dirs +++ /dev/null @@ -1,2 +0,0 @@ -/opt/coins/data/zec/blockbook -/opt/coins/blockbook/zec/logs diff --git a/build/deb/debian/blockbook-zec.install b/build/deb/debian/blockbook-zec.install deleted file mode 100755 index cc3cb553..00000000 --- a/build/deb/debian/blockbook-zec.install +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/dh-exec --with=install -blockbook /opt/coins/blockbook/zec/bin -cert /opt/coins/blockbook/zec -static /opt/coins/blockbook/zec -configs/zec.json => /opt/coins/blockbook/zec/config/blockchaincfg.json -logrotate.sh /opt/coins/blockbook/zec/bin diff --git a/build/deb/debian/blockbook-zec.links b/build/deb/debian/blockbook-zec.links deleted file mode 100644 index 083005f8..00000000 --- a/build/deb/debian/blockbook-zec.links +++ /dev/null @@ -1,2 +0,0 @@ -/opt/coins/blockbook/zec/cert/testcert.crt /opt/coins/blockbook/zec/cert/blockbook.crt -/opt/coins/blockbook/zec/cert/testcert.key /opt/coins/blockbook/zec/cert/blockbook.key diff --git a/build/deb/debian/blockbook-zec.postinst b/build/deb/debian/blockbook-zec.postinst deleted file mode 100644 index e3018848..00000000 --- a/build/deb/debian/blockbook-zec.postinst +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -set -e - -case "$1" in - - configure) - if ! id -u blockbook-zec &> /dev/null - then - useradd --system -M -U blockbook-zec -s /bin/false - fi - - for dir in /opt/coins/data/zec/blockbook /opt/coins/blockbook/zec/logs - do - if [ "$(stat -c '%U' $dir)" != "blockbook-zec" ] - then - chown -R blockbook-zec:blockbook-zec $dir - fi - done - ;; - -esac - -#DEBHELPER# diff --git a/build/deb/debian/changelog b/build/deb/debian/changelog index 73694abf..b5215893 100644 --- a/build/deb/debian/changelog +++ b/build/deb/debian/changelog @@ -1,3 +1,9 @@ +blockbook (0.0.5) unstable; urgency=medium + + * v0.0.5, renamed packages and coins + + -- Martin Bohm Wed, 06 Jun 2018 11:12:13 +0200 + blockbook (0.0.4) unstable; urgency=medium * v0.0.4 diff --git a/build/deb/debian/control b/build/deb/debian/control index e89d6b5a..9f3721dc 100644 --- a/build/deb/debian/control +++ b/build/deb/debian/control @@ -10,32 +10,37 @@ Architecture: amd64 Depends: ${shlibs:Depends}, ${misc:Depends} Description: Satoshilabs blockbook server (tools) -Package: blockbook-btc +Package: blockbook-bitcoin Architecture: amd64 -Depends: ${shlibs:Depends}, ${misc:Depends}, coreutils, passwd, findutils, psmisc, bitcoin-btc +Depends: ${shlibs:Depends}, ${misc:Depends}, coreutils, passwd, findutils, psmisc, bitcoin Description: Satoshilabs blockbook server (Bitcoin mainnet) -Package: blockbook-btc-testnet +Package: blockbook-bitcoin-testnet Architecture: amd64 Depends: ${shlibs:Depends}, ${misc:Depends}, coreutils, passwd, findutils, psmisc, bitcoin-testnet Description: Satoshilabs blockbook server (Bitcoin testnet) -Package: blockbook-zec +Package: blockbook-zcash Architecture: amd64 -Depends: ${shlibs:Depends}, ${misc:Depends}, coreutils, passwd, findutils, psmisc, zcash-zec +Depends: ${shlibs:Depends}, ${misc:Depends}, coreutils, passwd, findutils, psmisc, zcash Description: Satoshilabs blockbook server (ZCash mainnet) -Package: blockbook-zec-testnet +Package: blockbook-zcash-testnet Architecture: amd64 Depends: ${shlibs:Depends}, ${misc:Depends}, coreutils, passwd, findutils, psmisc, zcash-testnet Description: Satoshilabs blockbook server (ZCash testnet) -Package: blockbook-bch +Package: blockbook-bcash Architecture: amd64 -Depends: ${shlibs:Depends}, ${misc:Depends}, coreutils, passwd, findutils, psmisc, bcash-bch +Depends: ${shlibs:Depends}, ${misc:Depends}, coreutils, passwd, findutils, psmisc, bcash Description: Satoshilabs blockbook server (Bitcoin Cash mainnet) -Package: blockbook-bch-testnet +Package: blockbook-bcash-testnet Architecture: amd64 Depends: ${shlibs:Depends}, ${misc:Depends}, coreutils, passwd, findutils, psmisc, bcash-testnet Description: Satoshilabs blockbook server (Bitcoin Cash testnet) + +Package: blockbook-bgold +Architecture: amd64 +Depends: ${shlibs:Depends}, ${misc:Depends}, coreutils, passwd, findutils, psmisc, bgold +Description: Satoshilabs blockbook server (Bitcoin Gold mainnet) diff --git a/configs/bch.json b/configs/bcash.json similarity index 92% rename from configs/bch.json rename to configs/bcash.json index a0450eef..7782bb76 100644 --- a/configs/bch.json +++ b/configs/bcash.json @@ -1,4 +1,5 @@ { + "coin_name": "Bcash", "rpcURL": "http://127.0.0.1:8031", "rpcUser": "rpc", "rpcPass": "rpc", @@ -10,4 +11,4 @@ "mempoolSubWorkers": 2, "blockAddressesToKeep": 300, "addressFormat": "legacy" -} +} \ No newline at end of file diff --git a/configs/bch-testnet.json b/configs/bcash_testnet.json similarity index 90% rename from configs/bch-testnet.json rename to configs/bcash_testnet.json index d79c870e..ebe41a9d 100644 --- a/configs/bch-testnet.json +++ b/configs/bcash_testnet.json @@ -1,4 +1,5 @@ { + "coin_name": "Bcash Testnet", "rpcURL": "http://localhost:18031", "rpcUser": "rpc", "rpcPass": "rpc", @@ -10,4 +11,4 @@ "mempoolSubWorkers": 2, "blockAddressesToKeep": 300, "addressFormat": "legacy" -} +} \ No newline at end of file diff --git a/configs/bgold.json b/configs/bgold.json new file mode 100644 index 00000000..8627e5ae --- /dev/null +++ b/configs/bgold.json @@ -0,0 +1,13 @@ +{ + "coin_name": "Bgold", + "rpcURL": "http://127.0.0.1:8035", + "rpcUser": "rpc", + "rpcPass": "rpc", + "rpcTimeout": 25, + "parse": true, + "zeroMQBinding": "tcp://127.0.0.1:38335", + "subversion": "/Bitcoin Gold:0.15.0.2/", + "mempoolWorkers": 8, + "mempoolSubWorkers": 2, + "blockAddressesToKeep": 300 +} diff --git a/configs/btc.json b/configs/bitcoin.json similarity index 89% rename from configs/btc.json rename to configs/bitcoin.json index 8cbbc218..97534f9c 100644 --- a/configs/btc.json +++ b/configs/bitcoin.json @@ -1,4 +1,5 @@ { + "coin_name": "Bitcoin", "rpcURL": "http://127.0.0.1:8030", "rpcUser": "rpc", "rpcPass": "rpc", @@ -8,4 +9,4 @@ "mempoolWorkers": 8, "mempoolSubWorkers": 2, "blockAddressesToKeep": 300 -} +} \ No newline at end of file diff --git a/configs/btc-testnet.json b/configs/bitcoin_testnet.json similarity index 89% rename from configs/btc-testnet.json rename to configs/bitcoin_testnet.json index 4d1f9745..0bb00bb4 100644 --- a/configs/btc-testnet.json +++ b/configs/bitcoin_testnet.json @@ -1,4 +1,5 @@ { + "coin_name": "Testnet", "rpcURL": "http://localhost:18030", "rpcUser": "rpc", "rpcPass": "rpc", @@ -8,4 +9,4 @@ "mempoolWorkers": 8, "mempoolSubWorkers": 2, "blockAddressesToKeep": 300 -} +} \ No newline at end of file diff --git a/configs/eth.json b/configs/ethereum.json similarity index 68% rename from configs/eth.json rename to configs/ethereum.json index c5f5e3a0..1a3ec103 100644 --- a/configs/eth.json +++ b/configs/ethereum.json @@ -1,4 +1,5 @@ { + "coin_name": "Ethereum", "rpcURL": "ws://localhost:8036", "rpcTimeout": 25 } diff --git a/configs/eth-testnet.json b/configs/ethereum_testnet_ropsten.json similarity index 57% rename from configs/eth-testnet.json rename to configs/ethereum_testnet_ropsten.json index f9174019..d89fc039 100644 --- a/configs/eth-testnet.json +++ b/configs/ethereum_testnet_ropsten.json @@ -1,4 +1,5 @@ { + "coin_name": "Ethereum Testnet Ropsten", "rpcURL": "ws://localhost:18036", "rpcTimeout": 25 } diff --git a/configs/zec.json b/configs/zcash.json similarity index 90% rename from configs/zec.json rename to configs/zcash.json index b957b110..e9f0126f 100644 --- a/configs/zec.json +++ b/configs/zcash.json @@ -1,4 +1,5 @@ { + "coin_name": "Zcash", "rpcURL": "http://127.0.0.1:8032", "rpcUser": "rpc", "rpcPass": "rpc", @@ -8,4 +9,4 @@ "mempoolWorkers": 4, "mempoolSubWorkers": 8, "blockAddressesToKeep": 300 -} +} \ No newline at end of file diff --git a/configs/zec-testnet.json b/configs/zcash_testnet.json similarity index 87% rename from configs/zec-testnet.json rename to configs/zcash_testnet.json index 9dece778..6196bb76 100644 --- a/configs/zec-testnet.json +++ b/configs/zcash_testnet.json @@ -1,4 +1,5 @@ { + "coin_name": "Zcash Testnet", "rpcURL": "http://127.0.0.1:18032", "rpcUser": "rpc", "rpcPass": "rpc", @@ -8,4 +9,4 @@ "mempoolWorkers": 4, "mempoolSubWorkers": 8, "blockAddressesToKeep": 300 -} +} \ No newline at end of file diff --git a/contrib/backends/Makefile b/contrib/backends/Makefile index f59747d2..bc6b128c 100644 --- a/contrib/backends/Makefile +++ b/contrib/backends/Makefile @@ -1,4 +1,4 @@ -TARGETS = bitcoin zcash bcash ethereum +TARGETS = bitcoin zcash bcash ethereum bgold IMAGE = blockbook-backend-build-deb NO_CACHE = false diff --git a/contrib/backends/bcash/bch.conf b/contrib/backends/bcash/bcash.conf similarity index 100% rename from contrib/backends/bcash/bch.conf rename to contrib/backends/bcash/bcash.conf diff --git a/contrib/backends/bcash/bch-testnet.conf b/contrib/backends/bcash/bcash_testnet.conf similarity index 100% rename from contrib/backends/bcash/bch-testnet.conf rename to contrib/backends/bcash/bcash_testnet.conf diff --git a/contrib/backends/bcash/debian/bcash-bch.conffiles b/contrib/backends/bcash/debian/bcash-bch.conffiles deleted file mode 100644 index 39ff192f..00000000 --- a/contrib/backends/bcash/debian/bcash-bch.conffiles +++ /dev/null @@ -1 +0,0 @@ -/opt/coins/nodes/bitcoin-abc/bch/bch.conf diff --git a/contrib/backends/bcash/debian/bcash-bch.dirs b/contrib/backends/bcash/debian/bcash-bch.dirs deleted file mode 100644 index b5baf026..00000000 --- a/contrib/backends/bcash/debian/bcash-bch.dirs +++ /dev/null @@ -1 +0,0 @@ -/opt/coins/data/bch/bitcoin diff --git a/contrib/backends/bcash/debian/bcash-bch.install b/contrib/backends/bcash/debian/bcash-bch.install deleted file mode 100644 index 89f8005f..00000000 --- a/contrib/backends/bcash/debian/bcash-bch.install +++ /dev/null @@ -1,2 +0,0 @@ -bitcoin-abc/* /opt/coins/nodes/bitcoin-abc/bch -bch.conf /opt/coins/nodes/bitcoin-abc/bch diff --git a/contrib/backends/bcash/debian/bcash-testnet.conffiles b/contrib/backends/bcash/debian/bcash-testnet.conffiles index 24b971a5..652afa0e 100644 --- a/contrib/backends/bcash/debian/bcash-testnet.conffiles +++ b/contrib/backends/bcash/debian/bcash-testnet.conffiles @@ -1 +1 @@ -/opt/coins/nodes/bitcoin-abc/bch-testnet/bch-testnet.conf +/opt/coins/nodes/bcash_testnet/bcash_testnet.conf diff --git a/contrib/backends/bcash/debian/bcash-testnet.dirs b/contrib/backends/bcash/debian/bcash-testnet.dirs index d5a2c725..139a2185 100644 --- a/contrib/backends/bcash/debian/bcash-testnet.dirs +++ b/contrib/backends/bcash/debian/bcash-testnet.dirs @@ -1 +1 @@ -/opt/coins/data/bch-testnet/bitcoin +/opt/coins/data/bcash_testnet/backend diff --git a/contrib/backends/bcash/debian/bcash-testnet.install b/contrib/backends/bcash/debian/bcash-testnet.install index 926a42fd..cc51d313 100644 --- a/contrib/backends/bcash/debian/bcash-testnet.install +++ b/contrib/backends/bcash/debian/bcash-testnet.install @@ -1,2 +1,2 @@ -bitcoin-abc/* /opt/coins/nodes/bitcoin-abc/bch-testnet -bch-testnet.conf /opt/coins/nodes/bitcoin-abc/bch-testnet +bitcoin-abc/* /opt/coins/nodes/bcash_testnet +bcash_testnet.conf /opt/coins/nodes/bcash_testnet diff --git a/contrib/backends/bcash/debian/bcash-testnet.logrotate b/contrib/backends/bcash/debian/bcash-testnet.logrotate index 766fbf06..8230770b 100644 --- a/contrib/backends/bcash/debian/bcash-testnet.logrotate +++ b/contrib/backends/bcash/debian/bcash-testnet.logrotate @@ -1,5 +1,5 @@ -/opt/coins/data/bch-testnet/bitcoin/testnet3/debug.log -/opt/coins/data/bch-testnet/bitcoin/testnet3/db.log +/opt/coins/data/bcash_testnet/backend/testnet3/debug.log +/opt/coins/data/bcash_testnet/backend/testnet3/db.log { rotate 7 daily diff --git a/contrib/backends/bcash/debian/bcash-testnet.postinst b/contrib/backends/bcash/debian/bcash-testnet.postinst index 6cf4fdff..92c684a5 100644 --- a/contrib/backends/bcash/debian/bcash-testnet.postinst +++ b/contrib/backends/bcash/debian/bcash-testnet.postinst @@ -9,9 +9,9 @@ case "$1" in useradd --system -M -U bcash -s /bin/false fi - if [ "$(stat -c '%U' /opt/coins/data/bch-testnet/bitcoin)" != "bcash" ] + if [ "$(stat -c '%U' /opt/coins/data/bcash_testnet/backend)" != "bcash" ] then - chown -R bcash:bcash /opt/coins/data/bch-testnet/bitcoin + chown -R bcash:bcash /opt/coins/data/bcash_testnet/backend fi ;; diff --git a/contrib/backends/bcash/debian/bcash-testnet.service b/contrib/backends/bcash/debian/bcash-testnet.service index 50c4496b..8dbb97e1 100644 --- a/contrib/backends/bcash/debian/bcash-testnet.service +++ b/contrib/backends/bcash/debian/bcash-testnet.service @@ -5,19 +5,19 @@ # See "man systemd.service" for details. # Note that almost all daemon options could be specified in -# /opt/coins/nodes/bitcoin-abc/bch-testnet/bch-testnet.conf +# /opt/coins/nodes/bcash_testnet/bcash_testnet.conf [Unit] Description=Bitcoin Cash daemon (testnet) After=network.target [Service] -ExecStart=/opt/coins/nodes/bitcoin-abc/bch-testnet/bin/bitcoind -datadir=/opt/coins/data/bch-testnet/bitcoin -conf=/opt/coins/nodes/bitcoin-abc/bch-testnet/bch-testnet.conf -pid=/run/bitcoin-abc/bch-testnet.pid +ExecStart=/opt/coins/nodes/bcash_testnet/bin/bitcoind -datadir=/opt/coins/data/bcash_testnet/backend -conf=/opt/coins/nodes/bcash_testnet/bcash_testnet.conf -pid=/run/bitcoin-abc/bcash_testnet.pid # Creates /run/bitcoin-abc owned by bcash RuntimeDirectory=bitcoin-abc User=bcash Type=forking -PIDFile=/run/bitcoin-abc/bch-testnet.pid +PIDFile=/run/bitcoin-abc/bcash_testnet.pid Restart=on-failure # Resource limits diff --git a/contrib/backends/bcash/debian/bcash.conffiles b/contrib/backends/bcash/debian/bcash.conffiles new file mode 100644 index 00000000..97e7009b --- /dev/null +++ b/contrib/backends/bcash/debian/bcash.conffiles @@ -0,0 +1 @@ +/opt/coins/nodes/bcash/bcash.conf diff --git a/contrib/backends/bcash/debian/bcash.dirs b/contrib/backends/bcash/debian/bcash.dirs new file mode 100644 index 00000000..6cb9dcd5 --- /dev/null +++ b/contrib/backends/bcash/debian/bcash.dirs @@ -0,0 +1 @@ +/opt/coins/data/bcash/backend diff --git a/contrib/backends/bcash/debian/bcash.install b/contrib/backends/bcash/debian/bcash.install new file mode 100644 index 00000000..6d91821e --- /dev/null +++ b/contrib/backends/bcash/debian/bcash.install @@ -0,0 +1,2 @@ +bitcoin-abc/* /opt/coins/nodes/bcash +bcash.conf /opt/coins/nodes/bcash diff --git a/contrib/backends/bcash/debian/bcash-bch.logrotate b/contrib/backends/bcash/debian/bcash.logrotate similarity index 58% rename from contrib/backends/bcash/debian/bcash-bch.logrotate rename to contrib/backends/bcash/debian/bcash.logrotate index 9b267719..03d8ec9e 100644 --- a/contrib/backends/bcash/debian/bcash-bch.logrotate +++ b/contrib/backends/bcash/debian/bcash.logrotate @@ -1,5 +1,5 @@ -/opt/coins/data/bch/bitcoin/debug.log -/opt/coins/data/bch/bitcoin/db.log +/opt/coins/data/bcash/backend/debug.log +/opt/coins/data/bcash/backend/db.log { rotate 7 daily diff --git a/contrib/backends/bcash/debian/bcash-bch.postinst b/contrib/backends/bcash/debian/bcash.postinst similarity index 59% rename from contrib/backends/bcash/debian/bcash-bch.postinst rename to contrib/backends/bcash/debian/bcash.postinst index 5c0a6b46..a0fc618c 100644 --- a/contrib/backends/bcash/debian/bcash-bch.postinst +++ b/contrib/backends/bcash/debian/bcash.postinst @@ -9,9 +9,9 @@ case "$1" in useradd --system -M -U bcash -s /bin/false fi - if [ "$(stat -c '%U' /opt/coins/data/bch/bitcoin)" != "bcash" ] + if [ "$(stat -c '%U' /opt/coins/data/bcash/backend)" != "bcash" ] then - chown -R bcash:bcash /opt/coins/data/bch/bitcoin + chown -R bcash:bcash /opt/coins/data/bcash/backend fi ;; diff --git a/contrib/backends/bcash/debian/bcash-bch.service b/contrib/backends/bcash/debian/bcash.service similarity index 79% rename from contrib/backends/bcash/debian/bcash-bch.service rename to contrib/backends/bcash/debian/bcash.service index a4aa3770..f0969e11 100644 --- a/contrib/backends/bcash/debian/bcash-bch.service +++ b/contrib/backends/bcash/debian/bcash.service @@ -1,23 +1,23 @@ # It is not recommended to modify this file in-place, because it will # be overwritten during package upgrades. If you want to add further # options or overwrite existing ones then use -# $ systemctl edit bcash-bch.service +# $ systemctl edit bcash.service # See "man systemd.service" for details. # Note that almost all daemon options could be specified in -# /opt/coins/nodes/bitcoin-abc/bch/bch.conf +# /opt/coins/nodes/bcash/bcash.conf [Unit] Description=Bitcoin Cash daemon (mainnet) After=network.target [Service] -ExecStart=/opt/coins/nodes/bitcoin-abc/bch/bin/bitcoind -datadir=/opt/coins/data/bch/bitcoin -conf=/opt/coins/nodes/bitcoin-abc/bch/bch.conf -pid=/run/bitcoin-abc/bch.pid +ExecStart=/opt/coins/nodes/bcash/bin/bitcoind -datadir=/opt/coins/data/bcash/backend -conf=/opt/coins/nodes/bcash/bcash.conf -pid=/run/bitcoin-abc/bcash.pid # Creates /run/bitcoin-abc owned by bcash RuntimeDirectory=bitcoin-abc User=bcash Type=forking -PIDFile=/run/bitcoin-abc/bch.pid +PIDFile=/run/bitcoin-abc/bcash.pid Restart=on-failure # Resource limits diff --git a/contrib/backends/bcash/debian/changelog b/contrib/backends/bcash/debian/changelog index 352e348c..88846bc8 100644 --- a/contrib/backends/bcash/debian/changelog +++ b/contrib/backends/bcash/debian/changelog @@ -1,3 +1,9 @@ +bcash (0.17.1-satoshilabs4) unstable; urgency=medium + + * Rename packages and directories + + -- Martin Bohm Wed, 06 Jun 2018 11:12:13 +0200 + bcash (0.17.1-satoshilabs3) unstable; urgency=medium * Increased limits in backend configs diff --git a/contrib/backends/bcash/debian/control b/contrib/backends/bcash/debian/control index e7223d94..02260a06 100644 --- a/contrib/backends/bcash/debian/control +++ b/contrib/backends/bcash/debian/control @@ -5,7 +5,7 @@ Maintainer: jakub.matys@satoshilabs.com Build-Depends: debhelper, wget, tar, gzip, make, dh-systemd, dh-exec Standards-Version: 3.9.5 -Package: bcash-bch +Package: bcash Architecture: amd64 Depends: ${shlibs:Depends}, ${misc:Depends}, logrotate Description: Satoshilabs packaged bitcoin-cash server diff --git a/contrib/backends/bgold/Makefile b/contrib/backends/bgold/Makefile new file mode 100644 index 00000000..b45b584c --- /dev/null +++ b/contrib/backends/bgold/Makefile @@ -0,0 +1,13 @@ +BGOLD_VERSION := 0.15.0 +BUILD_VERSION := .2 + +all: + wget https://github.com/BTCGPU/BTCGPU/releases/download/v${BGOLD_VERSION}${BUILD_VERSION}/bitcoin-gold-${BGOLD_VERSION}-x86_64-linux-gnu.tar.gz + tar -xf bitcoin-gold-${BGOLD_VERSION}-x86_64-linux-gnu.tar.gz + mv bitcoin-gold-${BGOLD_VERSION} bgold + rm bgold/bin/bitcoin-qt + rm bgold/bin/test_bitcoin + +clean: + rm -rf bgold + rm -f bitcoin-gold-${BGOLD_VERSION}-x86_64-linux-gnu.tar.gz* diff --git a/contrib/backends/bgold/bgold.conf b/contrib/backends/bgold/bgold.conf new file mode 100644 index 00000000..fe517d90 --- /dev/null +++ b/contrib/backends/bgold/bgold.conf @@ -0,0 +1,209 @@ +daemon=1 +server=1 +nolisten=1 +rpcuser=rpc +rpcpassword=rpc +rpcport=8035 +txindex=1 + +zmqpubhashtx=tcp://127.0.0.1:38335 +zmqpubhashblock=tcp://127.0.0.1:38335 +zmqpubrawblock=tcp://127.0.0.1:38335 +zmqpubrawtx=tcp://127.0.0.1:38335 + +mempoolexpiry=72 +rpcworkqueue=1100 +maxmempool=2000 +dbcache=1000 + +timeout=768 +maxconnections=250 +addnode=188.126.0.134 +addnode=45.56.84.44 + +addnode=109.201.133.93:8338 +addnode=178.63.11.246:8338 +addnode=188.120.223.153:8338 +addnode=79.137.64.158:8338 +addnode=78.193.221.106:8338 +addnode=139.59.151.13:8338 +addnode=76.16.12.81:8338 +addnode=172.104.157.62:8338 +addnode=43.207.67.209:8338 +addnode=178.63.11.246:8338 +addnode=79.137.64.158:8338 +addnode=78.193.221.106:8338 +addnode=139.59.151.13:8338 +addnode=172.104.157.62:8338 +addnode=178.158.247.119:8338 +addnode=109.201.133.93:8338 +addnode=178.63.11.246:8338 +addnode=139.59.151.13:8338 +addnode=172.104.157.62:8338 +addnode=188.120.223.153:8338 +addnode=178.158.247.119:8338 +addnode=78.193.221.106:8338 +addnode=79.137.64.158:8338 +addnode=76.16.12.81:8338 +addnode=176.12.32.153:8338 +addnode=178.158.247.122:8338 +addnode=81.37.147.185:8338 +addnode=176.12.32.153:8338 +addnode=79.137.64.158:8338 +addnode=178.158.247.122:8338 +addnode=66.70.247.151:8338 +addnode=89.18.27.165:8338 +addnode=178.63.11.246:8338 +addnode=91.222.17.86:8338 +addnode=37.59.50.143:8338 +addnode=91.50.219.221:8338 +addnode=154.16.63.17:8338 +addnode=213.136.76.42:8338 +addnode=176.99.4.140:8338 +addnode=176.9.48.36:8338 +addnode=78.193.221.106:8338 +addnode=34.236.228.99:8338 +addnode=213.154.230.107:8338 +addnode=111.231.66.252:8338 +addnode=188.120.223.153:8338 +addnode=219.89.122.82:8338 +addnode=109.192.23.101:8338 +addnode=98.114.91.222:8338 +addnode=217.66.156.41:8338 +addnode=172.104.157.62:8338 +addnode=114.44.222.73:8338 +addnode=91.224.140.216:8338 +addnode=149.154.71.96:8338 +addnode=107.181.183.242:8338 +addnode=36.78.96.92:8338 +addnode=46.22.7.74:8338 +addnode=89.110.53.186:8338 +addnode=73.243.220.85:8338 +addnode=109.86.137.8:8338 +addnode=77.78.12.89:8338 +addnode=87.92.116.26:8338 +addnode=93.78.122.48:8338 +addnode=35.195.83.0:8338 +addnode=46.147.75.220:8338 +addnode=212.47.236.104:8338 +addnode=95.220.100.230:8338 +addnode=178.70.142.247:8338 +addnode=45.76.136.149:8338 +addnode=94.155.74.206:8338 +addnode=178.70.142.247:8338 +addnode=128.199.228.97:8338 +addnode=77.171.144.207:8338 +addnode=159.89.192.119:8338 +addnode=136.63.238.170:8338 +addnode=31.27.193.105:8338 +addnode=176.107.192.240:8338 +addnode=94.140.241.96:8338 +addnode=66.108.15.5:8338 +addnode=81.177.127.204:8338 +addnode=88.18.69.174:8338 +addnode=178.70.130.94:8338 +addnode=78.98.162.140:8338 +addnode=95.133.156.224:8338 +addnode=46.188.16.96:8338 +addnode=94.247.16.21:8338 +addnode=eunode.pool.gold:8338 +addnode=asianode.pool.gold:8338 +addnode=45.56.84.44:8338 +addnode=176.9.48.36:8338 +addnode=93.57.253.121:8338 +addnode=172.104.157.62:8338 +addnode=176.12.32.153:8338 +addnode=pool.serverpower.net:8338 +addnode=213.154.229.126:8338 +addnode=213.154.230.106:8338 +addnode=213.154.230.107:8338 +addnode=213.154.229.50:8338 +addnode=145.239.0.50:8338 +addnode=107.181.183.242:8338 +addnode=109.201.133.93:8338 +addnode=120.41.190.109:8338 +addnode=120.41.191.224:8338 +addnode=138.68.249.79:8338 +addnode=13.95.223.202:8338 +addnode=145.239.0.50:8338 +addnode=149.56.95.26:8338 +addnode=158.69.103.228:8338 +addnode=159.89.192.119:8338 +addnode=164.132.207.143:8338 +addnode=171.100.141.106:8338 +addnode=172.104.157.62:8338 +addnode=173.176.95.92:8338 +addnode=176.12.32.153:8338 +addnode=178.239.54.250:8338 +addnode=178.63.11.246:8338 +addnode=185.139.2.140:8338 +addnode=188.120.223.153:8338 +addnode=190.46.2.92:8338 +addnode=192.99.194.113:8338 +addnode=199.229.248.218:8338 +addnode=213.154.229.126:8338 +addnode=213.154.229.50:8338 +addnode=213.154.230.106:8338 +addnode=213.154.230.107:8338 +addnode=217.182.199.21 +addnode=35.189.127.200:8338 +addnode=35.195.83.0:8338 +addnode=35.197.197.166:8338 +addnode=35.200.168.155:8338 +addnode=35.203.167.11:8338 +addnode=37.59.50.143:8338 +addnode=45.27.161.195:8338 +addnode=45.32.234.160:8338 +addnode=45.56.84.44:8338 +addnode=46.188.16.96:8338 +addnode=46.251.19.171:8338 +addnode=5.157.119.109:8338 +addnode=52.28.162.48:8338 +addnode=54.153.140.202:8338 +addnode=54.68.81.2:83388338 +addnode=62.195.190.190:8338 +addnode=62.216.5.136:8338 +addnode=65.110.125.175:8338 +addnode=67.68.226.130:8338 +addnode=73.243.220.85:8338 +addnode=77.78.12.89:8338 +addnode=78.193.221.106:8338 +addnode=78.98.162.140:8338 +addnode=79.137.64.158:8338 +addnode=84.144.177.238:8338 +addnode=87.92.116.26:8338 +addnode=89.115.139.117:8338 +addnode=89.18.27.165:8338 +addnode=91.50.219.221:8338 +addnode=93.88.74.26 +addnode=93.88.74.26:8338 +addnode=94.155.74.206:8338 +addnode=95.154.201.132:8338 +addnode=98.29.248.131:8338 +addnode=u2.my.to:8338 +addnode=[2001:470:b:ce:dc70:83ff:fe7a:1e74]:8338 +addnode=2001:7b8:61d:1:250:56ff:fe90:c89f:8338 +addnode=2001:7b8:63a:1002:213:154:230:106:8338 +addnode=2001:7b8:63a:1002:213:154:230:107:8338 +addnode=45.56.84.44 +addnode=109.201.133.93:8338 +addnode=120.41.191.224:30607 +addnode=138.68.249.79:50992 +addnode=138.68.249.79:51314 +addnode=172.104.157.62 +addnode=178.63.11.246:8338 +addnode=185.139.2.140:8338 +addnode=199.229.248.218:28830 +addnode=35.189.127.200:41220 +addnode=35.189.127.200:48244 +addnode=35.195.83.0:35172 +addnode=35.195.83.0:35576 +addnode=35.195.83.0:35798 +addnode=35.197.197.166:32794 +addnode=35.197.197.166:33112 +addnode=35.197.197.166:33332 +addnode=35.203.167.11:52158 +addnode=37.59.50.143:35254 +addnode=45.27.161.195:33852 +addnode=45.27.161.195:36738 +addnode=45.27.161.195:58628 diff --git a/contrib/backends/bgold/debian/bgold.conffiles b/contrib/backends/bgold/debian/bgold.conffiles new file mode 100644 index 00000000..ef72d2e3 --- /dev/null +++ b/contrib/backends/bgold/debian/bgold.conffiles @@ -0,0 +1 @@ +/opt/coins/nodes/bgold/bgold.conf diff --git a/contrib/backends/bgold/debian/bgold.dirs b/contrib/backends/bgold/debian/bgold.dirs new file mode 100644 index 00000000..e9c1c607 --- /dev/null +++ b/contrib/backends/bgold/debian/bgold.dirs @@ -0,0 +1 @@ +/opt/coins/data/bgold/backend diff --git a/contrib/backends/bgold/debian/bgold.install b/contrib/backends/bgold/debian/bgold.install new file mode 100644 index 00000000..b318e341 --- /dev/null +++ b/contrib/backends/bgold/debian/bgold.install @@ -0,0 +1,2 @@ +bgold/* /opt/coins/nodes/bgold +bgold.conf /opt/coins/nodes/bgold diff --git a/contrib/backends/bitcoin/debian/bitcoin-btc.logrotate b/contrib/backends/bgold/debian/bgold.logrotate similarity index 58% rename from contrib/backends/bitcoin/debian/bitcoin-btc.logrotate rename to contrib/backends/bgold/debian/bgold.logrotate index 0b571179..06b924c2 100644 --- a/contrib/backends/bitcoin/debian/bitcoin-btc.logrotate +++ b/contrib/backends/bgold/debian/bgold.logrotate @@ -1,5 +1,5 @@ -/opt/coins/data/btc/bitcoin/debug.log -/opt/coins/data/btc/bitcoin/db.log +/opt/coins/data/bgold/backend/debug.log +/opt/coins/data/bgold/backend/db.log { rotate 7 daily diff --git a/contrib/backends/bgold/debian/bgold.postinst b/contrib/backends/bgold/debian/bgold.postinst new file mode 100644 index 00000000..a182ab0a --- /dev/null +++ b/contrib/backends/bgold/debian/bgold.postinst @@ -0,0 +1,20 @@ +#!/bin/bash +set -e + +case "$1" in + + configure) + if ! id -u bgold &> /dev/null + then + useradd --system -M -U bgold -s /bin/false + fi + + if [ "$(stat -c '%U' /opt/coins/data/bgold/backend)" != "bgold" ] + then + chown -R bgold:bgold /opt/coins/data/bgold/backend + fi + ;; + +esac + +#DEBHELPER# diff --git a/contrib/backends/bgold/debian/bgold.service b/contrib/backends/bgold/debian/bgold.service new file mode 100644 index 00000000..a40ec304 --- /dev/null +++ b/contrib/backends/bgold/debian/bgold.service @@ -0,0 +1,47 @@ +# It is not recommended to modify this file in-place, because it will +# be overwritten during package upgrades. If you want to add further +# options or overwrite existing ones then use +# $ systemctl edit bgold.service +# See "man systemd.service" for details. + +# Note that almost all daemon options could be specified in +# /opt/coins/nodes/bgold/bgold.conf + +[Unit] +Description=Bitcoin Gold daemon (mainnet) +After=network.target + +[Service] +ExecStart=/opt/coins/nodes/bgold/bin/bgoldd -datadir=/opt/coins/data/bgold/backend -conf=/opt/coins/nodes/bgold/bgold.conf -pid=/run/bgold/bgold.pid +# Creates /run/bitcoind owned by bgold +RuntimeDirectory=bgold +User=bgold +Type=forking +PIDFile=/run/bgold/bgold.pid +Restart=on-failure + +# Resource limits +LimitNOFILE=500000 + +# Hardening measures +#################### + +# Provide a private /tmp and /var/tmp. +PrivateTmp=true + +# Mount /usr, /boot/ and /etc read-only for the process. +ProtectSystem=full + +# Disallow the process and all of its children to gain +# new privileges through execve(). +NoNewPrivileges=true + +# Use a new /dev namespace only populated with API pseudo devices +# such as /dev/null, /dev/zero and /dev/random. +PrivateDevices=true + +# Deny the creation of writable and executable memory mappings. +MemoryDenyWriteExecute=true + +[Install] +WantedBy=multi-user.target diff --git a/contrib/backends/bgold/debian/changelog b/contrib/backends/bgold/debian/changelog new file mode 100644 index 00000000..c2eda095 --- /dev/null +++ b/contrib/backends/bgold/debian/changelog @@ -0,0 +1,11 @@ +bgold (0.15.0-satoshilabs2) unstable; urgency=medium + + * Renamed package and paths + + -- Jakub Matys Wed, 06 Jun 2018 14:07:15 +0200 + +bgold (0.15.0-satoshilabs1) unstable; urgency=medium + + * Initial build + + -- Jakub Matys Thu, 31 May 2018 11:46:34 +0200 diff --git a/contrib/backends/bgold/debian/compat b/contrib/backends/bgold/debian/compat new file mode 100644 index 00000000..ec635144 --- /dev/null +++ b/contrib/backends/bgold/debian/compat @@ -0,0 +1 @@ +9 diff --git a/contrib/backends/bgold/debian/control b/contrib/backends/bgold/debian/control new file mode 100644 index 00000000..c0b0a06f --- /dev/null +++ b/contrib/backends/bgold/debian/control @@ -0,0 +1,11 @@ +Source: bgold +Section: satoshilabs +Priority: optional +Maintainer: jakub.matys@satoshilabs.com +Build-Depends: debhelper, wget, tar, gzip, make, dh-systemd, dh-exec +Standards-Version: 3.9.5 + +Package: bgold +Architecture: amd64 +Depends: ${shlibs:Depends}, ${misc:Depends}, logrotate +Description: Satoshilabs packaged bitcoin-gold server diff --git a/contrib/backends/bgold/debian/rules b/contrib/backends/bgold/debian/rules new file mode 100755 index 00000000..f69489df --- /dev/null +++ b/contrib/backends/bgold/debian/rules @@ -0,0 +1,11 @@ +#!/usr/bin/make -f + +DH_VERBOSE = 1 + +%: + dh $@ --with=systemd + +override_dh_systemd_start: + dh_systemd_start --no-start + +override_dh_installinit: diff --git a/contrib/backends/bitcoin/btc.conf b/contrib/backends/bitcoin/bitcoin.conf similarity index 100% rename from contrib/backends/bitcoin/btc.conf rename to contrib/backends/bitcoin/bitcoin.conf diff --git a/contrib/backends/bitcoin/btc-testnet.conf b/contrib/backends/bitcoin/bitcoin_testnet.conf similarity index 100% rename from contrib/backends/bitcoin/btc-testnet.conf rename to contrib/backends/bitcoin/bitcoin_testnet.conf diff --git a/contrib/backends/bitcoin/debian/bitcoin-btc.conffiles b/contrib/backends/bitcoin/debian/bitcoin-btc.conffiles deleted file mode 100644 index b734a623..00000000 --- a/contrib/backends/bitcoin/debian/bitcoin-btc.conffiles +++ /dev/null @@ -1 +0,0 @@ -/opt/coins/nodes/bitcoin/btc/btc.conf diff --git a/contrib/backends/bitcoin/debian/bitcoin-btc.dirs b/contrib/backends/bitcoin/debian/bitcoin-btc.dirs deleted file mode 100644 index 5ee2039f..00000000 --- a/contrib/backends/bitcoin/debian/bitcoin-btc.dirs +++ /dev/null @@ -1 +0,0 @@ -/opt/coins/data/btc/bitcoin diff --git a/contrib/backends/bitcoin/debian/bitcoin-btc.install b/contrib/backends/bitcoin/debian/bitcoin-btc.install deleted file mode 100644 index 46107c83..00000000 --- a/contrib/backends/bitcoin/debian/bitcoin-btc.install +++ /dev/null @@ -1,2 +0,0 @@ -bitcoin/* /opt/coins/nodes/bitcoin/btc -btc.conf /opt/coins/nodes/bitcoin/btc diff --git a/contrib/backends/bitcoin/debian/bitcoin-testnet.conffiles b/contrib/backends/bitcoin/debian/bitcoin-testnet.conffiles index 2d919034..5b49d3ea 100644 --- a/contrib/backends/bitcoin/debian/bitcoin-testnet.conffiles +++ b/contrib/backends/bitcoin/debian/bitcoin-testnet.conffiles @@ -1 +1 @@ -/opt/coins/nodes/bitcoin/btc-testnet/btc-testnet.conf +/opt/coins/nodes/bitcoin_testnet/bitcoin_testnet.conf diff --git a/contrib/backends/bitcoin/debian/bitcoin-testnet.dirs b/contrib/backends/bitcoin/debian/bitcoin-testnet.dirs index d15c0af3..64476a16 100644 --- a/contrib/backends/bitcoin/debian/bitcoin-testnet.dirs +++ b/contrib/backends/bitcoin/debian/bitcoin-testnet.dirs @@ -1 +1 @@ -/opt/coins/data/btc-testnet/bitcoin +/opt/coins/data/bitcoin_testnet/backend diff --git a/contrib/backends/bitcoin/debian/bitcoin-testnet.install b/contrib/backends/bitcoin/debian/bitcoin-testnet.install index 35109b8d..35a1cbd1 100644 --- a/contrib/backends/bitcoin/debian/bitcoin-testnet.install +++ b/contrib/backends/bitcoin/debian/bitcoin-testnet.install @@ -1,2 +1,2 @@ -bitcoin/* /opt/coins/nodes/bitcoin/btc-testnet -btc-testnet.conf /opt/coins/nodes/bitcoin/btc-testnet +bitcoin/* /opt/coins/nodes/bitcoin_testnet +bitcoin_testnet.conf /opt/coins/nodes/bitcoin_testnet diff --git a/contrib/backends/bitcoin/debian/bitcoin-testnet.logrotate b/contrib/backends/bitcoin/debian/bitcoin-testnet.logrotate index ebe95e6f..204426b9 100644 --- a/contrib/backends/bitcoin/debian/bitcoin-testnet.logrotate +++ b/contrib/backends/bitcoin/debian/bitcoin-testnet.logrotate @@ -1,5 +1,5 @@ -/opt/coins/data/btc-testnet/bitcoin/testnet3/debug.log -/opt/coins/data/btc-testnet/bitcoin/testnet3/db.log +/opt/coins/data/bitcoin_testnet/backend/testnet3/debug.log +/opt/coins/data/bitcoin_testnet/backend/testnet3/db.log { rotate 7 daily diff --git a/contrib/backends/bitcoin/debian/bitcoin-testnet.postinst b/contrib/backends/bitcoin/debian/bitcoin-testnet.postinst index ae1a2441..db0a7dd4 100644 --- a/contrib/backends/bitcoin/debian/bitcoin-testnet.postinst +++ b/contrib/backends/bitcoin/debian/bitcoin-testnet.postinst @@ -9,9 +9,9 @@ case "$1" in useradd --system -M -U bitcoin -s /bin/false fi - if [ "$(stat -c '%U' /opt/coins/data/btc-testnet/bitcoin)" != "bitcoin" ] + if [ "$(stat -c '%U' /opt/coins/data/bitcoin_testnet/backend)" != "bitcoin" ] then - chown -R bitcoin:bitcoin /opt/coins/data/btc-testnet/bitcoin + chown -R bitcoin:bitcoin /opt/coins/data/bitcoin_testnet/backend fi ;; diff --git a/contrib/backends/bitcoin/debian/bitcoin-testnet.service b/contrib/backends/bitcoin/debian/bitcoin-testnet.service index a539bd74..83746aa1 100644 --- a/contrib/backends/bitcoin/debian/bitcoin-testnet.service +++ b/contrib/backends/bitcoin/debian/bitcoin-testnet.service @@ -5,19 +5,19 @@ # See "man systemd.service" for details. # Note that almost all daemon options could be specified in -# /opt/coins/nodes/bitcoin/btc-testnet/btc-testnet.conf +# /opt/coins/nodes/bitcoin_testnet/bitcoin_testnet.conf [Unit] Description=Bitcoin daemon (testnet) After=network.target [Service] -ExecStart=/opt/coins/nodes/bitcoin/btc-testnet/bin/bitcoind -datadir=/opt/coins/data/btc-testnet/bitcoin -conf=/opt/coins/nodes/bitcoin/btc-testnet/btc-testnet.conf -pid=/run/bitcoind/testnet.pid +ExecStart=/opt/coins/nodes/bitcoin_testnet/bin/bitcoind -datadir=/opt/coins/data/bitcoin_testnet/backend -conf=/opt/coins/nodes/bitcoin_testnet/bitcoin_testnet.conf -pid=/run/bitcoind/bitcoin_testnet.pid # Creates /run/bitcoind owned by bitcoin RuntimeDirectory=bitcoind User=bitcoin Type=forking -PIDFile=/run/bitcoind/testnet.pid +PIDFile=/run/bitcoind/bitcoin_testnet.pid Restart=on-failure # Resource limits diff --git a/contrib/backends/bitcoin/debian/bitcoin.conffiles b/contrib/backends/bitcoin/debian/bitcoin.conffiles new file mode 100644 index 00000000..84076cff --- /dev/null +++ b/contrib/backends/bitcoin/debian/bitcoin.conffiles @@ -0,0 +1 @@ +/opt/coins/nodes/bitcoin/bitcoin.conf diff --git a/contrib/backends/bitcoin/debian/bitcoin.dirs b/contrib/backends/bitcoin/debian/bitcoin.dirs new file mode 100644 index 00000000..1a64a55f --- /dev/null +++ b/contrib/backends/bitcoin/debian/bitcoin.dirs @@ -0,0 +1 @@ +/opt/coins/data/bitcoin/backend diff --git a/contrib/backends/bitcoin/debian/bitcoin.install b/contrib/backends/bitcoin/debian/bitcoin.install new file mode 100644 index 00000000..e986b075 --- /dev/null +++ b/contrib/backends/bitcoin/debian/bitcoin.install @@ -0,0 +1,2 @@ +bitcoin/* /opt/coins/nodes/bitcoin +bitcoin.conf /opt/coins/nodes/bitcoin diff --git a/contrib/backends/bitcoin/debian/bitcoin.logrotate b/contrib/backends/bitcoin/debian/bitcoin.logrotate new file mode 100644 index 00000000..a6f9c50a --- /dev/null +++ b/contrib/backends/bitcoin/debian/bitcoin.logrotate @@ -0,0 +1,10 @@ +/opt/coins/data/bitcoin/backend/debug.log +/opt/coins/data/bitcoin/backend/db.log +{ + rotate 7 + daily + compress + missingok + notifempty + copytruncate +} diff --git a/contrib/backends/bitcoin/debian/bitcoin-btc.postinst b/contrib/backends/bitcoin/debian/bitcoin.postinst similarity index 58% rename from contrib/backends/bitcoin/debian/bitcoin-btc.postinst rename to contrib/backends/bitcoin/debian/bitcoin.postinst index 495f0345..d1435dc1 100644 --- a/contrib/backends/bitcoin/debian/bitcoin-btc.postinst +++ b/contrib/backends/bitcoin/debian/bitcoin.postinst @@ -9,9 +9,9 @@ case "$1" in useradd --system -M -U bitcoin -s /bin/false fi - if [ "$(stat -c '%U' /opt/coins/data/btc/bitcoin)" != "bitcoin" ] + if [ "$(stat -c '%U' /opt/coins/data/bitcoin/backend)" != "bitcoin" ] then - chown -R bitcoin:bitcoin /opt/coins/data/btc/bitcoin + chown -R bitcoin:bitcoin /opt/coins/data/bitcoin/backend fi ;; diff --git a/contrib/backends/bitcoin/debian/bitcoin-btc.service b/contrib/backends/bitcoin/debian/bitcoin.service similarity index 79% rename from contrib/backends/bitcoin/debian/bitcoin-btc.service rename to contrib/backends/bitcoin/debian/bitcoin.service index c3ca491f..19281f2a 100644 --- a/contrib/backends/bitcoin/debian/bitcoin-btc.service +++ b/contrib/backends/bitcoin/debian/bitcoin.service @@ -1,23 +1,23 @@ # It is not recommended to modify this file in-place, because it will # be overwritten during package upgrades. If you want to add further # options or overwrite existing ones then use -# $ systemctl edit bitcoin-btc.service +# $ systemctl edit bitcoin.service # See "man systemd.service" for details. # Note that almost all daemon options could be specified in -# /opt/coins/nodes/bitcoin/btc/btc.conf +# /opt/coins/nodes/bitcoin/bitcoin.conf [Unit] Description=Bitcoin daemon (mainnet) After=network.target [Service] -ExecStart=/opt/coins/nodes/bitcoin/btc/bin/bitcoind -datadir=/opt/coins/data/btc/bitcoin -conf=/opt/coins/nodes/bitcoin/btc/btc.conf -pid=/run/bitcoind/btc.pid +ExecStart=/opt/coins/nodes/bitcoin/bin/bitcoind -datadir=/opt/coins/data/bitcoin/backend -conf=/opt/coins/nodes/bitcoin/bitcoin.conf -pid=/run/bitcoind/bitcoin.pid # Creates /run/bitcoind owned by bitcoin RuntimeDirectory=bitcoind User=bitcoin Type=forking -PIDFile=/run/bitcoind/btc.pid +PIDFile=/run/bitcoind/bitcoin.pid Restart=on-failure # Resource limits diff --git a/contrib/backends/bitcoin/debian/changelog b/contrib/backends/bitcoin/debian/changelog index e61dd8f0..d654e716 100644 --- a/contrib/backends/bitcoin/debian/changelog +++ b/contrib/backends/bitcoin/debian/changelog @@ -1,3 +1,9 @@ +bitcoin (0.16.0-satoshilabs6) unstable; urgency=medium + + * Rename packages and directories + + -- Martin Bohm Wed, 06 Jun 2018 11:12:13 +0200 + bitcoin (0.16.0-satoshilabs5) unstable; urgency=medium * Added deprecatedrpc=estimatefee option diff --git a/contrib/backends/bitcoin/debian/control b/contrib/backends/bitcoin/debian/control index b53f5d77..788bc474 100644 --- a/contrib/backends/bitcoin/debian/control +++ b/contrib/backends/bitcoin/debian/control @@ -5,7 +5,7 @@ Maintainer: jakub.matys@satoshilabs.com Build-Depends: debhelper, wget, tar, gzip, make, dh-systemd, dh-exec Standards-Version: 3.9.5 -Package: bitcoin-btc +Package: bitcoin Architecture: amd64 Depends: ${shlibs:Depends}, ${misc:Depends}, logrotate Description: Satoshilabs packaged bitcoin server diff --git a/contrib/backends/ethereum/debian/changelog b/contrib/backends/ethereum/debian/changelog index d0c0c269..b4a4d04b 100644 --- a/contrib/backends/ethereum/debian/changelog +++ b/contrib/backends/ethereum/debian/changelog @@ -1,3 +1,9 @@ +ethereum (1.8.10-satoshilabs2) unstable; urgency=medium + + * Rename packages and directories + + -- Martin Bohm Wed, 06 Jun 2018 11:12:13 +0200 + ethereum (1.8.10-satoshilabs1) unstable; urgency=medium * Initial build diff --git a/contrib/backends/ethereum/debian/control b/contrib/backends/ethereum/debian/control index 1d1f743e..35bd4ac3 100644 --- a/contrib/backends/ethereum/debian/control +++ b/contrib/backends/ethereum/debian/control @@ -5,12 +5,12 @@ Maintainer: martin.bohm@satoshilabs.com Build-Depends: debhelper, wget, tar, gzip, make, dh-systemd, dh-exec Standards-Version: 3.9.5 -Package: ethereum-eth +Package: ethereum Architecture: amd64 Depends: ${shlibs:Depends}, ${misc:Depends}, logrotate Description: Satoshilabs packaged ethereum geth server -Package: ethereum-ropsten +Package: ethereum-testnet-ropsten Architecture: amd64 Depends: ${shlibs:Depends}, ${misc:Depends}, logrotate Description: Satoshilabs packaged ethereum geth server diff --git a/contrib/backends/ethereum/debian/ethereum-eth.dirs b/contrib/backends/ethereum/debian/ethereum-eth.dirs deleted file mode 100644 index abf53edc..00000000 --- a/contrib/backends/ethereum/debian/ethereum-eth.dirs +++ /dev/null @@ -1 +0,0 @@ -/opt/coins/data/eth/eth \ No newline at end of file diff --git a/contrib/backends/ethereum/debian/ethereum-eth.install b/contrib/backends/ethereum/debian/ethereum-eth.install deleted file mode 100644 index fb75665c..00000000 --- a/contrib/backends/ethereum/debian/ethereum-eth.install +++ /dev/null @@ -1 +0,0 @@ -ethereum/* /opt/coins/nodes/ethereum/eth diff --git a/contrib/backends/ethereum/debian/ethereum-ropsten.dirs b/contrib/backends/ethereum/debian/ethereum-ropsten.dirs deleted file mode 100644 index fdac20f2..00000000 --- a/contrib/backends/ethereum/debian/ethereum-ropsten.dirs +++ /dev/null @@ -1 +0,0 @@ -/opt/coins/data/eth-ropsten/eth \ No newline at end of file diff --git a/contrib/backends/ethereum/debian/ethereum-ropsten.install b/contrib/backends/ethereum/debian/ethereum-ropsten.install deleted file mode 100644 index ced5fdba..00000000 --- a/contrib/backends/ethereum/debian/ethereum-ropsten.install +++ /dev/null @@ -1 +0,0 @@ -ethereum/* /opt/coins/nodes/ethereum/eth-ropsten diff --git a/contrib/backends/ethereum/debian/ethereum-eth.conffiles b/contrib/backends/ethereum/debian/ethereum-testnet-ropsten.conffiles similarity index 100% rename from contrib/backends/ethereum/debian/ethereum-eth.conffiles rename to contrib/backends/ethereum/debian/ethereum-testnet-ropsten.conffiles diff --git a/contrib/backends/ethereum/debian/ethereum-testnet-ropsten.dirs b/contrib/backends/ethereum/debian/ethereum-testnet-ropsten.dirs new file mode 100644 index 00000000..21b78fe7 --- /dev/null +++ b/contrib/backends/ethereum/debian/ethereum-testnet-ropsten.dirs @@ -0,0 +1 @@ +/opt/coins/data/ethereum_testnet_ropsten/backend \ No newline at end of file diff --git a/contrib/backends/ethereum/debian/ethereum-testnet-ropsten.install b/contrib/backends/ethereum/debian/ethereum-testnet-ropsten.install new file mode 100644 index 00000000..65c1d9dc --- /dev/null +++ b/contrib/backends/ethereum/debian/ethereum-testnet-ropsten.install @@ -0,0 +1 @@ +ethereum/* /opt/coins/nodes/ethereum_testnet_ropsten diff --git a/contrib/backends/ethereum/debian/ethereum-testnet-ropsten.logrotate b/contrib/backends/ethereum/debian/ethereum-testnet-ropsten.logrotate new file mode 100644 index 00000000..cd024adc --- /dev/null +++ b/contrib/backends/ethereum/debian/ethereum-testnet-ropsten.logrotate @@ -0,0 +1,9 @@ +/opt/coins/data/ethereum_testnet_ropsten/backend/ethereum_testnet_ropsten.log +{ + rotate 7 + daily + compress + missingok + notifempty + copytruncate +} diff --git a/contrib/backends/ethereum/debian/ethereum-ropsten.postinst b/contrib/backends/ethereum/debian/ethereum-testnet-ropsten.postinst similarity index 52% rename from contrib/backends/ethereum/debian/ethereum-ropsten.postinst rename to contrib/backends/ethereum/debian/ethereum-testnet-ropsten.postinst index 0b509afa..3aa02f01 100644 --- a/contrib/backends/ethereum/debian/ethereum-ropsten.postinst +++ b/contrib/backends/ethereum/debian/ethereum-testnet-ropsten.postinst @@ -9,9 +9,9 @@ case "$1" in useradd --system -M -U ethereum -s /bin/false fi - if [ "$(stat -c '%U' /opt/coins/data/eth-ropsten/eth)" != "ethereum" ] + if [ "$(stat -c '%U' /opt/coins/data/ethereum_testnet_ropsten/backend)" != "ethereum" ] then - chown -R ethereum:ethereum /opt/coins/data/eth-ropsten/eth + chown -R ethereum:ethereum /opt/coins/data/ethereum_testnet_ropsten/backend fi ;; diff --git a/contrib/backends/ethereum/debian/ethereum-ropsten.service b/contrib/backends/ethereum/debian/ethereum-testnet-ropsten.service similarity index 68% rename from contrib/backends/ethereum/debian/ethereum-ropsten.service rename to contrib/backends/ethereum/debian/ethereum-testnet-ropsten.service index 7eb55cf7..8ffde2e7 100644 --- a/contrib/backends/ethereum/debian/ethereum-ropsten.service +++ b/contrib/backends/ethereum/debian/ethereum-testnet-ropsten.service @@ -1,7 +1,7 @@ # It is not recommended to modify this file in-place, because it will # be overwritten during package upgrades. If you want to add further # options or overwrite existing ones then use -# $ systemctl edit ethereum-ropsten.service +# $ systemctl edit ethereum-testnet-ropsten.service # See "man systemd.service" for details. [Unit] @@ -9,11 +9,11 @@ Description=Ethereum daemon (ropsten testnet) After=network.target [Service] -ExecStart=/bin/sh -c '/opt/coins/nodes/ethereum/eth-ropsten/geth --ipcdisable --testnet --cache 1024 --datadir /opt/coins/data/eth-ropsten/eth --port 48333 --ws --wsaddr 0.0.0.0 --wsport 18036 --wsorigins * 2>>/opt/coins/data/eth-ropsten/eth/eth.log' +ExecStart=/bin/sh -c '/opt/coins/nodes/ethereum_testnet_ropsten/geth --ipcdisable --testnet --cache 1024 --nat none --datadir /opt/coins/data/ethereum_testnet_ropsten/backend --port 48333 --ws --wsaddr 0.0.0.0 --wsport 18036 --wsorigins "*" 2>>/opt/coins/data/ethereum_testnet_ropsten/backend/ethereum_testnet_ropsten.log' User=ethereum Type=simple Restart=on-failure -WorkingDirectory=/opt/coins/nodes/ethereum/eth-ropsten/ +WorkingDirectory=/opt/coins/nodes/ethereum_testnet_ropsten # Resource limits LimitNOFILE=500000 diff --git a/contrib/backends/ethereum/debian/ethereum-ropsten.conffiles b/contrib/backends/ethereum/debian/ethereum.conffiles similarity index 100% rename from contrib/backends/ethereum/debian/ethereum-ropsten.conffiles rename to contrib/backends/ethereum/debian/ethereum.conffiles diff --git a/contrib/backends/ethereum/debian/ethereum.dirs b/contrib/backends/ethereum/debian/ethereum.dirs new file mode 100644 index 00000000..200cff98 --- /dev/null +++ b/contrib/backends/ethereum/debian/ethereum.dirs @@ -0,0 +1 @@ +/opt/coins/data/ethereum/backend \ No newline at end of file diff --git a/contrib/backends/ethereum/debian/ethereum.install b/contrib/backends/ethereum/debian/ethereum.install new file mode 100644 index 00000000..cecaa2a1 --- /dev/null +++ b/contrib/backends/ethereum/debian/ethereum.install @@ -0,0 +1 @@ +ethereum/* /opt/coins/nodes/ethereum diff --git a/contrib/backends/ethereum/debian/ethereum-eth.logrotate b/contrib/backends/ethereum/debian/ethereum.logrotate similarity index 70% rename from contrib/backends/ethereum/debian/ethereum-eth.logrotate rename to contrib/backends/ethereum/debian/ethereum.logrotate index 4ecb953d..3ca48f1a 100644 --- a/contrib/backends/ethereum/debian/ethereum-eth.logrotate +++ b/contrib/backends/ethereum/debian/ethereum.logrotate @@ -1,4 +1,4 @@ -/opt/coins/data/eth/eth/eth.log +/opt/coins/data/ethereum/backend/ethereum.log { rotate 7 daily diff --git a/contrib/backends/ethereum/debian/ethereum-eth.postinst b/contrib/backends/ethereum/debian/ethereum.postinst similarity index 57% rename from contrib/backends/ethereum/debian/ethereum-eth.postinst rename to contrib/backends/ethereum/debian/ethereum.postinst index acbcc05e..24d1d255 100644 --- a/contrib/backends/ethereum/debian/ethereum-eth.postinst +++ b/contrib/backends/ethereum/debian/ethereum.postinst @@ -9,9 +9,9 @@ case "$1" in useradd --system -M -U ethereum -s /bin/false fi - if [ "$(stat -c '%U' /opt/coins/data/eth/eth)" != "ethereum" ] + if [ "$(stat -c '%U' /opt/coins/data/ethereum/backend)" != "ethereum" ] then - chown -R ethereum:ethereum /opt/coins/data/eth/eth + chown -R ethereum:ethereum /opt/coins/data/ethereum/backend fi ;; diff --git a/contrib/backends/ethereum/debian/ethereum-eth.service b/contrib/backends/ethereum/debian/ethereum.service similarity index 73% rename from contrib/backends/ethereum/debian/ethereum-eth.service rename to contrib/backends/ethereum/debian/ethereum.service index 9c13f0a1..c7db9a55 100644 --- a/contrib/backends/ethereum/debian/ethereum-eth.service +++ b/contrib/backends/ethereum/debian/ethereum.service @@ -1,7 +1,7 @@ # It is not recommended to modify this file in-place, because it will # be overwritten during package upgrades. If you want to add further # options or overwrite existing ones then use -# $ systemctl edit ethereum-eth.service +# $ systemctl edit ethereum.service # See "man systemd.service" for details. [Unit] @@ -9,11 +9,11 @@ Description=Ethereum daemon (mainnet) After=network.target [Service] -ExecStart=/bin/sh -c '/opt/coins/nodes/ethereum/eth/geth --ipcdisable --syncmode full --cache 1024 --datadir /opt/coins/data/eth/eth --port 38336 --ws --wsaddr 0.0.0.0 --wsport 8036 --wsorigins * 2>>/opt/coins/data/eth/eth/eth.log' +ExecStart=/bin/sh -c '/opt/coins/nodes/ethereum/geth --ipcdisable --syncmode full --cache 1024 --nat none --datadir /opt/coins/data/ethereum/backend --port 38336 --ws --wsaddr 0.0.0.0 --wsport 8036 --wsorigins "*" 2>>/opt/coins/data/ethereum/backend/ethereum.log' User=ethereum Type=simple Restart=on-failure -WorkingDirectory=/opt/coins/nodes/ethereum/eth +WorkingDirectory=/opt/coins/nodes/ethereum # Resource limits LimitNOFILE=500000 diff --git a/contrib/backends/zcash/debian/changelog b/contrib/backends/zcash/debian/changelog index 2d5a804e..87e536d7 100644 --- a/contrib/backends/zcash/debian/changelog +++ b/contrib/backends/zcash/debian/changelog @@ -1,3 +1,9 @@ +zcash (1.0.15-satoshilabs5) unstable; urgency=medium + + * Rename packages and directories + + -- Martin Bohm Wed, 06 Jun 2018 11:12:13 +0200 + zcash (1.0.15-satoshilabs4) unstable; urgency=medium * Increased limits in backend config diff --git a/contrib/backends/zcash/debian/control b/contrib/backends/zcash/debian/control index aa94da62..a94c9622 100644 --- a/contrib/backends/zcash/debian/control +++ b/contrib/backends/zcash/debian/control @@ -5,7 +5,7 @@ Maintainer: jakub.matys@satoshilabs.com Build-Depends: debhelper, wget, tar, gzip, make, dh-systemd, dh-exec Standards-Version: 3.9.5 -Package: zcash-zec +Package: zcash Architecture: amd64 Depends: ${shlibs:Depends}, ${misc:Depends}, logrotate Description: Satoshilabs packaged zcash server diff --git a/contrib/backends/zcash/debian/zcash-testnet.conffiles b/contrib/backends/zcash/debian/zcash-testnet.conffiles index 0b9e398d..a3aaf070 100644 --- a/contrib/backends/zcash/debian/zcash-testnet.conffiles +++ b/contrib/backends/zcash/debian/zcash-testnet.conffiles @@ -1 +1 @@ -/opt/coins/nodes/zcash/zec-testnet/zec-testnet.conf +/opt/coins/nodes/zcash_testnet/zcash_testnet.conf diff --git a/contrib/backends/zcash/debian/zcash-testnet.dirs b/contrib/backends/zcash/debian/zcash-testnet.dirs index 513c4b77..a5269275 100644 --- a/contrib/backends/zcash/debian/zcash-testnet.dirs +++ b/contrib/backends/zcash/debian/zcash-testnet.dirs @@ -1 +1 @@ -/opt/coins/data/zec-testnet/zcash +/opt/coins/data/zcash_testnet/backend diff --git a/contrib/backends/zcash/debian/zcash-testnet.install b/contrib/backends/zcash/debian/zcash-testnet.install index 5f846680..92be786e 100644 --- a/contrib/backends/zcash/debian/zcash-testnet.install +++ b/contrib/backends/zcash/debian/zcash-testnet.install @@ -1,2 +1,2 @@ -zcash/* /opt/coins/nodes/zcash/zec-testnet -zec-testnet.conf /opt/coins/nodes/zcash/zec-testnet +zcash/* /opt/coins/nodes/zcash_testnet +zcash_testnet.conf /opt/coins/nodes/zcash_testnet diff --git a/contrib/backends/zcash/debian/zcash-testnet.logrotate b/contrib/backends/zcash/debian/zcash-testnet.logrotate index 8b075f62..d6ebcb40 100644 --- a/contrib/backends/zcash/debian/zcash-testnet.logrotate +++ b/contrib/backends/zcash/debian/zcash-testnet.logrotate @@ -1,5 +1,5 @@ -/opt/coins/data/zec-testnet/zcash/testnet3/debug.log -/opt/coins/data/zec-testnet/zcash/testnet3/db.log +/opt/coins/data/zcash_testnet/backend/testnet3/debug.log +/opt/coins/data/zcash_testnet/backend/testnet3/db.log { rotate 7 daily diff --git a/contrib/backends/zcash/debian/zcash-testnet.postinst b/contrib/backends/zcash/debian/zcash-testnet.postinst index a5d155aa..f93bd12d 100644 --- a/contrib/backends/zcash/debian/zcash-testnet.postinst +++ b/contrib/backends/zcash/debian/zcash-testnet.postinst @@ -9,12 +9,12 @@ case "$1" in useradd --system -M -U zcash -s /bin/false fi - if [ "$(stat -c '%U' /opt/coins/data/zec-testnet/zcash)" != "zcash" ] + if [ "$(stat -c '%U' /opt/coins/data/zcash_testnet/backend)" != "zcash" ] then - chown -R zcash:zcash /opt/coins/data/zec-testnet/zcash + chown -R zcash:zcash /opt/coins/data/zcash_testnet/backend fi - HOME=/opt/coins/data/zec-testnet/zcash /opt/coins/nodes/zcash/zec-testnet/bin/zcash-fetch-params + HOME=/opt/coins/data/zcash_testnet/backend /opt/coins/nodes/zcash_testnet/bin/zcash-fetch-params ;; esac diff --git a/contrib/backends/zcash/debian/zcash-testnet.service b/contrib/backends/zcash/debian/zcash-testnet.service index 39b9fc31..427438d4 100644 --- a/contrib/backends/zcash/debian/zcash-testnet.service +++ b/contrib/backends/zcash/debian/zcash-testnet.service @@ -5,20 +5,20 @@ # See "man systemd.service" for details. # Note that almost all daemon options could be specified in -# /opt/coins/nodes/zcash/zec-testnet/zec-testnet.conf +# /opt/coins/nodes/zcash_testnet/zcash_testnet.conf [Unit] -Description=ZCash daemon (testnet) +Description=Zcash daemon (testnet) After=network.target [Service] -Environment="HOME=/opt/coins/data/zec-testnet/zcash" -ExecStart=/opt/coins/nodes/zcash/zec-testnet/bin/zcashd -datadir=/opt/coins/data/zec-testnet/zcash -conf=/opt/coins/nodes/zcash/zec-testnet/zec-testnet.conf -pid=/run/zcashd/zec-testnet.pid +Environment="HOME=/opt/coins/data/zcash_testnet/backend" +ExecStart=/opt/coins/nodes/zcash_testnet/bin/zcashd -datadir=/opt/coins/data/zcash_testnet/backend -conf=/opt/coins/nodes/zcash_testnet/zcash_testnet.conf -pid=/run/zcashd/zcash_testnet.pid # Creates /run/zcashd owned by zcash RuntimeDirectory=zcashd User=zcash Type=forking -PIDFile=/run/zcashd/zec-testnet.pid +PIDFile=/run/zcashd/zcash_testnet.pid Restart=on-failure # Resource limits diff --git a/contrib/backends/zcash/debian/zcash-zec.conffiles b/contrib/backends/zcash/debian/zcash-zec.conffiles deleted file mode 100644 index 9b19c6c3..00000000 --- a/contrib/backends/zcash/debian/zcash-zec.conffiles +++ /dev/null @@ -1 +0,0 @@ -/opt/coins/nodes/zcash/zec/zec.conf diff --git a/contrib/backends/zcash/debian/zcash-zec.dirs b/contrib/backends/zcash/debian/zcash-zec.dirs deleted file mode 100644 index f5d02e20..00000000 --- a/contrib/backends/zcash/debian/zcash-zec.dirs +++ /dev/null @@ -1 +0,0 @@ -/opt/coins/data/zec/zcash diff --git a/contrib/backends/zcash/debian/zcash-zec.install b/contrib/backends/zcash/debian/zcash-zec.install deleted file mode 100644 index 629f95b1..00000000 --- a/contrib/backends/zcash/debian/zcash-zec.install +++ /dev/null @@ -1,2 +0,0 @@ -zcash/* /opt/coins/nodes/zcash/zec -zec.conf /opt/coins/nodes/zcash/zec diff --git a/contrib/backends/zcash/debian/zcash-zec.logrotate b/contrib/backends/zcash/debian/zcash-zec.logrotate deleted file mode 100644 index ce704abb..00000000 --- a/contrib/backends/zcash/debian/zcash-zec.logrotate +++ /dev/null @@ -1,10 +0,0 @@ -/opt/coins/data/zec/zcash/debug.log -/opt/coins/data/zec/zcash/db.log -{ - rotate 7 - daily - compress - missingok - notifempty - copytruncate -} diff --git a/contrib/backends/zcash/debian/zcash.conffiles b/contrib/backends/zcash/debian/zcash.conffiles new file mode 100644 index 00000000..4bb34b1a --- /dev/null +++ b/contrib/backends/zcash/debian/zcash.conffiles @@ -0,0 +1 @@ +/opt/coins/nodes/zcash/zcash.conf diff --git a/contrib/backends/zcash/debian/zcash.dirs b/contrib/backends/zcash/debian/zcash.dirs new file mode 100644 index 00000000..d79f40cc --- /dev/null +++ b/contrib/backends/zcash/debian/zcash.dirs @@ -0,0 +1 @@ +/opt/coins/data/zcash/backend diff --git a/contrib/backends/zcash/debian/zcash.install b/contrib/backends/zcash/debian/zcash.install new file mode 100644 index 00000000..a641f4db --- /dev/null +++ b/contrib/backends/zcash/debian/zcash.install @@ -0,0 +1,2 @@ +zcash/* /opt/coins/nodes/zcash +zcash.conf /opt/coins/nodes/zcash diff --git a/contrib/backends/ethereum/debian/ethereum-ropsten.logrotate b/contrib/backends/zcash/debian/zcash.logrotate similarity index 58% rename from contrib/backends/ethereum/debian/ethereum-ropsten.logrotate rename to contrib/backends/zcash/debian/zcash.logrotate index f49829e7..64c98777 100644 --- a/contrib/backends/ethereum/debian/ethereum-ropsten.logrotate +++ b/contrib/backends/zcash/debian/zcash.logrotate @@ -1,4 +1,5 @@ -/opt/coins/data/eth-ropsten/eth/eth.log +/opt/coins/data/zcash/backend/debug.log +/opt/coins/data/zcash/backend/db.log { rotate 7 daily diff --git a/contrib/backends/zcash/debian/zcash-zec.postinst b/contrib/backends/zcash/debian/zcash.postinst similarity index 52% rename from contrib/backends/zcash/debian/zcash-zec.postinst rename to contrib/backends/zcash/debian/zcash.postinst index 42acc20d..0ee9132b 100644 --- a/contrib/backends/zcash/debian/zcash-zec.postinst +++ b/contrib/backends/zcash/debian/zcash.postinst @@ -9,12 +9,12 @@ case "$1" in useradd --system -M -U zcash -s /bin/false fi - if [ "$(stat -c '%U' /opt/coins/data/zec/zcash)" != "zcash" ] + if [ "$(stat -c '%U' /opt/coins/data/zcash/backend)" != "zcash" ] then - chown -R zcash:zcash /opt/coins/data/zec/zcash + chown -R zcash:zcash /opt/coins/data/zcash/backend fi - HOME=/opt/coins/data/zec/zcash /opt/coins/nodes/zcash/zec/bin/zcash-fetch-params + HOME=/opt/coins/data/zcash/backend /opt/coins/nodes/zcash/bin/zcash-fetch-params ;; esac diff --git a/contrib/backends/zcash/debian/zcash-zec.service b/contrib/backends/zcash/debian/zcash.service similarity index 75% rename from contrib/backends/zcash/debian/zcash-zec.service rename to contrib/backends/zcash/debian/zcash.service index be4457d6..2da0aba7 100644 --- a/contrib/backends/zcash/debian/zcash-zec.service +++ b/contrib/backends/zcash/debian/zcash.service @@ -1,24 +1,24 @@ # It is not recommended to modify this file in-place, because it will # be overwritten during package upgrades. If you want to add further # options or overwrite existing ones then use -# $ systemctl edit zcash-zec.service +# $ systemctl edit zcash.service # See "man systemd.service" for details. # Note that almost all daemon options could be specified in -# /opt/coins/nodes/zcash/zec/zec.conf +# /opt/coins/nodes/zcash/zcash.conf [Unit] -Description=ZCash daemon (mainnet) +Description=Zcash daemon (mainnet) After=network.target [Service] -Environment="HOME=/opt/coins/data/zec/zcash" -ExecStart=/opt/coins/nodes/zcash/zec/bin/zcashd -datadir=/opt/coins/data/zec/zcash -conf=/opt/coins/nodes/zcash/zec/zec.conf -pid=/run/zcashd/zec.pid +Environment="HOME=/opt/coins/data/zcash/backend" +ExecStart=/opt/coins/nodes/zcash/bin/zcashd -datadir=/opt/coins/data/zcash/backend -conf=/opt/coins/nodes/zcash/zcash.conf -pid=/run/zcashd/zcash.pid # Creates /run/zcashd owned by zcash RuntimeDirectory=zcashd User=zcash Type=forking -PIDFile=/run/zcashd/zec.pid +PIDFile=/run/zcashd/zcash.pid Restart=on-failure # Resource limits diff --git a/contrib/backends/zcash/zec.conf b/contrib/backends/zcash/zcash.conf similarity index 100% rename from contrib/backends/zcash/zec.conf rename to contrib/backends/zcash/zcash.conf diff --git a/contrib/backends/zcash/zec-testnet.conf b/contrib/backends/zcash/zcash_testnet.conf similarity index 100% rename from contrib/backends/zcash/zec-testnet.conf rename to contrib/backends/zcash/zcash_testnet.conf diff --git a/server/socketio.go b/server/socketio.go index c96d4dfc..d0389d19 100644 --- a/server/socketio.go +++ b/server/socketio.go @@ -653,6 +653,7 @@ type resultGetInfo struct { Network string `json:"network,omitempty"` Subversion string `json:"subversion,omitempty"` LocalServices string `json:"localServices,omitempty"` + CoinName string `json:"coin_name,omitempty"` About string `json:"about,omitempty"` } `json:"result"` } @@ -666,6 +667,7 @@ func (s *SocketIoServer) getInfo() (res resultGetInfo, err error) { res.Result.Testnet = s.chain.IsTestnet() res.Result.Network = s.chain.GetNetworkName() res.Result.Subversion = s.chain.GetSubversion() + res.Result.CoinName = s.chain.GetCoinName() res.Result.About = blockbookAbout return }