From bae657d4d47593ebde4f951085f326aabab264be Mon Sep 17 00:00:00 2001
From: Philipp Schlarb
Date: Thu, 19 Aug 2021 13:16:11 +0200
Subject: [PATCH 01/31] updated dev setup for ubuntu 16 and setup-dev.md
Signed-off-by: Philipp Schlarb
---
dev-setup/ubuntu/init-dev-project.sh | 3 ++-
dev-setup/ubuntu/setup-dev-python.sh | 5 ++---
docs/source/setup-dev.md | 18 ++++++++++++++----
3 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/dev-setup/ubuntu/init-dev-project.sh b/dev-setup/ubuntu/init-dev-project.sh
index 014c030a4..ec788d04e 100755
--- a/dev-setup/ubuntu/init-dev-project.sh
+++ b/dev-setup/ubuntu/init-dev-project.sh
@@ -21,7 +21,8 @@ echo "Created virtual environment"
echo "Installing indy-node..."
pushd indy-node
-pip install -e .[tests]
+pip install pyzmq
+pip install --use-deprecated legacy-resolver -e .[tests]
popd
echo "Installed indy-node..."
diff --git a/dev-setup/ubuntu/setup-dev-python.sh b/dev-setup/ubuntu/setup-dev-python.sh
index b849b731f..a146edb5f 100755
--- a/dev-setup/ubuntu/setup-dev-python.sh
+++ b/dev-setup/ubuntu/setup-dev-python.sh
@@ -4,12 +4,11 @@ set -e
echo 'Installing python 3.5 and pip...'
sudo apt-get update
sudo apt-get install -y software-properties-common python-software-properties
-sudo add-apt-repository ppa:deadsnakes/ppa
-sudo apt-get update
-sudo apt-get install -y python3.5 python3-pip python3.5-dev
+sudo apt-get install -y python3.5 python3-pip python3.5-dev virtualenvwrapper
echo 'Installed python 3.5 and pip...'
echo 'Installing virtualenvwrapper'
+sudo -H pip3 install pbr importlib-metadata==1.7.0
sudo -H pip3 install virtualenvwrapper
echo '' >> ~/.bashrc
echo '# Python virtual environment wrapper' >> ~/.bashrc
diff --git a/docs/source/setup-dev.md b/docs/source/setup-dev.md
index b90d188c7..f1badde05 100644
--- a/docs/source/setup-dev.md
+++ b/docs/source/setup-dev.md
@@ -23,7 +23,7 @@ You can also have a look at the scripts mentioned below to follow them and perfo
1. Go to the destination folder for the project
1. Run `init-dev-project.sh ` to clone indy-plenum and indy-node projects and
create a virtualenv to work in
-1. Activate new virtualenv `workon `
+1. Activate new virtualenv `workon ` if not activated
1. [Optionally] Install Pycharm
1. [Optionally] Open and configure projects in Pycharm:
- Open both indy-plenum and indy-node in one window
@@ -57,11 +57,10 @@ and virtual environment on Ubuntu, or follow the detailed instructions below.
##### Ubuntu
-1. Run ```sudo add-apt-repository ppa:deadsnakes/ppa```
-2. Run ```sudo apt-get update```
+1. Run ```sudo apt-get update```
-3. On Ubuntu 14, run ```sudo apt-get install python3.5``` (python3.5 is pre-installed on most Ubuntu 16 systems; if not, do it there as well.)
+2. On Ubuntu 14, run ```sudo apt-get install python3.5``` (python3.5 is pre-installed on most Ubuntu 16 systems; if not, do it there as well.)
##### CentOS/Redhat
@@ -172,6 +171,7 @@ source /bin/activate
Optionally, you can install virtual environment wrapper as follows:
```
+apt install virtualenvwrapper
pip3 install virtualenvwrapper
echo '' >> ~/.bashrc
echo '# Python virtual environment wrapper' >> ~/.bashrc
@@ -195,6 +195,13 @@ Navigate to the root directory of the source (for each project) and install requ
```
pip install -e .[tests]
```
+If pip is complaining about not finding a distribution for indy and missmatching metadata, try ```pip install --use-deprecated legacy-resolver -e .[tests]```.
+
+```
+https://files.pythonhosted.org/packages/61/8c/91a004be0934f4cb3dd9a6a0cc91d46046e67ddb678e440562b26040230e/python3-indy-1.15.0-dev-1618.tar.gz#sha256=eb61e5aa1f64c299dadd74bcf7f30e2bcde6df18aa51491f5a8d4530d64b4b53 (from indy-node==1.13.0.dev0) has different version in metadata: '1.15.0'
+ERROR: Could not find a version that satisfies the requirement python3-indy==1.15.0-dev-1618 (from indy-node[tests])
+ERROR: No matching distribution found for python3-indy==1.15.0-dev-1618
+```
If you are working with both indy-plenum and indy-node, then please make sure that both projects are installed with -e option,
and not from pypi (have a look at the sequence at `init-dev-project.sh`).
@@ -203,3 +210,6 @@ and run tests
```
pytest .
```
+
+The test may file with a too many open files error.
+If that happens check and set your limits with```ulimit```.
From 953cace936c47a7775e9b72ae41cab8ac82fe12f Mon Sep 17 00:00:00 2001
From: udosson
Date: Mon, 13 Sep 2021 15:14:23 +0200
Subject: [PATCH 02/31] fix uploading of deb files with the same name but
different distribution
Signed-off-by: udosson
---
.github/actions/publish-deb/publishPackages | 2 +-
.github/actions/publish-deb/upload-spec.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/actions/publish-deb/publishPackages b/.github/actions/publish-deb/publishPackages
index 449d7e31a..76d7fe868 100755
--- a/.github/actions/publish-deb/publishPackages
+++ b/.github/actions/publish-deb/publishPackages
@@ -26,7 +26,7 @@ for name in ${fileList}; do
jfrog rt u \
--deb ${distribution}/${component}/${architecture} \
--spec ${uploadSpec}\
- --spec-vars "SOURCE_DIR=${sourceDirectory};PACKAGE_NAME=${name};COMPONENT=${component};PACKAGE_STARTING_LETTER=${startingLetter};PACKAGE_SHORT_NAME=${shortName}" \
+ --spec-vars "SOURCE_DIR=${sourceDirectory};PACKAGE_NAME=${name};COMPONENT=${component};PACKAGE_STARTING_LETTER=${startingLetter};PACKAGE_SHORT_NAME=${shortName};DISTRIBUTION=${distribution}" \
--detailed-summary
echo "====================================================================================================================="
echo
diff --git a/.github/actions/publish-deb/upload-spec.json b/.github/actions/publish-deb/upload-spec.json
index e5db11c58..d98c56a72 100644
--- a/.github/actions/publish-deb/upload-spec.json
+++ b/.github/actions/publish-deb/upload-spec.json
@@ -2,7 +2,7 @@
"files": [
{
"pattern": "${SOURCE_DIR}/${PACKAGE_NAME}",
- "target": "indy/pool/${COMPONENT}/${PACKAGE_STARTING_LETTER}/${PACKAGE_SHORT_NAME}/"
+ "target": "indy/pool/${DISTRIBUTION}/${COMPONENT}/${PACKAGE_STARTING_LETTER}/${PACKAGE_SHORT_NAME}/"
}
]
}
\ No newline at end of file
From 75c13515dcf119f0f3376192a2e3a9de0b7d1912 Mon Sep 17 00:00:00 2001
From: Robin Klemens <39259938+udosson@users.noreply.github.com>
Date: Mon, 13 Sep 2021 18:23:43 +0200
Subject: [PATCH 03/31] Update version of Indy SKD
Update version of Indy SDK to the same version used in Indy-Plenum which is at python3-indy==1.15.0-dev-1625
Signed-off-by: udosson
---
setup.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/setup.py b/setup.py
index 76583685d..253c32c45 100644
--- a/setup.py
+++ b/setup.py
@@ -28,7 +28,7 @@
BASE_DIR = os.path.join(os.path.expanduser("~"), ".indy")
tests_require = ['attrs==19.1.0', 'pytest==3.3.1', 'pytest-xdist==1.22.1', 'pytest-forked==0.2',
- 'python3-indy==1.15.0-dev-1618', 'pytest-asyncio==0.8.0']
+ 'python3-indy==1.15.0-dev-1625', 'pytest-asyncio==0.8.0']
setup(
name=metadata['__title__'],
From 2a19753733c6c082960d00d174fc017e437a6587 Mon Sep 17 00:00:00 2001
From: udosson
Date: Thu, 14 Oct 2021 17:26:16 +0200
Subject: [PATCH 04/31] added tag to pull of lint image
Signed-off-by: udosson
---
.github/workflows/build.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 466667309..d620457cd 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -259,7 +259,7 @@ jobs:
needs: [workflow-setup, lint-image]
runs-on: ubuntu-20.04
container:
- image: ghcr.io/${{ needs.workflow-setup.outputs.GITHUB_REPOSITORY_NAME }}/node-lint
+ image: ghcr.io/${{ needs.workflow-setup.outputs.GITHUB_REPOSITORY_NAME }}/node-lint:ubuntu-18-04
steps:
- name: Check out code
uses: actions/checkout@v2
From 0aff581eefc56036b7d2cfd645bb12e56a27ab85 Mon Sep 17 00:00:00 2001
From: pSchlarb
Date: Thu, 28 Oct 2021 10:27:02 +0200
Subject: [PATCH 05/31] LF Endings
Signed-off-by: pSchlarb
---
...3-01-identity-owner-anyone-can-write.batch | 264 ++++++++---------
.../indy-cli-batches/AS-03-01-steward.batch | 272 +++++++++---------
2 files changed, 268 insertions(+), 268 deletions(-)
diff --git a/acceptance/indy-cli-batches/AS-03-01-identity-owner-anyone-can-write.batch b/acceptance/indy-cli-batches/AS-03-01-identity-owner-anyone-can-write.batch
index 03a429316..fbb211095 100644
--- a/acceptance/indy-cli-batches/AS-03-01-identity-owner-anyone-can-write.batch
+++ b/acceptance/indy-cli-batches/AS-03-01-identity-owner-anyone-can-write.batch
@@ -1,133 +1,133 @@
-# setup environment
-- pool create AS-0301-owner gen_txn_file=./pool_transactions_genesis
-pool connect AS-0301-owner
-- wallet create AS-03-wallet-owner key=testkey storage_config={"pool":"AS-0301-owner"}
-wallet open AS-03-wallet-owner key=testkey
-#################
-# setup section #
-#################
-did new seed=000000000000000000000000Trustee1 metadata="Default Trustee"
-did new seed=TestTrustee100000000000000000003 metadata="test trustee 1"
-did new seed=TestTrustee200000000000000000003 metadata="test trustee 2"
-did new seed=TestSteward100000000000000000003 metadata="test steward 1"
-# did new seed=TestSteward300000000000000000003 metadata="test steward 3"
-did new seed=TestSteward200000000000000000003 metadata="test steward 2"
-did new seed=TestEndorser10000000000000000003 metadata="test endorser 1"
-did new seed=TestEndorser20000000000000000003 metadata="test endorser 2"
-did new seed=TestEndorser30000000000000000003 metadata="test endorser 3"
-did new seed=RandomUser1000000000000000000003 metadata="test identity 1"
-did new seed=RandomUser2000000000000000000003 metadata="test identity 2"
-did new seed=RandomUser3000000000000000000003 metadata="test identity 3"
-did new seed=NetworkMonitor000000000000000001 metadata="network monitor 1"
-did new seed=NetworkMonitor000000000000000002 metadata="network monitor 2"
-did new seed=NetworkMonitor000000000000000003 metadata="network monitor 3"
-# AS Trustee CREATE Steward (steward1)
-did use V4SGRU86Z58d6TV7PBUe6f
-ledger nym did=AhqUV2zHYdNaWLFCCe7xCn role=STEWARD verkey=~YUY2ChUGWJovtU6XTn61D8
-- ledger get-nym did=AhqUV2zHYdNaWLFCCe7xCn
-# AS Trustee CREATE NetworkMonitor (network monitor 1)
-did use V4SGRU86Z58d6TV7PBUe6f
-ledger nym did=GSoagH52cX69hnn7npUTWy role=NETWORK_MONITOR verkey=~5JEp1pUJbzD1YqimvA6hk6
-- ledger get-nym did=GSoagH52cX69hnn7npUTWy
-# AS Trustee CREATE NetworkMonitor (network monitor 2) and blacklist it
-did use V4SGRU86Z58d6TV7PBUe6f
-ledger nym did=CjPA39BhAVG5d3mV2ZEAYE role=NETWORK_MONITOR verkey=~MnEdozF43zQFRdZLN25mya
-ledger nym did=CjPA39BhAVG5d3mV2ZEAYE role=
-- ledger get-nym did=CjPA39BhAVG5d3mV2ZEAYE
-# AS Trustee CREATE Endorser (endorser1)
-did use V4SGRU86Z58d6TV7PBUe6f
-ledger nym did=DriVwCMbtEgkmoEHKin6Ah role=ENDORSER verkey=~YPZot1kM4DLwvsX6mtcKd9
-- ledger get-nym did=DriVwCMbtEgkmoEHKin6Ah
-# AS Trustee CREATE IdentityOwner (user1)
-did use V4SGRU86Z58d6TV7PBUe6f
-ledger nym did=LBbKEeczA9iL21p4Kgxcuf verkey=~3ZvjdaYs4cdFYXAwNGR85p
-- ledger get-nym did=LBbKEeczA9iL21p4Kgxcuf
-################
-# test section #
-################
-### Actions with NYMs ###
-# #1.1 AS IdentityOwner REMOVE Trustee (FAIL)
-did use LBbKEeczA9iL21p4Kgxcuf
-- ledger nym did=V4SGRU86Z58d6TV7PBUe6f role=
-# #1.2 CHECK Trustee IS VALID
-did use V4SGRU86Z58d6TV7PBUe6f
-ledger nym did=CYdQe2tmSwhv2XdicegoAn role=TRUSTEE verkey=~E7MjQHm14YnmZD9RErTBsi
-- ledger get-nym did=CYdQe2tmSwhv2XdicegoAn
-# #2 AS IdentityOwner CREATE Trustee (trustee1) (FAIL)
-did use LBbKEeczA9iL21p4Kgxcuf
-- ledger nym did=FiAsNdcWnpB2L22ZUGyKHa role=TRUSTEE verkey=~BZHjLX8NYwJXPTE746hn6Y
-- ledger get-nym did=FiAsNdcWnpB2L22ZUGyKHa
-# #3.1 AS IdentityOwner REMOVE Steward (steward1) (FAIL)
-did use LBbKEeczA9iL21p4Kgxcuf
-- ledger nym did=AhqUV2zHYdNaWLFCCe7xCn role=
-# #3.2 CHECK Steward IS VALID
-did use AhqUV2zHYdNaWLFCCe7xCn
-ledger nym did=4xuWDwsQSqzQmYSheSWFyg role=ENDORSER verkey=~BmnEpJMi6kJHUcxcVJa2R4
-- ledger get-nym did=4xuWDwsQSqzQmYSheSWFyg
-# #4 AS IdentityOwner CREATE Steward (steward2) (FAIL)
-did use LBbKEeczA9iL21p4Kgxcuf
-- ledger nym did=CbPwHxKEibPhV4pgXWpu26 role=STEWARD verkey=~MviYa49QADQXAM68WSiLPD
-- ledger get-nym did=CbPwHxKEibPhV4pgXWpu26
-# #5.1 AS IdentityOwner REMOVE Endorser (FAIL)
-did use LBbKEeczA9iL21p4Kgxcuf
-- ledger nym did=DriVwCMbtEgkmoEHKin6Ah role=
-# #5.2 CHECK Endorser IS VALID
-did use DriVwCMbtEgkmoEHKin6Ah
-ledger nym did=Q8uxmCGdXgLHHtaTwYtVJG verkey=~UpRqa9gQ1jsbUBvKYPtWSo
-- ledger get-nym did=Q8uxmCGdXgLHHtaTwYtVJG
-# #6 AS IdentityOwner CREATE Endorser (FAIL)
-did use LBbKEeczA9iL21p4Kgxcuf
-- ledger nym did=2b6xTx2HniDU77nxHm6zWB role=ENDORSER verkey=~HF34ymwfTJngb8zFDmCyvX
-- ledger get-nym did=2b6xTx2HniDU77nxHm6zWB
-# #7.1 AS IdentityOwner CREATE IdentityOwner (PASS with ANYONE_CAN_WRITE=True)
-did use LBbKEeczA9iL21p4Kgxcuf
-ledger nym did=Fk9ENxnz1ztDgdivQBJTCZ verkey=~NT9ANFeDhCLKDg5PNKZXKK
-- ledger get-nym did=Fk9ENxnz1ztDgdivQBJTCZ
-# #8 AS IdentityOwner CREATE NetworkMonitor (FAIL)
-did use LBbKEeczA9iL21p4Kgxcuf
-- ledger nym did=Nd4dUF85aa1JmDFScLfk7o role=NETWORK_MONITOR verkey=~5aJLqtphR3tqymWUwg98Sz
-# #9.1 AS IdentityOwner REMOVE NetworkMonitor (FAIL)
-did use LBbKEeczA9iL21p4Kgxcuf
-- ledger nym did=GSoagH52cX69hnn7npUTWy role=
-# #9.2 CHECK NetworkMonitor IS VALID
-did use GSoagH52cX69hnn7npUTWy
-ledger get-validator-info nodes=Node1
-# #10 check that can't add roles back when don't have necessary permissions
-did use LBbKEeczA9iL21p4Kgxcuf
-- ledger nym did=Q8uxmCGdXgLHHtaTwYtVJG role=ENDORSER
-- ledger nym did=Q8uxmCGdXgLHHtaTwYtVJG role=STEWARD
-- ledger nym did=Q8uxmCGdXgLHHtaTwYtVJG role=TRUSTEE
-- ledger nym did=CjPA39BhAVG5d3mV2ZEAYE role=NETWORK_MONITOR
-### Additional cases ###
-did use V4SGRU86Z58d6TV7PBUe6f
-did new seed=RandomAttribOwner000000000000003
-ledger nym did=UffJCJngTXc1o84dQ7aEUb verkey=~J4HtnGz2wW2nE7VuMeg39M
-did new seed=RandomUserForRotateKey0000000003
-ledger nym did=X3zYajU7gbz9Pu8k6E7Ppf verkey=~3ZDo6g4ZDRKGauKrR452xU
-# Only owner can edit existing NYMs
-did use X3zYajU7gbz9Pu8k6E7Ppf
-did rotate-key seed=RandomUserForRotateKey0NewKey003
-# Not owner can't edit existing NYMs (FAIL)
-did use UffJCJngTXc1o84dQ7aEUb
-- ledger nym did=X3zYajU7gbz9Pu8k6E7Ppf verkey=~3ZDo6g4ZDRKGauKrR452xU
-# Only owners can create ATTRIBs
-did use X3zYajU7gbz9Pu8k6E7Ppf
-ledger attrib did=X3zYajU7gbz9Pu8k6E7Ppf raw={"endpoint":{"ha":"127.0.0.1:5555"}}
-# Only owners can edit ATTRIBs
-ledger attrib did=X3zYajU7gbz9Pu8k6E7Ppf raw={"endpoint":{"ha":"127.0.0.1:6666"}}
-# Not owner can't create attrib (FAIL)
-did use X3zYajU7gbz9Pu8k6E7Ppf
-- ledger attrib did=UffJCJngTXc1o84dQ7aEUb raw={"endpoint":{"ha":"127.0.0.1:5555"}}
-# Not owner can't edit attrib (FAIL)
-did use UffJCJngTXc1o84dQ7aEUb
-- ledger attrib did=X3zYajU7gbz9Pu8k6E7Ppf raw={"endpoint":{"ha":"127.0.0.1:5555"}}
-# Identity Owner can create SCHEMA: (PASS with ANYONE_CAN_WRITE=True)
-ledger schema name=IdentityOwnerSchema version=1.0 attr_names=name,age
-# Identity Owner can create CLAIM_DEF: (PASS with ANYONE_CAN_WRITE=True, but will fail because of wrong schema id)
-- ledger cred-def schema_id=1 signature_type=CL primary={"n":"1","s":"2","rms":"3","r":{"age":"4","name":"5"},"rctxt":"6","z":"7"} tag=3
-# Identity Owner can't RESTART POOL
-did use LBbKEeczA9iL21p4Kgxcuf
-- ledger pool-restart action=start datetime=2020-01-25T12:49:05.258870+00:00 nodes=Node4
-# Identity Owner can't get validator-info
-did use LBbKEeczA9iL21p4Kgxcuf
+# setup environment
+- pool create AS-0301-owner gen_txn_file=./pool_transactions_genesis
+pool connect AS-0301-owner
+- wallet create AS-03-wallet-owner key=testkey storage_config={"pool":"AS-0301-owner"}
+wallet open AS-03-wallet-owner key=testkey
+#################
+# setup section #
+#################
+did new seed=000000000000000000000000Trustee1 metadata="Default Trustee"
+did new seed=TestTrustee100000000000000000003 metadata="test trustee 1"
+did new seed=TestTrustee200000000000000000003 metadata="test trustee 2"
+did new seed=TestSteward100000000000000000003 metadata="test steward 1"
+# did new seed=TestSteward300000000000000000003 metadata="test steward 3"
+did new seed=TestSteward200000000000000000003 metadata="test steward 2"
+did new seed=TestEndorser10000000000000000003 metadata="test endorser 1"
+did new seed=TestEndorser20000000000000000003 metadata="test endorser 2"
+did new seed=TestEndorser30000000000000000003 metadata="test endorser 3"
+did new seed=RandomUser1000000000000000000003 metadata="test identity 1"
+did new seed=RandomUser2000000000000000000003 metadata="test identity 2"
+did new seed=RandomUser3000000000000000000003 metadata="test identity 3"
+did new seed=NetworkMonitor000000000000000001 metadata="network monitor 1"
+did new seed=NetworkMonitor000000000000000002 metadata="network monitor 2"
+did new seed=NetworkMonitor000000000000000003 metadata="network monitor 3"
+# AS Trustee CREATE Steward (steward1)
+did use V4SGRU86Z58d6TV7PBUe6f
+ledger nym did=AhqUV2zHYdNaWLFCCe7xCn role=STEWARD verkey=~YUY2ChUGWJovtU6XTn61D8
+- ledger get-nym did=AhqUV2zHYdNaWLFCCe7xCn
+# AS Trustee CREATE NetworkMonitor (network monitor 1)
+did use V4SGRU86Z58d6TV7PBUe6f
+ledger nym did=GSoagH52cX69hnn7npUTWy role=NETWORK_MONITOR verkey=~5JEp1pUJbzD1YqimvA6hk6
+- ledger get-nym did=GSoagH52cX69hnn7npUTWy
+# AS Trustee CREATE NetworkMonitor (network monitor 2) and blacklist it
+did use V4SGRU86Z58d6TV7PBUe6f
+ledger nym did=CjPA39BhAVG5d3mV2ZEAYE role=NETWORK_MONITOR verkey=~MnEdozF43zQFRdZLN25mya
+ledger nym did=CjPA39BhAVG5d3mV2ZEAYE role=
+- ledger get-nym did=CjPA39BhAVG5d3mV2ZEAYE
+# AS Trustee CREATE Endorser (endorser1)
+did use V4SGRU86Z58d6TV7PBUe6f
+ledger nym did=DriVwCMbtEgkmoEHKin6Ah role=ENDORSER verkey=~YPZot1kM4DLwvsX6mtcKd9
+- ledger get-nym did=DriVwCMbtEgkmoEHKin6Ah
+# AS Trustee CREATE IdentityOwner (user1)
+did use V4SGRU86Z58d6TV7PBUe6f
+ledger nym did=LBbKEeczA9iL21p4Kgxcuf verkey=~3ZvjdaYs4cdFYXAwNGR85p
+- ledger get-nym did=LBbKEeczA9iL21p4Kgxcuf
+################
+# test section #
+################
+### Actions with NYMs ###
+# #1.1 AS IdentityOwner REMOVE Trustee (FAIL)
+did use LBbKEeczA9iL21p4Kgxcuf
+- ledger nym did=V4SGRU86Z58d6TV7PBUe6f role=
+# #1.2 CHECK Trustee IS VALID
+did use V4SGRU86Z58d6TV7PBUe6f
+ledger nym did=CYdQe2tmSwhv2XdicegoAn role=TRUSTEE verkey=~E7MjQHm14YnmZD9RErTBsi
+- ledger get-nym did=CYdQe2tmSwhv2XdicegoAn
+# #2 AS IdentityOwner CREATE Trustee (trustee1) (FAIL)
+did use LBbKEeczA9iL21p4Kgxcuf
+- ledger nym did=FiAsNdcWnpB2L22ZUGyKHa role=TRUSTEE verkey=~BZHjLX8NYwJXPTE746hn6Y
+- ledger get-nym did=FiAsNdcWnpB2L22ZUGyKHa
+# #3.1 AS IdentityOwner REMOVE Steward (steward1) (FAIL)
+did use LBbKEeczA9iL21p4Kgxcuf
+- ledger nym did=AhqUV2zHYdNaWLFCCe7xCn role=
+# #3.2 CHECK Steward IS VALID
+did use AhqUV2zHYdNaWLFCCe7xCn
+ledger nym did=4xuWDwsQSqzQmYSheSWFyg role=ENDORSER verkey=~BmnEpJMi6kJHUcxcVJa2R4
+- ledger get-nym did=4xuWDwsQSqzQmYSheSWFyg
+# #4 AS IdentityOwner CREATE Steward (steward2) (FAIL)
+did use LBbKEeczA9iL21p4Kgxcuf
+- ledger nym did=CbPwHxKEibPhV4pgXWpu26 role=STEWARD verkey=~MviYa49QADQXAM68WSiLPD
+- ledger get-nym did=CbPwHxKEibPhV4pgXWpu26
+# #5.1 AS IdentityOwner REMOVE Endorser (FAIL)
+did use LBbKEeczA9iL21p4Kgxcuf
+- ledger nym did=DriVwCMbtEgkmoEHKin6Ah role=
+# #5.2 CHECK Endorser IS VALID
+did use DriVwCMbtEgkmoEHKin6Ah
+ledger nym did=Q8uxmCGdXgLHHtaTwYtVJG verkey=~UpRqa9gQ1jsbUBvKYPtWSo
+- ledger get-nym did=Q8uxmCGdXgLHHtaTwYtVJG
+# #6 AS IdentityOwner CREATE Endorser (FAIL)
+did use LBbKEeczA9iL21p4Kgxcuf
+- ledger nym did=2b6xTx2HniDU77nxHm6zWB role=ENDORSER verkey=~HF34ymwfTJngb8zFDmCyvX
+- ledger get-nym did=2b6xTx2HniDU77nxHm6zWB
+# #7.1 AS IdentityOwner CREATE IdentityOwner (PASS with ANYONE_CAN_WRITE=True)
+did use LBbKEeczA9iL21p4Kgxcuf
+ledger nym did=Fk9ENxnz1ztDgdivQBJTCZ verkey=~NT9ANFeDhCLKDg5PNKZXKK
+- ledger get-nym did=Fk9ENxnz1ztDgdivQBJTCZ
+# #8 AS IdentityOwner CREATE NetworkMonitor (FAIL)
+did use LBbKEeczA9iL21p4Kgxcuf
+- ledger nym did=Nd4dUF85aa1JmDFScLfk7o role=NETWORK_MONITOR verkey=~5aJLqtphR3tqymWUwg98Sz
+# #9.1 AS IdentityOwner REMOVE NetworkMonitor (FAIL)
+did use LBbKEeczA9iL21p4Kgxcuf
+- ledger nym did=GSoagH52cX69hnn7npUTWy role=
+# #9.2 CHECK NetworkMonitor IS VALID
+did use GSoagH52cX69hnn7npUTWy
+ledger get-validator-info nodes=Node1
+# #10 check that can't add roles back when don't have necessary permissions
+did use LBbKEeczA9iL21p4Kgxcuf
+- ledger nym did=Q8uxmCGdXgLHHtaTwYtVJG role=ENDORSER
+- ledger nym did=Q8uxmCGdXgLHHtaTwYtVJG role=STEWARD
+- ledger nym did=Q8uxmCGdXgLHHtaTwYtVJG role=TRUSTEE
+- ledger nym did=CjPA39BhAVG5d3mV2ZEAYE role=NETWORK_MONITOR
+### Additional cases ###
+did use V4SGRU86Z58d6TV7PBUe6f
+did new seed=RandomAttribOwner000000000000003
+ledger nym did=UffJCJngTXc1o84dQ7aEUb verkey=~J4HtnGz2wW2nE7VuMeg39M
+did new seed=RandomUserForRotateKey0000000003
+ledger nym did=X3zYajU7gbz9Pu8k6E7Ppf verkey=~3ZDo6g4ZDRKGauKrR452xU
+# Only owner can edit existing NYMs
+did use X3zYajU7gbz9Pu8k6E7Ppf
+did rotate-key seed=RandomUserForRotateKey0NewKey003
+# Not owner can't edit existing NYMs (FAIL)
+did use UffJCJngTXc1o84dQ7aEUb
+- ledger nym did=X3zYajU7gbz9Pu8k6E7Ppf verkey=~3ZDo6g4ZDRKGauKrR452xU
+# Only owners can create ATTRIBs
+did use X3zYajU7gbz9Pu8k6E7Ppf
+ledger attrib did=X3zYajU7gbz9Pu8k6E7Ppf raw={"endpoint":{"ha":"127.0.0.1:5555"}}
+# Only owners can edit ATTRIBs
+ledger attrib did=X3zYajU7gbz9Pu8k6E7Ppf raw={"endpoint":{"ha":"127.0.0.1:6666"}}
+# Not owner can't create attrib (FAIL)
+did use X3zYajU7gbz9Pu8k6E7Ppf
+- ledger attrib did=UffJCJngTXc1o84dQ7aEUb raw={"endpoint":{"ha":"127.0.0.1:5555"}}
+# Not owner can't edit attrib (FAIL)
+did use UffJCJngTXc1o84dQ7aEUb
+- ledger attrib did=X3zYajU7gbz9Pu8k6E7Ppf raw={"endpoint":{"ha":"127.0.0.1:5555"}}
+# Identity Owner can create SCHEMA: (PASS with ANYONE_CAN_WRITE=True)
+ledger schema name=IdentityOwnerSchema version=1.0 attr_names=name,age
+# Identity Owner can create CLAIM_DEF: (PASS with ANYONE_CAN_WRITE=True, but will fail because of wrong schema id)
+- ledger cred-def schema_id=1 signature_type=CL primary={"n":"1","s":"2","rms":"3","r":{"age":"4","name":"5"},"rctxt":"6","z":"7"} tag=3
+# Identity Owner can't RESTART POOL
+did use LBbKEeczA9iL21p4Kgxcuf
+- ledger pool-restart action=start datetime=2020-01-25T12:49:05.258870+00:00 nodes=Node4
+# Identity Owner can't get validator-info
+did use LBbKEeczA9iL21p4Kgxcuf
- ledger get-validator-info nodes=Node1
\ No newline at end of file
diff --git a/acceptance/indy-cli-batches/AS-03-01-steward.batch b/acceptance/indy-cli-batches/AS-03-01-steward.batch
index 1ed6ed1be..7ec4713c8 100644
--- a/acceptance/indy-cli-batches/AS-03-01-steward.batch
+++ b/acceptance/indy-cli-batches/AS-03-01-steward.batch
@@ -1,136 +1,136 @@
-# setup environment
-- pool create AS-0301-steward gen_txn_file=./pool_transactions_genesis
-pool connect AS-0301-steward
-- wallet create AS-03-wallet-steward key=testkey storage_config={"pool":"AS-0301-steward"}
-wallet open AS-03-wallet-steward key=testkey
-#################
-# setup section #
-#################
-did new seed=TestTrustee100000000000000000001 metadata="test trustee 1"
-did new seed=TestSteward100000000000000000001 metadata="test steward 1"
-did new seed=TestSteward200000000000000000001 metadata="test steward 2"
-did new seed=TestSteward300000000000000000001 metadata="test steward 3"
-did new seed=TestEndorser00000000000000000001 metadata="test endorser 0"
-did new seed=TestEndorser10000000000000000001 metadata="test endorser 1"
-did new seed=RandomUser1000000000000000000001 metadata="test identity 1"
-did new seed=RandomUser2000000000000000000001 metadata="test identity 2"
-# did new seed=RandomUser3000000000000000000001 metadata="test identity 3"
-did new seed=RandomUser4000000000000000000001 metadata="test identity 4"
-did new seed=RandomUser5000000000000000000001 metadata="test identity 5"
-did new seed=000000000000000000000000Trustee1 metadata="default trustee"
-did new seed=NetworkMonitor100000000000000001 metadata="network monitor 1"
-did new seed=NetworkMonitor200000000000000001 metadata="network monitor 2"
-did new seed=NetworkMonitor300000000000000001 metadata="network monitor 3"
-did use V4SGRU86Z58d6TV7PBUe6f
-# AS Trustee CREATE Steward (steward1)
-ledger nym did=7qFmEyYCXcmUFVied5Sp3b role=STEWARD verkey=~Mj3PFUSi6qmrTRonFXHx9n
-- ledger get-nym did=7qFmEyYCXcmUFVied5Sp3b
-# AS Trustee CREATE Steward (steward3)
-ledger nym did=CEJJcfjNGt7YcNLyXaszaq role=STEWARD verkey=~AAGGsLT3yQtTmNdKrHXtC2
-- ledger get-nym did=CEJJcfjNGt7YcNLyXaszaq
-################
-# test section #
-################
-# #1 AS Steward (steward1) CREATE Trustee (trustee1) (FAIL)
-did use 7qFmEyYCXcmUFVied5Sp3b
-- ledger nym did=81CCbJwqSyGNLLEtVo1kMq role=TRUSTEE verkey=~UimNgHv7X45jxnh65faK3h
-- ledger get-nym did=81CCbJwqSyGNLLEtVo1kMq
-# #2.1 AS Steward (steward1) REMOVE Trustee (FAIL)
-did use 7qFmEyYCXcmUFVied5Sp3b
-- ledger nym did=V4SGRU86Z58d6TV7PBUe6f role=
-# #2.2 CHECK Trustee IS VALID
-did use V4SGRU86Z58d6TV7PBUe6f
-ledger nym did=81CCbJwqSyGNLLEtVo1kMq role=TRUSTEE verkey=~UimNgHv7X45jxnh65faK3h
-- ledger get-nym did=81CCbJwqSyGNLLEtVo1kMq
-# #3 AS Steward (steward1) CREATE Steward (steward2) (FAIL)
-did use 7qFmEyYCXcmUFVied5Sp3b
-- ledger nym did=XVP5k4E62PMJJWt2nPacHy role=STEWARD verkey=~Ka6GqJ3qBYRE4Ku9uyFuQW
-- ledger get-nym did=XVP5k4E62PMJJWt2nPacHy
-# #4.1 AS Steward (steward1) REMOVE Steward (steward3) (FAIL)
-did use 7qFmEyYCXcmUFVied5Sp3b
-- ledger nym did=CEJJcfjNGt7YcNLyXaszaq role=
-# #4.2 CHECK Steward IS VALID
-did use CEJJcfjNGt7YcNLyXaszaq
-ledger nym did=Bhe7Uh5E1LYLgpLcbuVjj2 role=ENDORSER verkey=~NMpYrG7tAXYV4ujYZjddKu
-- ledger get-nym did=Bhe7Uh5E1LYLgpLcbuVjj2
-# #5.1 AS Steward (steward1) CREATE Endorser (PASS)
-did use 7qFmEyYCXcmUFVied5Sp3b
-ledger nym did=CDcGtKx1boRYFwPBaGkMmk role=ENDORSER verkey=~PuCGfSiTB3NZGi1SH8w7H
-- ledger get-nym did=CDcGtKx1boRYFwPBaGkMmk
-# #5.2 CHECK Endorser IS VALID
-did use CDcGtKx1boRYFwPBaGkMmk
-ledger nym did=YUGDShR1RSr5T2CwbM7Hhu verkey=~GfsAf6NpSQDJ1ZWW2X7BiD
-- ledger get-nym did=YUGDShR1RSr5T2CwbM7Hhu
-# #6.1 AS Steward (steward1) REMOVE Endorser (FAIL)
-did use 7qFmEyYCXcmUFVied5Sp3b
-- ledger nym did=CDcGtKx1boRYFwPBaGkMmk role=
-# #6.2 CHECK Endorser IS VALID
-did use CDcGtKx1boRYFwPBaGkMmk
-ledger nym did=Jt7aMnw77aoaBMyhXUNjtt verkey=~DT5pLP1wcvsgAzM78sqiRJ
-- ledger get-nym did=Jt7aMnw77aoaBMyhXUNjtt
-# #7.1 AS Steward (steward1) RESTORE Endorser (PASS)
-did use V4SGRU86Z58d6TV7PBUe6f
-ledger nym did=CDcGtKx1boRYFwPBaGkMmk role=
-did use 7qFmEyYCXcmUFVied5Sp3b
-ledger nym did=CDcGtKx1boRYFwPBaGkMmk role=ENDORSER
-# #7.2 CHECK Endorser IS VALID
-did use CDcGtKx1boRYFwPBaGkMmk
-ledger nym did=XkZJxs6Uadv6MQeKGGZdZ6 verkey=~Aza4zyTRazcVsokmqNJfsg
-- ledger get-nym did=XkZJxs6Uadv6MQeKGGZdZ6
-# #8 AS Steward (steward1) CREATE IdentityOwner (PASS)
-did use 7qFmEyYCXcmUFVied5Sp3b
-ledger nym did=Xm3b3LtJ3UoL5KeYT7ti7j verkey=~GmTyyvE4eHWeSWuiAtmE19
-- ledger get-nym did=Xm3b3LtJ3UoL5KeYT7ti7j
-# #9.1 AS Steward (steward1) REMOVE self (FAIL)
-did use 7qFmEyYCXcmUFVied5Sp3b
-- ledger nym did=7qFmEyYCXcmUFVied5Sp3b role=
-# #9.2 CHECK Steward IS VALID
-ledger nym did=Jt7aMnw77aoaBMyhXUNjt1 verkey=~DT5pLP1wcvsgAzM78sqiR1 role=ENDORSER
-- ledger get-nym did=Jt7aMnw77aoaBMyhXUNjtt
-# #10 AS Steward (steward1) CREATE NetworkMonitor (PASS)
-did use 7qFmEyYCXcmUFVied5Sp3b
-ledger nym did=7e6ttq44HKVSHitCE3BLXv role=NETWORK_MONITOR verkey=~9NGbkySmcB9d6rZ7pPxwtY
-# #11.1 AS Steward (steward1) REMOVE NetworkMonitor (PASS)
-ledger nym did=7e6ttq44HKVSHitCE3BLXv role=
-# #11.2 CHECK NetworkMonitor IS INVALID
-did use 7e6ttq44HKVSHitCE3BLXv
-- ledger get-validator-info nodes=Node1
-# #12.1 AS Steward (steward1) RESTORE NetworkMonitor (PASS)
-did use 7qFmEyYCXcmUFVied5Sp3b
-ledger nym did=7e6ttq44HKVSHitCE3BLXv role=NETWORK_MONITOR
-# #12.2 CHECK NetworkMonitor IS VALID
-did use 7e6ttq44HKVSHitCE3BLXv
-ledger get-validator-info nodes=Node1
-### Additional cases ###
-did use V4SGRU86Z58d6TV7PBUe6f
-did new seed=RandomAttribOwner000000000000001
-ledger nym did=SvXt2QGwZF1kXTcpd2pJ37 verkey=~TmkMNbfcATrfJopaq4KcdV role=STEWARD
-did new seed=RandomUserForRotateKey0000000001
-ledger nym did=6LKnRH6hWPSpoWu824s5JH verkey=~JyFXPqScFNBSoPG4cgTeb1 role=STEWARD
-# Only owner can edit existing NYMs
-did use SvXt2QGwZF1kXTcpd2pJ37
-did rotate-key seed=RandomUserForRotateKey0NewKey001
-# Not owner can't edit existing NYMs (FAIL)
-did use 6LKnRH6hWPSpoWu824s5JH
-- ledger nym did=SvXt2QGwZF1kXTcpd2pJ37 verkey=~TmkMNbfcATrfJopaq4KcdV
-# Only owners can create ATTRIBs
-did use SvXt2QGwZF1kXTcpd2pJ37
-ledger attrib did=SvXt2QGwZF1kXTcpd2pJ37 raw={"endpoint":{"ha":"127.0.0.1:5555"}}
-# Only owners can edit ATTRIBs
-ledger attrib did=SvXt2QGwZF1kXTcpd2pJ37 raw={"endpoint":{"ha":"127.0.0.1:6666"}}
-# Not owner can't create attrib (FAIL)
-did use SvXt2QGwZF1kXTcpd2pJ37
-- ledger attrib did=6LKnRH6hWPSpoWu824s5JH raw={"endpoint":{"ha":"127.0.0.1:5555"}}
-# Not owner can't edit attrib (FAIL)
-did use 6LKnRH6hWPSpoWu824s5JH
-- ledger attrib did=SvXt2QGwZF1kXTcpd2pJ37 raw={"endpoint":{"ha":"127.0.0.1:5555"}}
-# Steward can create SCHEMA:
-ledger schema name=StewardSchema version=1.0 attr_names=name,age
-# Steward can create CLAIM_DEF (will fail because of wrong schema id):
-- ledger cred-def schema_id=1 signature_type=CL primary={"n":"1","s":"2","rms":"3","r":{"age":"4","name":"5"},"rctxt":"6","z":"7"} tag=1
-# Steward can't RESTART POOL
-did use SvXt2QGwZF1kXTcpd2pJ37
-- ledger pool-restart action=start datetime=2020-01-25T12:49:05.258870+00:00 nodes=Node4
-# Steward can get validator-info
-did use SvXt2QGwZF1kXTcpd2pJ37
-ledger get-validator-info nodes=Node1
+# setup environment
+- pool create AS-0301-steward gen_txn_file=./pool_transactions_genesis
+pool connect AS-0301-steward
+- wallet create AS-03-wallet-steward key=testkey storage_config={"pool":"AS-0301-steward"}
+wallet open AS-03-wallet-steward key=testkey
+#################
+# setup section #
+#################
+did new seed=TestTrustee100000000000000000001 metadata="test trustee 1"
+did new seed=TestSteward100000000000000000001 metadata="test steward 1"
+did new seed=TestSteward200000000000000000001 metadata="test steward 2"
+did new seed=TestSteward300000000000000000001 metadata="test steward 3"
+did new seed=TestEndorser00000000000000000001 metadata="test endorser 0"
+did new seed=TestEndorser10000000000000000001 metadata="test endorser 1"
+did new seed=RandomUser1000000000000000000001 metadata="test identity 1"
+did new seed=RandomUser2000000000000000000001 metadata="test identity 2"
+# did new seed=RandomUser3000000000000000000001 metadata="test identity 3"
+did new seed=RandomUser4000000000000000000001 metadata="test identity 4"
+did new seed=RandomUser5000000000000000000001 metadata="test identity 5"
+did new seed=000000000000000000000000Trustee1 metadata="default trustee"
+did new seed=NetworkMonitor100000000000000001 metadata="network monitor 1"
+did new seed=NetworkMonitor200000000000000001 metadata="network monitor 2"
+did new seed=NetworkMonitor300000000000000001 metadata="network monitor 3"
+did use V4SGRU86Z58d6TV7PBUe6f
+# AS Trustee CREATE Steward (steward1)
+ledger nym did=7qFmEyYCXcmUFVied5Sp3b role=STEWARD verkey=~Mj3PFUSi6qmrTRonFXHx9n
+- ledger get-nym did=7qFmEyYCXcmUFVied5Sp3b
+# AS Trustee CREATE Steward (steward3)
+ledger nym did=CEJJcfjNGt7YcNLyXaszaq role=STEWARD verkey=~AAGGsLT3yQtTmNdKrHXtC2
+- ledger get-nym did=CEJJcfjNGt7YcNLyXaszaq
+################
+# test section #
+################
+# #1 AS Steward (steward1) CREATE Trustee (trustee1) (FAIL)
+did use 7qFmEyYCXcmUFVied5Sp3b
+- ledger nym did=81CCbJwqSyGNLLEtVo1kMq role=TRUSTEE verkey=~UimNgHv7X45jxnh65faK3h
+- ledger get-nym did=81CCbJwqSyGNLLEtVo1kMq
+# #2.1 AS Steward (steward1) REMOVE Trustee (FAIL)
+did use 7qFmEyYCXcmUFVied5Sp3b
+- ledger nym did=V4SGRU86Z58d6TV7PBUe6f role=
+# #2.2 CHECK Trustee IS VALID
+did use V4SGRU86Z58d6TV7PBUe6f
+ledger nym did=81CCbJwqSyGNLLEtVo1kMq role=TRUSTEE verkey=~UimNgHv7X45jxnh65faK3h
+- ledger get-nym did=81CCbJwqSyGNLLEtVo1kMq
+# #3 AS Steward (steward1) CREATE Steward (steward2) (FAIL)
+did use 7qFmEyYCXcmUFVied5Sp3b
+- ledger nym did=XVP5k4E62PMJJWt2nPacHy role=STEWARD verkey=~Ka6GqJ3qBYRE4Ku9uyFuQW
+- ledger get-nym did=XVP5k4E62PMJJWt2nPacHy
+# #4.1 AS Steward (steward1) REMOVE Steward (steward3) (FAIL)
+did use 7qFmEyYCXcmUFVied5Sp3b
+- ledger nym did=CEJJcfjNGt7YcNLyXaszaq role=
+# #4.2 CHECK Steward IS VALID
+did use CEJJcfjNGt7YcNLyXaszaq
+ledger nym did=Bhe7Uh5E1LYLgpLcbuVjj2 role=ENDORSER verkey=~NMpYrG7tAXYV4ujYZjddKu
+- ledger get-nym did=Bhe7Uh5E1LYLgpLcbuVjj2
+# #5.1 AS Steward (steward1) CREATE Endorser (PASS)
+did use 7qFmEyYCXcmUFVied5Sp3b
+ledger nym did=CDcGtKx1boRYFwPBaGkMmk role=ENDORSER verkey=~PuCGfSiTB3NZGi1SH8w7H
+- ledger get-nym did=CDcGtKx1boRYFwPBaGkMmk
+# #5.2 CHECK Endorser IS VALID
+did use CDcGtKx1boRYFwPBaGkMmk
+ledger nym did=YUGDShR1RSr5T2CwbM7Hhu verkey=~GfsAf6NpSQDJ1ZWW2X7BiD
+- ledger get-nym did=YUGDShR1RSr5T2CwbM7Hhu
+# #6.1 AS Steward (steward1) REMOVE Endorser (FAIL)
+did use 7qFmEyYCXcmUFVied5Sp3b
+- ledger nym did=CDcGtKx1boRYFwPBaGkMmk role=
+# #6.2 CHECK Endorser IS VALID
+did use CDcGtKx1boRYFwPBaGkMmk
+ledger nym did=Jt7aMnw77aoaBMyhXUNjtt verkey=~DT5pLP1wcvsgAzM78sqiRJ
+- ledger get-nym did=Jt7aMnw77aoaBMyhXUNjtt
+# #7.1 AS Steward (steward1) RESTORE Endorser (PASS)
+did use V4SGRU86Z58d6TV7PBUe6f
+ledger nym did=CDcGtKx1boRYFwPBaGkMmk role=
+did use 7qFmEyYCXcmUFVied5Sp3b
+ledger nym did=CDcGtKx1boRYFwPBaGkMmk role=ENDORSER
+# #7.2 CHECK Endorser IS VALID
+did use CDcGtKx1boRYFwPBaGkMmk
+ledger nym did=XkZJxs6Uadv6MQeKGGZdZ6 verkey=~Aza4zyTRazcVsokmqNJfsg
+- ledger get-nym did=XkZJxs6Uadv6MQeKGGZdZ6
+# #8 AS Steward (steward1) CREATE IdentityOwner (PASS)
+did use 7qFmEyYCXcmUFVied5Sp3b
+ledger nym did=Xm3b3LtJ3UoL5KeYT7ti7j verkey=~GmTyyvE4eHWeSWuiAtmE19
+- ledger get-nym did=Xm3b3LtJ3UoL5KeYT7ti7j
+# #9.1 AS Steward (steward1) REMOVE self (FAIL)
+did use 7qFmEyYCXcmUFVied5Sp3b
+- ledger nym did=7qFmEyYCXcmUFVied5Sp3b role=
+# #9.2 CHECK Steward IS VALID
+ledger nym did=Jt7aMnw77aoaBMyhXUNjt1 verkey=~DT5pLP1wcvsgAzM78sqiR1 role=ENDORSER
+- ledger get-nym did=Jt7aMnw77aoaBMyhXUNjtt
+# #10 AS Steward (steward1) CREATE NetworkMonitor (PASS)
+did use 7qFmEyYCXcmUFVied5Sp3b
+ledger nym did=7e6ttq44HKVSHitCE3BLXv role=NETWORK_MONITOR verkey=~9NGbkySmcB9d6rZ7pPxwtY
+# #11.1 AS Steward (steward1) REMOVE NetworkMonitor (PASS)
+ledger nym did=7e6ttq44HKVSHitCE3BLXv role=
+# #11.2 CHECK NetworkMonitor IS INVALID
+did use 7e6ttq44HKVSHitCE3BLXv
+- ledger get-validator-info nodes=Node1
+# #12.1 AS Steward (steward1) RESTORE NetworkMonitor (PASS)
+did use 7qFmEyYCXcmUFVied5Sp3b
+ledger nym did=7e6ttq44HKVSHitCE3BLXv role=NETWORK_MONITOR
+# #12.2 CHECK NetworkMonitor IS VALID
+did use 7e6ttq44HKVSHitCE3BLXv
+ledger get-validator-info nodes=Node1
+### Additional cases ###
+did use V4SGRU86Z58d6TV7PBUe6f
+did new seed=RandomAttribOwner000000000000001
+ledger nym did=SvXt2QGwZF1kXTcpd2pJ37 verkey=~TmkMNbfcATrfJopaq4KcdV role=STEWARD
+did new seed=RandomUserForRotateKey0000000001
+ledger nym did=6LKnRH6hWPSpoWu824s5JH verkey=~JyFXPqScFNBSoPG4cgTeb1 role=STEWARD
+# Only owner can edit existing NYMs
+did use SvXt2QGwZF1kXTcpd2pJ37
+did rotate-key seed=RandomUserForRotateKey0NewKey001
+# Not owner can't edit existing NYMs (FAIL)
+did use 6LKnRH6hWPSpoWu824s5JH
+- ledger nym did=SvXt2QGwZF1kXTcpd2pJ37 verkey=~TmkMNbfcATrfJopaq4KcdV
+# Only owners can create ATTRIBs
+did use SvXt2QGwZF1kXTcpd2pJ37
+ledger attrib did=SvXt2QGwZF1kXTcpd2pJ37 raw={"endpoint":{"ha":"127.0.0.1:5555"}}
+# Only owners can edit ATTRIBs
+ledger attrib did=SvXt2QGwZF1kXTcpd2pJ37 raw={"endpoint":{"ha":"127.0.0.1:6666"}}
+# Not owner can't create attrib (FAIL)
+did use SvXt2QGwZF1kXTcpd2pJ37
+- ledger attrib did=6LKnRH6hWPSpoWu824s5JH raw={"endpoint":{"ha":"127.0.0.1:5555"}}
+# Not owner can't edit attrib (FAIL)
+did use 6LKnRH6hWPSpoWu824s5JH
+- ledger attrib did=SvXt2QGwZF1kXTcpd2pJ37 raw={"endpoint":{"ha":"127.0.0.1:5555"}}
+# Steward can create SCHEMA:
+ledger schema name=StewardSchema version=1.0 attr_names=name,age
+# Steward can create CLAIM_DEF (will fail because of wrong schema id):
+- ledger cred-def schema_id=1 signature_type=CL primary={"n":"1","s":"2","rms":"3","r":{"age":"4","name":"5"},"rctxt":"6","z":"7"} tag=1
+# Steward can't RESTART POOL
+did use SvXt2QGwZF1kXTcpd2pJ37
+- ledger pool-restart action=start datetime=2020-01-25T12:49:05.258870+00:00 nodes=Node4
+# Steward can get validator-info
+did use SvXt2QGwZF1kXTcpd2pJ37
+ledger get-validator-info nodes=Node1
From 5ff852b93e615ce67455c7445fc1a4a2a39b2556 Mon Sep 17 00:00:00 2001
From: udosson
Date: Tue, 2 Nov 2021 19:24:14 +0100
Subject: [PATCH 06/31] pinned dependencies because of missing support for
python 3.5
Signed-off-by: udosson
---
.github/workflows/build/Dockerfile | 6 ++++++
Jenkinsfile.ci | 2 +-
build-scripts/ubuntu-1604/Dockerfile | 6 ++++--
ci/code-validation.dockerfile | 2 +-
ci/pipeline.groovy | 2 +-
ci/ubuntu.dockerfile | 4 +++-
setup.py | 2 +-
7 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/.github/workflows/build/Dockerfile b/.github/workflows/build/Dockerfile
index 37cbd0e82..a3496e381 100644
--- a/.github/workflows/build/Dockerfile
+++ b/.github/workflows/build/Dockerfile
@@ -26,4 +26,10 @@ RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CE7709D068DB5E88 \
# install fpm
RUN gem install --no-ri --no-rdoc rake fpm
+
+RUN pip3 install -U \
+ # TODO: Investigate why pyzmq has to be installed additionally
+ # This changed with switching from from 1.13.0.dev1034 (build and published by Jenkins instance of Sovrin) to version 1.13.0.dev143 (GHA)
+ 'pyzmq==18.1.0'
+
RUN indy_image_clean
\ No newline at end of file
diff --git a/Jenkinsfile.ci b/Jenkinsfile.ci
index 1fc543ddd..0e494780b 100644
--- a/Jenkinsfile.ci
+++ b/Jenkinsfile.ci
@@ -73,7 +73,7 @@ def withTestEnv(body) {
buildDocker("hyperledger/indy-node-ci", "ci/ubuntu.dockerfile ci").inside {
echo 'Test: Install dependencies'
- sh "pip install pip==10.0.0"
+ sh "pip install 'pip<10.0.0' 'pyzmq==18.1.0'"
install()
body.call('python')
}
diff --git a/build-scripts/ubuntu-1604/Dockerfile b/build-scripts/ubuntu-1604/Dockerfile
index 1c9f348eb..0bffa9712 100644
--- a/build-scripts/ubuntu-1604/Dockerfile
+++ b/build-scripts/ubuntu-1604/Dockerfile
@@ -19,8 +19,10 @@ RUN apt-get update -y && apt-get install -y \
# issues with pip>=10:
# https://github.com/pypa/pip/issues/5240
# https://github.com/pypa/pip/issues/5221
-RUN python3 -m pip install -U pip setuptools \
- && pip3 list
+RUN python3 -m pip install -U \
+ 'pip<10.0.0' \
+ 'setuptools<=50.3.2'
+
# install fpm
RUN gem install --no-ri --no-rdoc rake fpm
diff --git a/ci/code-validation.dockerfile b/ci/code-validation.dockerfile
index c69c97f0f..c81e0bef2 100644
--- a/ci/code-validation.dockerfile
+++ b/ci/code-validation.dockerfile
@@ -13,7 +13,7 @@ RUN apt-get update -y && apt-get install -y \
python3-nacl
RUN pip3 install -U \
'pip<10.0.0' \
- setuptools \
+ 'setuptools<=50.3.2' \
pep8==1.7.1 \
pep8-naming==0.6.1 \
flake8==3.5.0
diff --git a/ci/pipeline.groovy b/ci/pipeline.groovy
index d03a2b216..efeed1486 100644
--- a/ci/pipeline.groovy
+++ b/ci/pipeline.groovy
@@ -148,7 +148,7 @@ def systemTests(Closure body) {
def uid = sh(returnStdout: true, script: 'id -u').trim()
docker.build("hyperledger/indy-node-ci", "--build-arg uid=$uid -f ci/ubuntu.dockerfile ci").inside {
sh """
- pip install pip==10.0.0
+ pip install 'pip<10.0.0' 'pyzmq==18.1.0'
pip install .[tests] >$pipLogName
"""
diff --git a/ci/ubuntu.dockerfile b/ci/ubuntu.dockerfile
index c4799e8d9..37844a427 100644
--- a/ci/ubuntu.dockerfile
+++ b/ci/ubuntu.dockerfile
@@ -11,7 +11,7 @@ RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CE7709D068DB5E88
RUN apt-get update -y && apt-get install -y \
python3-nacl \
ursa=0.3.2-2 \
- libindy=1.15.0~1618-xenial \
+ libindy=1.15.0~1625-xenial \
# rocksdb python wrapper
libbz2-dev \
zlib1g-dev \
@@ -19,6 +19,8 @@ RUN apt-get update -y && apt-get install -y \
libsnappy-dev \
rocksdb=5.8.8
+ENV PATH="/home/$user/$venv/bin:$PATH"
+
RUN indy_ci_add_user $uid $user $venv
RUN indy_image_clean
diff --git a/setup.py b/setup.py
index 253c32c45..173d4058e 100644
--- a/setup.py
+++ b/setup.py
@@ -54,7 +54,7 @@
data_files=[(
(BASE_DIR, ['data/nssm_original.exe'])
)],
- install_requires=['indy-plenum==1.13.0.dev1034',
+ install_requires=['indy-plenum==1.13.0.dev143',
'timeout-decorator==0.4.0',
'distro==1.3.0'],
setup_requires=['pytest-runner'],
From 3c015ca2c27c4ca2685d271f23f887eb1d8a3611 Mon Sep 17 00:00:00 2001
From: udosson
Date: Wed, 3 Nov 2021 17:27:48 +0100
Subject: [PATCH 07/31] re-added the adjustment of packages for the cannonical
archive
Signed-off-by: udosson
---
build-scripts/ubuntu-1604/prepare-package.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/build-scripts/ubuntu-1604/prepare-package.sh b/build-scripts/ubuntu-1604/prepare-package.sh
index 50d827506..8b8bc7d95 100755
--- a/build-scripts/ubuntu-1604/prepare-package.sh
+++ b/build-scripts/ubuntu-1604/prepare-package.sh
@@ -32,8 +32,8 @@ if [ "$distro_packages" = "debian-packages" ]; then
# Update the package names to match the versions that are pre-installed on the os.
echo -e "\nAdapt the dependencies for the Canonical archive"
#### ToDo adjust packages for the Cannonical archive for Ubuntu 20.04 (focal)
- # sed -i "s~timeout-decorator~python3-timeout-decorator~" setup.py
- # sed -i "s~distro~python3-distro~" setup.py
+ sed -i "s~timeout-decorator~python3-timeout-decorator~" setup.py
+ sed -i "s~distro~python3-distro~" setup.py
elif [ "$distro_packages" = "python-packages" ]; then
echo -e "\nNo adaption of dependencies for python packages"
else
From 5994b3fab897d9e8f999400607670f5228627939 Mon Sep 17 00:00:00 2001
From: udosson
Date: Thu, 4 Nov 2021 08:56:54 +0100
Subject: [PATCH 08/31] updated version of setup-jfrog-cli to v2
Signed-off-by: udosson
---
.github/workflows/build.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index d620457cd..ae4e9411e 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -372,7 +372,7 @@ jobs:
uses: actions/checkout@v1
- name: Setup JFrog CLI
- uses: jfrog/setup-jfrog-cli@v1
+ uses: jfrog/setup-jfrog-cli@v2
env:
JF_ARTIFACTORY_1: ${{ secrets.INDY_ARTIFACTORY_REPO_CONFIG }}
From d785d0a65a77a65c0fc335c75c8f91766b4d52e1 Mon Sep 17 00:00:00 2001
From: udosson
Date: Mon, 8 Nov 2021 21:37:14 +0100
Subject: [PATCH 09/31] bump indy-plenum to version 1.13.0.dev169
Signed-off-by: udosson
---
setup.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/setup.py b/setup.py
index 173d4058e..ce64b29ac 100644
--- a/setup.py
+++ b/setup.py
@@ -54,7 +54,7 @@
data_files=[(
(BASE_DIR, ['data/nssm_original.exe'])
)],
- install_requires=['indy-plenum==1.13.0.dev143',
+ install_requires=['indy-plenum==1.13.0.dev169',
'timeout-decorator==0.4.0',
'distro==1.3.0'],
setup_requires=['pytest-runner'],
From 6bd7f20deb79df6a1f4bc8906bba7bee6bf9f1a8 Mon Sep 17 00:00:00 2001
From: udosson
Date: Tue, 9 Nov 2021 17:15:44 +0100
Subject: [PATCH 10/31] prepares indy-plenum package version of debian version
depedency
Signed-off-by: udosson
---
build-scripts/ubuntu-1604/prepare-package.sh | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/build-scripts/ubuntu-1604/prepare-package.sh b/build-scripts/ubuntu-1604/prepare-package.sh
index 8b8bc7d95..b9d8ce8a6 100755
--- a/build-scripts/ubuntu-1604/prepare-package.sh
+++ b/build-scripts/ubuntu-1604/prepare-package.sh
@@ -34,6 +34,10 @@ if [ "$distro_packages" = "debian-packages" ]; then
#### ToDo adjust packages for the Cannonical archive for Ubuntu 20.04 (focal)
sed -i "s~timeout-decorator~python3-timeout-decorator~" setup.py
sed -i "s~distro~python3-distro~" setup.py
+
+ echo -e "\n\nPrepares indy-plenum debian package version"
+ sed -i -r "s~indy-plenum==([0-9\.]+[0-9])(\.)?([a-z]+)~indy-plenum==\1\~\3~" setup.py
+
elif [ "$distro_packages" = "python-packages" ]; then
echo -e "\nNo adaption of dependencies for python packages"
else
From 9c3d0e42fa8595086829cf097e6d12f6e3d40298 Mon Sep 17 00:00:00 2001
From: Philipp Schlarb
Date: Thu, 4 Nov 2021 14:57:18 +0100
Subject: [PATCH 11/31] Baseimage changes as discussed in #1684
Signed-off-by: Philipp Schlarb
---
.../docker/baseimage/indy-baseci.ubuntu.dockerfile | 2 +-
environment/docker/baseimage/indy-baseci.version | 2 +-
.../baseimage/indy-baseimage.ubuntu.dockerfile | 14 ++++++++++----
.../docker/baseimage/indy-baseimage.version | 2 +-
.../baseimage/indy-core-baseci.ubuntu.dockerfile | 2 +-
.../docker/baseimage/indy-core-baseci.version | 2 +-
6 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/environment/docker/baseimage/indy-baseci.ubuntu.dockerfile b/environment/docker/baseimage/indy-baseci.ubuntu.dockerfile
index fe2865344..a9e16eba2 100644
--- a/environment/docker/baseimage/indy-baseci.ubuntu.dockerfile
+++ b/environment/docker/baseimage/indy-baseci.ubuntu.dockerfile
@@ -1,4 +1,4 @@
-FROM __NS__/indy-baseimage:0.0.3-master
+FROM __NS__/indy-baseimage:0.0.4
LABEL maintainer="Hyperledger "
# indy repos
diff --git a/environment/docker/baseimage/indy-baseci.version b/environment/docker/baseimage/indy-baseci.version
index 1ff0a77bd..81340c7e7 100644
--- a/environment/docker/baseimage/indy-baseci.version
+++ b/environment/docker/baseimage/indy-baseci.version
@@ -1 +1 @@
-0.0.3-master
+0.0.4
diff --git a/environment/docker/baseimage/indy-baseimage.ubuntu.dockerfile b/environment/docker/baseimage/indy-baseimage.ubuntu.dockerfile
index 41fb405a4..6ea5c1a2c 100644
--- a/environment/docker/baseimage/indy-baseimage.ubuntu.dockerfile
+++ b/environment/docker/baseimage/indy-baseimage.ubuntu.dockerfile
@@ -19,10 +19,16 @@ RUN apt-get update && apt-get install -y \
python-setuptools
# pypi based packages
-RUN pip3 install -U \
- 'pip<10.0.0' \
- setuptools \
- virtualenv
+RUN pip3 install -U\
+ "pip <10.0.0" \
+ "setuptools<=50.3.2"
+
+# needs to be installed separately and pinned to version 20.0.25 to be compatible with Python3.5 and packages like zipp==1.2.0
+RUN pip3 install -U \
+ 'virtualenv==20.0.35'
+
+
+RUN ln -s /usr/bin/pip3 /usr/bin/pip
COPY scripts/clean.sh /usr/local/bin/indy_image_clean
RUN chmod 755 /usr/local/bin/indy_image_clean
diff --git a/environment/docker/baseimage/indy-baseimage.version b/environment/docker/baseimage/indy-baseimage.version
index 1ff0a77bd..81340c7e7 100644
--- a/environment/docker/baseimage/indy-baseimage.version
+++ b/environment/docker/baseimage/indy-baseimage.version
@@ -1 +1 @@
-0.0.3-master
+0.0.4
diff --git a/environment/docker/baseimage/indy-core-baseci.ubuntu.dockerfile b/environment/docker/baseimage/indy-core-baseci.ubuntu.dockerfile
index 6b67e0d9d..350f51bac 100644
--- a/environment/docker/baseimage/indy-core-baseci.ubuntu.dockerfile
+++ b/environment/docker/baseimage/indy-core-baseci.ubuntu.dockerfile
@@ -1,4 +1,4 @@
-FROM __NS__/indy-baseci:0.0.3-master
+FROM __NS__/indy-baseci:0.0.4
LABEL maintainer="Hyperledger "
# indy repos
diff --git a/environment/docker/baseimage/indy-core-baseci.version b/environment/docker/baseimage/indy-core-baseci.version
index 1ff0a77bd..81340c7e7 100644
--- a/environment/docker/baseimage/indy-core-baseci.version
+++ b/environment/docker/baseimage/indy-core-baseci.version
@@ -1 +1 @@
-0.0.3-master
+0.0.4
From 1da2405438ca0ce9ceff339b5e2ae16b631c5234 Mon Sep 17 00:00:00 2001
From: Philipp Schlarb
Date: Mon, 29 Nov 2021 16:04:12 +0100
Subject: [PATCH 12/31] FIX wrong Slicing and SLICE_TOTAL_SLICES
Signed-off-by: Philipp Schlarb
---
.github/workflows/build.yaml | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index ae4e9411e..5f6ed3e0f 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -199,6 +199,8 @@ jobs:
# - https://github.com/ScaCap/action-surefire-report/issues/17
env:
NODE_OPTIONS: '--max_old_space_size=4096'
+ #SLICE_TOTAL_SLICES needs to match the total number of slices in the matrix strategy.
+ SLICE_TOTAL_SLICES: 11
container:
image: ghcr.io/${{ needs.workflow-setup.outputs.GITHUB_REPOSITORY_NAME }}/node-build:ubuntu-16-04
strategy:
@@ -231,9 +233,9 @@ jobs:
# Explicitly use the existing pip cache location in the node-build image.
pip --cache-dir /root/.cache/pip install .[tests]
- - name: Run Indy Node ${{ matrix.module }} test slice ${{ matrix.slice }}/${{ strategy.job-total }}
+ - name: Run Indy Node ${{ matrix.module }} test slice ${{ matrix.slice }}/ ${{ env.SLICE_TOTAL_SLICES }}
id: node-test
- run: RUSTPYTHONASYNCIODEBUG=0 python3 runner.py --pytest "python3 -m pytest -l -vv" --dir "${{ matrix.module }}" --output "test-result-node-${{ matrix.slice }}.txt" --test-only-slice "${{ matrix.slice }}/${{ strategy.job-total }}"
+ run: RUSTPYTHONASYNCIODEBUG=0 python3 runner.py --pytest "python3 -m pytest -l -vv" --dir "${{ matrix.module }}" --output "test-result-node-${{ matrix.slice }}.txt" --test-only-slice "${{ matrix.slice }}/ ${{ env.SLICE_TOTAL_SLICES }}"
- name: Publish Test Report
if: success() || failure()
From d73baf182283311d4a15c2e3ec7636194021e454 Mon Sep 17 00:00:00 2001
From: Philipp Schlarb
Date: Fri, 27 Aug 2021 10:33:18 +0200
Subject: [PATCH 13/31] Added documentation for creating a new network from
scratch
Co-authored-by: Wade Barnes
Signed-off-by: Philipp Schlarb
---
docs/source/NewNetwork/CLIInstall.md | 116 +++++
docs/source/NewNetwork/CreateDID.md | 33 ++
docs/source/NewNetwork/NewNetwork.md | 144 ++++++
docs/source/configuring-2nics.md | 148 +++++++
docs/source/index.rst | 7 +-
docs/source/installation-and-configuration.md | 418 ++++++++++++++++++
docs/source/start-nodes.md | 2 +-
sample/Network/DIDs.txt | 71 +++
sample/Network/README.md | 132 ++++++
sample/Network/Stewards.csv | 5 +
sample/Network/Trustees.csv | 4 +
sample/Network/domain_transactions_genesis | 7 +
sample/Network/pool_transactions_genesis | 4 +
13 files changed, 1089 insertions(+), 2 deletions(-)
create mode 100644 docs/source/NewNetwork/CLIInstall.md
create mode 100644 docs/source/NewNetwork/CreateDID.md
create mode 100644 docs/source/NewNetwork/NewNetwork.md
create mode 100644 docs/source/configuring-2nics.md
create mode 100644 docs/source/installation-and-configuration.md
create mode 100644 sample/Network/DIDs.txt
create mode 100644 sample/Network/README.md
create mode 100644 sample/Network/Stewards.csv
create mode 100644 sample/Network/Trustees.csv
create mode 100644 sample/Network/domain_transactions_genesis
create mode 100644 sample/Network/pool_transactions_genesis
diff --git a/docs/source/NewNetwork/CLIInstall.md b/docs/source/NewNetwork/CLIInstall.md
new file mode 100644
index 000000000..4ce980c75
--- /dev/null
+++ b/docs/source/NewNetwork/CLIInstall.md
@@ -0,0 +1,116 @@
+# Installing the `indy-cli`
+
+The `indy-cli` is developed under the [indy-sdk](https://github.com/hyperledger/indy-sdk). This documentation may be not up to date.
+
+You will need to perform the following once for each `indy-cli` machine you would like to set up (only 1 is required).
+It is recommended that you install the `indy-cli` in your native work environment if possible, so you always have it available even when traveling.
+
+## Containerized `indy-cli` Environment
+
+The following sections describe how to install and configure the `indy-cli` directly on a machine or VM. However, possibly the most convenient option is to use a containerized `indy-cli` environment like the one included with [von-network](https://github.com/bcgov/von-network). For information on how to use the containerized `indy-cli` in `von-network`, refer to [Using the containerized indy-cli](https://github.com/bcgov/von-network/blob/main/docs/Indy-CLI.md)
+
+## Windows:
+To install the `indy-cli` on Windows 10 perform the following steps:
+1. Download https://repo.sovrin.org/windows/indy-cli/stable/1.16.0/indy-cli_1.16.0.zip and unzip it.
+ If there is a newer version under https://repo.sovrin.org/windows/indy-cli/stable/ it instead.
+2. Open a command prompt. (This will work differently if you use Windows Terminal).
+3. `cd` to the directory where you unzipped the `indy-cli` package. For example, if you unzipped directly in your ‘downloads’ directory like I did you would type: `cd \Users\\Downloads\indy-cli_1.14.2`
+4. Create a JSON Config file containing your taaAcceptanceMechanism in the directory where indy-cli.exe resides (I created \Users\\Downloads\indy-cli_1.14.2\cliconfig.json on my machine)
+ ```json
+ {
+ "taaAcceptanceMechanism": "for_session"
+ }
+ ```
+5. Run `indy-cli.exe --config cliconfig.json` to verify proper installation. You should see a new window appear with an `indy>` prompt, (If you are double clicking to start `indy-cli`, you need to right click on the .exe in your window and add the --config parameter first.) If you get an error stating that it is missing vcruntime140.dll then do the following:
+6. Download and install vc_redist.x64.exe from the Visual Studio 2017 section on the https://support.microsoft.com/en-ae/help/2977003/the-latest-supported-visual-c-downloads page, and then rerun indy-cli.exe to see if it works as described in previous step.
+7. Type ‘exit’ in the `indy-cli`
+
+## Ubuntu:
+To install the `indy-cli` on Ubuntu, perform the following steps from the ubuntu command line:
+
+1. `sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CE7709D068DB5E88`
+2. `sudo add-apt-repository "deb https://repo.sovrin.org/sdk/deb xenial stable"`
+3. `sudo add-apt-repository "deb https://repo.sovrin.org/deb xenial stable"`
+4. `sudo apt-get update -y`
+5. `sudo apt-get upgrade -y `
+6. `sudo apt-get install -y indy-cli`
+7. `cd ~`
+8. Create a JSON Config file containing your taaAcceptanceMechanism in your home directory:
+`vim ~/cliconfig.json`
+
+ Press the “i” key and paste the following into the file:
+ ```json
+ {
+ "taaAcceptanceMechanism": "for_session"
+ }
+ ```
+ Press the “esc” key then the following characters to write the file and quit
+`:wq`
+9. Run `indy-cli --config ~/cliconfig.json` to start the `indy-cli`
+
+## Mac:
+
+Since there is not a prepackaged version of the `indy-cli` prepared for the Mac, the following steps will help you to create an environment, build, and run the `indy-cli` in a Mac terminal.
+
+Open a Terminal
+Run the following commands in the terminal:
+
+1. `cd ~`
+2. `mkdir github`
+3. `cd github`
+4. `git clone https://github.com/hyperledger/indy-sdk.git`(might need xcode-select --install if error occurs)
+5. `/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"`
+6. `curl https://sh.rustup.rs -sSf | sh`
+7. Follow onscreen instructions to install rust
+8. `brew install pkg-config libsodium automake autoconf cmake openssl zeromq zmq`
+ NOTE: the openssl path needs to match what you currently have on your system
+
+9. Run > `ls /usr/local/Cellar/openssl/`
+ Note the name of the directory shown (the example below shows 1.0.2p but the latest version is 1.1.1l)
+
+ Use this directory in place of the one listed below in your .profile file
+
+10. Add the following lines to your` ~/.profile file `(making the correction shown in the previous step if needed)
+ ```
+ export PATH="$HOME/.cargo/bin:$PATH:~/github/indy-sdk/libindy/target/debug:~/github/indy-sdk/cli/target/debug"
+ export PKG_CONFIG_ALLOW_CROSS=1
+ export CARGO_INCREMENTAL=1
+ export RUST_LOG=indy=trace
+ export RUST_TEST_THREADS=1
+ export OPENSSL_DIR=/usr/local/Cellar/openssl/1.0.2p #use your path
+ export LIBRARY_PATH=~/github/indy-sdk/libindy/target/debug/
+ export LIBINDY_DIR=~/github/indy-sdk/libindy/target/debug/
+ ```
+11. Run the following commands from your terminal to build the `indy-cli`:
+ ```
+ source ~/.profile
+ cd ~/github/indy-sdk/libindy
+ cargo build
+ cd ../cli
+ cargo build
+ ```
+12. Create a JSON Config file containing your taaAcceptanceMechanism in your home directory:
+ `vim ~/cliconfig.json`
+
+ Press the “i” key and paste the following into the file:
+ ```json
+ {
+ "taaAcceptanceMechanism": "for_session"
+ }
+ ```
+ Press the “esc” key then the following characters to write the file and quit
+ `:wq`
+13. You can now run `indy-cli` from within a terminal by typing
+
+ `indy-cli --config ~/cliconfig.json`
+
+ `indy> exit` (To exit from the `indy-cli` prompt when you ar done)
+
+ If the above gives error regarding library not loaded libssl.1.0.0, you will probably need to run the following command (all in one line should work) to revert your version:
+
+ ```
+ brew uninstall --ignore-dependencies openssl; brew uninstall openssl;
+ brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
+ ```
+
+
diff --git a/docs/source/NewNetwork/CreateDID.md b/docs/source/NewNetwork/CreateDID.md
new file mode 100644
index 000000000..eb8033d12
--- /dev/null
+++ b/docs/source/NewNetwork/CreateDID.md
@@ -0,0 +1,33 @@
+# Creating a DID using the `indy-cli`
+
+You will need to perform the following commands once for each `indy-cli` machine that you want to run on. The following commands contain suggestions to save certain values in a secure place. Please do not share those values or that place with anyone.
+
+_If you just need to quickly generate a set of secrets (Seed and wallet key), or a Seed, DID, and Verkey and do not have an `indy-cli` environment already setup, you can use the `indy-cli` features integrated into `von-network`. Refer to [Generate a set of Secrets](https://github.com/bcgov/von-network/blob/main/docs/Indy-CLI.md#generate-a-set-of-secrets), and [Generate your DID](https://github.com/bcgov/von-network/blob/main/docs/Indy-CLI.md#generate-your-did) for details._
+
+
+1. Start your `indy-cli` using the instructions from [Installing the `indy-cli`](./CLIInstall.md) for your platform.
+
+ All following commands are executing inside the `indy-cli`.
+
+2. Create a wallet with:
+
+ `wallet create key`
+
+ You will be prompted for a wallet key. What you type will not be displayed on the console. Your wallet key is a secure key that only you should know, and it should be randomly generated. Save it in a secure place for later use. You will use it every time you need to send transactions to the ledger from the `indy-cli`.
+
+3. `wallet open wallet_name key`
+
+ You will be prompted for your wallet key. What you type will not be displayed on the console.
+
+4. `did new seed`
+
+ You will be prompted for a seed. What you type will not be displayed on the console.
+
+ If you have lost your original seed or have never created one, then create a new one. This seed is used to regenerate your DID and to add your DID to your wallet(s).
+
+ The seed is a 32 character string that only you can know.
+
+ > WARNING: Whoever knows your Seed can recreate your exact DID in their own wallet and use it to manage the ledger.
+
+ Save your Seed in a secure place so that only you can recreate your DID whenever needed.
+ Also save the public DID and verkey generated from this step so that you will know and can verify your public DID.
\ No newline at end of file
diff --git a/docs/source/NewNetwork/NewNetwork.md b/docs/source/NewNetwork/NewNetwork.md
new file mode 100644
index 000000000..821b03a5a
--- /dev/null
+++ b/docs/source/NewNetwork/NewNetwork.md
@@ -0,0 +1,144 @@
+# Setting up a New Network
+
+## Introduction
+
+ The purpose of this document is to describe in some detail the process of building a brand-new Indy Node Network (Network) using 4 Stewards on their own separate nodes.
+ It goes into more details than [Starting a Network](../start-nodes.md).
+ These instructions are intended to be used for a distributed or “production” level environment but can be adapted to be used to build a private network.
+
+ This document is heavily based on [Create New Indy Network](https://docs.google.com/document/d/1XE2QOiGWuRzWdlxiI9LrG9Am9dCfPXBXnv52wGHorNE) and the [Steward Validator Preparation Guide v3](https://docs.google.com/document/d/18MNB7nEKerlcyZKof5AvGMy0GP9T82c4SWaxZkPzya4).
+
+## I. Create Network Governance documents (Optional)
+
+ Network Governance describes the policies and procedures by which your new network will run and be maintained. Here’s an example: [Sovrin Governance Framework](https://docs.google.com/document/d/1K8l5MfXQWQtpT49-FHuYn_ZnRC5m0Nwk)
+
+
+## II. Assign Network Trustees
+
+ Trustees are the people who manage the network and protect the integrity of the Network Governance. This includes managing the `auth_rules`.
+
+ For a production Network, at least 3 Trustees representing three different persons are required and more are preferred. For a test Network one Trustee is required and 3 or more are preferred (all Trustee DID’s may belong to the same user on a test network if needed).
+
+ Initial Trustees (3 preferred) must create and submit a Trustee DID and Verkey so that the domain genesis file can be built.
+
+ Each trustee has to [instal the `indy-cli`](./CLIInstall.md) and [create a Trustee DID](./CreateDID.md).
+
+ Once the Trustees have created their DID and Verkey give the Trustees access to a spreadsheet like [this one](https://docs.google.com/spreadsheets/d/1LDduIeZp7pansd9deXeVSqGgdf0VdAHNMc7xYli3QAY/edit#gid=0) and have them fill out their own row of the Trustees sheet. The completed sheet will be used to generate the genesis transaction files for the network.
+
+
+## III. Genesis Stewards
+
+ A Steward is an organization responsible for running a Node on the Network
+
+ Exactly 4 “Genesis” Stewards are needed to establish the network, more Stewards can be added later.
+
+ Each Genesis Steward’s node information will be included in the Genesis Pool file, so they should be willing to install and maintain a Node on the new Network for an extended period of time.
+
+ The Stewards must:
+ 1. Generate Steward DIDs as described in [Creating DID](./CreateDID.md).
+ 1. Install their node as described in [Installation and configuration of Indy-Node](../installation-and-configuration.md) (with some small adjustments):
+ 1. Determine a name for the new network and have the stewards substitute it in the appropriate places in the guide, such as when setting the network name and creating the directory when creating the keys for the node.
+ 1. They all need to stop at the normal place ([3.5. Add Node to a Pool](../installation-and-configuration.md#3.5.-Add-Node-to-a-Pool)) as instructed in the guide as the steps that follow differ when creating a new network. The following sections of this guide describe the steps required to start the new network.
+
+ Once the Stewards have created their DID and Verkey, and performed the initial setup of they node, give the Stewards access to a spreadsheet like [this one](https://docs.google.com/spreadsheets/d/1LDduIeZp7pansd9deXeVSqGgdf0VdAHNMc7xYli3QAY/edit#gid=0) and have them fill out their own row of the Stewards sheet. The completed sheet will be used to generate the genesis transaction files for the network.
+
+## IV. Create and Distribute genesis transaction files
+
+ Save the sheets filled out by the Trustees and Stewards as separate files in csv format, and use the [genesis_from_files.py](https://github.com/sovrin-foundation/steward-tools/tree/master/create_genesis) script to generate the `pool_transactions_genesis` and `domain_transactions_genesis` files for the network.
+
+ >Tip: The `generategenesisfiles` in `von-network` provides a convenient wrapper around the `genesis_from_files.py` and runs it in a container including all of the dependencies. For more information refer to [Generate Genesis Files](https://github.com/bcgov/von-network/blob/main/docs/Indy-CLI.md#generate-genesis-files).
+
+ Double check the files contain the correct information:
+ - The `domain_transactions_genesis` file should contain all of the DIDs and Verkeys for the Trustees (`"role":"0"`) and the Stewards (`"role":"2"`).
+ - The `pool_transactions_genesis` file should contain each of the nodes with all their unique information.
+
+ Publish the genesis files to a public location, such as a GitHub repository associated with your network. The Stewards and end users will need this information.
+
+ Inform the Stewards and Trustees where they can download the genesis files.
+
+ - The Trustees and Stewards will need to register the `pool_transactions_genesis` with their `indy-cli` to complete the setup and to be able to connect to the network once it's running. How and where they need to register the `pool_transactions_genesis` depends on how they setup their `indy-cli` environment; [Installing the `indy-cli`](./CLIInstall.md)
+
+ - The Stewards will also need to download the genesis files onto their nodes while completing the setup. All of the following steps are to be completed on the node.
+ 1. Set the network name in `/etc/indy/indy_config.py`, replacing `` in the following command with the actual network name;
+
+ `sudo sed -i -re "s/(NETWORK_NAME = ')\w+/\1/" /etc/indy/indy_config.py`
+
+ 1. Create a network directory and download the genesis files into it. _The directory name must be the same on all of the nodes and it must match the name of the network._
+ 1. `sudo -i -u indy mkdir /var/lib/indy/`
+ 1. `cd /var/lib/indy/`
+ 1. `sudo curl -o domain_transactions_genesis `
+ 1. `sudo curl -o pool_transactions_genesis `
+ 1. `sudo chown indy:indy *`
+ - It is important the files are owned by `indy:indy`.
+
+## V. Schedule a meeting to instantiate the new network
+
+ Invite all Genesis Stewards to a meeting where they can execute commands and share their screens for both an `indy-cli` and for their Validator Nodes being added to the Network.
+
+ > NOTE: It is very useful to go through some checks for each node to verify their setup before continuing. Some large amounts of debug and recovery work can be avoided by 5-10 minutes of checking configs of each node at the beginning of the meeting.
+ > - `/etc/indy/indy_config.py`
+ > - all nodes need to have the same network name.
+ > - the name of the network should correspond to the `/var/lib/indy/` directory on each node which contains the genesis files for the network, and the files in the directory should be owned by `indy:indy`.
+ > - `/etc/indy/indy.env`
+ > - all nodes should have local ip addresses in this file and be pointing at the correct ports.
+ > - Genesis files
+ > - Ensure both `pool_transactions_genesis` and `domain_transactions_genesis` files contain the expected content.
+ > - Verify the software version on all the nodes match
+ > ```
+ > dpkg -l | grep indy
+ > dpkg -l | grep sovrin
+ > ```
+ > - Network Connectivity
+ > - Use `nc -l ` (on the host), and `nc -vz ` (on the remote) to test the following.
+ > - Check the network connectivity between nodes using the `node_ip:port` combinations. Ensure that each node can communicate with all of the other nodes.
+ > - Check the network connectivity between the nodes and a client using the `client_ip:port` combinations. Ensure each node is accessible to client machines.
+
+ Once all of the checks are complete have the Stewards simultaneously start their nodes as described in section [3.5.2. Enable the Service](../installation-and-configuration.md#3.5.2.-Enable-the-Service) of the Installation and configuration of Indy-Node guide, and walk though the remainder of that guide.
+
+## VI. Configure the Indy Network
+
+### `auth_rules`
+ Update the network's `auth_rules` to help enforce the governance rules for the network.
+
+ For more information on `auth_rules` refer to:
+ - [Default AUTH_MAP Rules](../auth_rules.md)
+ - [auth_rules Walkthough](https://docs.google.com/document/d/1xk0A5FljKOZ2Fazri6J5mAfnYWXdOMl2LwrFK16MJIY)
+
+### `TAA` (Transaction Author Agreements)
+ Add a `TAA` to the network.
+
+ For more information on `TAA`s refer to:
+ - [Transaction Author Agreement - `indy-sdk`](https://github.com/hyperledger/indy-sdk/blob/master/docs/how-tos/transaction-author-agreement.md)
+ - [Transaction Author Agreement - `indy-plenum`](https://github.com/hyperledger/indy-plenum/blob/master/docs/source/transaction_author_agreement.md)
+ - [Transaction Author Agreement Design](../../../design/txn_author_agreement.md)
+ - [TAA for CLI Walkthrough](https://docs.google.com/document/d/1Ma-EJkYpRfPOZApyEvcWrkb4EKn71XrIFd9KvZL0Whg)
+
+## Where to go from here?
+
+ ### Add more Nodes
+
+ For the network to remain in write consensus in the event of node failures the network needs to be comprised of `3f+1` nodes, where `f` is the number of failed nodes.
+
+ For a network of 4 nodes the network can remain in write consensus if a single node at a time fails, however if more than a single node fails at a time the network will loose write consensus and go into a read-only state. Similarly, a network comprised of 7 nodes can withstand up to 2 nodes failing at any given time. Therefore, it's recommended to have at least 7 nodes running in your network.
+
+ Examples:
+
+ | Failures to Withstand | 3f+1 | Required Nodes |
+ |--|--|--|
+ | 1 | 3(1)+1 | 4 |
+ | 2 | 3(2)+1 | 7 |
+ | 3 | 3(3)+1 | 10 |
+
+ ### Network Monitoring
+
+ [hyperledger/indy-node-monitor](https://github.com/hyperledger/indy-node-monitor) is the community supported and maintained tool for network monitoring.
+
+ #### Manual
+ - Run `indy-node-monitor` at least three times a day to detect any issues with the network.
+
+ #### Automated
+ - Run `indy-node-monitor` on a schedule (every 15-30 minutes) and add a notification plugin to alert you to any issues. _Please consider contributing your work back to the project._
+
+## Hands On Walkthrough
+
+ An example walkthrough of the above mentioned steps can be found in the `sample/Network` [folder](../../../sample/Network/README.md).
diff --git a/docs/source/configuring-2nics.md b/docs/source/configuring-2nics.md
new file mode 100644
index 000000000..38f7faa22
--- /dev/null
+++ b/docs/source/configuring-2nics.md
@@ -0,0 +1,148 @@
+# Configuring a 2 NIC Node
+First some caveats and warnings. These are notes based on setting up 2 NICs on an AWS VM. It might be possible to adapt them for other environments as well, particularly the "Configure Network Interfaces in Ubuntu" section.
+
+>WARNING:
+When you are doing network configuration, it is very possible to put your VM into a state where you are no longer able to log into it over the network. This may be difficult or impossible to recover from. Be very careful. If you have questions, doubts, or just need help, reach out prior to following these instructions.
+
+## Initial networking steps in an AWS console
+Create security group "validator client"
+- Port 22 for ssh
+- Port 9702 for Validator client connections
+
+
+Create security group "validator inter-node"
+- Port 9701 for Validator inter-node connections
+- Initially set up your Validator IP address to accept connections from anywhere, but later modify it as follows to only allow connections from specific IP addresses.
+ - To generate an allow list, run the following command on a Validator Node:
+
+ `current_validators.py --writeJson | node_address_list.py --outFormat aws`
+
+Setup Validator instance
+1. Provision VM
+ - Use security group "validator client" for the default network interface
+ - make note of the instance ID when completed
+2. Add and configure a 2nd network interface in AWS.
+ - On EC2 left side menu - Network & Security -> Network Interfaces -> Create Network Interface
+ 1. Subnet -> Select a different subnet in the same zone as your instance
+ 2. Private IP -> auto assign
+ 3. Security groups -> validator inter-node
+ - On the main screen, select the new interface and click the Attach button
+ Find and select the instance ID (recorded in step 1)
+3. Note the Network Interface ID of each network interface
+ - On EC2 left side menu - INSTANCES -> Instances
+ - Select your instance
+ - At the bottom of the screen select the description tab and scroll down to ‘Network interfaces’
+ - Click on each interface and then record the ‘Interface ID’ and the ‘Private IP Address’ for later use.
+4. Create 2 Elastic IP’s, 1 for each NIC, and associate them with the network interfaces
+ - On EC2 left side menu - Network & Security ->Elastic IPs
+ 1. Click Allocate New Address
+ 1. Give your new addresses appropriate names so that you can identify them later. (i.e. BuilderNet Client and BuilderNet Inter-Node)
+ 2. I used Amazon IP addresses, but you can use your own if you like
+ 3. Repeat steps 1 and 2 to create a second Elastic IP
+ 2. For each new Elastic IP do the following:
+ 1. Select one of the Elastic IP’s you just created
+ 2. Click Actions -> Associate address
+ - Resource type -> ‘Network interface’
+ - Network Interface ->