{"action":"created","comment":{"url":"https://api.github.com/repos/hyperledger/sawtooth-core/pulls/comments/177952645","pull_request_review_id":107922125,"id":177952645,"diff_hunk":"@@ -0,0 +1,443 @@\n+**********************************\n+Adding Nodes to a Sawtooth Network\n+**********************************\n+\n+An earlier procedure in this guide created an application development\n+environment with a single validator node (see :doc:`installing_sawtooth`). This\n+procedure describes how to create a Sawtooth network by adding more nodes to\n+your application development environment.\n+\n+.. figure:: ../images/appdev-environment-two-nodes.*\n+   :width: 100%\n+   :align: center\n+   :alt: Application development environment with two nodes\n+\n+Like the single-node environment, this environment uses serial transaction\n+processing and static peering. However, this multiple-node environment uses PoET\n+simulator consensus instead of dev_mode consensus. As a result, it adds the\n+Validator Registry transaction processor, which handles certain settings for a\n+multiple-node network.\n+\n+\n+About Sawtooth Networks\n+=======================\n+\n+A Sawtooth network has the following requirements:\n+\n+* Each host system (physical computer, virtual machine, or set of Docker\n+  containers) must run one validator, a REST API, and an identical set of\n+  transaction processors.\n+\n+  This environment includes the Sawtooth REST API on all validator nodes.\n+  However, an application could provide a custom REST API instead; see the\n+  `Sawtooth Supply Chain repository <https://github.com/hyperledger/sawtooth-supply-chain>`_\n+  for an example.\n+\n+* Each validator node must advertise a routable address. The Docker platform\n+  provides a preconfigured setting. For the Ubuntu platform, you must follow the\n+  instructions in this procedure to provide this information in the validator\n+  configuration file.\n+\n+* The authorization type must be the same on all nodes: either ``trust``\n+  (default) or ``challenge``. This application development environment uses\n+  ``trust`` authorization.\n+\n+* The genesis block is created for the first validator node only. It includes\n+  on-chain configuration settings, such as the consensus type and allowed\n+  transaction types, that will be available to the new validator nodes once they\n+  join the network.\n+\n+.. note::\n+\n+   The first validator node on the network has no special meaning, other than\n+   being the node that created the genesis block. Sawtooth has no concept of a\n+   \"head node\" or \"master node\". Once multiple nodes are up and running, each\n+   node has the same genesis block and treats all other nodes as peers.\n+\n+\n+Docker: Start a Multiple-node Sawtooth Network\n+==============================================\n+\n+#. If the first validator node is running, stop the Sawtooth components and run\n+   ``docker-compose down``, as described in :ref:`stop-sawtooth-docker-label`.\n+\n+#. Create a Sawtooth application development environment as described in\n+   :doc:`docker`, with the following important differences:\n+\n+   a. Download the Docker Compose file for a multiple-node network,\n+      `sawtooth-default-poet.yaml <./sawtooth-default-poet.yaml>`_. Save this\n+      file in the same directory as the single-node compose file\n+      (``sawtooth-default.yaml``).\n+\n+   #. Use the following command to start the multiple-node Sawtooth network:\n+\n+      .. code-block:: console\n+\n+         user@host$ docker-compose -f sawtooth-default-poet.yaml up\n+\n+   #. This Compose file creates five validator nodes, numbered from 0 to 4.\n+      Note the container names for the Sawtooth components on each node:\n+\n+      ``validator-0``:\n+\n+        * ``sawtooth-poet-validator-0``\n+        * ``sawtooth-poet-rest-api-0``\n+        * ``sawtooth-poet-settings-tp-0``\n+        * ``sawtooth-poet-intkey-tp-python-0``\n+        * ``sawtooth-poet-xo-tp-python-0``\n+        * ``sawtooth-poet-validator-registry-tp-0``\n+\n+      ``validator-1``:\n+\n+        * ``sawtooth-validator-default-1``\n+        * ``sawtooth-poet-rest-api-1``\n+        * ``sawtooth-settings-tp-default-1``\n+        * ``sawtooth-poet-intkey-tp-python-1``\n+        * ``sawtooth-poet-xo-tp-python-1``\n+        * ``sawtooth-poet-validator-registry-tp-1``\n+\n+      ... and so on.\n+\n+   #. Note that there is only one shell container:\n+\n+      * ``sawtooth-poet-shell``\n+\n+#. Configure the transaction family settings on the first validator node.\n+\n+   a. Connect to the ``sawtooth-poet-validator-0`` container.\n+\n+      .. code-block:: console\n+\n+         user@host$ docker exec -it ``sawtooth-poet-validator-0`` bash\n+         root@validator-0#\n+\n+   #. Run the following command to create and submit a batch containing the\n+      new settings:\n+\n+      .. code-block:: console\n+\n+         root@validator-0# sawset proposal create --url http://rest-api:8008 \\\n+         --key /root/.sawtooth/keys/my_key.priv \\\n+         sawtooth.validator.transaction_families='[{\"family\": \"intkey\", \"version\": \"1.0\"},{\"family\":\"sawtooth_settings\", \"version\":\"1.0\"},{\"family\":\"xo\", \"version\":\"1.0\"},{\"family\":\"sawtooth_validator_registry\", \"version\":\"1.0\"}]'\n+\n+#. You can connect to a validator registry container, such as\n+   ``sawtooth-poet-validator-registry-tp-0``, then use the following command\n+   to verify that ``poet-validator-registry-tp`` is running.\n+\n+   .. code-block:: console\n+\n+      # ps --pid 1 fw\n+\n+#. If you need to stop or reset the environment, enter CTRL-c in each\n+   container to stop the Sawtooth component, then run the following command\n+   from your host system:\n+\n+   .. code-block:: console\n+\n+      user@host$ docker-compose -f sawtooth-default-poet.yaml down\n+\n+\n+Ubuntu: Configure and Start a Multiple-node Sawtooth Network\n+=============================================================\n+\n+\n+Prerequisites\n+-------------\n+\n+This procedure assumes that you have set up an application development\n+environment as described in :doc:`ubuntu`, and that you have a working\n+(runnable) validator node.\n+\n+Step 1: Configure the Network on the First Node\n+-----------------------------------------------\n+\n+#. If the first validator node is running, stop all Sawtooth components as\n+   described in :ref:`stop-sawtooth-ubuntu-label`.\n+\n+#. Open a new terminal window on the first validator node (the client-1 window)\n+   and configure the Sawtooth settings to allow transactions from the Settings,\n+   IntegerKey, XO, and Validator Registry transaction families. Run this\n+   command:\n+\n+     .. code-block:: console\n+\n+        user@client-1$ sawset proposal create \\\n+        sawtooth.validator.transaction_families='[{\"family\": \"intkey\", \"version\": \"1.0\"},{\"family\":\"sawtooth_settings\", \"version\":\"1.0\"},{\"family\":\"xo\", \"version\":\"1.0\"},{\"family\":\"sawtooth_validator_registry\", \"version\":\"1.0\"}]'\n+\n+#. Create the ``validator.toml`` configuration file on the first validator node.\n+   Use the following command to copy the example configuration file to the\n+   config directory, ``/etc/sawtooth``.\n+\n+   .. code-block:: console\n+\n+      user@client-1$ sudo cp /etc/sawtooth/validator.toml.example /etc/sawtooth/validator.toml\n+\n+   .. note::\n+\n+      This environment uses the default location and name for this configuration\n+      file. For more information, see\n+      :doc:`../sysadmin_guide/configuring_sawtooth/validator_configuration_file`.\n+\n+#. Edit ``/etc/sawtooth/validator.toml`` to change the following settings:\n+\n+   a. Set the ``bind`` directive to the network and component values for this\n+      node.\n+\n+      * ``network`` specifies the validator-to-validator connection (by default,\n+        ``127.0.0.1:8800``)\n+\n+      * ``component`` specifies the port on which the validator listens for\n+        communication from other Sawtooth components (the REST API and\n+        transaction processors)\n+\n+      For this application development environment, use the default settings:\n+\n+        .. code-block:: none\n+\n+           bind = [\n+             \"network:tcp://127.0.0.1:8800\",\n+             \"component:tcp://127.0.0.1:4004\"\n+           ]\n+\n+   #. Set ``endpoint`` to the publicly addressable IP and port of the\n+      validator-to-validator connection. By default, ``endpoint`` is the same as\n+      the bind ``network`` setting: ``tcp://127.0.0.1:8800``. You must change\n+      the ``endpoint`` value if the validator is hosted behind a firewall. In\n+      this case, the firewall must map (redirect) the publicly addressable\n+      IP:port to the bind network IP:Port.\n+\n+      .. code-block:: none\n+\n+         endpoint = \"tcp://external-ip-1:8800\"\n+\n+      The validator will share the endpoint IP:port with other validators when\n+      it is peering with them.\n+\n+   #. Comment out all other settings in this file unless your network requires a\n+      non-default configuration.\n+\n+      For information on the validator configuration options, see \"Validator\n+      Configuration File\" in the System Administration Guide. For more information\n+      on these settings, run ``sawtooth-validator --help`` on a validator node.\n+\n+.. _install-second-val-ubuntu-label:\n+\n+Step 2: Install and Configure a Second Validator Node\n+------------------------------------------------------\n+\n+#. Install and configure Sawtooth on the second node as described in\n+   :doc:`ubuntu`, with one difference: **Do not** create a genesis block","path":"docs/source/app_developers_guide/adding_a_node.rst","position":229,"original_position":229,"commit_id":"2cebd6ab57a6d8386c4a61e99cb8dd1648482a38","original_commit_id":"2cebd6ab57a6d8386c4a61e99cb8dd1648482a38","user":{"login":"dcmiddle","id":4999494,"avatar_url":"https://avatars0.githubusercontent.com/u/4999494?v=4","gravatar_id":"","url":"https://api.github.com/users/dcmiddle","html_url":"https://github.com/dcmiddle","followers_url":"https://api.github.com/users/dcmiddle/followers","following_url":"https://api.github.com/users/dcmiddle/following{/other_user}","gists_url":"https://api.github.com/users/dcmiddle/gists{/gist_id}","starred_url":"https://api.github.com/users/dcmiddle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dcmiddle/subscriptions","organizations_url":"https://api.github.com/users/dcmiddle/orgs","repos_url":"https://api.github.com/users/dcmiddle/repos","events_url":"https://api.github.com/users/dcmiddle/events{/privacy}","received_events_url":"https://api.github.com/users/dcmiddle/received_events","type":"User","site_admin":false},"body":"If you don't remove the sawset command above, you may also need to explain you don't do that here or explain up there that you are making a blockchain setting to global state that you only do once. (gets wordy which is why I'd rather not have it in if it's not necessary).","created_at":"2018-03-29T04:47:18Z","updated_at":"2018-03-29T04:49:44Z","html_url":"https://github.com/hyperledger/sawtooth-core/pull/1536#discussion_r177952645","pull_request_url":"https://api.github.com/repos/hyperledger/sawtooth-core/pulls/1536","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/hyperledger/sawtooth-core/pulls/comments/177952645"},"html":{"href":"https://github.com/hyperledger/sawtooth-core/pull/1536#discussion_r177952645"},"pull_request":{"href":"https://api.github.com/repos/hyperledger/sawtooth-core/pulls/1536"}}},"pull_request":{"url":"https://api.github.com/repos/hyperledger/sawtooth-core/pulls/1536","id":176980247,"html_url":"https://github.com/hyperledger/sawtooth-core/pull/1536","diff_url":"https://github.com/hyperledger/sawtooth-core/pull/1536.diff","patch_url":"https://github.com/hyperledger/sawtooth-core/pull/1536.patch","issue_url":"https://api.github.com/repos/hyperledger/sawtooth-core/issues/1536","number":1536,"state":"open","locked":false,"title":"Add new procedure on adding a node to a Sawtooth network","user":{"login":"chenette","id":31738106,"avatar_url":"https://avatars1.githubusercontent.com/u/31738106?v=4","gravatar_id":"","url":"https://api.github.com/users/chenette","html_url":"https://github.com/chenette","followers_url":"https://api.github.com/users/chenette/followers","following_url":"https://api.github.com/users/chenette/following{/other_user}","gists_url":"https://api.github.com/users/chenette/gists{/gist_id}","starred_url":"https://api.github.com/users/chenette/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chenette/subscriptions","organizations_url":"https://api.github.com/users/chenette/orgs","repos_url":"https://api.github.com/users/chenette/repos","events_url":"https://api.github.com/users/chenette/events{/privacy}","received_events_url":"https://api.github.com/users/chenette/received_events","type":"User","site_admin":false},"body":"- Includes Docker and Ubuntu (but not AWS, because AWS is only 0.8).\r\n\r\n- Still needs information on how to verify network functionality - see the last section.\r\n\r\nSigned-off-by: Anne Chenette <chenette@bitwise.io>","created_at":"2018-03-23T05:57:43Z","updated_at":"2018-03-29T04:49:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4c6b808c2f8c15de7cb98016952acd8f9e4318ad","assignee":{"login":"chenette","id":31738106,"avatar_url":"https://avatars1.githubusercontent.com/u/31738106?v=4","gravatar_id":"","url":"https://api.github.com/users/chenette","html_url":"https://github.com/chenette","followers_url":"https://api.github.com/users/chenette/followers","following_url":"https://api.github.com/users/chenette/following{/other_user}","gists_url":"https://api.github.com/users/chenette/gists{/gist_id}","starred_url":"https://api.github.com/users/chenette/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chenette/subscriptions","organizations_url":"https://api.github.com/users/chenette/orgs","repos_url":"https://api.github.com/users/chenette/repos","events_url":"https://api.github.com/users/chenette/events{/privacy}","received_events_url":"https://api.github.com/users/chenette/received_events","type":"User","site_admin":false},"assignees":[{"login":"chenette","id":31738106,"avatar_url":"https://avatars1.githubusercontent.com/u/31738106?v=4","gravatar_id":"","url":"https://api.github.com/users/chenette","html_url":"https://github.com/chenette","followers_url":"https://api.github.com/users/chenette/followers","following_url":"https://api.github.com/users/chenette/following{/other_user}","gists_url":"https://api.github.com/users/chenette/gists{/gist_id}","starred_url":"https://api.github.com/users/chenette/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chenette/subscriptions","organizations_url":"https://api.github.com/users/chenette/orgs","repos_url":"https://api.github.com/users/chenette/repos","events_url":"https://api.github.com/users/chenette/events{/privacy}","received_events_url":"https://api.github.com/users/chenette/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"grkvlt","id":214870,"avatar_url":"https://avatars0.githubusercontent.com/u/214870?v=4","gravatar_id":"","url":"https://api.github.com/users/grkvlt","html_url":"https://github.com/grkvlt","followers_url":"https://api.github.com/users/grkvlt/followers","following_url":"https://api.github.com/users/grkvlt/following{/other_user}","gists_url":"https://api.github.com/users/grkvlt/gists{/gist_id}","starred_url":"https://api.github.com/users/grkvlt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/grkvlt/subscriptions","organizations_url":"https://api.github.com/users/grkvlt/orgs","repos_url":"https://api.github.com/users/grkvlt/repos","events_url":"https://api.github.com/users/grkvlt/events{/privacy}","received_events_url":"https://api.github.com/users/grkvlt/received_events","type":"User","site_admin":false},{"login":"rbuysse","id":829790,"avatar_url":"https://avatars0.githubusercontent.com/u/829790?v=4","gravatar_id":"","url":"https://api.github.com/users/rbuysse","html_url":"https://github.com/rbuysse","followers_url":"https://api.github.com/users/rbuysse/followers","following_url":"https://api.github.com/users/rbuysse/following{/other_user}","gists_url":"https://api.github.com/users/rbuysse/gists{/gist_id}","starred_url":"https://api.github.com/users/rbuysse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rbuysse/subscriptions","organizations_url":"https://api.github.com/users/rbuysse/orgs","repos_url":"https://api.github.com/users/rbuysse/repos","events_url":"https://api.github.com/users/rbuysse/events{/privacy}","received_events_url":"https://api.github.com/users/rbuysse/received_events","type":"User","site_admin":false},{"login":"vaporos","id":2374712,"avatar_url":"https://avatars1.githubusercontent.com/u/2374712?v=4","gravatar_id":"","url":"https://api.github.com/users/vaporos","html_url":"https://github.com/vaporos","followers_url":"https://api.github.com/users/vaporos/followers","following_url":"https://api.github.com/users/vaporos/following{/other_user}","gists_url":"https://api.github.com/users/vaporos/gists{/gist_id}","starred_url":"https://api.github.com/users/vaporos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vaporos/subscriptions","organizations_url":"https://api.github.com/users/vaporos/orgs","repos_url":"https://api.github.com/users/vaporos/repos","events_url":"https://api.github.com/users/vaporos/events{/privacy}","received_events_url":"https://api.github.com/users/vaporos/received_events","type":"User","site_admin":false},{"login":"boydjohnson","id":4340785,"avatar_url":"https://avatars1.githubusercontent.com/u/4340785?v=4","gravatar_id":"","url":"https://api.github.com/users/boydjohnson","html_url":"https://github.com/boydjohnson","followers_url":"https://api.github.com/users/boydjohnson/followers","following_url":"https://api.github.com/users/boydjohnson/following{/other_user}","gists_url":"https://api.github.com/users/boydjohnson/gists{/gist_id}","starred_url":"https://api.github.com/users/boydjohnson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/boydjohnson/subscriptions","organizations_url":"https://api.github.com/users/boydjohnson/orgs","repos_url":"https://api.github.com/users/boydjohnson/repos","events_url":"https://api.github.com/users/boydjohnson/events{/privacy}","received_events_url":"https://api.github.com/users/boydjohnson/received_events","type":"User","site_admin":false},{"login":"TomBarnes","id":6518131,"avatar_url":"https://avatars0.githubusercontent.com/u/6518131?v=4","gravatar_id":"","url":"https://api.github.com/users/TomBarnes","html_url":"https://github.com/TomBarnes","followers_url":"https://api.github.com/users/TomBarnes/followers","following_url":"https://api.github.com/users/TomBarnes/following{/other_user}","gists_url":"https://api.github.com/users/TomBarnes/gists{/gist_id}","starred_url":"https://api.github.com/users/TomBarnes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TomBarnes/subscriptions","organizations_url":"https://api.github.com/users/TomBarnes/orgs","repos_url":"https://api.github.com/users/TomBarnes/repos","events_url":"https://api.github.com/users/TomBarnes/events{/privacy}","received_events_url":"https://api.github.com/users/TomBarnes/received_events","type":"User","site_admin":false},{"login":"delventhalz","id":8889580,"avatar_url":"https://avatars3.githubusercontent.com/u/8889580?v=4","gravatar_id":"","url":"https://api.github.com/users/delventhalz","html_url":"https://github.com/delventhalz","followers_url":"https://api.github.com/users/delventhalz/followers","following_url":"https://api.github.com/users/delventhalz/following{/other_user}","gists_url":"https://api.github.com/users/delventhalz/gists{/gist_id}","starred_url":"https://api.github.com/users/delventhalz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/delventhalz/subscriptions","organizations_url":"https://api.github.com/users/delventhalz/orgs","repos_url":"https://api.github.com/users/delventhalz/repos","events_url":"https://api.github.com/users/delventhalz/events{/privacy}","received_events_url":"https://api.github.com/users/delventhalz/received_events","type":"User","site_admin":false},{"login":"agunde406","id":18215486,"avatar_url":"https://avatars2.githubusercontent.com/u/18215486?v=4","gravatar_id":"","url":"https://api.github.com/users/agunde406","html_url":"https://github.com/agunde406","followers_url":"https://api.github.com/users/agunde406/followers","following_url":"https://api.github.com/users/agunde406/following{/other_user}","gists_url":"https://api.github.com/users/agunde406/gists{/gist_id}","starred_url":"https://api.github.com/users/agunde406/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/agunde406/subscriptions","organizations_url":"https://api.github.com/users/agunde406/orgs","repos_url":"https://api.github.com/users/agunde406/repos","events_url":"https://api.github.com/users/agunde406/events{/privacy}","received_events_url":"https://api.github.com/users/agunde406/received_events","type":"User","site_admin":false},{"login":"rberg2","id":20493746,"avatar_url":"https://avatars1.githubusercontent.com/u/20493746?v=4","gravatar_id":"","url":"https://api.github.com/users/rberg2","html_url":"https://github.com/rberg2","followers_url":"https://api.github.com/users/rberg2/followers","following_url":"https://api.github.com/users/rberg2/following{/other_user}","gists_url":"https://api.github.com/users/rberg2/gists{/gist_id}","starred_url":"https://api.github.com/users/rberg2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rberg2/subscriptions","organizations_url":"https://api.github.com/users/rberg2/orgs","repos_url":"https://api.github.com/users/rberg2/repos","events_url":"https://api.github.com/users/rberg2/events{/privacy}","received_events_url":"https://api.github.com/users/rberg2/received_events","type":"User","site_admin":false},{"login":"aludvik","id":24274338,"avatar_url":"https://avatars1.githubusercontent.com/u/24274338?v=4","gravatar_id":"","url":"https://api.github.com/users/aludvik","html_url":"https://github.com/aludvik","followers_url":"https://api.github.com/users/aludvik/followers","following_url":"https://api.github.com/users/aludvik/following{/other_user}","gists_url":"https://api.github.com/users/aludvik/gists{/gist_id}","starred_url":"https://api.github.com/users/aludvik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aludvik/subscriptions","organizations_url":"https://api.github.com/users/aludvik/orgs","repos_url":"https://api.github.com/users/aludvik/repos","events_url":"https://api.github.com/users/aludvik/events{/privacy}","received_events_url":"https://api.github.com/users/aludvik/received_events","type":"User","site_admin":false},{"login":"nick-drozd","id":25748894,"avatar_url":"https://avatars2.githubusercontent.com/u/25748894?v=4","gravatar_id":"","url":"https://api.github.com/users/nick-drozd","html_url":"https://github.com/nick-drozd","followers_url":"https://api.github.com/users/nick-drozd/followers","following_url":"https://api.github.com/users/nick-drozd/following{/other_user}","gists_url":"https://api.github.com/users/nick-drozd/gists{/gist_id}","starred_url":"https://api.github.com/users/nick-drozd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nick-drozd/subscriptions","organizations_url":"https://api.github.com/users/nick-drozd/orgs","repos_url":"https://api.github.com/users/nick-drozd/repos","events_url":"https://api.github.com/users/nick-drozd/events{/privacy}","received_events_url":"https://api.github.com/users/nick-drozd/received_events","type":"User","site_admin":false},{"login":"dplumb94","id":27690938,"avatar_url":"https://avatars0.githubusercontent.com/u/27690938?v=4","gravatar_id":"","url":"https://api.github.com/users/dplumb94","html_url":"https://github.com/dplumb94","followers_url":"https://api.github.com/users/dplumb94/followers","following_url":"https://api.github.com/users/dplumb94/following{/other_user}","gists_url":"https://api.github.com/users/dplumb94/gists{/gist_id}","starred_url":"https://api.github.com/users/dplumb94/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dplumb94/subscriptions","organizations_url":"https://api.github.com/users/dplumb94/orgs","repos_url":"https://api.github.com/users/dplumb94/repos","events_url":"https://api.github.com/users/dplumb94/events{/privacy}","received_events_url":"https://api.github.com/users/dplumb94/received_events","type":"User","site_admin":false},{"login":"askmish","id":33313396,"avatar_url":"https://avatars3.githubusercontent.com/u/33313396?v=4","gravatar_id":"","url":"https://api.github.com/users/askmish","html_url":"https://github.com/askmish","followers_url":"https://api.github.com/users/askmish/followers","following_url":"https://api.github.com/users/askmish/following{/other_user}","gists_url":"https://api.github.com/users/askmish/gists{/gist_id}","starred_url":"https://api.github.com/users/askmish/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/askmish/subscriptions","organizations_url":"https://api.github.com/users/askmish/orgs","repos_url":"https://api.github.com/users/askmish/repos","events_url":"https://api.github.com/users/askmish/events{/privacy}","received_events_url":"https://api.github.com/users/askmish/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/hyperledger/sawtooth-core/pulls/1536/commits","review_comments_url":"https://api.github.com/repos/hyperledger/sawtooth-core/pulls/1536/comments","review_comment_url":"https://api.github.com/repos/hyperledger/sawtooth-core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/hyperledger/sawtooth-core/issues/1536/comments","statuses_url":"https://api.github.com/repos/hyperledger/sawtooth-core/statuses/2cebd6ab57a6d8386c4a61e99cb8dd1648482a38","head":{"label":"chenette:AppDevRewrite_MultipleNodes","ref":"AppDevRewrite_MultipleNodes","sha":"2cebd6ab57a6d8386c4a61e99cb8dd1648482a38","user":{"login":"chenette","id":31738106,"avatar_url":"https://avatars1.githubusercontent.com/u/31738106?v=4","gravatar_id":"","url":"https://api.github.com/users/chenette","html_url":"https://github.com/chenette","followers_url":"https://api.github.com/users/chenette/followers","following_url":"https://api.github.com/users/chenette/following{/other_user}","gists_url":"https://api.github.com/users/chenette/gists{/gist_id}","starred_url":"https://api.github.com/users/chenette/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chenette/subscriptions","organizations_url":"https://api.github.com/users/chenette/orgs","repos_url":"https://api.github.com/users/chenette/repos","events_url":"https://api.github.com/users/chenette/events{/privacy}","received_events_url":"https://api.github.com/users/chenette/received_events","type":"User","site_admin":false},"repo":{"id":104506189,"name":"sawtooth-core","full_name":"chenette/sawtooth-core","owner":{"login":"chenette","id":31738106,"avatar_url":"https://avatars1.githubusercontent.com/u/31738106?v=4","gravatar_id":"","url":"https://api.github.com/users/chenette","html_url":"https://github.com/chenette","followers_url":"https://api.github.com/users/chenette/followers","following_url":"https://api.github.com/users/chenette/following{/other_user}","gists_url":"https://api.github.com/users/chenette/gists{/gist_id}","starred_url":"https://api.github.com/users/chenette/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chenette/subscriptions","organizations_url":"https://api.github.com/users/chenette/orgs","repos_url":"https://api.github.com/users/chenette/repos","events_url":"https://api.github.com/users/chenette/events{/privacy}","received_events_url":"https://api.github.com/users/chenette/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/chenette/sawtooth-core","description":"Core repository for Sawtooth Distributed Ledger","fork":true,"url":"https://api.github.com/repos/chenette/sawtooth-core","forks_url":"https://api.github.com/repos/chenette/sawtooth-core/forks","keys_url":"https://api.github.com/repos/chenette/sawtooth-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/chenette/sawtooth-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/chenette/sawtooth-core/teams","hooks_url":"https://api.github.com/repos/chenette/sawtooth-core/hooks","issue_events_url":"https://api.github.com/repos/chenette/sawtooth-core/issues/events{/number}","events_url":"https://api.github.com/repos/chenette/sawtooth-core/events","assignees_url":"https://api.github.com/repos/chenette/sawtooth-core/assignees{/user}","branches_url":"https://api.github.com/repos/chenette/sawtooth-core/branches{/branch}","tags_url":"https://api.github.com/repos/chenette/sawtooth-core/tags","blobs_url":"https://api.github.com/repos/chenette/sawtooth-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/chenette/sawtooth-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/chenette/sawtooth-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/chenette/sawtooth-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/chenette/sawtooth-core/statuses/{sha}","languages_url":"https://api.github.com/repos/chenette/sawtooth-core/languages","stargazers_url":"https://api.github.com/repos/chenette/sawtooth-core/stargazers","contributors_url":"https://api.github.com/repos/chenette/sawtooth-core/contributors","subscribers_url":"https://api.github.com/repos/chenette/sawtooth-core/subscribers","subscription_url":"https://api.github.com/repos/chenette/sawtooth-core/subscription","commits_url":"https://api.github.com/repos/chenette/sawtooth-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/chenette/sawtooth-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/chenette/sawtooth-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/chenette/sawtooth-core/issues/comments{/number}","contents_url":"https://api.github.com/repos/chenette/sawtooth-core/contents/{+path}","compare_url":"https://api.github.com/repos/chenette/sawtooth-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/chenette/sawtooth-core/merges","archive_url":"https://api.github.com/repos/chenette/sawtooth-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/chenette/sawtooth-core/downloads","issues_url":"https://api.github.com/repos/chenette/sawtooth-core/issues{/number}","pulls_url":"https://api.github.com/repos/chenette/sawtooth-core/pulls{/number}","milestones_url":"https://api.github.com/repos/chenette/sawtooth-core/milestones{/number}","notifications_url":"https://api.github.com/repos/chenette/sawtooth-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/chenette/sawtooth-core/labels{/name}","releases_url":"https://api.github.com/repos/chenette/sawtooth-core/releases{/id}","deployments_url":"https://api.github.com/repos/chenette/sawtooth-core/deployments","created_at":"2017-09-22T18:30:07Z","updated_at":"2017-12-04T21:15:32Z","pushed_at":"2018-03-28T22:13:29Z","git_url":"git://github.com/chenette/sawtooth-core.git","ssh_url":"git@github.com:chenette/sawtooth-core.git","clone_url":"https://github.com/chenette/sawtooth-core.git","svn_url":"https://github.com/chenette/sawtooth-core","homepage":"https://www.hyperledger.org/projects/sawtooth","size":25530,"stargazers_count":1,"watchers_count":1,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"hyperledger:master","ref":"master","sha":"e9cc01aac8afa7df5755c153be9571f374e0a116","user":{"login":"hyperledger","id":7657900,"avatar_url":"https://avatars2.githubusercontent.com/u/7657900?v=4","gravatar_id":"","url":"https://api.github.com/users/hyperledger","html_url":"https://github.com/hyperledger","followers_url":"https://api.github.com/users/hyperledger/followers","following_url":"https://api.github.com/users/hyperledger/following{/other_user}","gists_url":"https://api.github.com/users/hyperledger/gists{/gist_id}","starred_url":"https://api.github.com/users/hyperledger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hyperledger/subscriptions","organizations_url":"https://api.github.com/users/hyperledger/orgs","repos_url":"https://api.github.com/users/hyperledger/repos","events_url":"https://api.github.com/users/hyperledger/events{/privacy}","received_events_url":"https://api.github.com/users/hyperledger/received_events","type":"Organization","site_admin":false},"repo":{"id":57901437,"name":"sawtooth-core","full_name":"hyperledger/sawtooth-core","owner":{"login":"hyperledger","id":7657900,"avatar_url":"https://avatars2.githubusercontent.com/u/7657900?v=4","gravatar_id":"","url":"https://api.github.com/users/hyperledger","html_url":"https://github.com/hyperledger","followers_url":"https://api.github.com/users/hyperledger/followers","following_url":"https://api.github.com/users/hyperledger/following{/other_user}","gists_url":"https://api.github.com/users/hyperledger/gists{/gist_id}","starred_url":"https://api.github.com/users/hyperledger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hyperledger/subscriptions","organizations_url":"https://api.github.com/users/hyperledger/orgs","repos_url":"https://api.github.com/users/hyperledger/repos","events_url":"https://api.github.com/users/hyperledger/events{/privacy}","received_events_url":"https://api.github.com/users/hyperledger/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/hyperledger/sawtooth-core","description":"Core repository for Sawtooth Distributed Ledger","fork":false,"url":"https://api.github.com/repos/hyperledger/sawtooth-core","forks_url":"https://api.github.com/repos/hyperledger/sawtooth-core/forks","keys_url":"https://api.github.com/repos/hyperledger/sawtooth-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hyperledger/sawtooth-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hyperledger/sawtooth-core/teams","hooks_url":"https://api.github.com/repos/hyperledger/sawtooth-core/hooks","issue_events_url":"https://api.github.com/repos/hyperledger/sawtooth-core/issues/events{/number}","events_url":"https://api.github.com/repos/hyperledger/sawtooth-core/events","assignees_url":"https://api.github.com/repos/hyperledger/sawtooth-core/assignees{/user}","branches_url":"https://api.github.com/repos/hyperledger/sawtooth-core/branches{/branch}","tags_url":"https://api.github.com/repos/hyperledger/sawtooth-core/tags","blobs_url":"https://api.github.com/repos/hyperledger/sawtooth-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hyperledger/sawtooth-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hyperledger/sawtooth-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/hyperledger/sawtooth-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hyperledger/sawtooth-core/statuses/{sha}","languages_url":"https://api.github.com/repos/hyperledger/sawtooth-core/languages","stargazers_url":"https://api.github.com/repos/hyperledger/sawtooth-core/stargazers","contributors_url":"https://api.github.com/repos/hyperledger/sawtooth-core/contributors","subscribers_url":"https://api.github.com/repos/hyperledger/sawtooth-core/subscribers","subscription_url":"https://api.github.com/repos/hyperledger/sawtooth-core/subscription","commits_url":"https://api.github.com/repos/hyperledger/sawtooth-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/hyperledger/sawtooth-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/hyperledger/sawtooth-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/hyperledger/sawtooth-core/issues/comments{/number}","contents_url":"https://api.github.com/repos/hyperledger/sawtooth-core/contents/{+path}","compare_url":"https://api.github.com/repos/hyperledger/sawtooth-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hyperledger/sawtooth-core/merges","archive_url":"https://api.github.com/repos/hyperledger/sawtooth-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hyperledger/sawtooth-core/downloads","issues_url":"https://api.github.com/repos/hyperledger/sawtooth-core/issues{/number}","pulls_url":"https://api.github.com/repos/hyperledger/sawtooth-core/pulls{/number}","milestones_url":"https://api.github.com/repos/hyperledger/sawtooth-core/milestones{/number}","notifications_url":"https://api.github.com/repos/hyperledger/sawtooth-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hyperledger/sawtooth-core/labels{/name}","releases_url":"https://api.github.com/repos/hyperledger/sawtooth-core/releases{/id}","deployments_url":"https://api.github.com/repos/hyperledger/sawtooth-core/deployments","created_at":"2016-05-02T15:51:53Z","updated_at":"2018-03-28T21:11:06Z","pushed_at":"2018-03-28T22:14:29Z","git_url":"git://github.com/hyperledger/sawtooth-core.git","ssh_url":"git@github.com:hyperledger/sawtooth-core.git","clone_url":"https://github.com/hyperledger/sawtooth-core.git","svn_url":"https://github.com/hyperledger/sawtooth-core","homepage":"https://www.hyperledger.org/projects/sawtooth","size":25537,"stargazers_count":762,"watchers_count":762,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":371,"mirror_url":null,"archived":false,"open_issues_count":10,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":371,"open_issues":10,"watchers":762,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/hyperledger/sawtooth-core/pulls/1536"},"html":{"href":"https://github.com/hyperledger/sawtooth-core/pull/1536"},"issue":{"href":"https://api.github.com/repos/hyperledger/sawtooth-core/issues/1536"},"comments":{"href":"https://api.github.com/repos/hyperledger/sawtooth-core/issues/1536/comments"},"review_comments":{"href":"https://api.github.com/repos/hyperledger/sawtooth-core/pulls/1536/comments"},"review_comment":{"href":"https://api.github.com/repos/hyperledger/sawtooth-core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/hyperledger/sawtooth-core/pulls/1536/commits"},"statuses":{"href":"https://api.github.com/repos/hyperledger/sawtooth-core/statuses/2cebd6ab57a6d8386c4a61e99cb8dd1648482a38"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"dcmiddle"}}