-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Igor Line
committed
Jul 13, 2019
1 parent
19613e2
commit 2a40c3c
Showing
11 changed files
with
489 additions
and
70 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"passphrase_check":"eyJzYWx0IjpbNzUsODIsMTk5LDE0NCwxODQsMzcsMTUxLDQ3LDEyNiwyMzAsMjQ0LDE3OCwxMTQsMTI4LDE3NSwxMjhdLCJub25jZSI6Wzg2LDQ2LDIwNywyNTIsODEsMTM0LDIyLDE1MywyMjEsNzUsMjAyLDExOSwyNywxNjAsMjQzLDMxLDkyLDczLDIyOCwxMjgsMzYsMTkxLDIxNCwxNl0sImNpcGhlciI6WzEwOCw4NCwxNiw0OCwxNjcsMTUyLDcxLDE4NiwxNDUsMTk3LDEyNywyMDksMTIwLDI0OCwxNTEsMTkxLDYwLDExNywzNCwyMDcsOTUsMTcwLDE4MCwxMCw2OSwxNDYsNTksMTg1LDUsMjEyLDIxLDI0LDI0MywxMTUsMjE1LDE3MiwxNTMsMTUwLDE4Nyw5OSwxMDksMjIzLDExNCwxNzAsMTA5LDE0NywxODgsMTg2LDIxNCwyMTIsMjM0LDIxOCwyMCwyMDcsNjgsMTY1XX0=","secrets":{"primary_keybundle:enc_key":{"blob_type":"EncryptingKey","seed_type":"Mock","hint":"","data":"eyJzYWx0IjpbMjQ5LDIyOCw1MCwyNDcsNDQsMTI4LDkyLDEyNiwxNSw1MSwyMjIsMTA0LDIyNCwzNCwyMzQsMTNdLCJub25jZSI6WzMwLDIwMywxMzYsMTMsNjAsMTEsMTAsNTMsMTI2LDUyLDE5OCwxOTcsNDYsNDksMSwyMzUsMTksMTcsMTUyLDEzLDEzMiwzNCw5MSwxOTRdLCJjaXBoZXIiOlsyMzYsMTMsMTMzLDE2NSw4OCw1LDc3LDU3LDE5NSw5NywxMjUsNCw0OSwxNTgsMzIsMiwxNDAsMjI1LDIyNywxNTQsMTA0LDE3NSwyMCwxNTcsNjEsMzAsMSw3MCwyLDE5MiwxMTIsMzcsMTI2LDE5MCw5NSwzNiwxMjksNTIsMzEsMjQ5LDE2NywyMzYsNDUsNTQsOTYsMzIsMjIwLDIwLDE5OSwyMiwyMDAsMTc0LDI0MCwyMjAsMjI3LDYyLDIxMiwyNTMsNjUsMTkwLDE1MSwxODUsNTQsMTQwLDc3LDc0LDE4MCwyMyw2NywxMjEsMTQ2LDc1LDEzOSwxNTQsMTgyLDE4NSwyNTQsODcsMTQzLDI0OSwxMzMsNSwxODIsODYsMTUsMTc3LDc5LDE3MF19"},"primary_keybundle:sign_key":{"blob_type":"SigningKey","seed_type":"Mock","hint":"","data":"eyJzYWx0IjpbNTEsODMsMTU3LDI0OSw2MSwxMzYsMjUwLDQ5LDE0MiwxNCw2MywxNzgsMjI1LDIxMSwxNTAsNjJdLCJub25jZSI6WzE4MCwxMzQsMjQ0LDIxOCwxMzQsMSwyNTEsMTkyLDIyOSwzNywxNzksMjQzLDEwMiwyMTcsMTQsMTY4LDEyOCwxNTcsMTIsMjEyLDgyLDEzNSwxNjUsMjI2XSwiY2lwaGVyIjpbMTMyLDE4Nyw0NiwyMDgsODksMTI5LDIzNywxNDQsNTEsMTg5LDE3OCw3LDkyLDYxLDE2NSwzNSwxNTEsMjI1LDExMiwxNzcsMjM0LDE4OSwxNjQsMjAxLDEyMywxMTYsMTEsMjEsMTQ0LDIwNSwyMzksMTc0LDIxNSwxNDIsMTE3LDg2LDIxNCwyNyw5NiwyMDAsMTQyLDE5MywyOSwyMzIsMjEzLDY3LDYwLDg3LDEzNiwyNTQsNDAsNjcsMTYwLDIzLDkyLDIyOCw3MywxOTksMTUzLDE4OCwyNDgsMjI5LDkwLDExLDUyLDkyLDE2NCwyMjMsMTkxLDEyNSwxMTMsNzgsMjE5LDYxLDc1LDIyNCwxNTgsNTgsMzgsMzMsMjE5LDI0LDE2NSwxNzIsMTkxLDUsMTk0LDcsMjEzLDMxLDI1NSwxMTEsMTY0LDMzLDMxLDIxMywzMywxNDAsOSwxMTAsMTA4LDYxLDIxOSwxNDIsMTgwLDEwOCwyNTIsNjIsMTU0LDE3NywxMDIsNCwyMDYsMTc2LDIyNCwxMywxMTYsMTU3LDk3LDk5XX0="},"root_seed":{"blob_type":"Seed","seed_type":"OneShot","hint":"","data":"eyJzYWx0IjpbMTE2LDI3LDE1MSw4MywxMzQsNzIsMTYyLDE2NSwxNTQsMjA0LDE1NCwxNTksMTkyLDEzNCwxMzYsMjQyXSwibm9uY2UiOlsyMzIsNDAsMjQyLDIwNCwyMjksMTk5LDMwLDIxMiwxNTUsOTQsMTY1LDYsMTczLDIzNSw5Niw3MCwxODEsNjQsMzYsNiwxMTQsMTI3LDE3NSwxMzhdLCJjaXBoZXIiOlsxNTIsMTI3LDM0LDE4OSw1NCwxNjQsNTAsMjA4LDYzLDkxLDY4LDIzNSwzNiwxODcsNzMsMzksMTQ4LDE2LDEyOSwxMzIsMTkxLDExNiwyMTIsMjExLDE0NywxNzEsMjM2LDE2MCw3NCwxNjQsMTksMjQwLDI1NSwzOSwxOTUsNDcsMjIsMTQwLDc5LDIzNCwyMTUsMTMxLDIxNywyMDQsMTg2LDU1LDI0OSwxNjldfQ=="}}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"passphrase_check":"eyJzYWx0IjpbMjA2LDE2Nyw3OSw1OSw1NiwxNzgsMTQ2LDM0LDI0MywyMjYsMTAzLDI3LDQyLDE1OSwxNjMsMjI3XSwibm9uY2UiOlsxNzAsNzAsMTY1LDE3Niw5MiwxNjEsMTE0LDM2LDEzMSw0Miw3NSwzNSwxNTgsMjUxLDIzNiwxNTYsMjExLDE1OCwxNDQsMTAxLDYsMjM4LDE1MywxMjVdLCJjaXBoZXIiOlsyNTEsMTA4LDczLDEyNCwxODUsNzgsMjA0LDkwLDExMyw3NywyMDksMTc4LDEzLDQ0LDE1OSw0OSwxLDE5NiwxMTAsNTQsMTU1LDExOSw5Nyw1MSwxMDcsMTUwLDE2LDI4LDc4LDE3MiwyMTEsMTM5LDk1LDg3LDEzNywxNDUsNjgsNTUsNjEsNzcsMTcsMTUyLDE1NywyNiwxNTcsMjMzLDI0OCwyMjEsODksMTIxLDkyLDkwLDEzNCwyNiwyMzksNzFdfQ==","secrets":{"primary_keybundle:enc_key":{"blob_type":"EncryptingKey","seed_type":"Mock","hint":"","data":"eyJzYWx0IjpbOTgsMTE1LDIzNSwxMzksMTM5LDIyNywxOTYsMTY4LDIxNSwxOTIsMTg5LDI1MywxMDksMjAsNDgsMTQwXSwibm9uY2UiOlsyMzEsMjMsMzAsMTg4LDI1MCwxMCwyMjgsMTMxLDcsMTgsMjQ0LDEwLDgxLDEyNCw4OCwxMzQsMTM1LDE3OCw0OSwyLDE0MywzNSwyNDAsMTUzXSwiY2lwaGVyIjpbMzYsMjQ1LDI0MCwxNzUsMjA4LDgwLDY4LDE3MiwxNzgsMjEsOTksNjcsMjAwLDI0NCw5NywyMTQsMTA1LDMxLDcsMTIxLDE2NSwyMTksMjQ5LDE5OSwxNTYsNDksNDksMTkzLDE1LDk4LDE4LDIwNiwyMDMsMzEsMTE1LDEyMSwxMzEsMTcxLDM2LDIzMiw0NCwxMjcsMTExLDIwMiwyMDIsMjUzLDIyNiwyMywyMzAsMTc0LDQxLDE0LDE3NSw2NywyNCwyMzAsMjIwLDY0LDIxNiw1MSwxNjMsOTksMjI2LDM2LDI0NywzMSwxODMsMTkxLDIzNywzOCwyMDEsMjIyLDE0MywyMDYsMTQ5LDEwMCwxNjQsMTQ3LDExMiwyMzYsMTI5LDIzLDI1NSwzLDEzMCw5MiwyMzEsOTNdfQ=="},"primary_keybundle:sign_key":{"blob_type":"SigningKey","seed_type":"Mock","hint":"","data":"eyJzYWx0IjpbMTAwLDcsMzgsOTQsMjUsMjI3LDE3Myw3MCwxMzMsOTMsMjE3LDksMjUwLDE4NSwxNjEsMjM2XSwibm9uY2UiOlsxNDcsMTU0LDE4OCwxNSwyNDMsMTAxLDQwLDExMCwxOSwxMDQsMjUzLDMsMjE1LDEyOSw0NiwxMDQsMTcsMTQ4LDIxNiwzOSw3LDYwLDIwNiwyMDRdLCJjaXBoZXIiOlsyNDYsNDMsMTgsOTcsMTI4LDMwLDE3OCw4MCwxMzUsMTQ4LDIzNCwxMiwzMSwxNDIsMTc2LDU5LDk5LDI0NSwyMDUsMTQwLDE1NCwyMTksMjA5LDQ5LDE0OCwxMiwxOTUsOTEsMTEyLDIwOCwxMDAsMTc1LDIyMiw2NywxNzAsMzEsMjA0LDUwLDIxMSw0NSwxNyw4NSw0NSw1NSwyNiwzMCwxMzAsNDQsNCw1NiwxMyw5MywzOSwyMzksMTM5LDIyNywyNTAsNywyNTQsNzMsMTQ5LDE1NiwyMDEsMTA3LDc5LDEyNCwyMzIsMCwxNzMsMjEwLDM0LDEsMTIzLDE0MywyNTIsMzgsMTEzLDEyOSwyMTAsMTU2LDIzNSw2Nyw2LDc0LDQ5LDI1MywxNSwyMzMsMTA2LDE0MiwyMjEsNjksMTU3LDI0Nyw5NiwxNzEsMTk5LDE4LDE3LDI0OCwxMzEsMjMyLDkwLDg5LDY4LDEwMiwxODMsMzksMjEwLDI1MCw0NywyMDcsMjMyLDE4NSwzNiwxOTgsMjMsMyw0LDEwOV19"},"root_seed":{"blob_type":"Seed","seed_type":"OneShot","hint":"","data":"eyJzYWx0IjpbOTAsMywxNTgsMTg4LDE2OCwyMTUsMTEwLDQ5LDEyMiwyMjAsNzYsMjE1LDE4OCwxMDcsMTAyLDc5XSwibm9uY2UiOls1NywxMSwxOTEsMTIsOTYsMTg2LDYxLDI0OSwxMDEsMTM0LDEyNywyNDAsMjQ1LDI1NSwxMDIsMTk1LDE1OSwyNTIsNjEsMzAsNTksMTA5LDE1OCwxMTddLCJjaXBoZXIiOlsyNDAsMjQ2LDE0LDE2NywxMTMsMjA5LDY0LDYsMjI5LDYzLDE4Niw5NiwxOTcsNDIsMTMzLDE1MCw0NSw0MSw0OCwyMjcsMjU1LDE3MywyNDIsNzgsOTgsMTc2LDE1OCwyMCwxMjEsOTYsMTc0LDE5NywyMjUsNTQsMTA4LDI0LDcsNDAsMSwxNiwxMDUsOCwyMywxMDcsMjQsMjI4LDExNSwxODddfQ=="}}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
[[dnas]] | ||
id = "marketplace-dna" | ||
file = "./dist/holo-barcelona-hackathon.dna.json" | ||
hash = "QmDontCheck" | ||
|
||
|
||
|
||
|
||
[[agents]] | ||
id = "test_agent1" | ||
name = "HoloTester1" | ||
public_address = "HcScjcgKqXC5pmfvka9DmtEJwVr548yd86UPtJGGoue9ynuikuRTN7oE5zcjgbi" | ||
keystore_file = "./agent1.keystore" | ||
|
||
[[agents]] | ||
id = "test_agent2" | ||
name = "HoloTester2" | ||
public_address = "HcScidPSdAT43q9qirJwt5rHJYjjsvougV3jgSBwdJujszw3bBu5Mktr74Rgnea" | ||
keystore_file = "./agent2.keystore" | ||
|
||
|
||
|
||
|
||
[[instances]] | ||
id = "instance1" | ||
dna = "marketplace-dna" | ||
agent = "test_agent1" | ||
[instances.storage] | ||
type = "memory" | ||
path = "tmp-storage" | ||
|
||
[[instances]] | ||
id = "instance2" | ||
dna = "marketplace-dna" | ||
agent = "test_agent2" | ||
[instances.storage] | ||
type = "memory" | ||
path = "tmp-storage" | ||
|
||
|
||
|
||
|
||
[[interfaces]] | ||
id = "http-interface1" | ||
[interfaces.driver] | ||
type = "http" | ||
port = 3000 | ||
[[interfaces.instances]] | ||
id = "instance1" | ||
[[interfaces.instances]] | ||
id = "instance2" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
use hdk::holochain_json_api::{ | ||
error::JsonError, json::JsonString, | ||
}; | ||
|
||
#[derive(Clone, Debug, Serialize, Deserialize, DefaultJson, PartialEq)] | ||
pub enum ActionType { | ||
Buy | ||
} | ||
|
||
impl ActionType { | ||
pub fn describe() -> Vec<ActionType> { | ||
vec![ | ||
ActionType::Buy, | ||
] | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
pub mod state; | ||
pub mod validation; | ||
pub mod actions; | ||
|
||
pub use self::{ | ||
state::{ | ||
TradeState, | ||
}, | ||
actions::{ | ||
ActionType, | ||
}, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
use hdk::holochain_json_api::{ | ||
error::JsonError, json::JsonString, | ||
}; | ||
|
||
use crate::trade_action::Action; | ||
use crate::trade::Trade; | ||
use super::{ | ||
// Actions::Piece, | ||
ActionType, | ||
validation::{get_current_role}, | ||
}; | ||
|
||
#[derive(Clone, Debug, Serialize, Deserialize, DefaultJson)] | ||
pub struct TradeState { | ||
pub actions: Vec<Action>, | ||
// pub buyer: Address, | ||
// pub seller: Address, | ||
pub sold: bool, | ||
} | ||
|
||
impl TradeState { | ||
pub fn initial() -> Self { | ||
TradeState { | ||
actions: Vec::new(), | ||
sold: false, | ||
} | ||
} | ||
|
||
pub fn render(&self) -> String { | ||
"".to_string() | ||
} | ||
|
||
pub fn evolve(&self, trade: Trade, next_action: &Action) -> Self { | ||
let _current_role = get_current_role(&trade, &next_action.author).unwrap(); | ||
let mut actions = self.clone().actions.clone(); | ||
actions.push(next_action.to_owned()); | ||
|
||
match &next_action.action_type { | ||
ActionType::Buy => { | ||
TradeState { | ||
actions, | ||
sold: true, | ||
..self.clone() | ||
} | ||
} | ||
} | ||
|
||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
use hdk::holochain_persistence_api::{ | ||
cas::content::Address, | ||
}; | ||
|
||
use crate::Trade; | ||
use crate::trade_action::Action; | ||
use super::{ | ||
TradeState, | ||
ActionType, | ||
}; | ||
|
||
pub enum Role { | ||
Buyer, | ||
Seller, | ||
} | ||
|
||
pub fn get_current_role(trade: &Trade, user_address: &Address) -> Result<Role, String> { | ||
// FIXME | ||
match (user_address == &trade.buyer, user_address == &trade.seller) { | ||
(true, true) => return Err("Buyer cannot be seller".into()), | ||
(true, false) => Ok(Role::Buyer), | ||
(false, true) => Ok(Role::Seller), | ||
(false, false) => return Err("User is not participant of the trade!".into()), | ||
} | ||
} | ||
|
||
impl Action { | ||
pub fn is_valid(&self, trade: Trade, trade_state: TradeState) -> Result<(), String> { | ||
hdk::debug(format!("{:?}", trade_state)).unwrap(); | ||
let _current_role = get_current_role(&trade, &self.author)?; | ||
|
||
// move type specific validation | ||
match &self.action_type { | ||
ActionType::Buy => { | ||
// TODO: Check is not bought | ||
is_sold(&trade_state)?; | ||
// from.is_in_bounds()?; | ||
// to.is_in_bounds()?; | ||
// from.is_piece_beloning_to_player(¤t_role, &trade_state)?; | ||
// to.is_empty(&trade_state)?; | ||
// from.can_move_to(to, ¤t_role, &trade_state)?; | ||
hdk::debug("Validation Success!").unwrap(); | ||
Ok(()) | ||
} | ||
} | ||
} | ||
} | ||
|
||
fn is_sold(trade_state: &TradeState) -> Result<bool, String> { | ||
match trade_state.sold { | ||
false => Ok(true), | ||
true => Err("Item is sold".to_string()), | ||
} | ||
} |
Oops, something went wrong.