Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Master merge 2.0.0 #2927

Merged
merged 14 commits into from
Jun 27, 2019
Merged
988 changes: 515 additions & 473 deletions Cargo.lock

Large diffs are not rendered by default.

20 changes: 10 additions & 10 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "grin"
version = "1.1.1-beta.1"
version = "2.0.0-beta.2"
authors = ["Grin Developers <[email protected]>"]
description = "Simple, private and scalable cryptocurrency implementation based on the MimbleWimble chain format."
license = "Apache-2.0"
Expand Down Expand Up @@ -32,13 +32,13 @@ term = "0.5"
failure = "0.1"
failure_derive = "0.1"

grin_api = { path = "./api", version = "1.1.1-beta.1" }
grin_config = { path = "./config", version = "1.1.1-beta.1" }
grin_core = { path = "./core", version = "1.1.1-beta.1" }
grin_keychain = { path = "./keychain", version = "1.1.1-beta.1" }
grin_p2p = { path = "./p2p", version = "1.1.1-beta.1" }
grin_servers = { path = "./servers", version = "1.1.1-beta.1" }
grin_util = { path = "./util", version = "1.1.1-beta.1" }
grin_api = { path = "./api", version = "2.0.0-beta.2" }
grin_config = { path = "./config", version = "2.0.0-beta.2" }
grin_core = { path = "./core", version = "2.0.0-beta.2" }
grin_keychain = { path = "./keychain", version = "2.0.0-beta.2" }
grin_p2p = { path = "./p2p", version = "2.0.0-beta.2" }
grin_servers = { path = "./servers", version = "2.0.0-beta.2" }
grin_util = { path = "./util", version = "2.0.0-beta.2" }

[target.'cfg(windows)'.dependencies]
cursive = { version = "0.12", default-features = false, features = ["pancurses-backend"] }
Expand All @@ -52,5 +52,5 @@ cursive = "0.12"
built = "0.3"

[dev-dependencies]
grin_chain = { path = "./chain", version = "1.1.1-beta.1" }
grin_store = { path = "./store", version = "1.1.1-beta.1" }
grin_chain = { path = "./chain", version = "2.0.0-beta.2" }
grin_store = { path = "./store", version = "2.0.0-beta.2" }
14 changes: 7 additions & 7 deletions api/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "grin_api"
version = "1.1.1-beta.1"
version = "2.0.0-beta.2"
authors = ["Grin Developers <[email protected]>"]
description = "APIs for grin, a simple, private and scalable cryptocurrency implementation based on the MimbleWimble chain format."
license = "Apache-2.0"
Expand Down Expand Up @@ -30,9 +30,9 @@ futures = "0.1.21"
rustls = "0.13"
url = "1.7.0"

grin_core = { path = "../core", version = "1.1.1-beta.1" }
grin_chain = { path = "../chain", version = "1.1.1-beta.1" }
grin_p2p = { path = "../p2p", version = "1.1.1-beta.1" }
grin_pool = { path = "../pool", version = "1.1.1-beta.1" }
grin_store = { path = "../store", version = "1.1.1-beta.1" }
grin_util = { path = "../util", version = "1.1.1-beta.1" }
grin_core = { path = "../core", version = "2.0.0-beta.2" }
grin_chain = { path = "../chain", version = "2.0.0-beta.2" }
grin_p2p = { path = "../p2p", version = "2.0.0-beta.2" }
grin_pool = { path = "../pool", version = "2.0.0-beta.2" }
grin_store = { path = "../store", version = "2.0.0-beta.2" }
grin_util = { path = "../util", version = "2.0.0-beta.2" }
13 changes: 10 additions & 3 deletions api/src/handlers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ mod pool_api;
mod server_api;
mod transactions_api;
mod utils;
mod version_api;

use self::blocks_api::BlockHandler;
use self::blocks_api::HeaderHandler;
Expand All @@ -32,9 +33,10 @@ use self::peers_api::PeersConnectedHandler;
use self::pool_api::PoolInfoHandler;
use self::pool_api::PoolPushHandler;
use self::server_api::IndexHandler;
use self::server_api::StatusHandler;
use self::server_api::KernelDownloadHandler;
use self::server_api::StatusHandler;
use self::transactions_api::TxHashSetHandler;
use self::version_api::VersionHandler;
use crate::auth::{BasicAuthMiddleware, GRIN_BASIC_REALM};
use crate::chain;
use crate::p2p;
Expand Down Expand Up @@ -104,12 +106,13 @@ pub fn build_router(
"get txhashset/outputs?start_index=1&max=100".to_string(),
"get txhashset/merkleproof?n=1".to_string(),
"get pool".to_string(),
"post pool/push".to_string(),
"post pool/push_tx".to_string(),
"post peers/a.b.c.d:p/ban".to_string(),
"post peers/a.b.c.d:p/unban".to_string(),
"get peers/all".to_string(),
"get peers/connected".to_string(),
"get peers/a.b.c.d".to_string(),
"get version".to_string(),
];
let index_handler = IndexHandler { list: route_list };

Expand Down Expand Up @@ -157,6 +160,9 @@ pub fn build_router(
let peer_handler = PeerHandler {
peers: Arc::downgrade(&peers),
};
let version_handler = VersionHandler {
chain: Arc::downgrade(&chain),
};

let mut router = Router::new();

Expand All @@ -171,9 +177,10 @@ pub fn build_router(
router.add_route("/v1/status", Arc::new(status_handler))?;
router.add_route("/v1/kerneldownload", Arc::new(kernel_download_handler))?;
router.add_route("/v1/pool", Arc::new(pool_info_handler))?;
router.add_route("/v1/pool/push", Arc::new(pool_push_handler))?;
router.add_route("/v1/pool/push_tx", Arc::new(pool_push_handler))?;
router.add_route("/v1/peers/all", Arc::new(peers_all_handler))?;
router.add_route("/v1/peers/connected", Arc::new(peers_connected_handler))?;
router.add_route("/v1/peers/**", Arc::new(peer_handler))?;
router.add_route("/v1/version", Arc::new(version_handler))?;
Ok(router)
}
2 changes: 1 addition & 1 deletion api/src/handlers/pool_api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ struct TxWrapper {
}

/// Push new transaction to our local transaction pool.
/// POST /v1/pool/push
/// POST /v1/pool/push_tx
pub struct PoolPushHandler {
pub tx_pool: Weak<RwLock<pool::TransactionPool>>,
}
Expand Down
49 changes: 49 additions & 0 deletions api/src/handlers/version_api.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
// Copyright 2018 The Grin Developers
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

use super::utils::w;
use crate::chain;
use crate::rest::*;
use crate::router::{Handler, ResponseFuture};
use crate::types::Version;
use crate::web::*;
use hyper::{Body, Request};
use std::sync::Weak;

const CRATE_VERSION: &'static str = env!("CARGO_PKG_VERSION");

/// Version handler. Get running node API version
/// GET /v1/version
pub struct VersionHandler {
pub chain: Weak<chain::Chain>,
}

impl VersionHandler {
fn get_version(&self) -> Result<Version, Error> {
let head = w(&self.chain)?
.head_header()
.map_err(|e| ErrorKind::Internal(format!("can't get head: {}", e)))?;

Ok(Version {
node_version: CRATE_VERSION.to_owned(),
block_header_version: head.version.into(),
})
}
}

impl Handler for VersionHandler {
fn get(&self, _req: Request<Body>) -> ResponseFuture {
result_to_response(self.get_version())
}
}
9 changes: 9 additions & 0 deletions api/src/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,15 @@ macro_rules! no_dup {
};
}

/// API Version Information
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Version {
/// Current node API Version (api crate version)
pub node_version: String,
/// Block header version
pub block_header_version: u16,
}

/// The state of the current fork tip
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Tip {
Expand Down
10 changes: 5 additions & 5 deletions chain/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "grin_chain"
version = "1.1.1-beta.1"
version = "2.0.0-beta.2"
authors = ["Grin Developers <[email protected]>"]
description = "Chain implementation for grin, a simple, private and scalable cryptocurrency implementation based on the MimbleWimble chain format."
license = "Apache-2.0"
Expand All @@ -23,10 +23,10 @@ lru-cache = "0.1"
lazy_static = "1"
regex = "1"

grin_core = { path = "../core", version = "1.1.1-beta.1" }
grin_keychain = { path = "../keychain", version = "1.1.1-beta.1" }
grin_store = { path = "../store", version = "1.1.1-beta.1" }
grin_util = { path = "../util", version = "1.1.1-beta.1" }
grin_core = { path = "../core", version = "2.0.0-beta.2" }
grin_keychain = { path = "../keychain", version = "2.0.0-beta.2" }
grin_store = { path = "../store", version = "2.0.0-beta.2" }
grin_util = { path = "../util", version = "2.0.0-beta.2" }

[dev-dependencies]
env_logger = "0.5"
Expand Down
12 changes: 10 additions & 2 deletions chain/tests/data_file_integrity.rs
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,14 @@ fn data_files() {
let prev = chain.head_header().unwrap();
let next_header_info = consensus::next_difficulty(1, chain.difficulty_iter().unwrap());
let pk = ExtKeychainPath::new(1, n as u32, 0, 0, 0).to_identifier();
let reward = libtx::reward::output(&keychain, &pk, 0, false).unwrap();
let reward = libtx::reward::output(
&keychain,
&libtx::ProofBuilder::new(&keychain),
&pk,
0,
false,
)
.unwrap();
let mut b =
core::core::Block::new(&prev, vec![], next_header_info.clone().difficulty, reward)
.unwrap();
Expand Down Expand Up @@ -154,7 +161,8 @@ fn _prepare_block_nosum(
let key_id = ExtKeychainPath::new(1, diff as u32, 0, 0, 0).to_identifier();

let fees = txs.iter().map(|tx| tx.fee()).sum();
let reward = libtx::reward::output(kc, &key_id, fees, false).unwrap();
let reward =
libtx::reward::output(kc, &libtx::ProofBuilder::new(kc), &key_id, fees, false).unwrap();
let mut b = match core::core::Block::new(
prev,
txs.into_iter().cloned().collect(),
Expand Down
30 changes: 25 additions & 5 deletions chain/tests/mine_simple_chain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ use self::core::core::verifier_cache::LruVerifierCache;
use self::core::core::{Block, BlockHeader, OutputIdentifier, Transaction};
use self::core::genesis;
use self::core::global::ChainTypes;
use self::core::libtx::{self, build, reward};
use self::core::libtx::{self, build, reward, ProofBuilder};
use self::core::pow::Difficulty;
use self::core::{consensus, global, pow};
use self::keychain::{ExtKeychain, ExtKeychainPath, Keychain};
Expand Down Expand Up @@ -106,7 +106,14 @@ fn mine_genesis_reward_chain() {
let mut genesis = genesis::genesis_dev();
let keychain = keychain::ExtKeychain::from_random_seed(false).unwrap();
let key_id = keychain::ExtKeychain::derive_key_id(0, 1, 0, 0, 0);
let reward = reward::output(&keychain, &key_id, 0, false).unwrap();
let reward = reward::output(
&keychain,
&libtx::ProofBuilder::new(&keychain),
&key_id,
0,
false,
)
.unwrap();
genesis = genesis.with_reward(reward.0, reward.1);

let tmp_chain_dir = ".grin.tmp";
Expand Down Expand Up @@ -143,7 +150,9 @@ where
let prev = chain.head_header().unwrap();
let next_header_info = consensus::next_difficulty(1, chain.difficulty_iter().unwrap());
let pk = ExtKeychainPath::new(1, n as u32, 0, 0, 0).to_identifier();
let reward = libtx::reward::output(keychain, &pk, 0, false).unwrap();
let reward =
libtx::reward::output(keychain, &libtx::ProofBuilder::new(keychain), &pk, 0, false)
.unwrap();
let mut b =
core::core::Block::new(&prev, vec![], next_header_info.clone().difficulty, reward)
.unwrap();
Expand Down Expand Up @@ -401,6 +410,7 @@ fn spend_in_fork_and_compact() {
let chain = setup(".grin6", pow::mine_genesis_block().unwrap());
let prev = chain.head_header().unwrap();
let kc = ExtKeychain::from_random_seed(false).unwrap();
let pb = ProofBuilder::new(&kc);

let mut fork_head = prev;

Expand Down Expand Up @@ -434,6 +444,7 @@ fn spend_in_fork_and_compact() {
build::with_fee(20000),
],
&kc,
&pb,
)
.unwrap();

Expand All @@ -451,6 +462,7 @@ fn spend_in_fork_and_compact() {
build::with_fee(20000),
],
&kc,
&pb,
)
.unwrap();

Expand Down Expand Up @@ -540,7 +552,14 @@ fn output_header_mappings() {
let prev = chain.head_header().unwrap();
let next_header_info = consensus::next_difficulty(1, chain.difficulty_iter().unwrap());
let pk = ExtKeychainPath::new(1, n as u32, 0, 0, 0).to_identifier();
let reward = libtx::reward::output(&keychain, &pk, 0, false).unwrap();
let reward = libtx::reward::output(
&keychain,
&libtx::ProofBuilder::new(&keychain),
&pk,
0,
false,
)
.unwrap();
reward_outputs.push(reward.0.clone());
let mut b =
core::core::Block::new(&prev, vec![], next_header_info.clone().difficulty, reward)
Expand Down Expand Up @@ -643,7 +662,8 @@ where
let key_id = ExtKeychainPath::new(1, diff as u32, 0, 0, 0).to_identifier();

let fees = txs.iter().map(|tx| tx.fee()).sum();
let reward = libtx::reward::output(kc, &key_id, fees, false).unwrap();
let reward =
libtx::reward::output(kc, &libtx::ProofBuilder::new(kc), &key_id, fees, false).unwrap();
let mut b = match core::core::Block::new(
prev,
txs.into_iter().cloned().collect(),
Expand Down
9 changes: 8 additions & 1 deletion chain/tests/store_indices.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,14 @@ fn test_various_store_indices() {

setup_chain(&genesis, chain_store.clone()).unwrap();

let reward = libtx::reward::output(&keychain, &key_id, 0, false).unwrap();
let reward = libtx::reward::output(
&keychain,
&libtx::ProofBuilder::new(&keychain),
&key_id,
0,
false,
)
.unwrap();
let block = Block::new(&genesis.header, vec![], Difficulty::min(), reward).unwrap();
let block_hash = block.hash();

Expand Down
Loading