Browse Source

WIP: liquid support via cargo feature

liquid_feature
Roman Zeyde 6 years ago
parent
commit
e7bde9bd93
No known key found for this signature in database GPG Key ID: 87CAE5FA46917CBB
  1. 10
      .travis.yml
  2. 12
      Cargo.lock
  3. 10
      Cargo.toml
  4. 2
      src/bulk.rs
  5. 5
      src/chain.rs
  6. 3
      src/daemon.rs
  7. 3
      src/index.rs
  8. 4
      src/lib.rs
  9. 2
      src/mempool.rs
  10. 3
      src/query.rs
  11. 3
      src/rest.rs
  12. 3
      src/util.rs

10
.travis.yml

@ -5,11 +5,15 @@ rust:
cache: cargo
env:
- FEATURE=default # BTC
- FEATURE=liquid
before_script:
- rustup component add rustfmt-preview
script:
- cargo fmt --all -- --check
- cargo check --all
- cargo build --all
- cargo test --all
- cargo check --all --feature $FEATURE
- cargo build --all --feature $FEATURE
- cargo test --all --feature $FEATURE

12
Cargo.lock

@ -363,6 +363,7 @@ dependencies = [
"chan-signal 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
"dirs 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
"elements 0.4.0 (git+https://github.com/ElementsProject/rust-elements/?rev=78c1e29809b7420041b1259711f0a2934211a0d3)",
"error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
"glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -387,6 +388,16 @@ dependencies = [
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "elements"
version = "0.4.0"
source = "git+https://github.com/ElementsProject/rust-elements/?rev=78c1e29809b7420041b1259711f0a2934211a0d3#78c1e29809b7420041b1259711f0a2934211a0d3"
dependencies = [
"bitcoin 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)",
"secp256k1 0.11.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "encoding"
version = "0.2.33"
@ -1660,6 +1671,7 @@ dependencies = [
"checksum crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c55913cc2799171a550e307918c0a360e8c16004820291bf3b638969b4a01816"
"checksum dirs 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "88972de891f6118092b643d85a0b28e0678e0f948d7f879aa32f2d5aafe97d2a"
"checksum either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3be565ca5c557d7f59e7cfcf1844f9e3033650c929c6566f511e8005f205c1d0"
"checksum elements 0.4.0 (git+https://github.com/ElementsProject/rust-elements/?rev=78c1e29809b7420041b1259711f0a2934211a0d3)" = "<none>"
"checksum encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec"
"checksum encoding-index-japanese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91"
"checksum encoding-index-korean 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81"

10
Cargo.toml

@ -10,6 +10,10 @@ keywords = ["bitcoin", "electrum", "server", "index", "database"]
documentation = "https://docs.rs/electrs/"
readme = "README.md"
[features]
default = []
liquid = ["elements"]
[dependencies]
arrayref = "0.3"
base64 = "0.9"
@ -45,3 +49,9 @@ lru-cache = "0.1.1"
[dependencies.bitcoin]
version = "0.15.1"
features = ["serde"]
[dependencies.elements]
optional = true
git = "https://github.com/ElementsProject/rust-elements/"
rev = "78c1e29809b7420041b1259711f0a2934211a0d3" # from master branch
features = ["serde-feature"] # Doesn't look to work by now

2
src/bulk.rs

@ -1,4 +1,3 @@
use bitcoin::blockdata::block::Block;
use bitcoin::consensus::encode::{deserialize, Decodable};
use bitcoin::util::hash::{BitcoinHash, Sha256dHash};
use libc;
@ -12,6 +11,7 @@ use std::sync::{
};
use std::thread;
use chain::Block;
use config::Config;
use daemon::Daemon;
use index::{index_block, last_indexed_block, read_indexed_blockhashes};

5
src/chain.rs

@ -0,0 +1,5 @@
#[cfg(not(feature = "liquid"))] // use regular Bitcoin data structures
pub use bitcoin::{Block, BlockHeader, Transaction, TxIn, TxOut};
#[cfg(feature = "liquid")]
pub use elements::{confidential, Block, BlockHeader, Transaction, TxIn, TxOut};

3
src/daemon.rs

@ -1,6 +1,4 @@
use base64;
use bitcoin::blockdata::block::{Block, BlockHeader};
use bitcoin::blockdata::transaction::Transaction;
use bitcoin::consensus::encode::{deserialize, serialize};
use bitcoin::network::constants::Network;
use bitcoin::util::hash::BitcoinHash;
@ -15,6 +13,7 @@ use std::path::PathBuf;
use std::sync::{Arc, Mutex};
use std::time::Duration;
use chain::{Block, BlockHeader, Transaction};
use metrics::{HistogramOpts, HistogramVec, Metrics};
use signal::Waiter;
use util::HeaderList;

3
src/index.rs

@ -1,6 +1,4 @@
use bincode;
use bitcoin::blockdata::block::{Block, BlockHeader};
use bitcoin::blockdata::transaction::{Transaction, TxIn, TxOut};
use bitcoin::consensus::encode::{deserialize, serialize};
use bitcoin::util::hash::BitcoinHash;
use bitcoin::util::hash::Sha256dHash;
@ -10,6 +8,7 @@ use std::collections::{HashMap, HashSet};
use std::iter::FromIterator;
use std::sync::RwLock;
use chain::{Block, BlockHeader, Transaction, TxIn, TxOut};
use daemon::Daemon;
use metrics::{Counter, Gauge, HistogramOpts, HistogramTimer, HistogramVec, MetricOpts, Metrics};
use signal::Waiter;

4
src/lib.rs

@ -40,8 +40,12 @@ extern crate serde_derive;
#[macro_use]
extern crate serde_json;
#[cfg(feature = "liquid")]
extern crate elements;
pub mod app;
pub mod bulk;
pub mod chain;
pub mod config;
pub mod daemon;
pub mod errors;

2
src/mempool.rs

@ -1,4 +1,3 @@
use bitcoin::blockdata::transaction::Transaction;
use bitcoin::util::hash::Sha256dHash;
use hex;
use std::collections::{BTreeMap, HashMap, HashSet};
@ -6,6 +5,7 @@ use std::iter::FromIterator;
use std::ops::Bound;
use std::sync::Mutex;
use chain::Transaction;
use daemon::{Daemon, MempoolEntry};
use index::index_transaction;
use metrics::{Gauge, GaugeVec, HistogramOpts, HistogramTimer, HistogramVec, MetricOpts, Metrics};

3
src/query.rs

@ -1,8 +1,7 @@
use bincode;
use bitcoin::blockdata::block::Block;
use bitcoin::blockdata::transaction::Transaction;
use bitcoin::consensus::encode::{deserialize, serialize};
use bitcoin::util::hash::Sha256dHash;
use chain::{Block, Transaction};
use std::collections::{BTreeMap, HashMap};
use std::sync::{Arc, RwLock};

3
src/rest.rs

@ -3,7 +3,6 @@ use bitcoin::network::constants::Network;
use bitcoin::util::address::Address;
use bitcoin::util::hash::{HexError, Sha256dHash};
use bitcoin::{BitcoinHash, Script};
use bitcoin::{Transaction, TxIn, TxOut};
use config::Config;
use errors;
use hex::{self, FromHexError};
@ -20,6 +19,8 @@ use std::num::ParseIntError;
use std::str::FromStr;
use std::sync::Arc;
use std::thread;
use chain::{Transaction, TxIn, TxOut};
use util::{
full_hash, get_script_asm, script_to_address, BlockHeaderMeta, FullHash, TransactionStatus,
};

3
src/util.rs

@ -1,4 +1,3 @@
use bitcoin::blockdata::block::{Block, BlockHeader};
use bitcoin::consensus::encode::serialize;
use bitcoin::util::hash::{BitcoinHash, Sha256dHash};
use errors::*;
@ -10,6 +9,8 @@ use std::sync::mpsc::{channel, sync_channel, Receiver, Sender, SyncSender};
use std::thread;
use time;
use chain::{Block, BlockHeader};
pub type Bytes = Vec<u8>;
pub type HeaderMap = HashMap<Sha256dHash, BlockHeader>;

Loading…
Cancel
Save