Skip to content

Commit

Permalink
Merge branch 'master' of github.com:hyperledger/indy-node into merge-…
Browse files Browse the repository at this point in the history
…check
  • Loading branch information
michaeldboyd committed Jan 3, 2019
2 parents 51306ba + 9664d94 commit 007c0fb
Show file tree
Hide file tree
Showing 91 changed files with 1,931 additions and 767 deletions.
38 changes: 35 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Hyperledger Indy Node Release Notes

* [1.6.82](#1682)

* [1.6.80](#1680)

* [1.6.79](#1679)
Expand Down Expand Up @@ -32,7 +34,27 @@

Although every attempt has been made to make this information as accurate as possible, please know there may be things that are omitted, not fully developed yet, or updates since this publication that were not included in the information below. Only the most pressing or significant items have been listed. For the entire list of tickets and or specific information about any given item, please visit the list at [Hyperleder Indy's Jira](https://jira.hyperledger.org/). Once logged in, simply navigate to Projects > Indy.

## 1.6.80
## 1.6.82
### Release date: Dec 20th, 2018

### Component Version Information
| Components | Version Numbers |
| --- | --- |
| indy-plenum | 1.6.57 |
| indy-node | 1.6.82 |

### Additional Information:
**There are possible OOM issues during 3+ hours of target load or large catch-ups at 8 GB RAM nodes pool so 32 GB is recommended.**

### Changes - Additions
| Description | Additional Information | Ticket Number |
| --- | --- | --- |
| Add old instance change messages discarding | | [INDY-1909](https://jira.hyperledger.org/browse/INDY-1909) |
| Increase ToleratePrimaryDisconnection and bind re-try time | | [INDY-1836](https://jira.hyperledger.org/browse/INDY-1836) |
| Add check for None of replica's primary name during logging | | [INDY-1926](https://jira.hyperledger.org/browse/INDY-1926) |

## 1.6.80
### Release date: Dec 13th, 2018

### Component Version Information
| Components | Version Numbers |
Expand All @@ -51,6 +73,7 @@ Although every attempt has been made to make this information as accurate as pos
| Fix throughput class creation bug | | [INDY-1888](https://jira.hyperledger.org/browse/INDY-1888) |

## 1.6.79
### Release date: Dec 6th, 2018

### Component Version Information

Expand Down Expand Up @@ -133,6 +156,7 @@ Although every attempt has been made to make this information as accurate as pos
No further action is required

## 1.6.78
### Release date: Oct 18th, 2018

### Component Version Information

Expand Down Expand Up @@ -173,8 +197,8 @@ No further action is required
| Test domain transactions with FEEs. | | [INDY-1661](https://jira.hyperledger.org/browse/INDY-1661) |
| 3PC Batch should preserve the order of requests when applying PrePrepare on non-primary. | | [INDY-1642](https://jira.hyperledger.org/browse/INDY-1642) |
| Ability to switch off (remove) replicas with no changes of F value. | | [INDY-1680](https://jira.hyperledger.org/browse/INDY-1680) |
| A node should be able to participate in BLS multi-signature only if it has a valid proof of posession. | | [INDY-1589](https://jira.hyperledger.org/browse/INDY-1589) |
| Make validator info as a hystorical data. | | [INDY-1637](https://jira.hyperledger.org/browse/INDY-1637) |
| A node should be able to participate in BLS multi-signature only if it has a valid proof of possession. | | [INDY-1589](https://jira.hyperledger.org/browse/INDY-1589) |
| Make validator info as a historical data. | | [INDY-1637](https://jira.hyperledger.org/browse/INDY-1637) |
| | | | |
| **Known Issue:** Upgrade failed on pool from 1.3.62 to 1.4.66. Note that INDY-1447 was fixed in indy-node 1.5.68, but it still presents in indy-node 1.3.62 and 1.4.66 code. | **So, some of the nodes may not to be upgraded during simultaneous pool-upgrade.** If this problem will appear, stewards should perform manual upgrade of indy-node in accordance with this [instruction:](https://docs.google.com/document/d/1vUvbioL5OsmZMSkwRcu0p0jdttJO5VS8K3GhDLdNaoI)**(!)** To reduce the risk of reproducing INDY-1447, it is **recommended to use old CLI for pool upgrade.** | [INDY-1447](https://jira.hyperledger.org/browse/INDY-1447) |
| | | | |
Expand All @@ -193,6 +217,7 @@ No further action is required


## 1.6.73
### Release date: Sep 5th, 2018

**Important:** Several iterations were done very rapidly between the last release and this one. All of the changes, upgrades, etc... are included in this new release. Simply upgrading will include them all from 1.6.70 until 1.6.73. To see further, specific numerous changes, please reference the appropriate tickets in the [Hyperledger Jira ticketing system.](https://jira.hyperledger.org/)

Expand Down Expand Up @@ -247,6 +272,7 @@ No further action is required


## 1.6.70
### Release date: Aug 14th, 2018

### Component Version Information

Expand Down Expand Up @@ -373,6 +399,7 @@ For more details about txn format changes see INDY-1421.**


## 1.4.66
### Release date: Jul 2nd, 2018


### Component Version Information
Expand Down Expand Up @@ -481,6 +508,7 @@ Use https://github.com/hyperledger/indy-sdk/blob/b4a2bb82087e2eafe5e55bddb20a306


## 1.3.62
### Release date: May 22th, 2018


### Component Version Information
Expand Down Expand Up @@ -579,6 +607,7 @@ None at this time.


## 1.3.55
### Release date: Feb 28th, 2018

**Important: Upgrade to this version should be performed simultaneously for all nodes (with `force=True`).**

Expand Down Expand Up @@ -657,6 +686,7 @@ Node promoting is not recommended for 1.3.52 version according to known issues b
As mentioned above, upgrade to this version should be performed simultaneously for all nodes (with `force=True`).

## 1.2.50
### Release date: Dec 18th, 2017


### Component Version Information
Expand Down Expand Up @@ -849,6 +879,7 @@ The genesis files are now located in their own directory based off the network n


## 1.1.43
### Release date: Oct 24th, 2017


### Component Version Information
Expand All @@ -873,6 +904,7 @@ The genesis files are now located in their own directory based off the network n
| | | | |

## 1.1.37
### Release date: Sep 26th, 2017


### Component Version Information
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Indy has its own distributed ledger based on RBFT.
This code is independent from but commonly associated with [The Sovrin Foundation](https://sovrin.org). The Sovrin Foundation is a public utility
for identity, built on top of this codebase. People who install sovrin packages (e.g., with
`sudo apt install sovrin`) get prepackaged genesis transactions that integrate
with an Indy validator pool using [Sovrin's governance and trust framework](https://sovrin.org/wp-content/uploads/2017/06/SovrinProvisionalTrustFramework2017-03-22.pdf). However, it is possible to use Indy Node
with an Indy validator pool using [Sovrin's governance and trust framework](https://sovrin.org/wp-content/uploads/2018/03/Sovrin-Provisional-Trust-Framework-2017-06-28.pdf). However, it is possible to use Indy Node
with a different network, using whatever conventions a community chooses.

##### Getting Started Guide
Expand Down Expand Up @@ -95,7 +95,7 @@ to understand what needs to be done to create a Network, initialize and start No

The described process is automated in one of the ways below (it allow to install a test Network):

- **Docker** [Start Pool and Client with Docker](environment/docker/pool/README.md)
- **Docker** [Start Pool with Docker](environment/docker/pool/README.md)

- **Docker-based pool using with new libindy-based CLI**:
- [Start Pool Locally](https://github.com/hyperledger/indy-sdk/blob/master/README.md#how-to-start-local-nodes-pool-with-docker)
Expand Down
Binary file added design/request_management.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
92 changes: 92 additions & 0 deletions design/request_management.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
@startuml
class RequestManager{
static_validation(request: Request)
dynamic_validation(request: Request)
}

class WriteRequestManager{
List<WriteRequestHandler>
List<BatchRequestHandler>
}

class ReadRequestManager{
List<ReadRequestHandler>
}

class ActionRequestManager{
List<ActionRequestHandler>
}

class WriteRequestManager{
apply_request(request: Request, batch_ts)
commit_batch(txn_count, state_root, txn_root, pp_time)
post_batch_applied(state_root)
post_batch_rejected()
}

class WriteRequestHandler{
apply_request(request: Request, batch_ts)
}

class BatchRequestHandler{
database_manager: DatabaseManager
ledger_id: int
commit_batch(txn_count, state_root, txn_root, pp_time)
post_batch_applied(state_root)
post_batch_rejected()
}

class ReadRequestManager{
get_result(request: Request)
}

class ReadRequestHandler{
get_result(request: Request)
}

class ActionRequestManager{
process_action(request: Request)
}

class ActionRequestHandler{
process_action(request: Request)
}

class RequestHandler{
database_manager: DatabaseManager
txn_type: int
ledger_id: int
static_validation(request: Request)
dynamic_validation(request: Request)
}

RequestHandler <|-- ActionRequestHandler
RequestHandler <|-- ReadRequestHandler
RequestHandler <|-- WriteRequestHandler

RequestManager <|-- WriteRequestManager
RequestManager <|-- ReadRequestManager
RequestManager <|-- ActionRequestManager

BatchRequestHandler <|-- DomainBatchReqHandler
BatchRequestHandler <|-- PoolBatchReqHandler
BatchRequestHandler <|-- ConfigBatchReqHandler

WriteRequestManager o-- WriteRequestHandler
WriteRequestManager o-- BatchRequestHandler

ReadRequestManager o-- ReadRequestHandler

ActionRequestManager o-- ActionRequestHandler

WriteRequestHandler<|-- NymHandler
WriteRequestHandler<|-- NodeHandler
WriteRequestHandler<|-- AttributteHandler
WriteRequestHandler<|-- SchemaHandler

ReadRequestHandler<|-- GetTxnHandler
ReadRequestHandler<|-- GetNymHandler

ActionRequestHandler <|-- PoolRestartHandler
ActionRequestHandler <|-- ValidatorInfoHandler
@enduml
2 changes: 2 additions & 0 deletions docs/source/start-nodes.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Create a Network and Start Nodes

Please be aware that recommended way of starting a pool is to [use Docker](https://github.com/hyperledger/indy-node/blob/master/environment/docker/pool/README.md).

In order to run your own Network, you need to do the following for each Node:
1. Install Indy Node
- A recommended way for ubuntu is installing from deb packages
Expand Down
21 changes: 0 additions & 21 deletions environment/docker/pool/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,6 @@ Defaults:
* Number of clients is 10
* Ports are generated consequently starting from 9701

# Start client
```
./client_for_pool_start.sh [file with pool data] [client's IP address] [number of clients]
```
Defaults:
* File is pool_data
* IP address is the next in sequence of IP addresses read from pool data (e.g. 10.0.0.6)
* Number of clients is 10

Container is retained after indy shell is closed. Executing ```client_stop.sh``` removes the container.

# Start agents (optional)

If you are planning to run the Indy Tutorial (about Alice, her transcripts, job, and bank), start the organization Indy Agents using the instructions in [StartIndyAgents.md](StartIndyAgents.md) in this folder.

# Stop pool
```
./pool_stop.sh [file with pool data] [pool network name]
Expand All @@ -37,12 +22,6 @@ Defaults:
* File is pool_data
* Network name is pool-network

# Stop client
```
./client_stop.sh
```
Stopping the indy client removes the client container.

# Running on Windows using git bash

Using the git bash shell is a productive command line for those familiar with Unix/Linux to run applications/environments on Windows. However, git bash can create problems with pathnames, and does so with this application. Specifcally, by default git bash converts absolute path names to a Windows equivalent path name (e.g. C:\\...), which is helpful if it is expected by an app, but not always - and rarely with Docker. In particular, [it's not helpful with Docker](https://github.com/moby/moby/issues/24029) volume mounting on docker run and build commands. The Indy test scripts - client_build.sh, node_build.sh, client_start.sh and node_start.sh are all affected by this. When just run, docker build/run commands error off with messages like:
Expand Down
19 changes: 12 additions & 7 deletions indy_common/authorize/auth_actions.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@ def get_action_id(self):


class AuthActionAdd(AbstractAuthAction):
def __init__(self, txn_type, field=None, value=None, is_owner=True):
def __init__(self, txn_type, field=None, value=None, is_owner: bool=True):
self.txn_type = txn_type
self.field = field
self.value = value
self.field = str(field) if field is not None else ''
self.value = str(value) if value else ''
self.is_owner = is_owner

def get_action_id(self):
Expand All @@ -59,11 +59,16 @@ def get_action_id(self):


class AuthActionEdit(AbstractAuthAction):
def __init__(self, txn_type, field=None, old_value=None, new_value=None, is_owner=True):
def __init__(self,
txn_type,
field=None,
old_value=None,
new_value=None,
is_owner: bool=True):
self.txn_type = txn_type
self.field = field
self.old_value = old_value
self.new_value = new_value
self.field = str(field) if field is not None else ''
self.old_value = str(old_value) if old_value is not None else ''
self.new_value = str(new_value) if new_value is not None else ''
self.is_owner = is_owner

def get_action_id(self):
Expand Down
15 changes: 10 additions & 5 deletions indy_common/authorize/auth_cons_strategies.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@


class AbstractAuthStrategy(metaclass=ABCMeta):
def __init__(self, auth_map):
def __init__(self, auth_map, anyone_can_write_map={}):
self.auth_map = auth_map
self.anyone_can_write_map = anyone_can_write_map

@abstractmethod
def get_auth_constraint(self, action_id) -> AbstractAuthConstraint:
raise NotImplementedError()

@abstractmethod
def _find_auth_constraint_key(self, action_id):
def _find_auth_constraint_key(self, action_id, auth_map):
raise NotImplementedError()

@staticmethod
Expand All @@ -39,11 +40,15 @@ def is_accepted_action_id(from_auth_map, from_req):
class LocalAuthStrategy(AbstractAuthStrategy):

def get_auth_constraint(self, action_id) -> AbstractAuthConstraint:
am_id = self._find_auth_constraint_key(action_id)
if self.anyone_can_write_map:
am_id = self._find_auth_constraint_key(action_id, self.anyone_can_write_map)
if am_id:
return self.anyone_can_write_map.get(am_id)
am_id = self._find_auth_constraint_key(action_id, self.auth_map)
return self.auth_map.get(am_id)

def _find_auth_constraint_key(self, action_id):
for am_id in self.auth_map.keys():
def _find_auth_constraint_key(self, action_id, auth_map):
for am_id in auth_map.keys():
if self.is_accepted_action_id(am_id, action_id):
return am_id

Expand Down
Loading

0 comments on commit 007c0fb

Please sign in to comment.